Skip to content

release: 0.16.0 - #119

Merged
codetalcott merged 1 commit into
mainfrom
release/0.16.0
Sep 17, 2026
Merged

codetalcott merged 1 commit into
mainfrom
release/0.16.0

Conversation

@codetalcott

Copy link
Copy Markdown
Owner

Cuts 0.16.0. Seven files: the six synced version sites plus the changelog heading.

Why minor, not patch. The Mojo pin moves from 1.0.0 to 1.1.0. Downstream addons compile against the published src/, so taking this upgrade moves them onto that toolchain — which this project treats as part of the public contract. No public Mojo signature changed, so they compile unmodified once there.

Why now. Two things are waiting on it:

  • @qkstat/retrieve and @qkstat/embed build against the published source, so they cannot adopt Mojo 1.1.0 until this ships.
  • Every computed error message the framework produces has trailed heap garbage in every release to date. Consumers see greet: expected string, got numberuffer today.

Consumer-visible surface. The corrected error messages, three new exports, and one new shipped document (docs/MOJO-RULES.md, generated from CLAUDE.md and gated). The warnings-as-errors default added this cycle lives in build scripts that are not in the published file set, so it never reaches a consumer's build.

Verified before tagging — the same list 0.15.1 recorded:

  • all packages in sync at 0.16.0
  • npm ci succeeds with the bumped, as-yet-unpublished optional dependencies and leaves the lockfile untouched
  • all four target packages already exist on npm, so OIDC trusted publishing can push a new version of each (no bootstrap case, which is what half-published 0.13.0)
  • the platform gate passes
  • 816 tests and 12 GC finalizer tests green
  • the publish pipeline rehearsed on main via workflow_dispatch, which ships nothing

Publishing happens when a GitHub release is published, not on this merge.

🤖 Generated with Claude Code

Adopts the Mojo 1.1.0 stable toolchain (max ==26.6.0, from 1.0.0 / 26.5.0).
That alone makes this a minor rather than a patch: downstream addons compile
against the published src/, so taking this upgrade moves them onto that
toolchain. No public Mojo signature changed, so they compile unmodified
once there.

It also corrects every computed error message the framework produces. The
eight throw_js_*_dynamic helpers handed a Mojo String's buffer to napi_throw_*,
which reads a NUL-terminated const char*, so every generated type-mismatch
error trailed heap garbage in every release to date. A substring assertion
cannot see a suffix, which is how it survived; the tests now compare whole
messages.

Three new exports (hostConsoleError, parallelSquares, asyncRuntimeInitOk's
companion diagnostics) and one new shipped document, docs/MOJO-RULES.md —
the framework's own FFI rules, generated from CLAUDE.md and gated, so a
consumer compiling against src/ finally gets the rules that keep that code
from crashing.

Verified before tagging: all packages in sync at 0.16.0; `npm ci` succeeds
with the bumped and as-yet-unpublished optional dependencies and leaves the
lockfile untouched; all four target packages already exist on npm so OIDC can
push a new version of each; the platform gate passes; 816 tests and 12 GC
tests green; the publish pipeline rehearsed on main with nothing shipped.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@codetalcott
codetalcott merged commit 4064374 into main Sep 17, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant