0.24.0 (2026-11-07)#
Added runtime.on.interrupt(), runtime.on.terminate(),
runtime.on.hangup(), runtime.before.exit(), and matching self-signal actions
runtime.interrupt(), runtime.terminate(), and runtime.hangup() for portable
current-process lifecycle handling on POSIX Node, Bun, and Deno. Subscriptions
return idempotent removal functions; browser calls throw unimplemented.
Consumers own bounded cleanup and must remove intercepting listeners before
re-signalling for default termination. Before-exit callbacks retain the process
until their returned promises settle.
0.23.0 (2026-10-30)#
Portable ESM package resolution#
Changed runtime.resolve() to resolve bare packages with ESM import semantics
instead of CommonJS require.resolve() semantics. It now applies active host
conditions to package exports and imports, preserves nested package
ownership and self references, and supports package subpath patterns. Relative
and absolute paths retain their existing direct path resolution behavior.
Packages that expose different import and require targets now resolve to the
import target. Call runtime.toRequire(path).resolve(specifier) when the
CommonJS target is intentionally required.
Node resolution applies observable startup conditions, including
NODE_OPTIONS, --conditions, and --no-addons. Bun uses native resolution
first. Deno applies its built-in conditions and readable DENO_CONDITIONS, but
cannot reproduce CLI --conditions because Deno does not expose those startup
values to the running program.