Skip to content

v0.3.0 — correctness-complete

Latest

Choose a tag to compare

@savannt savannt released this 25 Jul 20:23

Correctness-complete. Both engines — the tree-walker behind the public aowli-interp / aowli-dbg, and the internal bytecode VM — now hit zero in-scope divergence across a 423-program differential corpus run against the nimony compiler. The engines agree with each other and with native, program for program.

What landed since v0.2.2 (perf pass)

  • object value-copy (=copy) semantics — assigning or binding a value object, tuple, or value array copies the envelope (references stay shared), so var x = a; x.a = 999 no longer mutates a. A real aliasing bug in the value model, fixed.
  • the last OS-boundary gaps — real host stat/lstat (so fileExists / dirExists are correct instead of silently false), pointer-identity in == / !=, and cast[int](ptr) flat-memory round-trip.
  • broad correctness — float→int conversion, block-expression values, cyclic-import initialization, a self-nested-iterator hang, and Table-element write-back (inc t[k]).

Scope

{.emit.} of literal C source plus C-level FFI is not handled by the pure value interpreter — it's territory for the hybrid-native provider (running that module through the real C toolchain as a shared object), which is on the roadmap. It is not a correctness gap in the interpreter.

Binaries

Hardened (IR control-flow obfuscation + fail-closed licence gate + strip --strip-all + provenance-section removal). This build is licensed through 2026-08-24; after that it refuses to run — grab a newer build. SHA256 + VirusTotal for each binary are in the README.

chmod +x bin/aowli-interp bin/aowli-dbg
./bin/aowli-interp <module.s.nif>