Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
2fc25fd
lib: flag to conditionally modify proto on deprecate
RafaelGSS Jul 8, 2025
f57ee3d
net: update net.blocklist to allow file save and file management
alphaleadership Jul 8, 2025
ac4f7aa
test: add missing port=0 arg in test-debugger-extract-function-name
dario-piotrowicz Jul 8, 2025
c8a7964
meta: add marco-ippolito to security release stewards
marco-ippolito Jul 9, 2025
e704349
lib: fix incorrect `ArrayBufferPrototypeGetDetached` primordial type
dario-piotrowicz Jul 9, 2025
9d073f3
doc: add sponsorship link to RafaelGSS
RafaelGSS Jul 9, 2025
d02831e
inspector: initial support for Network.loadNetworkResource
islandryu Jul 10, 2025
4a42360
doc: add scroll margin to links
silverwind Jul 10, 2025
1f18451
dns: support max timeout
theanarkh Jul 10, 2025
cb08a5d
doc: add missing `<code>` blocks
aduh95 Jul 10, 2025
3e9ed4b
doc: add stability index to the `--watch-kill-signal` flag
dario-piotrowicz Jul 10, 2025
6a8a73a
tools: ignore CVE mention when linting release proposals
aduh95 Jul 13, 2025
0b84052
doc: remove unused import in `zlib.md`
coderaiser Jul 14, 2025
756c7dd
doc: refine `util.parseArgs` `default` definition
Slayer95 Jul 15, 2025
1b6b5e7
doc: fix typed list formatting
avivkeller Jul 15, 2025
0b5613f
doc: run license-builder
github-actions[bot] Jul 16, 2025
7d747ae
doc: clarify ERR_FS_FILE_TOO_LARGE to reflect fs.readFile() I/O limit
haramj Jul 16, 2025
d0f40f3
tools,test: enforce best practices to detect never settling promises
aduh95 Jul 16, 2025
0b93ca3
doc: add RafaelGSS as steward July 25
RafaelGSS Jul 16, 2025
0f0ce63
build: remove suppressions.supp
RafaelGSS Jul 17, 2025
4a12f5d
test: mark test-inspector-network-fetch as flaky on Windows
joyeecheung Jul 17, 2025
ff6be2e
node-api,doc: update links to ecma262 with section names
legendecas Jul 18, 2025
cda1dab
crypto: add tls.setDefaultCACertificates()
joyeecheung Jul 18, 2025
a23562f
test: update `startCLI` to set `--port=0` by default
dario-piotrowicz Jul 20, 2025
8440b61
benchmark: reduce N for diagnostics_channel subscribe benchmark
artimmy Jul 20, 2025
fa1a532
doc: fix typo in writing-test.md
SeokhunEom Jul 21, 2025
ba380f7
doc: avoid suggesting testing fast api with intense loop
legendecas Jul 21, 2025
d332957
test: skip tests that cause timeouts on IBM i
abmusse Jul 21, 2025
c637a2c
src: add cache to nearest parent package json
IlyasShabi Jul 21, 2025
0dcc84c
deps: update corepack to 0.34.0
nodejs-github-bot Jul 22, 2025
79c5a8f
deps: upgrade openssl sources to openssl-3.0.17
nodejs-github-bot Jul 20, 2025
f71f427
deps: update archs files for openssl-3.0.17
nodejs-github-bot Jul 20, 2025
89ac344
test: update WPT for WebCryptoAPI to 19d82c57ab
nodejs-github-bot Jul 20, 2025
667c2ce
test: update WPT for WebCryptoAPI to ab08796857
nodejs-github-bot Jul 21, 2025
e419d20
doc: add Aditi-1400 to collaborators
Aditi-1400 Jul 22, 2025
8d60602
perf_hooks: do not expose SafeMap via Histogram wrapper
Renegade334 Jul 22, 2025
039949e
tools: bump @eslint/plugin-kit from 0.3.1 to 0.3.3 in /tools/eslint
dependabot[bot] Jul 22, 2025
5a0fd56
src: remove declarations of removed BaseObject static fns
addaleax Jul 22, 2025
fd4ba38
deps: update googletest to 7e17b15
nodejs-github-bot Jul 22, 2025
e8da171
deps: update sqlite to 3.50.3
nodejs-github-bot Jul 22, 2025
251b65d
meta: move one or more collaborators to emeritus
nodejs-github-bot Jul 23, 2025
3aee762
test: expand linting rules around `assert` w literal messages
addaleax Jul 23, 2025
9075a1a
src: use C++20 `consteval` for `FastStringKey`
addaleax Jul 21, 2025
1e7639e
src: use `FastStringKey` for `TrackV8FastApiCall`
addaleax Jul 21, 2025
e22dddf
util: respect nested formats in styleText
himself65 Jul 23, 2025
6ffaac6
doc: add constraints for mem leak to threat model
RafaelGSS Jul 24, 2025
3c6639e
doc: improve onboarding instructions
joyeecheung Jul 24, 2025
cba0de1
tools: add support for URLs to PR commits in `merge.sh`
aduh95 Jul 24, 2025
e592d73
cli: support `${pid}` placeholder in --cpu-prof-name
haramj Jul 24, 2025
ef1bc3f
doc: fix broken sentence in `URL.parse`
SuperchupuDev Jul 24, 2025
07e173d
benchmark: fix sqlite-is-transaction
RafaelGSS Jul 24, 2025
4e51993
benchmark: drop misc/punycode benchmark
RafaelGSS Jul 24, 2025
2044968
benchmark: small lint fix on _cli.js
RafaelGSS Jul 24, 2025
d0ac331
benchmark: add --track to benchmark
RafaelGSS Jul 25, 2025
f9bc257
tools: clarify README linter error message
joyeecheung Jul 25, 2025
0769e5a
src: call unmask after install signal handler
theanarkh Jul 25, 2025
1b9b5bd
benchmark: adjust configuration for string-decoder bench
RafaelGSS Jul 25, 2025
74e1aa4
process: make execve's args argument optional
mureinik Jul 26, 2025
b549dea
doc: copyedit SECURITY.md
Trott Jul 26, 2025
3a9aca9
test: fix flaky test-worker-message-port-transfer-filehandle test
himself65 Jul 26, 2025
8615ea6
buffer: cache Environment::GetCurrent to avoid repeated calls
mertcanaltin Jul 26, 2025
d7e2376
test: prepare test-crypto-rsa-dsa for newer OpenSSL
richardlau May 1, 2025
b30a211
build,deps,tools: prepare to update to OpenSSL 3.5
richardlau Jul 25, 2025
feec26d
test: use mustSucceed in test-fs-read
mete0rfish Jul 27, 2025
bace73a
doc: update the instruction on how to verify releases
aduh95 Jul 27, 2025
4acf7cd
module: throw error when re-runing errored module jobs
joyeecheung Jul 9, 2025
0eec5cc
module: fix conditions override in synchronous resolve hooks
joyeecheung Jul 26, 2025
667ee82
test: don't use expose internals in test-http-outgoing-buffer.js
nektro Jul 28, 2025
035da74
process: add threadCpuUsage
ShogunPanda Feb 21, 2025
491f390
worker: add cpuUsage for worker
theanarkh Jul 28, 2025
b7577d8
test: make test-inspector-network-resource sequential
islandryu Jul 28, 2025
9892b15
doc: format safely for `doc-kit`
avivkeller Jul 28, 2025
cbb0a8e
doc: add note on process memoryUsage
fengmk2 Jul 11, 2025
409c66d
doc: fix typo in `test/common/README.md`
ri7116 Jul 28, 2025
a8f381a
src: add nullptr checks in `StreamPipe::New`
wooffie Jul 28, 2025
8f2b8b3
tools: allow selecting test subsystems with numbers in their names
RaisinTen Jul 29, 2025
6590023
http2: set Http2Stream#sentHeaders for raw headers
RaisinTen Jul 29, 2025
38bafc5
deps: V8: backport 493cb53691be
legendecas Jun 30, 2025
a663f7f
benchmark: add calibrate-n script
RafaelGSS Jul 29, 2025
ad2089e
fs: correct error message when FileHandle is transferred
himself65 Jul 29, 2025
9b9d300
benchmark: add fs warmup to writefile-promises
brunocroh Jul 29, 2025
6aec5ae
lib: prefer AsyncIteratorPrototype primordial
Renegade334 Jul 29, 2025
43b5a21
doc: add path.join and path.normalize clarification
RafaelGSS Jul 30, 2025
57fe96f
src: added CHECK_NOT_NULL check for multiple eq_wrap_async
F3lixTheCat Jul 31, 2025
ebaaf2c
doc: add manpage entry for --use-system-ca
joyeecheung Jul 31, 2025
45200b4
tools: update coverage GitHub Actions to fixed version
Trott Aug 18, 2025
ce93b8b
doc: add WDYT to glossary
btea Aug 1, 2025
4619fe0
fs: fix glob TypeError on restricted dirs
Sylphy-0xd3ac Aug 1, 2025
4aefcfc
node-api: reword "implementation in an alternative VM" as implementable
legendecas Aug 1, 2025
a28e5f0
lib: add type names in source mapped stack traces
legendecas Aug 1, 2025
e666e06
meta: add nodejs/path to path files
RafaelGSS Aug 1, 2025
c12c534
lib: docs deprecate _http_*
bjohansebas Aug 2, 2025
a100cce
test: deflake stream-readable-to-web test
Ethan-Arrowood Aug 2, 2025
6dbda6c
typings: improve internal binding types
targos Aug 2, 2025
212263a
doc: clarify release candidate stability index
panva Aug 2, 2025
cd857a9
lib: use validateString
hotpineapple Aug 2, 2025
70a5862
meta: add tsc and build team as codeowners building.md
RafaelGSS Aug 2, 2025
68bec19
test: add known issue test for fs.cpSync dereference bug
jasnell Aug 2, 2025
946eab8
lib: handle superscript variants on windows device
RafaelGSS Aug 2, 2025
a46ed50
doc: clarify the need of compiler compatible with c++20
RafaelGSS Aug 2, 2025
7f767a2
doc: correct orthography `eg.` → `e.g.`
JakobJingleheimer Aug 3, 2025
438cb11
test: update WPT resources,WebCryptoAPI,webstorage
panva Aug 3, 2025
46c339e
meta: add mailmap entry for aditi-1400
Aditi-1400 Aug 3, 2025
133d410
src: use C++20 `contains()` method
iknoom Jul 31, 2025
390a9dc
http: add server.keepAliveTimeoutBuffer option
haramj Aug 4, 2025
8e697d1
zlib: add dictionary support to zstdCompress and zstdDecompress
lluisemper Aug 4, 2025
19d3ed6
deps: update sqlite to 3.50.4
nodejs-github-bot Aug 5, 2025
3cc11fc
domain: remove deprecated API call
himself65 Aug 5, 2025
b557104
crypto: prepare webcrypto key import/export for modern algorithms
panva Aug 5, 2025
9254257
lib: restructure assert to become a class
miguelmarcondesf Aug 5, 2025
0edf171
doc: run license-builder
github-actions[bot] Aug 6, 2025
9af8bce
doc: fix grammar in global dispatcher usage
Juneezee Aug 6, 2025
446ee98
meta: clarify pr objection process further
jasnell Aug 6, 2025
fde9434
doc: fix missing reference links for server.keepAliveTimeoutBuffer
wlgh1553 Aug 7, 2025
63cc069
src: mark realm leaf classes final
addaleax Aug 4, 2025
76dab34
deps: support madvise(3C) across ALL illumos revisions
danmcd Aug 7, 2025
73aa0ae
assert: change utils to use index instead of for...of
JinhyeokFang Aug 7, 2025
a5e9759
lib: do not modify prototype deprecated asyncResource
RafaelGSS Jul 24, 2025
3deb536
build: fix node_use_sqlite for GN builds
codebytere Aug 9, 2025
9d801a3
typings: improve internal binding types
meteorqz6 Aug 9, 2025
2c5d0aa
doc: fix Pbkdf2Params hash attribute heading
panva Aug 9, 2025
8dd0926
test,crypto: skip unsupported ciphers
codebytere Aug 9, 2025
e44ef07
doc: rename x509.extKeyUsage to x509.keyUsage
panva Aug 9, 2025
3366e60
src: use simdjson to parse SEA configuration
joyeecheung Aug 1, 2025
8e2076a
cli: add NODE_USE_SYSTEM_CA=1
joyeecheung Aug 10, 2025
d22d2fa
lib: optimize writable stream buffer clearing
ri7116 Aug 11, 2025
264a838
lib: add trace-sigint APIs
theanarkh Aug 11, 2025
dfe3a11
benchmark: remove deprecated _extend from benchmark
RafaelGSS Aug 11, 2025
3375a6c
test: deflake sequential/test-tls-session-timeout
joyeecheung Aug 11, 2025
e22aeaa
doc: add missing section for `setReturnArrays` in `sqlite.md`
geeksilva97 Jul 17, 2025
f64f5df
doc: fix `--use-system-ca` history
joyeecheung Aug 8, 2025
177ed3b
esm: js-string Wasm builtins in ESM Integration
guybedford Aug 5, 2025
fa9a9e9
esm: unflag --experimental-wasm-modules
guybedford Aug 5, 2025
f8fe685
2025-08-28, Version 22.19.0 'Jod' (LTS)
nodejs-github-bot Aug 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
esm: unflag --experimental-wasm-modules
PR-URL: #57038
Backport-PR-URL: #59179
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Geoffrey Booth <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
  • Loading branch information
