All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
0.1.1 - 2026-07-08
0.1.0
Initial release.
- Elixir NIF wrapper around
zapcode-core(a minimal secure TypeScript-subset interpreter in Rust). Runs against our fork, which fixes several upstream v1.5.3 correctness bugs: array & object spread (were silently-wrong / crashing), in-place array mutation (pushet al. never persisted),switch(a barebreaklooped forever), and destructuring parameters. Regex — previously a silent no-op — is now rejected with a clear error. Net goal: no silent wrong answers. - Interactive
start/resumeexecution model with a suspend-at-external-call tool bridge — the tool runs on a normal BEAM process, not inside the NIF. - Durable suspend/resume:
dump_snapshot/1serializes a paused run to a binary andload_snapshot/1restores it forresume/2— in another process or after a restart. UnlikeExMonty,dump_snapshot/1is non-destructive. ExZapcode.Sandbox.run/2high-level driver andExZapcode.eval/2, mirroring theExMontyreturn contract ({:ok, value, output} | {:error, %Exception{}}).- Resource limits: wall-clock time, memory, stack depth, allocations.
- Full value marshalling between TypeScript and Elixir terms.
- Precompiled NIFs for macOS and Linux (
aarch64/x86_64) viarustler_precompiled.