Skip to content

Releases: aoughwl/aowli-release

v0.3.0 — correctness-complete

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>

v0.2.2 — full interpreter perf pass

Choose a tag to compare

@savannt savannt released this 24 Jul 00:34

v0.2.2 — the full interpreter performance pass, on top of v0.2.1's stdin-hang fix.

~2.2x faster tight loops and ~1.2-1.5x on arithmetic / branch / call-heavy code (the tree-walker that backs aowli-dbg), from eliminating per-iteration heap allocations and per-node string work. Byte-identical output to before.

sha256:

  • aowli-interp: 82a5c71fa159afbee6b572336dfb514d1c624b1444a7d50a4390a10552931b13
  • aowli-dbg: 62fea336e6e64431067c0155f15139c62d6fbb8ab33b28f1251cf4468e3c4208

Builds carry a short-lived licence gate; ping timbuktu_guy on Discord for a fresh build if it expires.