guybedford authored and aduh95 committed Aug 26, 2025
commit fa9a9e9c69a72499e3b17d19d87ea376b95d5ed9
19 changes: 3 additions & 16 deletions doc/api/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ If a file is found, its path will be passed to the
point to be loaded with ECMAScript module loader, such as `--import` or
[`--experimental-default-type=module`][].
* The file has an `.mjs` extension.
* The file has an `.mjs` or `.wasm` (with `--experimental-wasm-modules`)
extension.
* The file has an `.mjs` or `.wasm` extension.
* The file does not have a `.cjs` extension, and the nearest parent
`package.json` file contains a top-level [`"type"`][] field with a value of
`"module"`.
Expand All @@ -49,8 +48,7 @@ Otherwise, the file is loaded using the CommonJS module loader. See

When loading, the [ES module loader][Modules loaders] loads the program
entry point, the `node` command will accept as input only files with `.js`,
`.mjs`, or `.cjs` extensions; with `.wasm` extensions when
[`--experimental-wasm-modules`][] is enabled; and with no extension when
`.mjs`, `.cjs` or `.wasm` extensions; and with no extension when
[`--experimental-default-type=module`][] is passed.

## Options
Expand Down Expand Up @@ -1015,8 +1013,7 @@ Node.js currently defaults to CommonJS to instead default to ECMAScript modules,
with the exception of folders and subfolders below `node_modules`, for backward
compatibility.

