Releases: rsonquery/rsonpath
v0.3.0
[0.3.0] - 2023-02-14
Features
- Better error reporting. (#88)
- Added separate
engine::error::DepthError
type. - Additional context for depth-related
EngineError
s 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.
- Added separate
- 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
andrecursive
engines now support wildcard child selectors. - The
commas
feature flag was removed. - Feature flags of
head-skip
,tail-skip
, andunique-labels
were introduced to guard optimization paths.- The
head-skip
andtail-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.
- The
- 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 toEngine
. - The
stackless
module is nowengine::main
. - The
stack_based
module is nowengine::recursive
. - The
StacklessRunner
is now theMainEngine
, and is also reexported asengine::RsonpathEngine
- The
StackBasedRunner
is now theRecursiveEngine
.
- The
- Added the
Compiler
trait. (#88)- The
compile_query
function creating engines is now part of that trait.
- The
- Rename
NotSupportedError
toNotSupported
. - Moved
result
to a standalone module. - Move all classifiers to
classification
.- Module
classify
renamed toclassification
. - Moved all resumption related things to
classification
proper.
- Module
- Removed only use of
unsafe
outside of SIMD. - Forbid unsafe code outside of simd.
- Added test for heterogenous list.
- Hide
debug
andbin
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 thehead-skip
featurereplace_with
is now included only with thetail-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
[0.2.1] - 2023-01-25
Features
-
Wildcard child selector parser support. (#6)
- Both shorthand
.*
and full[*]
forms are recognised.
- Both shorthand
-
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.
- Specifying
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.
- This will catch issues with the simplest
Dependencies
v0.2.0
[0.2.0] - 2023-01-15
Features
-
Librification (#41)
- Project split into two crates: binary
rsonpath
and libraryrsonpath-lib
- Project split into two crates: binary
-
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.
- Created a
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
.
- All errors are now reported via
-
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.
- Detectable errors now use proper error types instead of panics.
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
v0.1.1
[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.
- Instead of relying on the target_feature compiler flag
Dependencies
-
Update to use
criterion_decimal_throughput
. -
Equalise
aligners
versions (0.0.9
across the project). -
Remove unnecessary dependencies.
- Removed
memchr
andstatic_assertions
.
- Removed