ESON v1.1.0
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.crebuilt 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.jsxembedsESONJson.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 viaExternalObject. 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:accelbuilds + minifies the bundle;npm run accel-liveruns the live verification.- Deterministic native build:
native/build.ps1links with/Brepro, so the PE timestamps (COFF header + export directory) are fixed andnpm run native-buildproduces byte-identicalESONJson.dllevery 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-liveALL 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