-
Notifications
You must be signed in to change notification settings - Fork 29.6k
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
esm: 'module.exports' export on ESM CJS wrapper #53848
Conversation
Review requested:
|
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
I may not follow with the motivation. If this feature is going to be used in "transpile a CJS module (which was transpiled from ESM) back into ESM and run it on the web", can this be added to transpilers instead? |
It is also helpful to support CJS transpiled into ESM (ie modern bundled code) running in Node.js against an external that is unknown as to whether it is CJS or ESM, where being able to know if the external is a CJS wrapper can allow lowering the required require(esm) interop pattern. |
The reason why we introduced the __esModule was:
I think to implement a counterpart, we at least need 1 - there should at least be some integration in CJS -> ESM transpilers adopting this pattern to run things in browsers, which is what this primarily is useful for - it's very rare to see CJS code transpiled into ESM to be run in Node.js, as far as I know. Suppose transpilers disagree and some adopt a different flavor, or if this trick doesn't turn out to be actually working because no integration test has been written yet (this is all on paper for now), we'd be left with something that doesn't work and nobody uses. #52166 included an integration test using output from TypeScript, I think we need something similar in this PR too. |
@joyeecheung I think the requirement that this new pattern already be in use before we have created the pattern is an unrealistic requirement to make. I have given two clear use cases for this as a feature, with the direct use case in #53848 (comment) immediately being solved by landing this PR.
RollupJS is both a Node.js and browser bundler, so this is not quite true. When using RollupJS in Node.js applications to, say, speed up startup times, this is very much a real use case.
There's no trick or flavour here, simply the question - is the ES module namespace that I have imported an ESM wrapper around a CJS module? And I think that is a useful question to answer by supporting this flag to answer it. What more would you like to see tested with regards to this? |
Specifically the problem is needing to know when in Node.js if an arbitrary ESM namespace is an ESM CJS wrapper or not. With that answer, yes, new CJS to ESM interop patterns can emerge as I have discussed, since they very much need this information. But the check is useful in its own right, and does not depend on their future emergence either. |
Isn't this a pattern primarily meant for code run in the browser? Then it should be possible to create a bundler integration that demonstrate how this can be used in the browser first?
RollupJS supports CommonJS output too. As far as I know typically people bundle code into CommonJS format to speed up startup times (ESM loading is slower than CommonJS loading in the first place), or to use the bundle with SEA or snapshots since they do not support ESM. But choosing the ESM output for a Node.js environment is rare. If it's common enough it seems strange that this need for
I was referring to this use case:
In #52166 we added a test fixture with the output of the actual TypeScript compiler. Before the PR, loading default exports of real ESM in transpiled ESM -> CJS code leads to an error. After it works intuitively. I think for this PR we'd need CJS -> ESM code emitted by an existing transpiler that doesn't load an external CJS without |
I agree that it's useful in its own right, though currently for code only targeting Node.js this can also be worked around by checking whether the path exists in |
For the specific case in OP, it seems the problem all stems from the proposed interop layer, which AFAIK no transpiler has implemented yet. The layer seems redundant for ESM -> CJS code, however. If you don't do that layer, and simply transpile this: const depMod = require('dep');
const depNs = depMod.__esModule ? depMod : { default: depMod };
console.log(depNs.default); to just this (IIUC, this is already what Rollup currently produce with import depMod from 'dep';
const depNs = depMod.__esModule ? depMod : { default: depMod };
console.log(depNs.default); Things already just work automatically. If |
The entire ecosystem does not need to move to support Your scheme in #53848 (comment) does not work for a real ES module (not faux ESM) without a default export, since it will bail that |
If what you need is the ability fully comparable with |
The I think we're focusing a little too much on some hypothetical major adoption of this feature (I'm not really not sure what you mean by browser adoption), and a little too less on the problems it solves, and what reasons we might not want to land it. @joyeecheung if you are against this flag, perhaps you can more clearly state your underlying concerns? |
I’ve been building SvelteKit apps for a few years now, and SvelteKit uses Vite with Rollup to generate ESM production builds. Startup time isn’t a concern for long-lived servers, and these builds aren’t bundling the external dependencies; I still need my So no, I wouldn’t say that building for ESM output in a Node.js environment is rare. |
I've already stated this in #53848 (comment)
In general, adding more underscore underscore property should be frowned upon. |
So it isn't transpiling CJS to ESM either, which is what this PR is about? |
This PR is not claiming to set a convention that will work for all bundlers, rather it is providing a solution to the problem that when building CJS requires as externals into ESM imports, we have an interop problem in distinguishing CJS ESM wrappers from real ESM and that currently has no viable solution. And I would quite like to be able to solve this problem for our Node.js users.
This argument is circular - you are asking for adoption, but then also claiming you are concerned about adoption. The concern and request cannot be for the same thing? Would you be less concerned if we renamed the flag to There is also another side to this PR and that is that using this flag, it is possible to define the representation of an ESM module in require(esm). I would have thought you'd be interested in that given it can be used as another tool to solve require(esm) interop issues. |
Not saying that it isn't a problem, but it seems very well like an issue we can follow up later. This path needs code originally in CJS being transpiled to ESM and loading an external ESM to be hit. That doesn't seem to be an urgent issue - for one not that many people actually configure to transpile CJS to ESM for it to be run in Node.js, if they need to ship ESM they likely would just write in ESM in the first place and never hit this path (probably what @GeoffreyBooth does too), let alone attempting to loading real external ESM from said CJS code (considering how hacky CJS -> ESM can be in terms of handling dynamic exports and imports and all the wonky require extensions, this practice already has bigger fishes to fry anyway). This is unlike the problem that
I don't think I claimed to be concerned about adoption, rather I am concerned about the lack of adoption of a premature solution that's currently purely on paper, and we have no integration tests to verify that this solution actually works as intended.
I'd be more interested to see working prototypes, the current description of the solution is too vague and abstract, and we don't know for sure whether it actually works as intended. |
Actually I realized that this is a breaking change, because unlike import * as empty from './empty.cjs';
assert.deepStrictEqual({...empty}, { default: {} }); // it will throw after this change Unlike import { isCJSModule } from 'node:module'; // Or use process.getBuiltinModule();
import * as empty from './empty.cjs';
isCJSModule(empty); // true
|
This comment was marked as outdated.
This comment was marked as outdated.
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.
nit: the commit message does not meet the guidelines (the first word after the subsystem should be an imperative verb). This can be addressed when landing.
9c584e1
to
6a2b577
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
6a2b577
to
d4b3cc1
Compare
d4b3cc1
to
3ee72c8
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Will aim to land this in the next couple of hours, unless there are any further comments. |
PR-URL: #53848 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Landed in 1d5ed72. |
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: TBD
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) #53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) #54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) #47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) #54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) #54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) #54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) #54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) #53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) #45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) #53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) #54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) #52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) #52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) #52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) #52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) #55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) #53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) #52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) #54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) #54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) #54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) #54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) #54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) #54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) #54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) #54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) #54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) #54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) #53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) #54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) #49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) #51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) #54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) #54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) #53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) #54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) #54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) #55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) #54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) #54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) #54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) #54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) #54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) #53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) #52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) #53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) #54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) #54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) #54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) #54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) #52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) #46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) #52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) #54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) #54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) #54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) #52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) #52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) #55020 PR-URL: #55338
PR-URL: nodejs#53848 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Semver-Major Commits: assert,util: * (SEMVER-MAJOR) change WeakMap and WeakSet comparison handling (Cristian Barlutiu) nodejs#53495 buffer: * (SEMVER-MAJOR) throw when writing beyond buffer" (Robert Nagy) nodejs#54588 * (SEMVER-MAJOR) make File cloneable (Matthew Aitken) nodejs#47613 build: * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) disable ICF for mksnapshot (Leszek Swirski) nodejs#54077 * (SEMVER-MAJOR) include v8-sandbox.h header in distribution (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) warn for GCC versions earlier than 12.2 (Michaël Zasso) nodejs#54081 * (SEMVER-MAJOR) drop experimental support for Windows <10 (Michaël Zasso) nodejs#54079 * (SEMVER-MAJOR) remove support for 32-bit Windows (Michaël Zasso) nodejs#53184 * (SEMVER-MAJOR) compile with C++20 support (Michaël Zasso) nodejs#45427 child_process: * (SEMVER-MAJOR) remove unused internal event (Rich Trott) nodejs#53793 cli: * (SEMVER-MAJOR) remove deprecated V8 flag (Omer Katz) nodejs#54761 * (SEMVER-MAJOR) move --trace-atomics-wait to eol (Marco Ippolito) nodejs#52747 * (SEMVER-MAJOR) remove --no-experimental-global-customevent flag (Daeyeon Jeong) nodejs#52723 * (SEMVER-MAJOR) remove --no-experimental-fetch flag (Filip Skokan) nodejs#52611 * (SEMVER-MAJOR) remove --no-experimental-global-webcrypto flag (Filip Skokan) nodejs#52564 crypto: * (SEMVER-MAJOR) runtime deprecate crypto.fips (Yagiz Nizipli) nodejs#55019 * (SEMVER-MAJOR) remove ERR_CRYPTO_SCRYPT_INVALID_PARAMETER (Tobias Nießen) nodejs#53305 * (SEMVER-MAJOR) move DEP0182 to runtime deprecation (Tobias Nießen) nodejs#52552 deps: * (SEMVER-MAJOR) V8: cherry-pick 97199f686e2f (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) V8: cherry-pick 01a47f3ffff2 (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) patch V8 to support older Clang versions (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) nodejs#54536 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) nodejs#54536 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) update V8 to 12.9.202.18 (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) remove bogus V8 DCHECK (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) V8: cherry-pick 00e9eeb3fb2c (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) V8: cherry-pick b1397772c70c (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) V8: cherry-pick 35888fee7bba (Joyee Cheung) nodejs#54077 * (SEMVER-MAJOR) always define V8_NODISCARD as no-op (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) nodejs#54077 * (SEMVER-MAJOR) V8: revert CL 5331688 (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) patch V8 to support compilation with MSVC (StefanStojanovic) nodejs#54077 * (SEMVER-MAJOR) silence internal V8 deprecation warning (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) update V8 to 12.8.374.13 (Michaël Zasso) nodejs#54077 doc: * (SEMVER-MAJOR) reflect toolchains used for official binaries (Richard Lau) nodejs#54967 * (SEMVER-MAJOR) use gcc 12 on AIX for Node.js >=23 (Richard Lau) nodejs#54338 esm: * (SEMVER-MAJOR) export 'module.exports' on ESM CJS wrapper (Guy Bedford) nodejs#53848 events: * (SEMVER-MAJOR) set EventEmitterAsyncResource fields private (Yagiz Nizipli) nodejs#54889 fs: * (SEMVER-MAJOR) adjust typecheck for `type` in `fs.symlink()` (Livia Medeiros) nodejs#49741 * (SEMVER-MAJOR) runtime deprecate `dirent.path` (Antoine du Hamel) nodejs#51050 lib: * (SEMVER-MAJOR) validate signals with interface converter (Jason Zhang) nodejs#54965 * (SEMVER-MAJOR) implement interface converter in webidl (Jason Zhang) nodejs#54965 * (SEMVER-MAJOR) expose global CloseEvent (Matthew Aitken) nodejs#53355 net: * (SEMVER-MAJOR) validate host name for server listen (Jason Zhang) nodejs#54470 path: * (SEMVER-MAJOR) fix bugs and inconsistencies (Hüseyin Açacak) nodejs#54224 process: * (SEMVER-MAJOR) remove `process.assert` (Aviv Keller) nodejs#55035 src: * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 131 (Michaël Zasso) nodejs#54536 * (SEMVER-MAJOR) stop using deprecated fields of `v8::FastApiCallbackOptions` (Andreas Haas) nodejs#54077 * (SEMVER-MAJOR) remove dependency on wrapper-descriptor-based CppHeap (Joyee Cheung) nodejs#54077 * (SEMVER-MAJOR) add source location to v8::TaskRunner (François Doray) nodejs#54077 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 129 (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) do not use soon-to-be-deprecated V8 API (Igor Sheludko) nodejs#53174 * (SEMVER-MAJOR) add UV_PIPE_NO_TRUNCATE for bind in pipe_wrap.cc (theanarkh) nodejs#52347 stream: * (SEMVER-MAJOR) pipe to a closed or destroyed stream is not allowed in pipeline (jakecastelli) nodejs#53241 string_decoder: * (SEMVER-MAJOR) refactor encoding validation (Yagiz Nizipli) nodejs#54957 test: * (SEMVER-MAJOR) update v8-stats test for V8 12.6 (Michaël Zasso) nodejs#54077 test_runner: * (SEMVER-MAJOR) detect only tests when --test is not used (Colin Ihrig) nodejs#54881 * (SEMVER-MAJOR) always make spec the default reporter (Colin Ihrig) nodejs#54548 * (SEMVER-MAJOR) expose lcov reporter as newable function (Chemi Atlow) nodejs#52403 timers: * (SEMVER-MAJOR) emit warning if delay is negative or NaN (jakecastelli) nodejs#46678 tls: * (SEMVER-MAJOR) fix 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' typo (Aviv Keller) nodejs#52627 tools: * (SEMVER-MAJOR) add additonal include dirs for V8 on AIX (Abdirahim Musse) nodejs#54536 * (SEMVER-MAJOR) update V8 gypfiles for 12.8 (Michaël Zasso) nodejs#54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.7 (Richard Lau) nodejs#54077 * (SEMVER-MAJOR) update V8 gypfiles for 12.6 (Michaël Zasso) nodejs#54077 util: * (SEMVER-MAJOR) move util.log to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isPrimitive to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isFunction to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isError to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isDate to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isObject to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isRegExp to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isUndefined to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isSymbol to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isString to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isNumber to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isNullOrUndefined to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isNull to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isBuffer to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util.isBoolean to eol (marco-ippolito) nodejs#52744 * (SEMVER-MAJOR) move util._extend to eol (marco-ippolito) nodejs#52744 zlib: * (SEMVER-MAJOR) remove `zlib.bytesRead` (Yagiz Nizipli) nodejs#55020 PR-URL: nodejs#55338
This provides a
'module.exports'
export on the wrapper namespaces created for CommonJS modules when they are imported into ES modules. This mirrors the PR at #54563, which was split out from the original version of this PR which makesrequire(esm)
take the value of this export in its interop pattern when that is used.By adding this to the module namespaces for CJS in ESM, this effectively allows tools which transpile CommonJS into ESM to be able to consistently follow the same
require(esm)
interop for CJS externals, despite the importer being transpiled from CJS into ESM.This is marked as a major change, since it changes the shape of the CJS wrapper.
//cc @nodejs/loaders
For details on the exact transpilation problem this solves, it is the following:
Consider a CommonJS module importing a dependency in Node.js that is then transpiled into ESM, where that dependency might be any unknown module format:
Now if I run this module in Node.js, and
dep
is an ESM module,dep
will go through therequire(esm)
interop checks:module.exports
export per module: support 'module.exports' interop export name in require(esm) #54563, this will be used__esModule
marker already and has a default export, it will be wrapped with an__esModule
marker automatically added by Node.jsSo if I want to transpile this module into ESM, with that same dynamic dependency linkage, I end up with something like this:
So we now have a scheme to transpile arbitrary CJS to ESM in Node.js, while retaining the exact same interop semantics.
But there is now a new interop problem with such a scheme - in the case where depMod is itself a CJS module, instead of an ESM module, say:
When importing this module from ESM, Node.js will interpret this as a module namespace of the shape
depNs
havingModule { default: Dep }
, which will then through the inlined interop code give the value ofdepMod
as{ __esModule: true, default: Dep }
instead ofclass Dep
, the expectedmodule.exports
value!The fix, is to add this
module.exports
marker in the CJS ESM representation, then'module.exports' in depMod
is true and we we hit this first check in the inlined require CJS interop pattern of the transpiled code, and will get that back directly as we desired.Therefore fully solving the dynamic externalization against all of the cases where dep might respectively be CJS transpiled to ESM and real ESM with the conditional faux ESM interop layer for the consuming faux ESM as CJS transpiled into ESM per #52166.