Under `--experimental-default-type=module` and `--experimental-wasm-modules`,
files with no extension will be treated as WebAssembly if they begin with the
Files with no extension will be treated as WebAssembly if they begin with the
WebAssembly magic number (`\0asm`); otherwise they will be treated as ES module
JavaScript.

Expand Down Expand Up @@ -1233,14 +1230,6 @@ changes:

Enable experimental WebAssembly System Interface (WASI) support.

### `--experimental-wasm-modules`

<!-- YAML
added: v12.3.0
-->

Enable experimental WebAssembly module support.

### `--experimental-webstorage`

<!-- YAML
Expand Down Expand Up @@ -3356,7 +3345,6 @@ one is included in the list below.
* `--experimental-transform-types`
* `--experimental-vm-modules`
* `--experimental-wasi-unstable-preview1`
* `--experimental-wasm-modules`
* `--experimental-webstorage`
* `--force-context-aware`
* `--force-fips`
Expand Down Expand Up @@ -3938,7 +3926,6 @@ node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # prints 12
[`--env-file`]: #--env-fileconfig
[`--experimental-default-type=module`]: #--experimental-default-typetype
[`--experimental-sea-config`]: single-executable-applications.md#generating-single-executable-preparation-blobs
[`--experimental-wasm-modules`]: #--experimental-wasm-modules
[`--heap-prof-dir`]: #--heap-prof-dir
[`--import`]: #--importmodule
[`--no-experimental-strip-types`]: #--no-experimental-strip-types
Expand Down
36 changes: 20 additions & 16 deletions doc/api/esm.md
Original file line number Diff line number Diff line change
Expand Up @@ -672,10 +672,24 @@ imported from the same path.

