Nub 0.9.7 runs each nub --test file once again, keeps the whole manifest of URL, git and file: dependencies during install, and fixes two compat-mode launch failures.
Runtime
| PR | Area | What changed |
|---|---|---|
| #993 | nub --test | Each test file runs once. 0.9.5 and 0.9.6 ran every test file twice. |
| #993 | Threadpool startup | libuv's threadpool is built on a private loop, so user code no longer sees a startup fs.access request: process.getActiveResourcesInfo() and async_hooks match plain Node, and the event loop exits on the same turn. |
| #993 | Array iterator | A script that deletes Array.prototype[Symbol.iterator] and then imports a module no longer crashes in Nub's load hook. |
| #1006 | Nested invocations | A nub command started beneath the node shim, --node or nodeCompat runs as Nub instead of on plain Node (#1005). A NODE_COMPAT set by the user is honored as before. |
| #1007 | Compat mode on macOS | With TMPDIR unset, a compat-mode run could exit with code 137 before Node started. |
Package manager
URL tarball, git and file: dependencies keep their whole manifest during resolution, so they install the way registry packages do (#963):
optionalDependenciesare filtered by platform, required peers are installed, bundled dependencies are not resolved again, andos,cpuandlibcapply.nub.lockand the other portable lockfiles record every platform's optional URL tarball with its integrity, as npm and pnpm do, and only the host's variant is installed. An optional URL tarball that fails to download is skipped with a warning.- A direct URL package keeps its platform and peer metadata after the lockfile is written and read back.
- Two
nub.lockround-trip failures are fixed: a long URL-keyed entry was written on one line and failed the next install withexpected struct RawSnapshot, and a scoped URL dependency was read as an npm alias.
The full release notes list every change in this release.