Repository navigation
Release v2.2.14
Changed
- Compiled regexes are reused. The same regex literal evaluated again, such as once per element
under$map, no longer compiles again; each thread keeps up to 256. - Updated Rust dependencies:
simd-json0.18.1 → 0.19.0, used by the defaultsimdfeature. (#274) - The
mcpextra now needs Python 3.11 or later. On Python 3.10,pip install 'jsonatapy[mcp]'installs nofastmcp, andjsonatapy mcpsays the extra needs 3.11. Its
dnspythondependency (throughemail-validator) has no release for 3.10 with the fix for
GHSA-45c3-73f7-pv4m. The rest ofjsonatapystill supports 3.10.
Fixed
- Object keys are in JavaScript's order: integer-like keys first in ascending order, then the
rest in insertion order, so$keys({"b":1,"2":2})is["2","b"]as in jsonata-js. Python
callers see it too: a dict an expression builds comes back in that order, while a dict passed
through untouched is the caller's own object and keeps its order. (#273) Thanks to
@Sawmonabo for finding this and for the fix. - A cancel or a timeout now stops
$distinctand$keyspart way. Both compare each element
with every one kept so far, and over a large input that ran to the end before U1003 or D1012 was
seen. (#272) Thanks to @Sawmonabo for the cancel check; the timeout check followed from it. \d,\w,\sand\bin a regex now mean what they mean in jsonata-js: ASCII digits and
word characters and ECMAScript's whitespace, so$contains("٣", /\d/)isfalse. (#271)
Thanks to @Sawmonabo for finding and fixing this.- A regex with the
iflag folds case as jsonata-js does, by upper case rather than Unicode
case folding. The Kelvin sign (U+212A) and the long s (U+017F) match only themselves, so
$contains("\u212A", /k/i)and/[\w]/iagainst it arefalse;ßandẞno longer match,
nor the Ohm and Angstrom signs withωandå; and characters outside the BMP no longer fold.
Security
uv.lock:authlib1.7.2 → 1.9.1 (seven advisories),joserfc1.7.3 → 1.7.7
(GHSA-jpxq-7h8p-2q76, GHSA-9pg5-8c7x-5hfx), anddnspython2.8.0 → 2.9.0
(GHSA-45c3-73f7-pv4m), which no longer resolves for Python 3.10 now that themcpextra needs
3.11 (see Changed). All three are transitive dependencies of the optionalmcpextra, not
of the published crate or of the wheel, which has no runtime dependencies. Users of themcp
extra resolve their own versions and should upgrade these. (#269, #270)
Full commit list: v2.2.13...v2.2.14
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.14# Cargo.toml
jsonata-core = "2.2.14"Verification
import jsonatapy
print(jsonatapy.__version__) # Should print: 2.2.14