Releases: rsonquery/rsonpath
Releases · rsonquery/rsonpath
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-syntax
change – the selectors are parsed,
butrq
will 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
Slice
selectors.- This is mainly an
rsonpath-syntax
change – the selectors are parsed,
butrq
will 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
-c
graph 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
rq
will be documented
in its separate changelog. See thecrates/rsonpath-syntax
subdirectory.
- [breaking] Rework numeric types in the query parser.
- renamed
NonNegativeArrayIndex
toJsonUInt
- added the
JsonInt
andJsonNonZeroUInt
types
- 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
Input
implementors 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. BorrowedBytes
is now safe to construct.OwnedBytes
no 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.
v0.8.3
[0.8.3] - 2023-10-04
Bug Fixes
-
Missing openings from node results. (#297)
- Fixed an issue where the opening
characters of matched nodes would not be
included in the result when head-skipping
and the opening happened on a block boundary.
- Fixed an issue where the opening
-
Lib MSRV.
- In v0.8.0 we inadvertently broke the MSRV,
and the project only built with 1.71.1
It was restored to 1.70.0 for the binary
and 1.67.1 for the lib.
- In v0.8.0 we inadvertently broke the MSRV,
Dependencies
- Bump clap from 4.4.4 to 4.4.6.
- Bump memmap2 from 0.7.1 to 0.9.0.
- Bump thiserror from 1.0.48 to 1.0.49.
v0.8.2
[0.8.2] - 2023-09-23
Performance
- Improved handling of the root-only query
$
. (#160)- Full nodes result when asking for root: 2 times throughput increase.
- Indices/count result when asking for root: basically unboundedly faster,
no longer looks at the entire document.
Documentation
- Clarified the
approximate_spans
guarantees.- Now documentation mentions that the returned
MatchSpan
s can potentially
have their end indices farther than one would expect the input to logically end,
due to internal padding.
- Now documentation mentions that the returned
Bug fixes
- Fixed handling of the root-only query
$
on atomic documents. (#160)- Previously only object and array roots were supported.
- Fixed a bug when head-skipping to a single-byte key would panic. (#281)
- This was detected by fuzzing!
- The queries
$..["{"]
and$..["["]
would panic
on inputs starting with the bytes{"
or["
, respectively.
- Fixed a bug where disabling the
simd
feature would not actually
disable SIMD acceleration.
Reliability
- Made the ClusterFuzzLite batch workflow automatically create an issue
on failure to make sure the maintainers are notified.
v0.8.1
[0.8.1] - 2023-09-20
Features
- [breaking] Refactored the [
Match
]/[MatchSpan
] types.- [
Match
] now takes 32 bytes, down from 40. - All fields are now private, accessible via associated functions.
- Added the
len
function to [MatchSpan
].
- [
- Added
approximate_spans
result mode. (#242)- Engine can return an approximate span of the match,
where "approximate" means the start index is correct,
but the end index might include trailing whitespace after the match. - This mode is much faster that full
matches
, close to the performance
ofcount
, especially for large result sets. - This is a library-only feature.
- Engine can return an approximate span of the match,
- Library exposes a new optional feature,
arbitrary
.- When enabled, includes
arbitrary
as a dependency and provides anArbitrary
impl forJsonPathQuery
,
JsonString
, andNonNegativeArrayIndex
.
- When enabled, includes
Bug fixes
- Fixed a bug when memmem acceleration would fail for empty keys.
- This was detected by fuzzing! The query
$..[""]
would panic
on certain inputs due to invalid indexing.
- This was detected by fuzzing! The query
- Fixed a panic when parsing invalid queries with wide UTF8 characters.
- This was detected by fuzzing! Parsing a query with invalid syntax
caused by a longer-than-byte UTF-8 character would panic when
the error handler tried to resume parsing from the next byte
instead of respecting char boundaries.
- This was detected by fuzzing! Parsing a query with invalid syntax
- Fixed a panic caused by node results in invalid JSON documents.
- This was detected by fuzzing! Invalid JSON documents could
cause the NodeRecorder to panic if the apparent match span
was of length 1.
- This was detected by fuzzing! Invalid JSON documents could
- Fixed erroneous match span end reporting. (#247)
- Fixed a bug where
MatchSpan
values given by the engine were
almost always invalid.
- Fixed a bug where
Reliability
- Fuzzing integration with libfuzzer and ClusterFuzzLite.
cargo-fuzz
can be used
to fuzz the project with libfuzzer. Currently we have three fuzzing targets,
one for stressing the query parser, one for stressing the engine with arbitrary
bytes, and one stressing the engine with structure-aware queries and JSONs.- Fuzzing is now enabled on every PR. Using ClusterFuzzLite
we will fuzz the project every day on a cron schedule
to establish a corpus.
- Added correctness tests for match spans reporting (#247)
Dependencies
- Bump clap from 4.4.2 to 4.4.4.
- Bump vergen from 8.2.4 to 8.2.5.
v0.8.0
[0.8.0] - 2023-09-10
Features
- Portable binaries. (#231)
- SIMD capabilities are now discovered at runtime,
allowing us to distribute one binary per target. - Requirements for SIMD are now more granular,
allowing weaker CPUs to still get some of the acceleration:- Base SIMD is either SSE2, SSSE3, or AVX2.
- Structural classification works on SSSE3 and above.
- Quote classification works if
pclmulqdq
is available. - Depth classification works if
popcnt
is available.
- To counteract the increased binary size debug info is no longer
included in distributed binaries. - Codegen for distributed binaries is improved with fat LTO and setting
codegen units to 1. - SIMD capabilities are listed with
rq --version
.
- SIMD capabilities are now discovered at runtime,
Reliability
- Change clippy to auguwu/clippy-action
- The "official" action was not maintained for 3 years now.
This one is actively maintained (thanks Noel!).
- The "official" action was not maintained for 3 years now.