Skip to content

ESON v1.1.0

Choose a tag to compare

@thelabcorner thelabcorner released this 08 Aug 19:31
· 11 commits to master since this release

ESON v1.1.0 — ESPACK-accelerated native parse gate

ESON 1.1.0 ships ESON.accel.jsx: a self-extracting single-file bundle (espack "1 + n" model) that materializes ESONJson.dll at runtime and auto-enables the native RFC-exact parse gate (ESON.useEspack(), outcome on ESON.espack).

What's new since v1.0.0

  • Native parse gate (src/native-lane.ts, native/eson_json.c rebuilt on the canonical ExternalObject ABI, live-verified on Illustrator 30.6.0): certified native RFC 8259 verdict with the full strict-parse fallback path preserved.
  • Single-file distribution: ESON.accel.jsx embeds ESONJson.dll (103 KB) + the shared esb64 accelerator (9.5 KB) as base64; the JSX unpacks both on first use into per-user cache dirs and loads via ExternalObject. Zero install steps — drop into the Scripts folder.
  • Differential parity: the 76-case enable-time certification corpus passes with the gate ON; gate-ON vs gate-OFF verdicts are identical on 28 valid/invalid/security cases (live-verified).
  • ESON core bug fix the live runs exposed: the ES3 engine truncates property names at U+0000, so the parse memo collided on raw-NUL texts — NUL texts are no longer memoized (src/parse.ts).
  • npm run build:accel builds + minifies the bundle; npm run accel-live runs the live verification.
  • Deterministic native build: native/build.ps1 links with /Brepro, so the PE timestamps (COFF header + export directory) are fixed and npm run native-build produces byte-identical ESONJson.dll every time — the accel bundle embeds it as base64 and the parity contract compares bytes.

Speed: what the accelerator actually buys

Measured live on Illustrator 30.6.0 (ExtendScript 4.5.6), cold parses, wall-clock batches:

Lane ~49 KB cold parse
JSX-only (pre-scan + sanitize + eval) ~67 ms
Native gate (validateText + sanitize + eval) ~82 ms
Gate effect parity-speed (0.8–1.0×)

The gate replaces only the regex pre-scan (~3.7 µs/KB, already optimized); sanitize + eval stay and dominate the cost, so today the gate is parity-speed — its value is the certified RFC-exact native verdict plus single-file delivery, not raw parse throughput. (The historical 14×/17× cold-parse wins were measured against the earlier, slower JSX pre-scan; the pre-scan optimization closed the gap.)

The speed wins of the espack bundle itself (measured, same host):

Operation Cost
One-time accelerator extraction (per system) ~13 ms
Payload extraction (native b64decodeToFile) 3–10 µs
Bundle load (skip-extract path) ~1.2–1.9 ms
esb64 lane acceleration (shared accel, live-verified) btoa 16 K: 18.6 ms → 317 µs (58.5×) · atob 48 K: 66.8 ms → 957 µs (69.8×)

Release deliverables

Deliverable Path Purpose
ESON.accel.jsx dist/ Self-extracting accelerated bundle — the single-file production artifact
ESON.accel.min.jsx dist/ Minified accel bundle (banner preserved)
ESONJson.dll native/build/ The native gate DLL (103 KB, /Brepro deterministic) — attached as a release asset for direct embedding / inspection
ESON.jsx dist/ Full-facade JSX bundle (Path 1 default + opt-in Path 2 gate)
eson-core.esm.mjs dist/ ESM core bundle for Node/automation
src/native-lane.ts src/ ESPACK adapter: useEspack() / ESON.espack
native/eson_json.c, native/eson_abi.h, native/build.ps1 native/ Native gate DLL source (canonical ExternalObject ABI, freestanding-friendly)
tests/eson-accel-live.mjs tests/ Live verification harness (gate certification, verdict parity, timings)
tests/native-lane.mjs, tests/native-lane-entry.ts tests/ Node-side native-lane suite (37 assertions)
probes/eson-corpus-parity.jsx probes/ Full JSONTestSuite gate-parity probe (309 corpus files)
examples/07-native-gate.jsx examples/ Two-path demo: gate OFF vs gate ON, certification report, timings

Validation (v1.1.0)

  • npm test: 624 assertions (ESON) + 37 assertions (native lane) — PASS
  • typecheck (tsc strict): clean
  • Live accel verification (Illustrator 30.6.0): bundle evals, ESPAK native mode, gate auto-enabled + certified (76 cases), gate-ON/OFF verdict parity (28 cases)
  • Re-verified on the deterministic rebuild (2026-08-08, Illustrator 30.6.0): npm run accel-live ALL CHECKS PASSED — gate auto-enabled + certified, verdict parity (28 cases), gate ON 184 µs vs gate OFF 164 µs at 48,976 chars.
  • License: GPL-3.0-or-later