## Wasm modules

<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/57038
description: Wasm modules no longer require the `--experimental-wasm-modules` flag.
-->

Importing both WebAssembly module instances and WebAssembly source phase
imports is supported.

This integration is in line with the
[ES Module Integration Proposal for WebAssembly][].

## Wasm modules

> Stability: 1 - Experimental

Importing WebAssembly modules is supported under the
`--experimental-wasm-modules` flag, allowing any `.wasm` files to be
Importing WebAssembly modules is supported allowing any `.wasm` files to be
imported as normal modules while also supporting their module imports.

This integration is in line with the
Expand All @@ -691,7 +705,7 @@ console.log(M);
executed under:

```bash
node --experimental-wasm-modules index.mjs
node index.mjs
```

would provide the exports interface for the instantiation of `module.wasm`.
Expand Down Expand Up @@ -738,15 +752,6 @@ imports and they cannot be inspected via `WebAssembly.Module.imports(mod)`
or virtualized unless recompiling the module using the direct
`WebAssembly.compile` API with string builtins disabled.

Importing a module in the source phase before it has been instantiated will also
use the compile-time builtins automatically:

```js
import source mod from './string-len.wasm';
const { exports: { getLength } } = await WebAssembly.instantiate(mod, {});
getLength('foo'); // Also returns 3.
```

