From b867eee1ca3b0760a628f5ce747bca4b16249a57 Mon Sep 17 00:00:00 2001 From: Wm Talcott <32972881+codetalcott@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:27:21 -0400 Subject: [PATCH] release: 0.16.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- CHANGELOG.md | 15 +++++++++++---- npm/darwin-arm64/package.json | 2 +- npm/linux-arm64/package.json | 2 +- npm/linux-x64/package.json | 2 +- package-lock.json | 16 ++++++++-------- package.json | 8 ++++---- pixi.toml | 2 +- 7 files changed, 27 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b184d4b..46e05fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,13 +3,20 @@ All notable changes to napi-mojo. The project is in alpha; minor versions may break the source API that downstream addons compile against. -## Unreleased +## 0.16.0 — 2026-09-17 -**Mojo 1.1.0 stable toolchain adoption** (`max = "==26.6.0"`, from Mojo 1.0.0 / -`26.5.0`). Four source files changed; no public Mojo signature changed, so -downstream addons compile unmodified. Full account in +**Adopts the Mojo 1.1.0 stable toolchain** (`max = "==26.6.0"`, from Mojo +1.0.0 / `26.5.0`). This is a minor rather than a patch for that reason alone: +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. Full account in [`docs/toolchain-migrations.md`](docs/toolchain-migrations.md). +**It also corrects every computed error message the framework produces.** Those +trailed heap garbage in every release to date — see Fixed, below. Anything +asserting on a type-mismatch message with a substring match will keep passing; +anything comparing one whole will now see the message it expected. + ### Fixed - **Every computed error message trailed heap garbage.** The eight diff --git a/npm/darwin-arm64/package.json b/npm/darwin-arm64/package.json index 84ccfcb..f72c75d 100644 --- a/npm/darwin-arm64/package.json +++ b/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@napi-mojo/darwin-arm64", - "version": "0.15.1", + "version": "0.16.0", "description": "napi-mojo prebuilt binary for macOS arm64", "main": "index.node", "files": [ diff --git a/npm/linux-arm64/package.json b/npm/linux-arm64/package.json index 009da64..3426b7d 100644 --- a/npm/linux-arm64/package.json +++ b/npm/linux-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@napi-mojo/linux-arm64", - "version": "0.15.1", + "version": "0.16.0", "description": "napi-mojo prebuilt binary for Linux arm64", "main": "index.node", "files": [ diff --git a/npm/linux-x64/package.json b/npm/linux-x64/package.json index eef5997..5f06fe9 100644 --- a/npm/linux-x64/package.json +++ b/npm/linux-x64/package.json @@ -1,6 +1,6 @@ { "name": "@napi-mojo/linux-x64", - "version": "0.15.1", + "version": "0.16.0", "description": "napi-mojo prebuilt binary for Linux x64", "main": "index.node", "files": [ diff --git a/package-lock.json b/package-lock.json index 9448958..0928623 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "napi-mojo", - "version": "0.15.1", + "version": "0.16.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "napi-mojo", - "version": "0.15.1", + "version": "0.16.0", "license": "MIT", "bin": { "napi-mojo": "bin/napi-mojo.mjs" @@ -18,9 +18,9 @@ "node": ">=22.12.0" }, "optionalDependencies": { - "@napi-mojo/darwin-arm64": "0.15.1", - "@napi-mojo/linux-arm64": "0.15.1", - "@napi-mojo/linux-x64": "0.15.1" + "@napi-mojo/darwin-arm64": "0.16.0", + "@napi-mojo/linux-arm64": "0.16.0", + "@napi-mojo/linux-x64": "0.16.0" } }, "node_modules/@babel/code-frame": { @@ -1092,7 +1092,7 @@ } }, "node_modules/@napi-mojo/darwin-arm64": { - "version": "0.15.1", + "version": "0.16.0", "cpu": [ "arm64" ], @@ -1103,7 +1103,7 @@ ] }, "node_modules/@napi-mojo/linux-arm64": { - "version": "0.15.1", + "version": "0.16.0", "cpu": [ "arm64" ], @@ -1114,7 +1114,7 @@ ] }, "node_modules/@napi-mojo/linux-x64": { - "version": "0.15.1", + "version": "0.16.0", "cpu": [ "x64" ], diff --git a/package.json b/package.json index cbdb3f5..c8ec855 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "napi-mojo", - "version": "0.15.1", + "version": "0.16.0", "description": "Build Node.js native addons in Mojo — the Mojo equivalent of napi-rs", "main": "index.js", "types": "index.d.ts", @@ -94,9 +94,9 @@ "node-addon" ], "optionalDependencies": { - "@napi-mojo/darwin-arm64": "0.15.1", - "@napi-mojo/linux-arm64": "0.15.1", - "@napi-mojo/linux-x64": "0.15.1" + "@napi-mojo/darwin-arm64": "0.16.0", + "@napi-mojo/linux-arm64": "0.16.0", + "@napi-mojo/linux-x64": "0.16.0" }, "devDependencies": { "jest": "^30.4.2" diff --git a/pixi.toml b/pixi.toml index c45d403..bfda0f0 100644 --- a/pixi.toml +++ b/pixi.toml @@ -3,7 +3,7 @@ authors = ["Wm Talcott "] channels = ["conda-forge", "https://conda.modular.com/max/"] name = "napi-mojo" platforms = ["osx-arm64", "linux-64", "linux-aarch64"] -version = "0.15.1" +version = "0.16.0" [tasks] # WARNING: this rewrites only the `max = ` line, NOT the channel. Since the