Skip to content

Support linked npm workflows with persistent WASI symlinks - #126

Merged
noise64 merged 7 commits into
mainfrom
gol-388-symlinked-npm-exec
Aug 28, 2026
Merged

Support linked npm workflows with persistent WASI symlinks#126
noise64 merged 7 commits into
mainfrom
gol-388-symlinked-npm-exec

Conversation

@noise64

@noise64 noise64 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor
  • resolves GOL-388
  • replaces runtime-local symlink placeholders with persistent relative WASI filesystem symlinks shared across fresh execution runtimes
  • enables local npm exec, npx, workspace links, npm link, registry-acquired bins, and representative pnpm-style package layouts
  • preserves the invoked .bin symlink path in process.argv[1], matching Node.js 22.14, while realpath-based module identity remains unchanged
  • rejects rooted symlink targets atomically with EINVAL; WASI preview 2 cannot resolve those targets inside a preopen
  • adds P2/P3 filesystem, execution, npm workflow, module identity, broken-link, cycle, rename, unlink, and exact-argv coverage
  • stacked on Run npm package-management workflows inside wasm-rquickjs #125; rebase onto main after that PR merges
  • TODO: GOL-427 tracks Windows linked workflows without Developer Mode or equivalent symlink privilege

Node compatibility

  • primary CI-enforced: 3215/4387 (73.3%)3174/4387 (72.4%)
  • full public: 3215/5750 (55.9%)3174/5750 (55.2%)
  • fs: 373 passing / 12 gaps339 passing / 46 gaps
  • module: 129 passing / 25 gaps122 passing / 32 gaps
  • the 41-test decrease is an intentional, honest reclassification: those vendored tests require rooted symlink targets that WASI cannot provide; persistent relative-link behavior is covered by focused runtime tests

Performance

@blacksmith-sh

This comment has been minimized.

@noise64
noise64 force-pushed the gol-58-npm-hardening branch from c6e8019 to ffbbee8 Compare August 24, 2026 10:32
@noise64
noise64 force-pushed the gol-388-symlinked-npm-exec branch 2 times, most recently from 7fd5100 to 92b4f7f Compare August 25, 2026 12:41
@noise64
noise64 force-pushed the gol-388-symlinked-npm-exec branch from bddc442 to 61c1683 Compare August 27, 2026 12:01
@noise64
noise64 marked this pull request as ready for review August 27, 2026 14:50
@noise64
noise64 requested a review from vigoo August 27, 2026 14:51
@noise64
noise64 changed the base branch from gol-58-npm-hardening to main August 28, 2026 09:22
@noise64
noise64 merged commit 5ac9d9c into main Aug 28, 2026
40 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