### Reserved Wasm Namespaces

<!-- YAML
Expand Down Expand Up @@ -1121,7 +1126,7 @@ _isImports_, _conditions_)
> 1. Return _"commonjs"_.
> 4. If _url_ ends in _".json"_, then
> 1. Return _"json"_.
> 5. If `--experimental-wasm-modules` is enabled and _url_ ends in
> 5. If _url_ ends in
> _".wasm"_, then
> 1. Return _"wasm"_.
> 6. Let _packageURL_ be the result of **LOOKUP\_PACKAGE\_SCOPE**(_url_).
Expand All @@ -1136,9 +1141,8 @@ _isImports_, _conditions_)
> 1. Return _"module"_.
> 3. Return _"commonjs"_.
> 11. If _url_ does not have any extension, then
> 1. If _packageType_ is _"module"_ and `--experimental-wasm-modules` is
> enabled and the file at _url_ contains the header for a WebAssembly
> module, then
> 1. If _packageType_ is _"module"_ and the file at _url_ contains the
> header for a WebAssembly module, then
> 1. Return _"wasm"_.
> 2. If _packageType_ is not **null**, then
> 1. Return _packageType_.
Expand Down
3 changes: 0 additions & 3 deletions doc/node-config-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,6 @@
"experimental-vm-modules": {
"type": "boolean"
},
"experimental-wasm-modules": {
"type": "boolean"
},
"experimental-websocket": {
"type": "boolean"
},
Expand Down
3 changes: 0 additions & 3 deletions doc/node.1
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,6 @@ Enable experimental ES module support in VM module.
Enable experimental WebAssembly System Interface support. This
flag is no longer required as WASI is enabled by default.
.
.It Fl -experimental-wasm-modules
Enable experimental WebAssembly module support.
.
.It Fl -experimental-inspector-network-resource
Enable experimental support for inspector network resources.
.
Expand Down
10 changes: 2 additions & 8 deletions lib/internal/modules/esm/formats.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,15 @@ const { getValidatedPath } = require('internal/fs/utils');
const fsBindings = internalBinding('fs');
const { internal: internalConstants } = internalBinding('constants');

