Repository navigation
Release v2.2.8 - "Conform-ata"
Release v2.2.8 "Conform-ata"
Changes
- Merge pull request #154 from txjmb/fix/release-changelog-guard (dd7ab92)
- test(release): skip the bash-script cases on Windows (8fe4d82)
- fix(release): commit the version check executable, and run it via bash (c9aea6f)
- fix(release): reject a version input the manifests do not agree with (81fc424)
- fix(release): let the changelog guard see a named release heading (2eddeb0)
- Update README with release versioning details (556b6d8)
- Remove unreleased section from CHANGELOG.md (d84da29)
- Merge pull request #153 from txjmb/docs/changelog-unreleased-fix (b167b49)
- docs: name 2.2.8 "Conform-ata", and make the docs work findable (468093e)
- docs(changelog): move the error-code work into 2.2.8 (20186a6)
- Add various badges to README.md (48141f9)
- Merge pull request #152 from txjmb/docs/readme-badges (87677ce)
- docs(readme): add CI, docs and conformance badges (712fbd5)
- Update README to encourage starring the project (510e175)
- Update README with details on 2.2.8 release changes (deaac4a)
- Update README for version 2.2.8 upgrade details (cc32dad)
- Refactor README for clarity and conciseness (d022b9d)
- Merge pull request #151 from txjmb/fix/error-codes-144-tail (7560ce4)
- docs(changelog): label references as issues rather than bare numbers (ab35b7b)
- Merge pull request #149 from txjmb/fix/error-codes-144-tail (bef97b4)
- docs(test): point the pinned divergences at #150 (01fe37b)
- fix(errors): code the last reachable uncoded errors (937756e)
- Merge pull request #148 from txjmb/fix/error-codes-144 (6eadd54)
- fix(parser): carry JSONata codes on parse errors (fbf4c9a)
- fix(errors): carry JSONata codes on nine more evaluator errors (6b37012)
- Merge pull request #147 from txjmb/release/2.2.8 (1ff018c)
- fix(functions): report D3140 for malformed URLs, and stop leaking a codec error (49c8151)
- Merge pull request #146 from txjmb/release/2.2.8 (7297824)
- docs(readme): flag 2.2.8 as a conformance release worth testing first (7b1c81d)
- fix(parser): defer S0213 so a parse error wins, and code the leftover token (857f978)
- test(reference): compare the error codes the suite was ignoring (c94ae29)
- docs(changelog): record the Rust documentation work in 2.2.8 (6f59abf)
- Merge pull request #143 from txjmb/release/2.2.8 (e66c1c3)
- chore(release): 2.2.8 (98dab12)
- Merge pull request #142 from txjmb/fix/multi-index-selectors (963eae4)
- fix(evaluator): repeat an element for each positional selector that names it (f2b27c4)
- Merge pull request #141 from txjmb/fix/byref-evaluator-dependent (f9edddc)
- Merge pull request #139 from txjmb/fix/recursive-truthiness (b2dd5b6)
- fix(evaluator): dispatch $eval by reference, and code the other nine (704840f)
- Merge pull request #138 from txjmb/fix/format-number-fractional-digits (b00c5a5)
- fix(evaluator): use one recursive truthiness rule, matching $boolean (70c35b3)
- test(differential): read the corpus fixtures as UTF-8 (26bf3a2)
- fix(functions): make $formatNumber produce jsonata-js's value (96d7156)
- Merge pull request #137 from txjmb/fix/format-number-picture-errors (cdea242)
- fix(functions): report the picture-string error jsonata-js reports (7c2de88)
- Merge pull request #134 from txjmb/test/differential-error-codes (b45247e)
- Merge pull request #133 from txjmb/docs/base64-charset-rationale (d386462)
- test(differential): compare error codes, and fix the 112 that did not match (37ad447)
- docs(functions): record why base64 stays UTF-8, from the reference's code (2a16007)
- Merge pull request #132 from txjmb/fix/indirect-builtin-binding (e530e72)
- fix(evaluator): dispatch a builtin bound to a variable as a callback (9051e1c)
- Merge pull request #131 from txjmb/fix/base64-and-parseinteger-leniency (934cc97)
- fix(functions): accept what jsonata-js accepts in base64 and $parseInteger (67248d3)
- Merge pull request #130 from txjmb/fix/null-as-value-constructors (9d5aba5)
- fix(evaluator): treat null as a value in object construction and
[](2b10b5c) - Merge pull request #129 from txjmb/fix/positional-binding-singleton (7a4ebbe)
- fix(evaluator): unwrap a one-value positional-binding result (8e6afb9)
- Merge pull request #128 from txjmb/fix/wildcard-on-scalars (e00fd1b)
- fix(evaluator): make
*yield undefined on a childless value and unwrap its singleton (d51b3dd) - Merge pull request #127 from txjmb/fix/missing-builtin-signatures (0395b4e)
- docs(changelog): record the signature-table drift fix (29c2418)
- test(signature): fail CI when the signature table drifts from jsonata-js (ce26c91)
- fix(signature): restore the six builtin signatures that had drifted away (eb28f5e)
- Merge pull request #125 from txjmb/fix/byref-builtin-dispatch-stage2 (095db4d)
- style(evaluator): use a range pattern for the reduce arity match (b2421a5)
- fix(evaluator): report MAX arity for host-overridden callback names (c9a179d)
- test(builtins): make the arity drift check bidirectional (ec98492)
- fix(builtins): guard lookup's sequence collapse, route all four sites through a helper (6437d48)
- test(fastpath): add $single and $sort to the by-reference matrix (559a063)
- fix(evaluator): consult callback arity in $single's predicate dispatch (d030e17)
- test(fastpath): record 9 pre-existing divergences found by the by-reference matrix (709faa7)
- fix(evaluator): scope by-reference dispatch to actual HOF-argument calls (01dc328)
- test(fastpath): add by-reference builtin matrix to the differential corpus (0a4ec50)
- feat(evaluator): wire builtin arity into HOF dispatch, delegate by-reference calls to dispatch_pure (5378186)
- feat(builtins): add BUILTIN_ARITY table sourced from jsonata-js implementation.length (21005b0)
- Merge pull request #121 from txjmb/fix/null-context-path-steps (7b702df)
- Merge pull request #117 from txjmb/dependabot/cargo/rust-dependencies-350c7d2b0d (6fd1c44)
- test(fastpath): pin the two non-null fixes that rode in with #114/#116 (1fa7bcf)
- fix(evaluator): stop treating null as undefined in path steps (#114) (7473175)
- chore(deps): bump simd-json in the rust-dependencies group (75bfcb3)
- fix(evaluator): stop treating null as undefined in the ~> pipe operator (#116) (16811aa)
- test(fastpath): add null-context probes for path steps and ~> (issues #114, #116) (ff24f3f)
- Merge pull request #115 from txjmb/fix/null-vs-undefined-conformance (a671cf9)
- fix(evaluator): clarify null-guard comment, pin block-step blast radius (166f38a)
- fix(evaluator): let a null context reach $string() through a path (6ccad61)
- fix(builtins): propagate undefined instead of null for four families (905253c)
- Merge pull request #108 from txjmb/fix/byref-builtin-dispatch (66bb9c0)
- docs(changelog): scope the neutrality claim to what the harnesses can see (e45a813)
- docs(changelog): report the byref-dispatch fixes, drop false neutrality claim (80b2893)
- fix(builtins): restore undefined propagation for $keys (285ce48)
- fix(builtins): restore undefined propagation for five shared-dispatch arms (9891e06)
- docs(changelog): correct the builtin count and drop the false $not claim (1c48eef)
- docs(changelog): record the shared builtin dispatcher (5e44188)
- refactor(builtins): delete the tree-walker's twenty-nine duplicate arms (8725bda)
- refactor(builtins): move the twenty-four tree-walker-only builtins (1fb132a)
- refactor(builtins): fold the compiled path's arms into dispatch_pure (060d350)
- refactor(builtins): move the shared prologue into dispatch_pure (0ff7e1a)
- refactor(builtins): add the module the three dispatch paths will share (4bfceb5)
- docs(plan): pre-flight fixes — no task ends red, and no worker pushes (38a1e22)
- docs(plan): implementation plan for stage 1, the shared dispatcher (f4c8fb4)
- docs(spec): revise — extract a shared pure dispatcher before #107 (fa6711e)
- docs(spec): design for by-reference builtin dispatch (#107) (231e694)
- Merge pull request #106 from txjmb/fix/builtin-conformance-tail (30e2794)
- docs(changelog): record the #104 builtin conformance fixes (1076eac)
- fix: close the builtin conformance tail — the corpus now diverges nowhere (499f43c)
- Merge pull request #105 from txjmb/fix/cluster-a-comparison-conformance (16099fd)
- fix: resolve the CodeQL findings blocking the merge (ccd04b4)
- test: use a variadic function for the >u8::MAX argument-count guard (907e17a)
- test: correct two more assertions the conformance work invalidated (d2378e7)
- chore: remove code the signature work made dead, and fix two stale assertions (08c72d9)
- fix(signature): let a missing argument reach the function, as the reference does (0189941)
- fix(evaluator): null is a value in $exists, $append and $sort (7f57a65)
- fix(evaluator): validate tree-walker builtin dispatch against signatures (176f59a)
- fix(evaluator): validate compiled builtin dispatch against signatures (9b25150)
- feat(signature): add the builtin signature table; stop treating null as missing (c0b8767)
- test: add a builtin matrix to the differential corpus (fa28825)
- fix(evaluator): in-operator membership, non-finite arithmetic, negating null (af6c935)
- test: widen the differential corpus with an operator matrix (b26d157)
- fix(evaluator):
&stringifies an explicit null as "null" (b4f5b03) - fix(evaluator): != against undefined is false; object steps build from the step value (c3735d4)
- fix(evaluator): $map/$filter return sequences; lambda params yield undefined (eb10e36)
- fix(evaluator): reject uncomparable operands in filters and sort comparators (32d4053)
- fix(evaluator): arithmetic on a runtime null raises instead of yielding null (16216f1)
- Merge pull request #101 from txjmb/fix/tree-walker-explicit-null-paths (778665f)
- style: sort imports in test_lazy_truthiness.py (c48db32)
- test: assert Python-dict and JSON routes stay equivalent (6057d89)
- fix(evaluator): don't compile
[-1]as a boolean filter (30b24f7) - fix(evaluator): keep explicit nulls through stage filters (007d407)
- fix(evaluator): comparison against undefined, and unbound variables (5453c9e)
- fix(evaluator): a non-empty Python dict is truthy on the compiled path (961ad0e)
- fix(evaluator,vm): treat a non-array value as a singleton sequence in predicates (fb74d28)
- fix(compiler,vm): carry standalone-vs-stage filter kind into the VM (76b0d40)
- fix(evaluator): numeric filter predicates select by index, not truthiness (7ff48a6)
- fix(evaluator): unwrap singleton results from filter predicates (a456b83)
- fix(evaluator): keep explicit nulls in path result sequences (4c1530b)
- Merge pull request #100 from txjmb/fix/fused-aggregate-type-errors (a7f6fb2)
- Merge pull request #99 from txjmb/docs/rust-api-examples (80a3681)
- Merge pull request #96 from txjmb/dependabot/cargo/rust-dependencies-cd1fc09b56 (2c3f1ba)
- style: apply rustfmt and ruff to the new fast-path tests (6dc8f82)
- test: differential harness for the evaluator's optimisation fast paths (053729a)
- fix(evaluator): raise T0412 from the fused aggregate fast path (8740784)
- docs(rust): make crate examples compile, and mark the package stable (ab68c7b)
- chore(deps): bump the rust-dependencies group across 1 directory with 5 updates (db17db6)
- Update README.md (13abd1f)
- Merge pull request #94 from txjmb/dependabot/github_actions/github/codeql-action-4.37.3 (792deba)
- Merge branch 'main' into dependabot/github_actions/github/codeql-action-4.37.3 (9e93d64)
- Merge pull request #93 from txjmb/claude/fix-dependabot-pr-mxa2bx (2d3beed)
- chore(deps): bump github/codeql-action from 4 to 4.37.3 (f87591f)
- style: apply ruff formatting to Python code blocks in READMEs (2a03f12)
- chore(deps): bump the rust-dependencies group with 2 updates (b63ccf4)
- Update jsonata-core dependency version to 2.2.7 (5be44c7)
- Update release version example in README (5820e20)
- Update README to clarify async implementation choice (4dd065f)
- docs(benchmarks): update performance.md for v2.2.7 (52cca9e)
Test Suite Compatibility
See the README for the current
reference-suite pass count -- this changelog no longer hardcodes a number here, since a
stale hardcoded count is exactly the kind of bug this project has previously shipped
and had to correct.
Installation
pip install jsonatapy==2.2.8Verification
import jsonatapy
print(jsonatapy.__version__) # Should print: 2.2.8