Skip to content

Releases: rsonquery/rsonpath

v0.10.1

Choose a tag to compare

@github-actions github-actions released this 29 May 01:40
v0.10.1
8dc4817

[0.10.1] - 2025-05-29 ([0.4.2] for rsonpath-syntax)

Bug Fixes

  • Fixed head-skipping dropping matches in rare circumstances. (#971)
    • Queries starting with the descendant selectors would sometimes miss some matches in very specific alignment situations.

Dependencies

  • Update clap from 4.5.58 to 4.6.1
  • Update log from 0.4.29 to 0.4.30
  • Update simple_logger from 5.1.0 to 5.2.0
  • Update vector-map from 1.0.2 to 1.1.0

Reliability

  • Extended CLI tests to cover all available arguments. (#951)

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 16 Feb 15:53
v0.10.0
7eca688

[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 arbitrary feature and the Arbitrary implementations from rsonpath-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-darwin
      • aarch64-pc-windows-msvc
    • The following targets are no longer built or released:
      • i686-pc-windows-gnu
      • x86_64-apple-darwin
  • Added prebuilt binaries for a few MUSL-based Tier 2 targets. (#705)

    • Binaries now released for:
      • aarch64-unknown-linux-musl
      • i686-unknown-linux-musl
      • x86_64-unknown-linux-musl

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_comma in the same vein as it was in handle_colon to enable this.
  • 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-if from 1.0.0 to 1.0.4
  • Update clap from 4.5.23 to 4.5.58
  • Update color-eyre from 0.6.3 to 0.6.5
  • Update log from 0.4.22 to 0.4.29
  • Update memmap2 from 0.9.5 to 0.9.9
  • Update nom from 7.1.3 to 8.0.0
  • Update owo-colors from 4.1.0 to 4.2.3
  • Update rustflags from 0.1.6 to 0.1.7
  • Update serde from 1.0.217 to 1.0.228
  • Update simple_logger from 5.0.0 to 5.1.0
  • Update smallvec from 1.13.2 to 1.15.1
  • Update thiserror from 2.0.9 to 2.0.18
  • Update unicode-width from 0.2.0 to 0.2.2
  • Update vector-map from 1.0.1 to 1.0.2
  • Update vergen from 9.0.2 to 9.1.0
  • Update vergen-git2 from 1.0.2 to 9.1.0
  • Remove vergen-gitcl from build dependencies

Documentation

  • Fix old link to rsonbook in readme.
  • Add a strict no-LLM policy to CONTRIBUTING.

v0.9.4

Choose a tag to compare

@github-actions github-actions released this 31 Dec 04:25
v0.9.4
e0bce96

[0.9.4] - 2024-12-31 ([0.4.0] for rsonpath-syntax)

Library

  • Serde support for MainEngine and JsonPathQuery in rsonpath-syntax.
    • Implemented serde::Serialize and serde::Deserialize for MainEngine in rsonpath-lib,
      and for JsonPathQuery and its consituent types in rsonpath-syntax.
      The serde dependency is guarded behind the optional serde feature.
    • The serialization format for rsonpath-lib is not stable, as the Automaton
      is expected to evolve. Thus, serialization includes a version
      and deserialization will fail if the version disagrees.
    • The format in rsonpath-syntax is expected to be stable, but no guarantees before 1.0.0.
    • Also added snapshot tests for serialization based on insta.
  • Added the MainEngine::automaton function to retrieve a reference to the compiled query.
  • Removed the arbitrary feature from rsonpath-lib as it didn't actually do anything anymore.

Dependencies

  • serde (1.0.217) is now an optional dependency for rsonpath, rsonpath-lib, and rsonpath-syntax

v0.9.3

Choose a tag to compare

@github-actions github-actions released this 24 Dec 16:00
v0.9.3
1f2ebbe

[0.9.3] - 2024-12-24

Thanks to @azoyan for contributions 🎉

Library

  • Made MainEngine Send and Sync
    • Changed internal Rcs to Arcs in the automaton labels.
    • Added a static_assert to make sure MainEngine is Send+Sync forever.
  • Added a Debug impl for MainEngine.

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 23 Dec 00:36
v0.9.2
cddc509

[0.9.2] - 2024-12-22

Library

  • [breaking] Added StringPattern and made Automaton no longer borrow the query. (#117#613)
    • The Automaton struct borrowed the source query, which also caused the Engine to carry the query's lifetime with it.
      The actual data being borrowed were the JsonString values for member transitions.
      In preparation for #117we remove the borrowed JsonString and replace it
      with StringPattern. For UTF-8 the StringPattern will be a more complex struct that precomputes some stuff for efficient matching later.
      For now, it's a thin wrapper over a JsonString.
    • 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 an Rc.
      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 MainEngine is now lifetimeless and the Compiler trait requires the
      returned engine to be lifetimeless.

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 nom as a direct dependency of rsonpath-lib

v0.9.1

Choose a tag to compare

@github-actions github-actions released this 03 Apr 18:23
v0.9.1
73620f7

[0.9.1] - 2024-04-03

Bug Fixes

  • Child slice selectors only selecting first matching index (#499). (#499)
    • Fixed a bug where the compiler would erroneously mark states
      with a single slice transition as unitary, even though such
      transitions could match more than one index.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 28 Mar 18:34
v0.9.0
dbc6f84

[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.

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).

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

Choose a tag to compare

@github-actions github-actions released this 29 Feb 20:25
v0.8.7
e769ae1

[0.8.7] - 2024-02-29

Features

  • [breaking] Parsing filter expressions. (#154)
    • This is mainly an rsonpath-syntax change – the selectors are parsed,
      but rq will give you an unsupported error and a link to #154
      if you put them in a query.

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

Choose a tag to compare

@github-actions github-actions released this 15 Jan 15:06
v0.8.6
277d3fa

[0.8.6] - 2024-01-15

Features

  • [breaking] Parsing Slice selectors.
    • This is mainly an rsonpath-syntax change – the selectors are parsed,
      but rq will give you an unsupported error and a link to #152
      if you put them in a query.

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.

Dependencies

  • Bump clap from 4.4.14 to 4.4.16
  • Bump vergen from 8.2.6 to 8.2.7.

v0.8.5

Choose a tag to compare

@github-actions github-actions released this 10 Jan 16:39
v0.8.5
7af1dd2

[0.8.5] - 2024-01-10

Nice parsing errors 🪄

image

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 the crates/rsonpath-syntax subdirectory.
  • [breaking] Rework numeric types in the query parser.
    • renamed NonNegativeArrayIndex to JsonUInt
    • added the JsonInt and JsonNonZeroUInt types
  • 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.

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.