-
- Notifications
You must be signed in to change notification settings - Fork 33.7k
esm: Source Phase Imports for WebAssembly #56919
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Collaborator
| Review requested:
|
c485531 to 8b3ce05 Compare Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@ ## main #56919 +/- ## ========================================== - Coverage 90.26% 90.24% -0.03% ========================================== Files 630 630 Lines 184690 184891 +201 Branches 36142 36173 +31 ========================================== + Hits 166712 166854 +142 - Misses 11021 11064 +43 - Partials 6957 6973 +16
|
mcollina approved these changes Feb 5, 2025
Member
mcollina left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Collaborator
targos reviewed Feb 5, 2025
targos reviewed Feb 5, 2025
targos reviewed Feb 5, 2025
targos approved these changes Feb 5, 2025
legendecas reviewed Feb 5, 2025
aduh95 reviewed Feb 5, 2025
aduh95 reviewed Feb 5, 2025
aduh95 reviewed Feb 5, 2025
Qard approved these changes Feb 6, 2025
aduh95 reviewed Feb 6, 2025
aduh95 reviewed Feb 6, 2025
This was referenced Feb 28, 2025
sbc100 added a commit to sbc100/emscripten that referenced this pull request Mar 3, 2025
Now that node support has been landed we can test this, at least against the latest node canary builds. See nodejs/node#56919 Fixes: emscripten-core#23047
sbc100 added a commit to sbc100/emscripten that referenced this pull request Mar 3, 2025
Now that node support has been landed we can test this, at least against the latest node canary builds. See nodejs/node#56919 Fixes: emscripten-core#23047
sbc100 added a commit to sbc100/emscripten that referenced this pull request Mar 4, 2025
Now that node support has been landed we can test this, at least against the latest node canary builds. See nodejs/node#56919 Fixes: emscripten-core#23047
sbc100 added a commit to sbc100/emscripten that referenced this pull request Mar 4, 2025
Now that node support has been landed we can test this, at least against the latest node canary builds. See nodejs/node#56919 Fixes: emscripten-core#23047
sbc100 added a commit to emscripten-core/emscripten that referenced this pull request Mar 4, 2025
Now that node support has been landed we can test this, at least against the latest node canary builds. See nodejs/node#56919 Fixes: #23047
RafaelGSS pushed a commit that referenced this pull request Apr 1, 2025
PR-URL: #56919 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
RafaelGSS pushed a commit that referenced this pull request Apr 1, 2025
PR-URL: #56919 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
PR-URL: #56919 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
PR-URL: #56919 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
4 tasks
codebytere added a commit to electron/electron that referenced this pull request Oct 21, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 22, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 22, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 23, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 24, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 28, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 28, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 30, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 30, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 30, 2025
* chore: upgrade Node.js to v24.10.0 * chore: fixup crypto patch * chore: fixup crypto test patch * src: prepare for v8 sandboxing nodejs/node#58376 * esm: fix module.exports export on CJS modules nodejs/node#57366 * chore: fixup lazyload fs patch * esm: Source Phase Imports for WebAssembly nodejs/node#56919 * module: remove --experimental-default-type nodejs/node#56092 * lib,src: refactor assert to load error source from memory nodejs/node#59751 * src: add source location to v8::TaskRunner nodejs/node#54077 * src: remove dependency on wrapper-descriptor-based CppHeap nodejs/node#54077 * src: do not use soon-to-be-deprecated V8 API nodejs/node#53174 * src: stop using deprecated fields of v8::FastApiCallbackOptions nodejs/node#54077 * test: update v8-stats test for V8 12.6 nodejs/node#54077 * esm: unflag --experimental-wasm-modules nodejs/node#57038 * test: adapt assert tests to stack trace changes nodejs/node#58070 * src,test: unregister the isolate after disposal and before freeing nodejs/node#58070 * src: use cppgc to manage ContextifyContext nodejs/node#56522 * src: replace uses of FastApiTypedArray nodejs/node#58070 * module: integrate TypeScript into compile cache nodejs/node#56629 * deps: update ada to 3.2.7 nodejs/node#59336 * src: make minor cleanups in encoding_binding.cc nodejs/node#57448 * src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2` nodejs/node#55453 * src: use non-deprecated Get/SetPrototype methods nodejs/node#59671 * src: simplify string_bytes with views nodejs/node#54876 * src: improve utf8 string generation performance nodejs/node#54873 * src: use non-deprecated Utf8LengthV2() method nodejs/node#58070 * src: use non-deprecated WriteUtf8V2() method nodejs/node#58070 * src: refactor WriteUCS2 and remove flags argument nodejs/node#58163 * src: use String::WriteV2() in TwoByteValue nodejs/node#58164 * node-api: use WriteV2 in napi_get_value_string_utf16 nodejs/node#58165 * node-api: use WriteOneByteV2 in napi_get_value_string_latin1 nodejs/node#58325 * src: migrate WriteOneByte to WriteOneByteV2 nodejs/node#59634 * fs: introduce dirent\.parentPath nodejs/node#50976 * src: avoid copy by using std::views::keys nodejs/node#56080 * chore: fixup patch indices * fix: errant use of context->GetIsolate() * fix: tweak BoringSSL compat patch for new changes * fix: add back missing isolate dtor declaration * fixup! esm: fix module.exports export on CJS modules * cli: remove --no-experimental-fetch flag https://github.com/nodejs/node/pull/52611/files * esm: Source Phase Imports for WebAssembly nodejs/node#56919 * fixup! src: prepare for v8 sandboxing * chore: bump @types/node to v24 * chore: fix const assignment in crypto test * fix: sandbox pointer patch issues * chore: rework source phase import patch * src: add percentage support to --max-old-space-size nodejs/node#59082 * chore: fixup crypto tests * chore: HostImportModuleWithPhaseDynamically todo * fix: cjs esm failures * fix: v8::Object::Wrappable issues - v8/node@b72a615 - v8/node@490bac2 - v8/node@4896a0d * chore: remove deleted specs * src: use v8::ExternalMemoryAccounter nodejs/node#58070 * fs: port SonicBoom module to fs module as FastUtf8Stream nodejs/node#58897 * chore: tweak sandboxed pr patch * test: disable parallel/test-os-checked-function * test: use WHATWG URL instead of url.parse * fix: OPENSSL_secure_zalloc doesn't work in BoringSSL * chore: fix accidental extra line * 7017517: [defer-import-eval] Parse import defer syntax https://chromium-review.googlesource.com/c/v8/v8/+/7017517
trop bot added a commit to electron/electron that referenced this pull request Oct 30, 2025
nodejs/node#56919 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
trop bot added a commit to electron/electron that referenced this pull request Oct 30, 2025
nodejs/node#56919 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
TheCommieAxolotl pushed a commit to TheCommieAxolotl/electron that referenced this pull request Nov 2, 2025
* chore: upgrade Node.js to v24.10.0 * chore: fixup crypto patch * chore: fixup crypto test patch * src: prepare for v8 sandboxing nodejs/node#58376 * esm: fix module.exports export on CJS modules nodejs/node#57366 * chore: fixup lazyload fs patch * esm: Source Phase Imports for WebAssembly nodejs/node#56919 * module: remove --experimental-default-type nodejs/node#56092 * lib,src: refactor assert to load error source from memory nodejs/node#59751 * src: add source location to v8::TaskRunner nodejs/node#54077 * src: remove dependency on wrapper-descriptor-based CppHeap nodejs/node#54077 * src: do not use soon-to-be-deprecated V8 API nodejs/node#53174 * src: stop using deprecated fields of v8::FastApiCallbackOptions nodejs/node#54077 * test: update v8-stats test for V8 12.6 nodejs/node#54077 * esm: unflag --experimental-wasm-modules nodejs/node#57038 * test: adapt assert tests to stack trace changes nodejs/node#58070 * src,test: unregister the isolate after disposal and before freeing nodejs/node#58070 * src: use cppgc to manage ContextifyContext nodejs/node#56522 * src: replace uses of FastApiTypedArray nodejs/node#58070 * module: integrate TypeScript into compile cache nodejs/node#56629 * deps: update ada to 3.2.7 nodejs/node#59336 * src: make minor cleanups in encoding_binding.cc nodejs/node#57448 * src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2` nodejs/node#55453 * src: use non-deprecated Get/SetPrototype methods nodejs/node#59671 * src: simplify string_bytes with views nodejs/node#54876 * src: improve utf8 string generation performance nodejs/node#54873 * src: use non-deprecated Utf8LengthV2() method nodejs/node#58070 * src: use non-deprecated WriteUtf8V2() method nodejs/node#58070 * src: refactor WriteUCS2 and remove flags argument nodejs/node#58163 * src: use String::WriteV2() in TwoByteValue nodejs/node#58164 * node-api: use WriteV2 in napi_get_value_string_utf16 nodejs/node#58165 * node-api: use WriteOneByteV2 in napi_get_value_string_latin1 nodejs/node#58325 * src: migrate WriteOneByte to WriteOneByteV2 nodejs/node#59634 * fs: introduce dirent\.parentPath nodejs/node#50976 * src: avoid copy by using std::views::keys nodejs/node#56080 * chore: fixup patch indices * fix: errant use of context->GetIsolate() * fix: tweak BoringSSL compat patch for new changes * fix: add back missing isolate dtor declaration * fixup! esm: fix module.exports export on CJS modules * cli: remove --no-experimental-fetch flag https://github.com/nodejs/node/pull/52611/files * esm: Source Phase Imports for WebAssembly nodejs/node#56919 * fixup! src: prepare for v8 sandboxing * chore: bump @types/node to v24 * chore: fix const assignment in crypto test * fix: sandbox pointer patch issues * chore: rework source phase import patch * src: add percentage support to --max-old-space-size nodejs/node#59082 * chore: fixup crypto tests * chore: HostImportModuleWithPhaseDynamically todo * fix: cjs esm failures * fix: v8::Object::Wrappable issues - v8/node@b72a615 - v8/node@490bac2 - v8/node@4896a0d * chore: remove deleted specs * src: use v8::ExternalMemoryAccounter nodejs/node#58070 * fs: port SonicBoom module to fs module as FastUtf8Stream nodejs/node#58897 * chore: tweak sandboxed pr patch * test: disable parallel/test-os-checked-function * test: use WHATWG URL instead of url.parse * fix: OPENSSL_secure_zalloc doesn't work in BoringSSL * chore: fix accidental extra line * 7017517: [defer-import-eval] Parse import defer syntax https://chromium-review.googlesource.com/c/v8/v8/+/7017517
codebytere added a commit to electron/electron that referenced this pull request Nov 4, 2025
* chore: upgrade Node.js to v24.10.0 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fixup crypto patch Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fixup crypto test patch Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: prepare for v8 sandboxing nodejs/node#58376 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * esm: fix module.exports export on CJS modules nodejs/node#57366 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fixup lazyload fs patch Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * esm: Source Phase Imports for WebAssembly nodejs/node#56919 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * module: remove --experimental-default-type nodejs/node#56092 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * lib,src: refactor assert to load error source from memory nodejs/node#59751 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: add source location to v8::TaskRunner nodejs/node#54077 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: remove dependency on wrapper-descriptor-based CppHeap nodejs/node#54077 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: do not use soon-to-be-deprecated V8 API nodejs/node#53174 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: stop using deprecated fields of v8::FastApiCallbackOptions nodejs/node#54077 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * test: update v8-stats test for V8 12.6 nodejs/node#54077 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * esm: unflag --experimental-wasm-modules nodejs/node#57038 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * test: adapt assert tests to stack trace changes nodejs/node#58070 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src,test: unregister the isolate after disposal and before freeing nodejs/node#58070 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: use cppgc to manage ContextifyContext nodejs/node#56522 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: replace uses of FastApiTypedArray nodejs/node#58070 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * module: integrate TypeScript into compile cache nodejs/node#56629 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * deps: update ada to 3.2.7 nodejs/node#59336 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: make minor cleanups in encoding_binding.cc nodejs/node#57448 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2` nodejs/node#55453 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: use non-deprecated Get/SetPrototype methods nodejs/node#59671 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: simplify string_bytes with views nodejs/node#54876 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: improve utf8 string generation performance nodejs/node#54873 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: use non-deprecated Utf8LengthV2() method nodejs/node#58070 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: use non-deprecated WriteUtf8V2() method nodejs/node#58070 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: refactor WriteUCS2 and remove flags argument nodejs/node#58163 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: use String::WriteV2() in TwoByteValue nodejs/node#58164 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * node-api: use WriteV2 in napi_get_value_string_utf16 nodejs/node#58165 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * node-api: use WriteOneByteV2 in napi_get_value_string_latin1 nodejs/node#58325 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: migrate WriteOneByte to WriteOneByteV2 nodejs/node#59634 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fs: introduce dirent\.parentPath nodejs/node#50976 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: avoid copy by using std::views::keys nodejs/node#56080 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fixup patch indices Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: errant use of context->GetIsolate() Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: tweak BoringSSL compat patch for new changes Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: add back missing isolate dtor declaration Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fixup! esm: fix module.exports export on CJS modules Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * cli: remove --no-experimental-fetch flag https://github.com/nodejs/node/pull/52611/files Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * esm: Source Phase Imports for WebAssembly nodejs/node#56919 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fixup! src: prepare for v8 sandboxing Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: bump @types/node to v24 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fix const assignment in crypto test Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: sandbox pointer patch issues Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: rework source phase import patch Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: add percentage support to --max-old-space-size nodejs/node#59082 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fixup crypto tests Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: HostImportModuleWithPhaseDynamically todo Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: cjs esm failures Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: v8::Object::Wrappable issues - v8/node@b72a615 - v8/node@490bac2 - v8/node@4896a0d Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: remove deleted specs Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * src: use v8::ExternalMemoryAccounter nodejs/node#58070 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fs: port SonicBoom module to fs module as FastUtf8Stream nodejs/node#58897 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: tweak sandboxed pr patch Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * test: disable parallel/test-os-checked-function Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * test: use WHATWG URL instead of url.parse Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * fix: OPENSSL_secure_zalloc doesn't work in BoringSSL Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: fix accidental extra line Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * 7017517: [defer-import-eval] Parse import defer syntax https://chromium-review.googlesource.com/c/v8/v8/+/7017517 Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dont-land-on-v20.x PRs that should not land on the v20.x-staging branch and should not be released in v20.x. dont-land-on-v22.x PRs that should not land on the v22.x-staging branch and should not be released in v22.x. esm Issues and PRs related to the ECMAScript Modules implementation. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. semver-minor PRs that contain new features and should be released in the next minor version. wasm Issues and PRs related to WebAssembly.
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
This implements the Stage 3 Source Phase Imports proposal for Node.js (with latest specification at tc39/ecma262#3492), based on the new V8 parser and module loading APIs for this feature.
Phases in the module pipeline represent the ability to load uninstantiated modules (and in future with import defer, unexecuted modules as well).
While we are still waiting for progression on https://github.com/tc39/proposal-esm-phase-imports for JS Source Phase objects, this implements only the WebAssembly source phase per the Wasm ESM Integration Phase 3 proposal (https://github.com/webassembly/esm-integration).
This PR adds support both for dynamic and static source phase syntax:
This allows obtaining a Wasm module through the ESM integration, without it being instantiated through the Node.js resolver, to permit custom instantiations:
The dynamic source phase support is a one-line TODO, which is pending #56842. When this lands the skipped tests have been tested against that branch to fully pass.
When a source phase representation for a module is not available, a new
ERR_SOURCE_PHASE_NOT_DEFINEDSyntaxError is thrown as per the standard.The VM API is updated to take a string phase argument as its last argument, although the ability to define source phase representations for virtual modules is not currently supported, and left as a future integration point. Perhaps this will simplify with ESM Phase Imports in future as well allowing handles to modules outside of the VM graph.
Resolves #53178.
@nodejs/loaders