Releases: rsonquery/rsonpath
Releases · rsonquery/rsonpath
v0.10.0
[0.10.0] - 2025-02-16 ([0.4.1] for rsonpath-syntax)
Features
-
Support for AVX512 SIMD.
- available on x86-64
-
Support for Neon SIMD.
- available on aarch64
-
MSRV bumped to 1.89.
- stable AVX512 since 1.89
-
Removed the
arbitraryfeature and theArbitraryimplementations fromrsonpath-syntax. -
Revised the list of Tier 1 targets that are continuously built and released.
- The following targets are now in CI and release:
aarch64-apple-darwinaarch64-pc-windows-msvc
- The following targets are no longer built or released:
i686-pc-windows-gnux86_64-apple-darwin
- The following targets are now in CI and release:
-
Added prebuilt binaries for a few MUSL-based Tier 2 targets. (#705)
- Binaries now released for:
aarch64-unknown-linux-musli686-unknown-linux-muslx86_64-unknown-linux-musl
- Binaries now released for:
Bug Fixes
-
Skipping inside arrays on comma-atomic (#757, #751)
- Tail skipping was not triggered when the item matching the unitary transition was an atomic value inside a list. For example, selecting
$[0]from a long list of integers would never skip, massively degrading performance. - Skipping was added to
handle_commain the same vein as it was inhandle_colonto enable this.
- Tail skipping was not triggered when the item matching the unitary transition was an atomic value inside a list. For example, selecting
-
Fix panic in specific cases of reclassification at end of file (#788)
- A particular combination of reclassification after tail-skipping at the very end of the file could cause a panic if the file-ending closing occurred directly after the skipped-to character.
-
Error messages blowing up on long inputs. (#842, #749)
- Previously, when displaying a ParseError every underlying SyntaxError would be printed with the full query input as context. If the density of errors in the input was high this would effectively cause a quadratic blowup during printing.
- It's probably unlikely inputs like this would be given by a user, but they do happen during fuzzing (when we're throwing long strings of essentially random characters at the parser) and could potentially be used as a DoS attack vector (intentionally supplying nonsensical large queries and forcing error messages to be sent back).
- Additionally fixed an invalid error message given when a side of a comparison operator was a non-singular query.
Reliability
-
Use github hosted ARM runners. (#718)
-
ARM SIMD is now tested in CI.
-
Fix serde proptests. (#742)
- Proptests in automaton serde were not properly guarding for arbitrary generated queries being too complex and exceeding the automaton size limit.
-
Add CodeQl for Rust scanning.
- We now require the analysis to pass before PR merges.
-
All fuzzers now correctly run on a nightly basis. (#749)
Dependencies
- Update
cfg-iffrom 1.0.0 to 1.0.4 - Update
clapfrom 4.5.23 to 4.5.58 - Update
color-eyrefrom 0.6.3 to 0.6.5 - Update
logfrom 0.4.22 to 0.4.29 - Update
memmap2from 0.9.5 to 0.9.9 - Update
nomfrom 7.1.3 to 8.0.0 - Update
owo-colorsfrom 4.1.0 to 4.2.3 - Update
rustflagsfrom 0.1.6 to 0.1.7 - Update
serdefrom 1.0.217 to 1.0.228 - Update
simple_loggerfrom 5.0.0 to 5.1.0 - Update
smallvecfrom 1.13.2 to 1.15.1 - Update
thiserrorfrom 2.0.9 to 2.0.18 - Update
unicode-widthfrom 0.2.0 to 0.2.2 - Update
vector-mapfrom 1.0.1 to 1.0.2 - Update
vergenfrom 9.0.2 to 9.1.0 - Update
vergen-git2from 1.0.2 to 9.1.0 - Remove
vergen-gitclfrom build dependencies
Documentation
- Fix old link to rsonbook in readme.
- Add a strict no-LLM policy to CONTRIBUTING.
v0.9.4
[0.9.4] - 2024-12-31 ([0.4.0] for rsonpath-syntax)
Library
- Serde support for
MainEngineandJsonPathQueryinrsonpath-syntax.- Implemented
serde::Serializeandserde::DeserializeforMainEnginein rsonpath-lib,
and forJsonPathQueryand its consituent types inrsonpath-syntax.
Theserdedependency is guarded behind the optionalserdefeature. - The serialization format for
rsonpath-libis not stable, as theAutomaton
is expected to evolve. Thus, serialization includes a version
and deserialization will fail if the version disagrees. - The format in
rsonpath-syntaxis expected to be stable, but no guarantees before 1.0.0. - Also added snapshot tests for serialization based on
insta.
- Implemented
- Added the
MainEngine::automatonfunction to retrieve a reference to the compiled query. - Removed the
arbitraryfeature fromrsonpath-libas it didn't actually do anything anymore.
Dependencies
serde(1.0.217) is now an optional dependency forrsonpath,rsonpath-lib, andrsonpath-syntax
v0.9.3
v0.9.2
[0.9.2] - 2024-12-22
Library
- [breaking] Added
StringPatternand madeAutomatonno longer borrow the query. (#117#613)- The
Automatonstruct borrowed the source query, which also caused the Engine to carry the query's lifetime with it.
The actual data being borrowed were theJsonStringvalues for member transitions.
In preparation for #117we remove the borrowedJsonStringand replace it
withStringPattern. For UTF-8 theStringPatternwill be a more complex struct that precomputes some stuff for efficient matching later.
For now, it's a thin wrapper over aJsonString. - During construction we may create many transitions over the same pattern.
To reduce the size of the automaton we cache the patterns and put them into anRc.
This may get optimised later to instead use some kind of inline storage, but it's unlike to actually matter.
I ran the benchmarks and saw no measurable difference between the previous version and this one. - This is a breaking API change -- the
MainEngineis now lifetimeless and theCompilertrait requires the
returned engine to be lifetimeless.
- The
Dependencies
- Bump arbitrary from 1.3.1 to 1.4.1
- Bump clap from 4.5.2 to 4.5.23
- Bump color-eyre from 0.6.2 to 0.6.3
- Bump log from 0.4.21 to 0.4.22
- Bump memmap2 from 0.9.4 to 0.9.5
- Bump simple_logger from 4.3.3 to 5.0.0
- Bump smallvec from 1.13.1 to 1.13.2
- Bump thiserror from 1.0.58 to 2.0.9 (#617). (#617)
- Remove
nomas a direct dependency ofrsonpath-lib
v0.9.1
v0.9.0
[0.9.0] - 2024-03-28
Features
- Array slice selector. (#152)
- Simple slicing: forward step and positive bounds.
Includes an overhaul to how array transitions are compiled.
- Simple slicing: forward step and positive bounds.
Performance
- Improve performance of the index selector. (#138)
- Added more structure and metadata to the automaton,
improving perf of all queries in general (~6% thpt) and
array-index queries in particular (~12% thpt).
- Added more structure and metadata to the automaton,
Reliability
- Run JSONPath Compliance Test Suite on basic queries.
- CTS is now run in CI on queries that the engine supports.
Dependencies
- Bump clap from 4.5.1 to 4.5.2
- Bump thiserror from 1.0.57 to 1.0.58
v0.8.7
[0.8.7] - 2024-02-29
Features
- [breaking] Parsing filter expressions. (#154)
- This is mainly an
rsonpath-syntaxchange – the selectors are parsed,
butrqwill give you an unsupported error and a link to #154
if you put them in a query.
- This is mainly an
Reliability
- Add msrv verify as ci check. (#480)
- The MSRV got unknowingly bumped before, with this CI check we will avoid it in the future.
Dependencies
- Bump clap from 4.4.16 to 4.5.1
- Bump eyre from 0.6.11 to 0.6.12
- Bump log from 0.4.20 to 0.4.21
- Bump memmap2 from 0.9.3 to 0.9.4
- Bump smallvec from 1.12.0 to 1.13.1
- Bump thiserror from 1.0.56 to 1.0.57
- Bump vergen from 8.2.7 to 8.3.1
v0.8.6
[0.8.6] - 2024-01-15
Features
- [breaking] Parsing
Sliceselectors.- This is mainly an
rsonpath-syntaxchange – the selectors are parsed,
butrqwill give you an unsupported error and a link to #152
if you put them in a query.
- This is mainly an
Bug Fixes
-
Bug in
-cgraph display.- dot format was temporarily broken by doubling double quotes in labels
-
U+001A-U+001F in name selectors.
- Characters U+001A through U+001F were erroneously accepted unescaped.
This is now a hard error.
- Characters U+001A through U+001F were erroneously accepted unescaped.
Dependencies
- Bump clap from 4.4.14 to 4.4.16
- Bump vergen from 8.2.6 to 8.2.7.
v0.8.5
[0.8.5] - 2024-01-10
Nice parsing errors 🪄
Features
- [breaking] Separate
rsonpath-syntax.- The parsing logic and query AST are now moved to a separately published subcrate.
- The crate is versioned separately. Changes to it that do not affect
rqwill be documented
in its separate changelog. See thecrates/rsonpath-syntaxsubdirectory.
- [breaking] Rework numeric types in the query parser.
- renamed
NonNegativeArrayIndextoJsonUInt - added the
JsonIntandJsonNonZeroUInttypes
- renamed
- Fancy error handling in the parser.
Reliability
- Use self-hosted runner for ARM.
- We now have a self-hosted runner to continuously test rsonpath on ARM64!
- Set restrictive egress rules on runners.
- Following up on StepSecurity upgrades, runners now block egress
traffic by default and allow only specific trusted endpoints.
- Following up on StepSecurity upgrades, runners now block egress
Dependencies
- Bump arbitrary from 1.3.0 to 1.3.2.
- Bump clap from 4.4.7 to 4.4.14.
- Bump eyre from 0.6.8 to 0.6.11.
- Bump memmap2 from 0.9.0 to 0..3.
- Bump simple_logger from 4.2.0 to 4.3.3.
- Bump smallvec from 1.11.1 to 1.11.2.
- Bump thiserror from 1.0.49 to 1.0.56.
- Bump vergen from 8.2.5 to 8.2.6.
v0.8.4
[0.8.4] - 2023-10-30
Features
- [breaking] Refactor the
Inputimplementors with automatic padding (#276).- Padding and alignment is now handled automatically by the input types,
allowing them to work safely without copying the entire input. The overhead is now
limited to the padding, which is at most 256 bytes in total. BorrowedBytesis now safe to construct.OwnedBytesno longer copies
the entire source on construction.
- Padding and alignment is now handled automatically by the input types,
Bug Fixes
- Atomic values getting invalid spans (#327). (#327)
- Fixed an issue where atomic values would be matched with all
trailing characters up until the next closing.
- Fixed an issue where atomic values would be matched with all
Performance
- Improve SIMD codegen.
- Improved the way we dispatch to SIMD-intensive functions.
This results in slightly larger binaries, but massive speedups –
throughput increase of 5, 10, 20, or in case ofgoogle_map::travel_modes/rsonpath_direct_count
59 (fifty-nine) percent.
- Improved the way we dispatch to SIMD-intensive functions.
Reliability
- Harden GitHub Actions.
- We now use the StepSecurity harden-runner in audit mode
to test a more secure approach to GitHub CI.
- We now use the StepSecurity harden-runner in audit mode
- End to end test refactor.
- tests are now generated into many separate files instead of one gigantic file.
This improves compilation times, responsiveness of rust-analyzer,
and in general makes the tooling happier.
- tests are now generated into many separate files instead of one gigantic file.
Dependencies
- Bump arbitrary from 1.3.0 to 1.3.2.
- Bump clap from 4.4.6 to 4.4.7.
- Bump thiserror from 1.0.49 to 1.0.50.
