Releases: aneryu/zjs
Releases · aneryu/zjs
Release list
Nightly
zjs v0.1.0
First real release, replacing 0.1.0-alpha.1 and 0.1.0-alpha.2. The checked
test262 profile reports zero failures (44,581 pass). The 15-item javascript-zoo
geomean is 1.0141 vs QuickJS. Trusted-code embedding positioning is unchanged:
zjs is not an in-process sandbox for hostile JavaScript.
- Completed QCP-1B: removed the legacy Phase 1/2/3 compiler, dual comparator,
and-Dzjs_compileroption. Deletion bisection traced the former crypto
regression to shrinkingCompileContextby one unused pointer, which
perturbed Zig 0.16 whole-program native layout despite identical bytecode and
allocation streams. The same-sized reserved word was used only as a control;
the shipped fix restores explicit non-inlined boundaries around V2 lowering
and the stack-size walk. The no-padding deletion candidate measures 1.0061x
on the 15-item Zoo A/B. The diagnosis and amended verdict are in
docs/qcp1_switch_decision.md§9. - Fixed Array sort writeback when an indexed setter mutates a successor
element, Error.prototype.stack setter edge cases, and TypedArray
DefineOwnProperty detach-during-conversion semantics. - Removed the historical C QuickJS performance comparison workflow and
perf-compare; the checked performance gate is the ZJS self-baseline. - Added a
run_runtime_profile.jshelper andzig build perf-uri-profile
shortcut for checked single-script--perf-jsonartifacts that stay separate
from multi-case microbench reports. - Extended checked runtime-profile artifacts with opcode summary rows and added
opcode-specific runtime diff metrics such asopcode_count:get_var_ref0. - Added deterministic opcode-count ceilings to checked runtime-profile runs so
focused hot-path fusions fail loudly when their opcode reductions disappear. - Added
diff_runtime_profile.jsso single-script runtime profiles can be
compared with explicit timing/allocation regression and improvement gates. - Added an empty checked-local int32 for-loop range skip for loops whose body is
only the induction update, reducing theempty_loopprofile from 60007
opcodes to 7 while preserving interrupt fallback. - Added a dense array indexed append fast path for simple int32 multiply/mask
element expressions while preserving inherited indexed setter fallback. - Added a var-local int32 arithmetic-store fast path for microbench-style loop
bodies without changing loop condition or post-update semantics. - Added narrow
String.fromCharCodeandMath.min/Math.maxmethod-call fast
paths that keep object coercion and monkey-patched methods on the generic
call path. - Added local, closure, and global simple-numeric bytecode call add-store fast
paths for tightacc += fn(i, c)loops while preserving non-simple function
side effects. - Tightened the URI 4-byte decode comparison fast path to use a borrowed
native-method guard instead of transient method value dup/free churn. - Shortened the percent-hex simple string add-store path used by URI decode
fixtures by avoiding the transient helper result value before global writeback. - Added a guarded
make_var_refassignment fusion forglobal = string + percentHex(int)loops so reference setup andput_ref_valueare skipped when
all participating bindings are ordinary global data properties. - Added matching global-string and literal-prefix declaration initializer
fusions forvar next = prefix + percentHex(int)andvar next = "%F0%A0" + percentHex(int), eliminating the URI 4-byte profile's remaining
get_var_ref0executions. - Added a backward-goto global int32 condition fusion that replays the target
loop condition directly at the backedge when it is an ordinary global data
comparison, reducing the URI 4-byte profile'sget_varexecutions by 66576. - Extended the URI strict-equality branch-count fusion to ordinary global data
count++, reducing the URI 4-byte profile'sif_false8executions from
65536 to 1 and itsget_varexecutions by another 65535. - Refreshed active documentation to match the current build steps, test262
boundary, ZJS self-baseline performance gate, and tracked active reports. - Removed the completed Production v1 roadmap from the active docs; public API,
compatibility, and release-checklist docs are the current authorities. - Merged the small Compatibility v1 summary into
COMPATIBILITY.mdso the
compatibility boundary has one active source of truth. - Removed old one-off test262 slice and QuickJS comparison report directories
fromreports/; the active gate report remainsreports/test262-latest/. - Removed the future-oriented Bun/uWS GC design note from the active docs; the
current GC boundary remains documented inREADME.mdandLIMITATIONS.md. - Removed the unused opcode-alignment report snapshot from
reports/. - Removed historical phase/ledger documents from the active tree:
docs/gc-memory-lifecycle-candidates.md,docs/perf/roadmap.md, and
reports/perf/baseline/phase-a-baseline.md.
Evidence
engine-production-gategreen from a clean checkout at2b58a5e1(log attached:zjs-v0.1.0-gate-evidence.txt); ReleaseSafe suite: 2266 passed / 1 skipped / 0 failed.- test262: 0/49,775 errors, 44,581 pass; corpus pin
4249661388e5d3f92a85186213da140a6481490f, configtest262.conf. - Performance: maintainer-measured on ARM Cortex-X925 / Linux 6.17 vs QuickJS pin
04be246(upstream Makefile default release build, GCC 13.3.0). Verdict and per-benchmark attribution:reports/perf/qjs-align/PARITY-LEDGER.md(2026-08-17 收尾终章) andreports/perf/qjs-align/2026-08-17/. No independent reproduction yet. - Authoritative status page:
STATUS.md. Boundary: trusted-code embedding only (docs/security-boundary.md).