Skip to content

Releases: rsonquery/rsonpath

v0.3.0

14 Feb 20:27
9956fed
Compare
Choose a tag to compare

[0.3.0] - 2023-02-14

Features

  • Better error reporting. (#88)
    • Added separate engine::error::DepthError type.
    • Additional context for depth-related EngineErrors including the character at which depth overflow occurred.
    • New error, EngineError::MissingClosingCharacter reported if the engine reaches end of JSON and cannot match opening characters.
    • Improvements to the CLI error reporting/display.
  • Increase max automaton size to 256 from 128.
  • Compiling wildcard child selectors. (#90, #7)
    • Expressions parsed in #6 are now compiled into correct automata.
  • Wildcard child support in engines. (#9, #8, #73)
    • Large overhaul to the query engines to enable processing the wildcard child selector. This closes the #9 epic of wildcard child support.
    • Both main and recursive engines now support wildcard child selectors.
    • The commas feature flag was removed.
    • Feature flags of head-skip, tail-skip, and unique-labels were introduced to guard optimization paths.
      • The head-skip and tail-skip features make the code faster without significant tradeoffs.
      • The unique-labels feature utilizes the assumption of key uniqueness within a single JSON object to speed up query execution, but it will not work correctly when an object with duplicate keys is given. Currently only the first occurence of such a key will be processed.
    • Many changes to the library structure and module visibility.

Bug Fixes

  • Too complex query now produces an error. (#88)
    • Previously the compiled automaton was silently truncated, which would cause incorrect results.

Reliability

  • Rename engine modules. (#88)
    • The Runner trait was renamed to Engine.
    • The stackless module is now engine::main.
    • The stack_based module is now engine::recursive.
    • The StacklessRunner is now the MainEngine, and is also reexported as engine::RsonpathEngine
    • The StackBasedRunner is now the RecursiveEngine.
  • Added the Compiler trait. (#88)
    • The compile_query function creating engines is now part of that trait.
  • Rename NotSupportedError to NotSupported.
  • Moved result to a standalone module.
  • Move all classifiers to classification.
    • Module classify renamed to classification.
    • Moved all resumption related things to classification proper.
  • Removed only use of unsafe outside of SIMD.
  • Forbid unsafe code outside of simd.
  • Added test for heterogenous list.
  • Hide debug and bin macros.
  • Added Compiler::from_compiled_query.

Dependencies

  • Bump clap from 4.0.25 to 4.1.4.

  • Bumped a number of dependencies.

    • backtrace (required by color-eyre) from 0.3.65 to 0.3.67.
    • once_cell (required by color-eyre) from 1.16.0 to 1.17.0.
    • owo-colors (required by color-eyre) from 3.3.0 to 3.5.0.
    • ppv-lite86 (required by thiserror) from 0.2.16 to 0.2.17.
    • itoa (required by simple_logger) from 1.0.2 to 1.0.5.
  • Remove benchmarks crate from workspace.

    • This drastically reduces the number of dependencies tracked for the binary.
  • Make some deps optional.

    • memchr is now included only with the head-skip feature
    • replace_with is now included only with the tail-skip feature

Documentation

  • Update toplevel lib docs.
  • Add separate README for lib.
  • Updated most of module docs.
  • Added architecture diagram to lib README.

v0.2.1

25 Jan 15:19
v0.2.1
a518def
Compare
Choose a tag to compare

[0.2.1] - 2023-01-25

Features

  • Wildcard child selector parser support. (#6)

    • Both shorthand .* and full [*] forms are recognised.
  • Compile-only CLI flag. (#76)

    • Specifying --compile or -c will cause rsonpath to compile the query and output its automaton, without running the engine.
      This option is mutually exclusive with --engine or providing an input path.

Bug Fixes

  • Compile error on cargo install rsonpath. (#86)

Reliability

  • Added install check to release CI/CD. (#86)
    • This will catch issues with the simplest cargo install rsonpath invocation before release to avoid these issues in the future.

Dependencies

  • Bump cc from 1.0.76 to 1.0.78. (#82)
  • Bump nom from 7.1.1 to 7.1.3. (#85)

v0.2.0

15 Jan 23:05
4016ec4
Compare
Choose a tag to compare

[0.2.0] - 2023-01-15

Features

  • Librification (#41)

    • Project split into two crates: binary rsonpath and library rsonpath-lib
  • Separate quote from structural classifiers. (#17)

  • Implemented flexible classifiers.

  • Implemented depth tail-skipping.

Bug Fixes

  • Escape classifier boundary error.

  • Correctly set features for rsonpath-lib.

  • Flaky jsonski benches due to their bugs

Reliability

  • Reenable Windows tests.

  • Update for benchmarks integration.

  • Update workflows and create Release workflow. (#44)

    • Created a release workflow that automatically build the crate on supported targets and creates a GitHub Release with appropriate artifacts.

Updated the rust workflow to run tests for all configurations supported in release, and properly run clippy on both SIMD and no-SIMD versions of the code.

List of supported targets at this point:

Target triple nosimd build SIMD support
aarch64-unknown-linux-gnu Yes No
i686-unknown-linux-gnu Yes No
x86_64-unknown-linux-gnu Yes Yes, avx2+pclmulqdq
x86_64-apple-darwin Yes No
i686-pc-windows-gnu Yes No
i686-pc-windows-msvc Yes No
x86_64-pc-windows-gnu Yes Yes, avx2+pclmulqdq
x86_64-pc-windows-msvc Yes Yes, avx2+pclmulqdq

NOTE (2023-03-29): in actuality these are all supported as of v0.3.3, releases up to that point support only the three basic OS triples: x86_64-unknown-linux-gnu, x86_64-apple-darwin, x86_64-pc-windows-gnu.

  • query module is now panic-free. (#38)

    • All errors are now reported via QueryError.
  • Panic-free classifiers and engines. (#39 [#40 (https://github.com//issues/40) #31)

    • Detectable errors now use proper error types instead of panics.
      Added lints to prevent adding more panics or undocumented errors.

Dependencies

  • Bumped Criterion to 0.4.0.

  • Removed usage of eyre from library code.

  • Bump simple_logger to 4.0.0.

  • Update clap to v4.

  • Bump a bunch of minor versions.

  • Removed len_trait dependency (#46).

v0.1.2

19 Nov 01:11
b4ba4d5
Compare
Choose a tag to compare

[0.1.2] - 2022-09-17

Features

  • Classify commas to prepare for the new wildcard selectors

Bug Fixes

  • Non-ASCII characters like (¡) breaking SIMD classification.

Documentation

  • Include usage in README.md.

v0.1.1

19 Nov 01:10
v0.1.1
4cc88da
Compare
Choose a tag to compare

[0.1.1] - 2022-07-26

Bug Fixes

  • Supported simd is now autodetected

    • Instead of relying on the target_feature compiler flag
      the build script now autodetects whether AVX2
      is supported and compiles the correct version.

Dependencies

  • Update to use criterion_decimal_throughput.

  • Equalise aligners versions (0.0.9 across the project).

  • Remove unnecessary dependencies.

    • Removed memchr and static_assertions.

v0.1.0

19 Nov 01:12
23518ac
Compare
Choose a tag to compare

[0.1.0] - 2022-07-15

Initial release with the base engine.

Features

  • Engine implementation for child and recursive selectors.