Commit Graph
8 Commits
Author SHA1 Message Date
Chris Tate 6157fa93ab Merge base branch and fix 2026-10-25 07:02:48 -05:00
Chris Tate 0f7fd1bdb6 Merge base and fix 2026-10-25 02:27:42 -05:00
Chris Tate e6790def72 Merge main 2026-10-24 20:06:31 -05:00
Malte UblandClaude Opus 5.5 ec5f77f508 Give the libnode smoke dispatcher the sharedPush entry the bridge requires
ABI 7 takes sharedPush from the bootstrap's dispatcher as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 06:43:02 -07:00
Malte UblandClaude Opus 5.5 f42fc643de Give the libnode smoke dispatcher the load entry the bridge requires
ABI 5 takes a load function from the bootstrap's dispatcher; without it
the smoke program's start fails with an incomplete dispatcher.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 06:40:57 -07:00
Malte UblandClaude Opus 5.5 a0ae4ddad0 Drive the libnode smoke test through the hosted-loop bridge ABI
The libnode packs' smoke program (#1684) still used the pump/alive/
backend_fd entries that the hosted loop (#1696) replaced, so every
Build libnode pack job failed to compile it. It now provides the full
host table and dispatcher and runs Node's event loop once after starting
the asynchronous calls, as the runtime does at the end of a program.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 06:00:38 -07:00
Malte UblandClaude Opus 5.5 27b27fd5a8 Pass the stack limit of bridge ABI 2 in the libnode smoke test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 17:52:22 -07:00
Malte UblandClaude Opus 5.5 e9c6b68c07 Build prebuilt libnode packs for Node islands
Add the @scriptc/libnode-<platform> packs (linux-x64-gnu, linux-arm64-gnu,
darwin-arm64, darwin-x64): the pinned Node.js 24.22.0 built as a stripped
shared library with full ICU and its startup snapshot, the scriptc bridge
compiled against that release's headers, Node's LICENSE and a manifest
with the Node version, NODE_MODULE_VERSION, bridge ABI and file hashes.

packages/libnode-common holds the pin, the build (fetch and verify the
source tarball, configure --shared, build only the libnode target, strip,
stage with headers in a cache keyed by release, flags, platform and
toolchain; the bridge rebuilds in seconds against the cached headers),
a verifier, and a smoke test: a C program that loads a pack the way the
runtime does, starts Node from the snapshot and evaluates expressions
synchronously, asynchronously and throwing.

The libnode-packs workflow builds the packs on native runners, Linux in
the manylinux_2_28 images for a glibc 2.28 floor, caches each libnode
build, smoke-tests and uploads every pack. It never runs in the ordinary
build or test path. The compiler gains the pack lookup (SCRIPTC_LIBNODE,
then the installed package), validation, the nodeIslands.libnode
placements and the license notices for the Node island loader to use.

The bridge source and its C ABI header are the NI-1 bridge agent's,
included here so the packs build; the packs stay private until the
in-process island runtime ships.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 17:52:22 -07:00