const experimentalWasmModules = getOptionValue('--experimental-wasm-modules');

const extensionFormatMap = {
'__proto__': null,
'.cjs': 'commonjs',
'.js': 'module',
'.json': 'json',
'.mjs': 'module',
'.wasm': 'wasm',
};

if (experimentalWasmModules) {
extensionFormatMap['.wasm'] = 'wasm';
}

if (getOptionValue('--experimental-strip-types')) {
extensionFormatMap['.ts'] = 'module-typescript';
extensionFormatMap['.mts'] = 'module-typescript';
Expand All @@ -41,7 +36,7 @@ function mimeToFormat(mime) {
) !== null
) { return 'module'; }
if (mime === 'application/json') { return 'json'; }
if (experimentalWasmModules && mime === 'application/wasm') { return 'wasm'; }
if (mime === 'application/wasm') { return 'wasm'; }
return null;
}

Expand All @@ -52,7 +47,6 @@ function mimeToFormat(mime) {
* @param {URL} url
*/
function getFormatOfExtensionlessFile(url) {
if (!experimentalWasmModules) { return 'module'; }
const path = getValidatedPath(url);
switch (fsBindings.getFormatOfExtensionlessFile(path)) {
case internalConstants.EXTENSIONLESS_FORMAT_WASM:
Expand Down
3 changes: 1 addition & 2 deletions lib/internal/modules/esm/translators.js
Original file line number Diff line number Diff line change
Expand Up @@ -433,8 +433,6 @@ translators.set('json', function jsonStrategy(url, source) {
*/
const wasmInstances = new SafeWeakMap();
translators.set('wasm', async function(url, source) {
emitExperimentalWarning('Importing WebAssembly modules');

assertBufferSource(source, false, 'load');

debug(`Translating WASMModule ${url}`);
Expand Down Expand Up @@ -483,6 +481,7 @@ translators.set('wasm', async function(url, source) {
const createDynamicModule = require('internal/modules/esm/create_dynamic_module');

const { module } = createDynamicModule([...importsList], [...exportsList], url, (reflect) => {
emitExperimentalWarning('Importing WebAssembly module instances');
for (const impt of importsList) {
const importNs = reflect.imports[impt];
const wasmInstance = wasmInstances.get(importNs);
Expand Down
5 changes: 1 addition & 4 deletions src/node_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -479,10 +479,7 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
kAllowedInEnvvar);
AddAlias("--loader", "--experimental-loader");
AddOption("--experimental-modules", "", NoOp{}, kAllowedInEnvvar);
AddOption("--experimental-wasm-modules",
"experimental ES Module support for webassembly modules",
&EnvironmentOptions::experimental_wasm_modules,
kAllowedInEnvvar);
AddOption("--experimental-wasm-modules", "", NoOp{}, kAllowedInEnvvar);
AddOption("--experimental-import-meta-resolve",
"experimental ES Module import.meta.resolve() parentURL support",
&EnvironmentOptions::experimental_import_meta_resolve,
Expand Down
1 change: 0 additions & 1 deletion src/node_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ class EnvironmentOptions : public Options {
bool experimental_global_customevent = true;
bool experimental_global_navigator = true;
bool experimental_global_web_crypto = true;
bool experimental_wasm_modules = false;
bool experimental_import_meta_resolve = false;
std::string input_type; // Value of --input-type
std::string type; // Value of --experimental-default-type
Expand Down
Loading
Loading