Skip to content

Release v2.2.8 - "Conform-ata"

Choose a tag to compare

@github-actions github-actions released this 25 Aug 21:46
· 290 commits to main since this release
dd7ab92

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

Verification

import jsonatapy
print(jsonatapy.__version__)  # Should print: 2.2.8