Skip to content
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

errors: eliminate all overhead for hidden calls #35644

Closed
wants to merge 12 commits into from

Conversation

mmomtchev
Copy link
Contributor

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines

This in response to #35386

@nodejs-github-bot nodejs-github-bot added the errors Issues and PRs related to JavaScript errors originated in Node.js core. label Oct 14, 2020
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
mmomtchev added a commit to mmomtchev/node that referenced this pull request Oct 14, 2020
Add @puzpuzpuz's benchmark for the new
implementation of hideStackFrames

Refs: nodejs#35386
Refs: nodejs#35644
@@ -393,6 +378,16 @@ function uvErrmapGet(name) {
return uvBinding.errmap.get(name);
}

function captureLargerStackTrace(err) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still need this function? It looks like it could be replaced with Error.captureStackTrace(ex).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still need to extend the stack trace size before capturing it. The way the code works is that the stack trace size is set to 0 at the Error creation (so no stack trace is collected), then it manually invokes Error.captureStackTrace(ex). That captureLargerStackTrace(err) is there mainly to centralize at one place extending the stack size and then restoring it back.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All invocations of captureLargerStackTrace() are made when Error.stackTraceLimit is already restored from 0 to the original value, so I still don't get why it's needed. Am I missing something?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to increase it from the original value to Infinity, since I will be removing some elements and I don't know their number in advance. Then I need to cut off the stack trace to the original value length, so that I can return the exact number of stack trace elements that the user asked for - usually 10.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see now. Then this approach with Infinity may lead to increased memory consumption in user applications, especially when they make standard library calls in deeply nested and/or recursive functions.

It can be demonstrated on the following example:

// comment to avoid crashing
Error.stackTraceLimit = Infinity;
function foo(i) {
    if (i === 32000) {
        throw new Error('bar');
    }
    return foo(i + 1);
}
foo(1);

If you run it with node --max-old-space-size=4 --stack-size=32000 recursive-error.js, it'll crash. Without the Error.stackTraceLimit override, the script stops on unhandled error as expected.

Thus, the current implementation seems to be introducing a potential regressions. We could change Infinity to userStackTraceLimit + N where N is the max depth of standard library validation function calls, but that's a bad approach. Do you have an idea for another workaround here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have another idea, but it is even uglier - rename all functions that are to be hidden to the same name and then use the V8 built-in Error.captureStackTrace feature - which is much faster
But it is going to make life even harder for internals developers

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact, I think that aside from some very edge artificial cases - where the heap is smaller than the stack, we should be ok - if you have a call stack that is so large, that it doesn't fit into the heap - you are bound to run into problems anyway

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Heap may be large enough to fit the call stack, yet it may not have enough free space to allocate an exception as it also contains other JS objects. So, it's better to speak of the free heap space here.

As for the artificial nature of edge cases, the code snippet above is certainly artificial, but there may be modules and user applications that face regressions introduced with this PR. I'm not 100% sure that there will any and I see the certain value introduced by this PR, so it would be nice to get more opinions here.

cc @nodejs/core

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proceeding by elimination:
There are only two ways of limiting the captured call stack before it is captured - one is by passing a reference of a function to V8 in Error.captureStackTrace. This is not usable without introducing some artificial function that will be able to find on the call stack - this is the old method. In theory, one could imagine some improved solution, where we never add more than once this function - the old method did it multiple times, creating closures at each call.

The other way is limiting the number of entries to a number known in advance - Error.stackTraceLimit. Either we estimate the maximum call stack that the Node internals are allowed to reach, either we try to deduce it in a dynamic way.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After some thinking, I would personally prefer option 2, i.e. the original solution, but with a modified "padding" (smth like 32 or even 64). Yes, it may lead to trimmed call stacks in produced errors if the padding is not enough, but at least it won't create unpredictable memory pressure.

lib/internal/errors.js Outdated Show resolved Hide resolved
benchmark/misc/hidestackframes.js Outdated Show resolved Hide resolved
@Trott
Copy link
Member

Trott commented Oct 15, 2020

Benchmark: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/668/

@puzpuzpuz
Copy link
Member

puzpuzpuz commented Oct 15, 2020

Here is the benchmark output:

4:58:50                                                                 confidence improvement accuracy (*)    (**)   (***)
14:58:50  misc/hidestackframes.js n=100000 type='direct-call-noerr'                     -3.01 %       ±4.86%  ±6.48%  ±8.46%
14:58:50  misc/hidestackframes.js n=100000 type='direct-call-throw'             ***    -20.45 %       ±1.86%  ±2.49%  ±3.25%
14:58:50  misc/hidestackframes.js n=100000 type='hide-stackframes-noerr'        ***    137.14 %       ±8.16% ±10.86% ±14.16%
14:58:50  misc/hidestackframes.js n=100000 type='hide-stackframes-throw'        ***     -8.77 %       ±2.59%  ±3.44%  ±4.49%
14:58:50 
14:58:50 Be aware that when doing many comparisons the risk of a false-positive
14:58:50 result increases. In this case there are 4 comparisons, you can thus
14:58:50 expect the following amount of false-positive results:
14:58:50   0.20 false positives, when considering a   5% risk acceptance (*, **, ***),
14:58:50   0.04 false positives, when considering a   1% risk acceptance (**, ***),
14:58:50   0.00 false positives, when considering a 0.1% risk acceptance (***)

As expected, there is a penalty for error-path (even when hideStackFrames() is not in use). On the other hand, success-path' performance improved significantly, which seems to be a good trade-off to me.

@puzpuzpuz
Copy link
Member

I also think, it's worth mentioning that this PR will close #35386. Does it make sense?

Copy link
Member

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the initiative to improve this! I do have some concerns about the implementation though that I highlighted in my comments.

lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Show resolved Hide resolved
@mmomtchev
Copy link
Contributor Author

I also think, it's worth mentioning that this PR will close #35386. Does it make sense?

Where should I reference it? I did it in the commit message? Sorry, I am very new in this repo.

mmomtchev added a commit to mmomtchev/node that referenced this pull request Oct 15, 2020
Fix the comments for the no-overhead hideStackFrame

Refs: nodejs#35644
@puzpuzpuz
Copy link
Member

Where should I reference it? I did it in the commit message? Sorry, I am very new in this repo.

Sorry, I didn't check the commit message. It's OK to reference the issue there.

mmomtchev added a commit to mmomtchev/node that referenced this pull request Oct 15, 2020
As suggested by @puzpuzpuz and @BridgeAR
* Do not run the full loop for user-generated exceptions
* Reduce the prefix
* Add function names to the functions in errors.js
so that they keep their names in the debugger/profiler

Refs: nodejs#35644
Copy link
Contributor

@aduh95 aduh95 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs a rebase.

lib/internal/errors.js Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
lib/internal/errors.js Outdated Show resolved Hide resolved
@cclauss
Copy link
Contributor

cclauss commented Nov 9, 2020

Please fix merge conflicts.

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@Trott Trott added the request-ci Add this label to start a Jenkins CI on a PR. label Nov 14, 2020
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Nov 14, 2020
@nodejs-github-bot
Copy link
Collaborator

@mmomtchev
Copy link
Contributor Author

mmomtchev commented Nov 24, 2020

@benjamingr , since your PR, hideStackFrames should return a constructor - which cannot happen if the passed function is an arrow function. It worked before since hideStackFrames generated a new function, but now it is simply a rename
Since you are the only one to use throw new I guess it was an oversight?
Should I change this back to a normal call? In this PR?

throw new lazyDomException needs to become throw lazyDomException

#35911

mmomtchev added a commit to mmomtchev/node that referenced this pull request Nov 24, 2020
Add @puzpuzpuz's benchmark for the new
implementation of hideStackFrames

Refs: nodejs#35386
Refs: nodejs#35644
mmomtchev added a commit to mmomtchev/node that referenced this pull request Nov 24, 2020
Fix the comments for the no-overhead hideStackFrame

Refs: nodejs#35644
@nodejs-github-bot

This comment has been minimized.

@nodejs-github-bot

This comment has been minimized.

@nodejs-github-bot
Copy link
Collaborator

@aduh95
Copy link
Contributor

aduh95 commented Dec 15, 2020

@mmomtchev do you want to add comments in the code to resolve the last two open threads? If you prefer, I can add them myself by pushing commits to your branch. Other than that, I think this is ready to land.

lib/internal/errors.js Outdated Show resolved Hide resolved
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
@aduh95 aduh95 added the request-ci Add this label to start a Jenkins CI on a PR. label Dec 15, 2020
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Dec 15, 2020
@nodejs-github-bot
Copy link
Collaborator

aduh95 pushed a commit that referenced this pull request Dec 22, 2020
Eliminate all overhead for function calls that are to be
hidden from the stack traces at the expense of
reduced performance for the error case

Fixes: #35386

PR-URL: #35644
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
@aduh95
Copy link
Contributor

aduh95 commented Dec 22, 2020

Landed in 656ce92

@aduh95 aduh95 closed this Dec 22, 2020
danielleadams pushed a commit that referenced this pull request Jan 12, 2021
Eliminate all overhead for function calls that are to be
hidden from the stack traces at the expense of
reduced performance for the error case

Fixes: #35386

PR-URL: #35644
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
@danielleadams danielleadams mentioned this pull request Jan 12, 2021
const captureLargerStackTrace = hideStackFrames(
function captureLargerStackTrace(err) {
userStackTraceLimit = Error.stackTraceLimit;
Error.stackTraceLimit = Infinity;
Copy link
Contributor

@amcasey amcasey Jun 10, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

During module resolution, the TypeScript compiler has to probe many paths that turn out not to exist. To mitigate the cost of creating so many uvExceptions, it sets Error.stackTraceLimit to zero (helpfully suggested here). From profiling, it looks like this change (specifically captureLargerStackTrace node:internal/errors:450 in node v 16.3.0) resulted in a pretty substantial perf regression. Fortunately, newer version of TypeScript use the new throwIfNoEntry flag, mitigating the issue, but older versions of TypeScript are likely to be substantially affected. Have others reported performance issues in this area and, if so, would it be worthwhile to file a bug (I couldn't find an existing one)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should be able to hack your way around it in Node.js v16.0.0+ by making the stackTraceLimit not writable:

Reflect.defineProperty(Error, 'stackTraceLimit', {
  writable: false,
  value: 0,
});

Copy link
Contributor

@amcasey amcasey Jun 10, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to admit, that would not have occurred to me. 😄

Fortunately, we already have a good mitigation for v16 - we just pass throwIfNoEntry. The problem is more that code we've already shipped (i.e. TypeScript <= 4.1) lacks either mitigation and users will suddenly see a large slowdown. In the repro I happened to notice this in (which, unfortunately, I can't share), the runtime jumps from 30 seconds to 48 seconds when throwIfNoEntry is removed.

(If we end up filing a bug for this, I'll make sure to include a publicly-available sample.)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, we would have detected it's set to zero and not increased it in that case and only would have set it to it's current limit + a small number for the extra frames that should be removed.

targos pushed a commit to targos/node that referenced this pull request Aug 8, 2021
Eliminate all overhead for function calls that are to be
hidden from the stack traces at the expense of
reduced performance for the error case

Fixes: nodejs#35386

PR-URL: nodejs#35644
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
targos pushed a commit to targos/node that referenced this pull request Aug 8, 2021
Eliminate all overhead for function calls that are to be
hidden from the stack traces at the expense of
reduced performance for the error case

Fixes: nodejs#35386

PR-URL: nodejs#35644
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
targos pushed a commit that referenced this pull request Sep 1, 2021
Eliminate all overhead for function calls that are to be
hidden from the stack traces at the expense of
reduced performance for the error case

Fixes: #35386

PR-URL: #35644
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
mwalbeck pushed a commit to mwalbeck/docker-jellyfin-livestream that referenced this pull request Oct 6, 2021
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://github.com/nodejs/node) | stage | minor | `14.17.6-buster` -> `14.18.0-buster` |

---

### Release Notes

<details>
<summary>nodejs/node</summary>

### [`v14.18.0`](https://github.com/nodejs/node/releases/v14.18.0)

[Compare Source](https://github.com/nodejs/node/compare/v14.17.6...v14.18.0)

##### Notable Changes

-   \[[`3a60de0135`](https://github.com/nodejs/node/commit/3a60de0135)] - **assert**: change status of legacy asserts (James M Snell) [#&#8203;38113](https://github.com/nodejs/node/pull/38113)
-   \[[`df37c106a7`](https://github.com/nodejs/node/commit/df37c106a7)] - **(SEMVER-MINOR)** **buffer**: introduce Blob (James M Snell) [#&#8203;36811](https://github.com/nodejs/node/pull/36811)
-   \[[`223494c548`](https://github.com/nodejs/node/commit/223494c548)] - **(SEMVER-MINOR)** **buffer**: add base64url encoding option (Filip Skokan) [#&#8203;36952](https://github.com/nodejs/node/pull/36952)
-   \[[`14fc4ddabc`](https://github.com/nodejs/node/commit/14fc4ddabc)] - **(SEMVER-MINOR)** **child_process**: allow `options.cwd` receive a URL (Khaidi Chu) [#&#8203;38862](https://github.com/nodejs/node/pull/38862)
-   \[[`b68b13acb3`](https://github.com/nodejs/node/commit/b68b13acb3)] - **(SEMVER-MINOR)** **child_process**: add timeout to spawn and fork (Nitzan Uziely) [#&#8203;37256](https://github.com/nodejs/node/pull/37256)
-   \[[`da98c9f99b`](https://github.com/nodejs/node/commit/da98c9f99b)] - **(SEMVER-MINOR)** **child_process**: allow promisified exec to be cancel (Carlos Fuentes) [#&#8203;34249](https://github.com/nodejs/node/pull/34249)
-   \[[`779310ac87`](https://github.com/nodejs/node/commit/779310ac87)] - **(SEMVER-MINOR)** **child_process**: add 'overlapped' stdio flag (Thiago Padilha) [#&#8203;29412](https://github.com/nodejs/node/pull/29412)
-   \[[`40eb3b79f1`](https://github.com/nodejs/node/commit/40eb3b79f1)] - **(SEMVER-MINOR)** **cli**: add -C alias for --conditions flag (Guy Bedford) [#&#8203;38755](https://github.com/nodejs/node/pull/38755)
-   \[[`39eba0a2e1`](https://github.com/nodejs/node/commit/39eba0a2e1)] - **(SEMVER-MINOR)** **cli**: add --node-memory-debug option (Anna Henningsen) [#&#8203;35537](https://github.com/nodejs/node/pull/35537)
-   \[[`d8d9a9628a`](https://github.com/nodejs/node/commit/d8d9a9628a)] - **(SEMVER-MINOR)** **dns**: add "tries" option to Resolve options (Luan Devecchi) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`15ba19b020`](https://github.com/nodejs/node/commit/15ba19b020)] - **(SEMVER-MINOR)** **dns**: allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) [#&#8203;38099](https://github.com/nodejs/node/pull/38099)
-   \[[`307c1d817f`](https://github.com/nodejs/node/commit/307c1d817f)] - **doc**: refactor fs docs structure (James M Snell) [#&#8203;37170](https://github.com/nodejs/node/pull/37170)
-   \[[`9ee3f77e32`](https://github.com/nodejs/node/commit/9ee3f77e32)] - **(SEMVER-MINOR)** **errors**: remove experimental from --enable-source-maps (Benjamin Coe) [#&#8203;37362](https://github.com/nodejs/node/pull/37362)
-   \[[`e73bfed2f4`](https://github.com/nodejs/node/commit/e73bfed2f4)] - **esm**: deprecate legacy main lookup for modules (Guy Bedford) [#&#8203;36918](https://github.com/nodejs/node/pull/36918)
-   \[[`989c204a58`](https://github.com/nodejs/node/commit/989c204a58)] - **(SEMVER-MINOR)** **fs**: allow empty string for temp directory prefix (Voltrex) [#&#8203;39028](https://github.com/nodejs/node/pull/39028)
-   \[[`ef72490cde`](https://github.com/nodejs/node/commit/ef72490cde)] - **(SEMVER-MINOR)** **fs**: allow no-params fsPromises fileHandle read (Nitzan Uziely) [#&#8203;38287](https://github.com/nodejs/node/pull/38287)
-   \[[`cad9d20f64`](https://github.com/nodejs/node/commit/cad9d20f64)] - **(SEMVER-MINOR)** **fs**: add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) [#&#8203;37490](https://github.com/nodejs/node/pull/37490)
-   \[[`2b0e2706c0`](https://github.com/nodejs/node/commit/2b0e2706c0)] - **fs**: improve fsPromises readFile performance (Nitzan Uziely) [#&#8203;37608](https://github.com/nodejs/node/pull/37608)
-   \[[`fe12cc07b3`](https://github.com/nodejs/node/commit/fe12cc07b3)] - **(SEMVER-MINOR)** **fs**: add fsPromises.watch() (James M Snell) [#&#8203;37179](https://github.com/nodejs/node/pull/37179)
-   \[[`2459c115a8`](https://github.com/nodejs/node/commit/2459c115a8)] - **(SEMVER-MINOR)** **fs**: allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) [#&#8203;36190](https://github.com/nodejs/node/pull/36190)
-   \[[`6544cfb4b9`](https://github.com/nodejs/node/commit/6544cfb4b9)] - **(SEMVER-MINOR)** **http2**: add support for sensitive headers (Anna Henningsen) [#&#8203;34145](https://github.com/nodejs/node/pull/34145)
-   \[[`a6c6cbb4e6`](https://github.com/nodejs/node/commit/a6c6cbb4e6)] - **(SEMVER-MINOR)** **http2**: allow setting the local window size of a session (Yongsheng Zhang) [#&#8203;35978](https://github.com/nodejs/node/pull/35978)
-   \[[`1e5aca550c`](https://github.com/nodejs/node/commit/1e5aca550c)] - **inspector**: mark as stable (Gireesh Punathil) [#&#8203;37748](https://github.com/nodejs/node/pull/37748)
-   \[[`93af04afbb`](https://github.com/nodejs/node/commit/93af04afbb)] - **(SEMVER-MINOR)** **module**: add support for `URL` to `import.meta.resolve` (Antoine du Hamel) [#&#8203;38587](https://github.com/nodejs/node/pull/38587)
-   \[[`f9f9389d83`](https://github.com/nodejs/node/commit/f9f9389d83)] - **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`87c71065eb`](https://github.com/nodejs/node/commit/87c71065eb)] - **(SEMVER-MINOR)** **net**: introduce net.BlockList (James M Snell) [#&#8203;34625](https://github.com/nodejs/node/pull/34625)
-   \[[`b421d99a48`](https://github.com/nodejs/node/commit/b421d99a48)] - **(SEMVER-MINOR)** **node-api**: allow retrieval of add-on file name (Gabriel Schulhof) [#&#8203;37195](https://github.com/nodejs/node/pull/37195)
-   \[[`6a4811df8a`](https://github.com/nodejs/node/commit/6a4811df8a)] - **(SEMVER-MINOR)** **os**: add os.devNull (Luigi Pinca) [#&#8203;38569](https://github.com/nodejs/node/pull/38569)
-   \[[`4a88ddeeca`](https://github.com/nodejs/node/commit/4a88ddeeca)] - **(SEMVER-MINOR)** **perf_hooks**: introduce createHistogram (James M Snell) [#&#8203;37155](https://github.com/nodejs/node/pull/37155)
-   \[[`1a6bf1c4a3`](https://github.com/nodejs/node/commit/1a6bf1c4a3)] - **(SEMVER-MINOR)** **process**: add api to enable source-maps programmatically (legendecas) [#&#8203;39085](https://github.com/nodejs/node/pull/39085)
-   \[[`99735a6fe8`](https://github.com/nodejs/node/commit/99735a6fe8)] - **(SEMVER-MINOR)** **process**: add `'worker'` event (James M Snell) [#&#8203;38659](https://github.com/nodejs/node/pull/38659)
-   \[[`3982919317`](https://github.com/nodejs/node/commit/3982919317)] - **(SEMVER-MINOR)** **process**: add direct access to rss without iterating pages (Adrien Maret) [#&#8203;34291](https://github.com/nodejs/node/pull/34291)
-   \[[`526e6c7bde`](https://github.com/nodejs/node/commit/526e6c7bde)] - **(SEMVER-MINOR)** **readline**: add AbortSignal support to interface (Nitzan Uziely) [#&#8203;37932](https://github.com/nodejs/node/pull/37932)
-   \[[`e6eee08692`](https://github.com/nodejs/node/commit/e6eee08692)] - **(SEMVER-MINOR)** **readline**: add support for the AbortController to the question method (Mattias Runge-Broberg) [#&#8203;33676](https://github.com/nodejs/node/pull/33676)
-   \[[`32de361d70`](https://github.com/nodejs/node/commit/32de361d70)] - **(SEMVER-MINOR)** **readline**: add history event and option to set initial history (Mattias Runge-Broberg) [#&#8203;33662](https://github.com/nodejs/node/pull/33662)
-   \[[`797f7f8a38`](https://github.com/nodejs/node/commit/797f7f8a38)] - **(SEMVER-MINOR)** **repl**: add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`abfd71b64c`](https://github.com/nodejs/node/commit/abfd71b64c)] - **(SEMVER-MINOR)** **src**: call overload ctor from the original ctor (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`1efae01b18`](https://github.com/nodejs/node/commit/1efae01b18)] - **(SEMVER-MINOR)** **src**: add a constructor overload for CallbackScope (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`f7933804ba`](https://github.com/nodejs/node/commit/f7933804ba)] - **(SEMVER-MINOR)** **src**: allow to negate boolean CLI flags (Michaël Zasso) [#&#8203;39023](https://github.com/nodejs/node/pull/39023)
-   \[[`6d06ac2202`](https://github.com/nodejs/node/commit/6d06ac2202)] - **(SEMVER-MINOR)** **src**: add --heapsnapshot-near-heap-limit option (Joyee Cheung) [#&#8203;33010](https://github.com/nodejs/node/pull/33010)
-   \[[`577d228ca0`](https://github.com/nodejs/node/commit/577d228ca0)] - **(SEMVER-MINOR)** **src**: add way to get IsolateData and allocator from Environment (Anna Henningsen) [#&#8203;36441](https://github.com/nodejs/node/pull/36441)
-   \[[`658a266cd4`](https://github.com/nodejs/node/commit/658a266cd4)] - **(SEMVER-MINOR)** **src**: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) [#&#8203;36447](https://github.com/nodejs/node/pull/36447)
-   \[[`f421422ea4`](https://github.com/nodejs/node/commit/f421422ea4)] - **(SEMVER-MINOR)** **src**: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) [#&#8203;35486](https://github.com/nodejs/node/pull/35486)
-   \[[`a62d4d60f4`](https://github.com/nodejs/node/commit/a62d4d60f4)] - **(SEMVER-MINOR)** **stream**: add readableDidRead if has been read from (Robert Nagy) [#&#8203;39589](https://github.com/nodejs/node/pull/39589)
-   \[[`63502131a3`](https://github.com/nodejs/node/commit/63502131a3)] - **(SEMVER-MINOR)** **stream**: pipeline accept Buffer as a valid first argument (Nitzan Uziely) [#&#8203;37739](https://github.com/nodejs/node/pull/37739)
-   \[[`68bbebd42c`](https://github.com/nodejs/node/commit/68bbebd42c)] - **(SEMVER-MINOR)** **tls**: allow reading data into a static buffer (Andrey Pechkurov) [#&#8203;35753](https://github.com/nodejs/node/pull/35753)
-   \[[`1cbb74d63d`](https://github.com/nodejs/node/commit/1cbb74d63d)] - **(SEMVER-MINOR)** **url**: expose urlToHttpOptions utility (Yongsheng Zhang) [#&#8203;35960](https://github.com/nodejs/node/pull/35960)
-   \[[`8eb11356dd`](https://github.com/nodejs/node/commit/8eb11356dd)] - **(SEMVER-MINOR)** **util**: expose toUSVString (Robert Nagy) [#&#8203;39814](https://github.com/nodejs/node/pull/39814)
-   \[[`84fcdc3074`](https://github.com/nodejs/node/commit/84fcdc3074)] - **(SEMVER-MINOR)** **v8**: implement v8.stopCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`b238b6bf17`](https://github.com/nodejs/node/commit/b238b6bf17)] - **(SEMVER-MINOR)** **v8**: implement v8.takeCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`9f6bc58da8`](https://github.com/nodejs/node/commit/9f6bc58da8)] - **(SEMVER-MINOR)** **worker**: add setEnvironmentData/getEnvironmentData (James M Snell) [#&#8203;37486](https://github.com/nodejs/node/pull/37486)

##### Commits

##### Semver-minor commits

-   \[[`f3563d3197`](https://github.com/nodejs/node/commit/f3563d3197)] - **(SEMVER-MINOR)** **async_hooks**: use new v8::Context PromiseHook API (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`df37c106a7`](https://github.com/nodejs/node/commit/df37c106a7)] - **(SEMVER-MINOR)** **buffer**: introduce Blob (James M Snell) [#&#8203;36811](https://github.com/nodejs/node/pull/36811)
-   \[[`223494c548`](https://github.com/nodejs/node/commit/223494c548)] - **(SEMVER-MINOR)** **buffer**: add base64url encoding option (Filip Skokan) [#&#8203;36952](https://github.com/nodejs/node/pull/36952)
-   \[[`14fc4ddabc`](https://github.com/nodejs/node/commit/14fc4ddabc)] - **(SEMVER-MINOR)** **child_process**: allow `options.cwd` receive a URL (Khaidi Chu) [#&#8203;38862](https://github.com/nodejs/node/pull/38862)
-   \[[`b68b13acb3`](https://github.com/nodejs/node/commit/b68b13acb3)] - **(SEMVER-MINOR)** **child_process**: add timeout to spawn and fork (Nitzan Uziely) [#&#8203;37256](https://github.com/nodejs/node/pull/37256)
-   \[[`da98c9f99b`](https://github.com/nodejs/node/commit/da98c9f99b)] - **(SEMVER-MINOR)** **child_process**: allow promisified exec to be cancel (Carlos Fuentes) [#&#8203;34249](https://github.com/nodejs/node/pull/34249)
-   \[[`779310ac87`](https://github.com/nodejs/node/commit/779310ac87)] - **(SEMVER-MINOR)** **child_process**: add 'overlapped' stdio flag (Thiago Padilha) [#&#8203;29412](https://github.com/nodejs/node/pull/29412)
-   \[[`40eb3b79f1`](https://github.com/nodejs/node/commit/40eb3b79f1)] - **(SEMVER-MINOR)** **cli**: add -C alias for --conditions flag (Guy Bedford) [#&#8203;38755](https://github.com/nodejs/node/pull/38755)
-   \[[`39eba0a2e1`](https://github.com/nodejs/node/commit/39eba0a2e1)] - **(SEMVER-MINOR)** **cli**: add --node-memory-debug option (Anna Henningsen) [#&#8203;35537](https://github.com/nodejs/node/pull/35537)
-   \[[`d9b58a0262`](https://github.com/nodejs/node/commit/d9b58a0262)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`fa4cb17`](https://github.com/nodejs/node/commit/fa4cb172cde2) (Stephen Belanger) [#&#8203;38577](https://github.com/nodejs/node/pull/38577)
-   \[[`9d7177c152`](https://github.com/nodejs/node/commit/9d7177c152)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`4c07451`](https://github.com/nodejs/node/commit/4c074516397b) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`ec0f0ef8ef`](https://github.com/nodejs/node/commit/ec0f0ef8ef)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`5f44131`](https://github.com/nodejs/node/commit/5f4413194480) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`3e7238e45a`](https://github.com/nodejs/node/commit/3e7238e45a)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`272445f`](https://github.com/nodejs/node/commit/272445f10927) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`214e568597`](https://github.com/nodejs/node/commit/214e568597)] - **(SEMVER-MINOR)** **deps**: V8: backport [`c0fceaa`](https://github.com/nodejs/node/commit/c0fceaa0669b) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`d8d9a9628a`](https://github.com/nodejs/node/commit/d8d9a9628a)] - **(SEMVER-MINOR)** **dns**: add "tries" option to Resolve options (Luan Devecchi) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`15ba19b020`](https://github.com/nodejs/node/commit/15ba19b020)] - **(SEMVER-MINOR)** **dns**: allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) [#&#8203;38099](https://github.com/nodejs/node/pull/38099)
-   \[[`defb77cac9`](https://github.com/nodejs/node/commit/defb77cac9)] - **(SEMVER-MINOR)** **doc**: add missing change to resolver ctor (Luan Devecchi) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`9ee3f77e32`](https://github.com/nodejs/node/commit/9ee3f77e32)] - **(SEMVER-MINOR)** **errors**: remove experimental from --enable-source-maps (Benjamin Coe) [#&#8203;37362](https://github.com/nodejs/node/pull/37362)
-   \[[`989c204a58`](https://github.com/nodejs/node/commit/989c204a58)] - **(SEMVER-MINOR)** **fs**: allow empty string for temp directory prefix (Voltrex) [#&#8203;39028](https://github.com/nodejs/node/pull/39028)
-   \[[`ef72490cde`](https://github.com/nodejs/node/commit/ef72490cde)] - **(SEMVER-MINOR)** **fs**: allow no-params fsPromises fileHandle read (Nitzan Uziely) [#&#8203;38287](https://github.com/nodejs/node/pull/38287)
-   \[[`cad9d20f64`](https://github.com/nodejs/node/commit/cad9d20f64)] - **(SEMVER-MINOR)** **fs**: add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) [#&#8203;37490](https://github.com/nodejs/node/pull/37490)
-   \[[`fe12cc07b3`](https://github.com/nodejs/node/commit/fe12cc07b3)] - **(SEMVER-MINOR)** **fs**: add fsPromises.watch() (James M Snell) [#&#8203;37179](https://github.com/nodejs/node/pull/37179)
-   \[[`2459c115a8`](https://github.com/nodejs/node/commit/2459c115a8)] - **(SEMVER-MINOR)** **fs**: allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) [#&#8203;36190](https://github.com/nodejs/node/pull/36190)
-   \[[`6544cfb4b9`](https://github.com/nodejs/node/commit/6544cfb4b9)] - **(SEMVER-MINOR)** **http2**: add support for sensitive headers (Anna Henningsen) [#&#8203;34145](https://github.com/nodejs/node/pull/34145)
-   \[[`a6c6cbb4e6`](https://github.com/nodejs/node/commit/a6c6cbb4e6)] - **(SEMVER-MINOR)** **http2**: allow setting the local window size of a session (Yongsheng Zhang) [#&#8203;35978](https://github.com/nodejs/node/pull/35978)
-   \[[`93af04afbb`](https://github.com/nodejs/node/commit/93af04afbb)] - **(SEMVER-MINOR)** **module**: add support for `URL` to `import.meta.resolve` (Antoine du Hamel) [#&#8203;38587](https://github.com/nodejs/node/pull/38587)
-   \[[`f9f9389d83`](https://github.com/nodejs/node/commit/f9f9389d83)] - **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`76d4f22bab`](https://github.com/nodejs/node/commit/76d4f22bab)] - **(SEMVER-MINOR)** **net**: allow net.BlockList to use net.SocketAddress objects (James M Snell) [#&#8203;37917](https://github.com/nodejs/node/pull/37917)
-   \[[`82363d864d`](https://github.com/nodejs/node/commit/82363d864d)] - **(SEMVER-MINOR)** **net**: add SocketAddress class (James M Snell) [#&#8203;37917](https://github.com/nodejs/node/pull/37917)
-   \[[`0202ba46b8`](https://github.com/nodejs/node/commit/0202ba46b8)] - **(SEMVER-MINOR)** **net**: make net.BlockList cloneable (James M Snell) [#&#8203;37917](https://github.com/nodejs/node/pull/37917)
-   \[[`a41a3e3b3f`](https://github.com/nodejs/node/commit/a41a3e3b3f)] - **(SEMVER-MINOR)** **net**: make blocklist family case insensitive (James M Snell) [#&#8203;34864](https://github.com/nodejs/node/pull/34864)
-   \[[`87c71065eb`](https://github.com/nodejs/node/commit/87c71065eb)] - **(SEMVER-MINOR)** **net**: introduce net.BlockList (James M Snell) [#&#8203;34625](https://github.com/nodejs/node/pull/34625)
-   \[[`b421d99a48`](https://github.com/nodejs/node/commit/b421d99a48)] - **(SEMVER-MINOR)** **node-api**: allow retrieval of add-on file name (Gabriel Schulhof) [#&#8203;37195](https://github.com/nodejs/node/pull/37195)
-   \[[`6a4811df8a`](https://github.com/nodejs/node/commit/6a4811df8a)] - **(SEMVER-MINOR)** **os**: add os.devNull (Luigi Pinca) [#&#8203;38569](https://github.com/nodejs/node/pull/38569)
-   \[[`4a88ddeeca`](https://github.com/nodejs/node/commit/4a88ddeeca)] - **(SEMVER-MINOR)** **perf_hooks**: introduce createHistogram (James M Snell) [#&#8203;37155](https://github.com/nodejs/node/pull/37155)
-   \[[`1a6bf1c4a3`](https://github.com/nodejs/node/commit/1a6bf1c4a3)] - **(SEMVER-MINOR)** **process**: add api to enable source-maps programmatically (legendecas) [#&#8203;39085](https://github.com/nodejs/node/pull/39085)
-   \[[`99735a6fe8`](https://github.com/nodejs/node/commit/99735a6fe8)] - **(SEMVER-MINOR)** **process**: add `'worker'` event (James M Snell) [#&#8203;38659](https://github.com/nodejs/node/pull/38659)
-   \[[`3982919317`](https://github.com/nodejs/node/commit/3982919317)] - **(SEMVER-MINOR)** **process**: add direct access to rss without iterating pages (Adrien Maret) [#&#8203;34291](https://github.com/nodejs/node/pull/34291)
-   \[[`526e6c7bde`](https://github.com/nodejs/node/commit/526e6c7bde)] - **(SEMVER-MINOR)** **readline**: add AbortSignal support to interface (Nitzan Uziely) [#&#8203;37932](https://github.com/nodejs/node/pull/37932)
-   \[[`e6eee08692`](https://github.com/nodejs/node/commit/e6eee08692)] - **(SEMVER-MINOR)** **readline**: add support for the AbortController to the question method (Mattias Runge-Broberg) [#&#8203;33676](https://github.com/nodejs/node/pull/33676)
-   \[[`32de361d70`](https://github.com/nodejs/node/commit/32de361d70)] - **(SEMVER-MINOR)** **readline**: add history event and option to set initial history (Mattias Runge-Broberg) [#&#8203;33662](https://github.com/nodejs/node/pull/33662)
-   \[[`797f7f8a38`](https://github.com/nodejs/node/commit/797f7f8a38)] - **(SEMVER-MINOR)** **repl**: add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`abfd71b64c`](https://github.com/nodejs/node/commit/abfd71b64c)] - **(SEMVER-MINOR)** **src**: call overload ctor from the original ctor (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`1efae01b18`](https://github.com/nodejs/node/commit/1efae01b18)] - **(SEMVER-MINOR)** **src**: add a constructor overload for CallbackScope (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`1aa2080d29`](https://github.com/nodejs/node/commit/1aa2080d29)] - **(SEMVER-MINOR)** **src**: fix align in cares_wrap.h (Luan) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`f7933804ba`](https://github.com/nodejs/node/commit/f7933804ba)] - **(SEMVER-MINOR)** **src**: allow to negate boolean CLI flags (Michaël Zasso) [#&#8203;39023](https://github.com/nodejs/node/pull/39023)
-   \[[`6d06ac2202`](https://github.com/nodejs/node/commit/6d06ac2202)] - **(SEMVER-MINOR)** **src**: add --heapsnapshot-near-heap-limit option (Joyee Cheung) [#&#8203;33010](https://github.com/nodejs/node/pull/33010)
-   \[[`4091eb9db7`](https://github.com/nodejs/node/commit/4091eb9db7)] - **(SEMVER-MINOR)** **src**: move node_binding to modern THROW_ERR\* (James M Snell) [#&#8203;35469](https://github.com/nodejs/node/pull/35469)
-   \[[`577d228ca0`](https://github.com/nodejs/node/commit/577d228ca0)] - **(SEMVER-MINOR)** **src**: add way to get IsolateData and allocator from Environment (Anna Henningsen) [#&#8203;36441](https://github.com/nodejs/node/pull/36441)
-   \[[`658a266cd4`](https://github.com/nodejs/node/commit/658a266cd4)] - **(SEMVER-MINOR)** **src**: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) [#&#8203;36447](https://github.com/nodejs/node/pull/36447)
-   \[[`f421422ea4`](https://github.com/nodejs/node/commit/f421422ea4)] - **(SEMVER-MINOR)** **src**: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) [#&#8203;35486](https://github.com/nodejs/node/pull/35486)
-   \[[`a62d4d60f4`](https://github.com/nodejs/node/commit/a62d4d60f4)] - **(SEMVER-MINOR)** **stream**: add readableDidRead if has been read from (Robert Nagy) [#&#8203;39589](https://github.com/nodejs/node/pull/39589)
-   \[[`63502131a3`](https://github.com/nodejs/node/commit/63502131a3)] - **(SEMVER-MINOR)** **stream**: pipeline accept Buffer as a valid first argument (Nitzan Uziely) [#&#8203;37739](https://github.com/nodejs/node/pull/37739)
-   \[[`72ef41c72b`](https://github.com/nodejs/node/commit/72ef41c72b)] - **(SEMVER-MINOR)** **test**: add wpt tests for Blob (Michaël Zasso) [#&#8203;36811](https://github.com/nodejs/node/pull/36811)
-   \[[`68bbebd42c`](https://github.com/nodejs/node/commit/68bbebd42c)] - **(SEMVER-MINOR)** **tls**: allow reading data into a static buffer (Andrey Pechkurov) [#&#8203;35753](https://github.com/nodejs/node/pull/35753)
-   \[[`587deacad9`](https://github.com/nodejs/node/commit/587deacad9)] - **(SEMVER-MINOR)** **tools**: add `Worker` to type-parser (James M Snell) [#&#8203;38659](https://github.com/nodejs/node/pull/38659)
-   \[[`1cbb74d63d`](https://github.com/nodejs/node/commit/1cbb74d63d)] - **(SEMVER-MINOR)** **url**: expose urlToHttpOptions utility (Yongsheng Zhang) [#&#8203;35960](https://github.com/nodejs/node/pull/35960)
-   \[[`8eb11356dd`](https://github.com/nodejs/node/commit/8eb11356dd)] - **(SEMVER-MINOR)** **util**: expose toUSVString (Robert Nagy) [#&#8203;39814](https://github.com/nodejs/node/pull/39814)
-   \[[`84fcdc3074`](https://github.com/nodejs/node/commit/84fcdc3074)] - **(SEMVER-MINOR)** **v8**: implement v8.stopCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`b238b6bf17`](https://github.com/nodejs/node/commit/b238b6bf17)] - **(SEMVER-MINOR)** **v8**: implement v8.takeCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`9f6bc58da8`](https://github.com/nodejs/node/commit/9f6bc58da8)] - **(SEMVER-MINOR)** **worker**: add setEnvironmentData/getEnvironmentData (James M Snell) [#&#8203;37486](https://github.com/nodejs/node/pull/37486)

##### Semver-patch commits

-   \[[`3a60de0135`](https://github.com/nodejs/node/commit/3a60de0135)] - **assert**: change status of legacy asserts (James M Snell) [#&#8203;38113](https://github.com/nodejs/node/pull/38113)
-   \[[`5a42be9719`](https://github.com/nodejs/node/commit/5a42be9719)] - **async_hooks**: use resource stack for AsyncLocalStorage run (Stephen Belanger) [#&#8203;39890](https://github.com/nodejs/node/pull/39890)
-   \[[`fc29ddb38e`](https://github.com/nodejs/node/commit/fc29ddb38e)] - **async_hooks**: emit promise trace events from JS (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`13296d1abf`](https://github.com/nodejs/node/commit/13296d1abf)] - **async_hooks**: eliminate native PromiseHook (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`48e5971e51`](https://github.com/nodejs/node/commit/48e5971e51)] - **async_hooks**: check for empty contexts before removing (Bryan English) [#&#8203;39095](https://github.com/nodejs/node/pull/39095)
-   \[[`691c00c48b`](https://github.com/nodejs/node/commit/691c00c48b)] - **async_hooks**: switch between native and context hooks correctly (Stephen Belanger) [#&#8203;38912](https://github.com/nodejs/node/pull/38912)
-   \[[`8484ab2a6c`](https://github.com/nodejs/node/commit/8484ab2a6c)] - **buffer**: avoid creating the backing store in the thread (James M Snell) [#&#8203;37052](https://github.com/nodejs/node/pull/37052)
-   \[[`c8d039a872`](https://github.com/nodejs/node/commit/c8d039a872)] - **buffer**: make Blob's constructor more spec-compliant (Michaël Zasso) [#&#8203;37361](https://github.com/nodejs/node/pull/37361)
-   \[[`05d73ac286`](https://github.com/nodejs/node/commit/05d73ac286)] - **buffer**: make Blob's slice method more spec-compliant (Michaël Zasso) [#&#8203;37361](https://github.com/nodejs/node/pull/37361)
-   \[[`e7cf2efc60`](https://github.com/nodejs/node/commit/e7cf2efc60)] - **buffer**: add @&#8203;[@&#8203;toStringTag](https://github.com/toStringTag) to Blob (Colin Ihrig) [#&#8203;37336](https://github.com/nodejs/node/pull/37336)
-   \[[`d99deeaf97`](https://github.com/nodejs/node/commit/d99deeaf97)] - **build**: fix update authors commit (Mestery) [#&#8203;39858](https://github.com/nodejs/node/pull/39858)
-   \[[`5e1cba81bf`](https://github.com/nodejs/node/commit/5e1cba81bf)] - **build**: add authors.yml (Tierney Cyren) [#&#8203;35831](https://github.com/nodejs/node/pull/35831)
-   \[[`ed3c332089`](https://github.com/nodejs/node/commit/ed3c332089)] - **build**: add option to hide console window (Cheng Zhao) [#&#8203;39712](https://github.com/nodejs/node/pull/39712)
-   \[[`c696f97c5e`](https://github.com/nodejs/node/commit/c696f97c5e)] - **build**: exclude markdown files from some GitHub Actions (Rich Trott) [#&#8203;39565](https://github.com/nodejs/node/pull/39565)
-   \[[`0bd6dd1ee2`](https://github.com/nodejs/node/commit/0bd6dd1ee2)] - **build**: use lts shorthand in GitHub Actions (Rich Trott) [#&#8203;39538](https://github.com/nodejs/node/pull/39538)
-   \[[`3482bca643`](https://github.com/nodejs/node/commit/3482bca643)] - **build**: override python executable path on configure (legendecas) [#&#8203;39465](https://github.com/nodejs/node/pull/39465)
-   \[[`61261cdb8e`](https://github.com/nodejs/node/commit/61261cdb8e)] - **build**: use Node.js 14 in commit-lint.yml (Rich Trott) [#&#8203;39506](https://github.com/nodejs/node/pull/39506)
-   \[[`719f1563c1`](https://github.com/nodejs/node/commit/719f1563c1)] - **build**: fix `host_arch_cc()` for AIX/IBM i (Richard Lau) [#&#8203;39481](https://github.com/nodejs/node/pull/39481)
-   \[[`6e06b2ff9d`](https://github.com/nodejs/node/commit/6e06b2ff9d)] - **build**: update coverage Makefile target comments (Richard Lau) [#&#8203;39365](https://github.com/nodejs/node/pull/39365)
-   \[[`4e28d2b2c0`](https://github.com/nodejs/node/commit/4e28d2b2c0)] - **build**: run workflows when a PR is ready for review (Michaël Zasso) [#&#8203;39405](https://github.com/nodejs/node/pull/39405)
-   \[[`0da5d74da4`](https://github.com/nodejs/node/commit/0da5d74da4)] - **build**: update to setup-node@v2 (Rich Trott) [#&#8203;39366](https://github.com/nodejs/node/pull/39366)
-   \[[`f2e1c2267e`](https://github.com/nodejs/node/commit/f2e1c2267e)] - **build**: update gcovr for gcc 8 compatibility (Richard Lau) [#&#8203;39326](https://github.com/nodejs/node/pull/39326)
-   \[[`131dd6ec4d`](https://github.com/nodejs/node/commit/131dd6ec4d)] - **build**: remove unused comment in Makefile (LitoMore) [#&#8203;39171](https://github.com/nodejs/node/pull/39171)
-   \[[`40e46321b0`](https://github.com/nodejs/node/commit/40e46321b0)] - **build**: uvwasi honours node_shared_libuv (Jérémy Lal) [#&#8203;39260](https://github.com/nodejs/node/pull/39260)
-   \[[`5c6ab719f2`](https://github.com/nodejs/node/commit/5c6ab719f2)] - **build**: shorten path used in tarball build workflow (Richard Lau) [#&#8203;39192](https://github.com/nodejs/node/pull/39192)
-   \[[`870526374c`](https://github.com/nodejs/node/commit/870526374c)] - **build**: add `library_files` to gyp variables (himself65) [#&#8203;39293](https://github.com/nodejs/node/pull/39293)
-   \[[`0e221156aa`](https://github.com/nodejs/node/commit/0e221156aa)] - **build**: pass directory instead of list of files to js2c.py (Joyee Cheung) [#&#8203;39069](https://github.com/nodejs/node/pull/39069)
-   \[[`8d8415415b`](https://github.com/nodejs/node/commit/8d8415415b)] - **build**: don't pass `--mode` argument to V8 test-runner (Richard Lau) [#&#8203;39055](https://github.com/nodejs/node/pull/39055)
-   \[[`2d50217634`](https://github.com/nodejs/node/commit/2d50217634)] - **build**: fix commit linter on unrebased PRs (Mary Marchini) [#&#8203;39121](https://github.com/nodejs/node/pull/39121)
-   \[[`c93d5e006e`](https://github.com/nodejs/node/commit/c93d5e006e)] - **build**: use Actions to validate commit message (Mary Marchini) [#&#8203;32417](https://github.com/nodejs/node/pull/32417)
-   \[[`0bcaf9c4d1`](https://github.com/nodejs/node/commit/0bcaf9c4d1)] - **child_process**: fix spawn and fork abort behavior (Nitzan Uziely) [#&#8203;37325](https://github.com/nodejs/node/pull/37325)
-   \[[`8010c83180`](https://github.com/nodejs/node/commit/8010c83180)] - **child_process**: fix bad abort signal leak (Nitzan Uziely) [#&#8203;37257](https://github.com/nodejs/node/pull/37257)
-   \[[`32aff2f5a0`](https://github.com/nodejs/node/commit/32aff2f5a0)] - **console**: refactor to avoid unsafe array iteration (Antoine du Hamel) [#&#8203;36753](https://github.com/nodejs/node/pull/36753)
-   \[[`f46e8cdf79`](https://github.com/nodejs/node/commit/f46e8cdf79)] - **debugger**: remove undefined parameter (Rich Trott) [#&#8203;39570](https://github.com/nodejs/node/pull/39570)
-   \[[`482459edd4`](https://github.com/nodejs/node/commit/482459edd4)] - **debugger**: validate sec-websocket-accept response header (Chris Opperwall) [#&#8203;39357](https://github.com/nodejs/node/pull/39357)
-   \[[`e9c46107d7`](https://github.com/nodejs/node/commit/e9c46107d7)] - **debugger**: rename internal module (Rich Trott) [#&#8203;39378](https://github.com/nodejs/node/pull/39378)
-   \[[`49e0883c75`](https://github.com/nodejs/node/commit/49e0883c75)] - **debugger**: indicate server is ending (Rich Trott) [#&#8203;39334](https://github.com/nodejs/node/pull/39334)
-   \[[`72a3419510`](https://github.com/nodejs/node/commit/72a3419510)] - **debugger**: rename inspector-cli test module to debugger (Rich Trott) [#&#8203;38530](https://github.com/nodejs/node/pull/38530)
-   \[[`b3352cfba4`](https://github.com/nodejs/node/commit/b3352cfba4)] - **debugger**: prevent simultaneous heap snapshots (Rich Trott) [#&#8203;39638](https://github.com/nodejs/node/pull/39638)
-   \[[`e5826ab1c2`](https://github.com/nodejs/node/commit/e5826ab1c2)] - **debugger**: remove final lint exceptions in inspect_repl.js (Rich Trott) [#&#8203;39078](https://github.com/nodejs/node/pull/39078)
-   \[[`34c0701952`](https://github.com/nodejs/node/commit/34c0701952)] - **deps**: V8: cherry-pick [`00bb1a7`](https://github.com/nodejs/node/commit/00bb1a77c03e) (Darshan Sen) [#&#8203;39829](https://github.com/nodejs/node/pull/39829)
-   \[[`42359ab582`](https://github.com/nodejs/node/commit/42359ab582)] - **deps**: upgrade to libuv 1.42.0 (Luigi Pinca) [#&#8203;39525](https://github.com/nodejs/node/pull/39525)
-   \[[`d863a9db68`](https://github.com/nodejs/node/commit/d863a9db68)] - **deps**: bump HdrHistogram_C to 0.11.2 (Matteo Collina) [#&#8203;39462](https://github.com/nodejs/node/pull/39462)
-   \[[`4c93968a62`](https://github.com/nodejs/node/commit/4c93968a62)] - **deps**: extract gtest source files to deps/googletest (legendecas) [#&#8203;39386](https://github.com/nodejs/node/pull/39386)
-   \[[`fcae391fed`](https://github.com/nodejs/node/commit/fcae391fed)] - **deps**: update Acorn to v8.4.1 (Michaël Zasso) [#&#8203;39166](https://github.com/nodejs/node/pull/39166)
-   \[[`327838dd96`](https://github.com/nodejs/node/commit/327838dd96)] - **deps**: V8: backport [`c922458`](https://github.com/nodejs/node/commit/c9224589cf53) (Stephen Belanger) [#&#8203;39743](https://github.com/nodejs/node/pull/39743)
-   \[[`89c1bbd7b2`](https://github.com/nodejs/node/commit/89c1bbd7b2)] - **deps**: V8: cherry-pick [`81814ed`](https://github.com/nodejs/node/commit/81814ed44574) (Stephen Belanger) [#&#8203;39719](https://github.com/nodejs/node/pull/39719)
-   \[[`8b9215d07c`](https://github.com/nodejs/node/commit/8b9215d07c)] - **deps**: update to cjs-module-lexer@1.2.2 (Guy Bedford) [#&#8203;39402](https://github.com/nodejs/node/pull/39402)
-   \[[`e201293ddb`](https://github.com/nodejs/node/commit/e201293ddb)] - **dgram**: use simplified validator (Voltrex) [#&#8203;39753](https://github.com/nodejs/node/pull/39753)
-   \[[`6fdac38f91`](https://github.com/nodejs/node/commit/6fdac38f91)] - **doc,fs**: remove experimental status for WHATWG URL as path (Antoine du Hamel) [#&#8203;38870](https://github.com/nodejs/node/pull/38870)
-   \[[`d56e8268f9`](https://github.com/nodejs/node/commit/d56e8268f9)] - **doc,lib**: prepare for stricter multi-line array linting (Rich Trott) [#&#8203;37088](https://github.com/nodejs/node/pull/37088)
-   \[[`5500ae9236`](https://github.com/nodejs/node/commit/5500ae9236)] - **domain**: do not add domain to promise from other context (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`dc855af18e`](https://github.com/nodejs/node/commit/dc855af18e)] - **errors**: don't throw TypeError on missing export (Benjamin Coe) [#&#8203;39017](https://github.com/nodejs/node/pull/39017)
-   \[[`c13eadc218`](https://github.com/nodejs/node/commit/c13eadc218)] - **errors**: eliminate all overhead for hidden calls (Momtchil Momtchev) [#&#8203;35644](https://github.com/nodejs/node/pull/35644)
-   \[[`d42bbe48c5`](https://github.com/nodejs/node/commit/d42bbe48c5)] - **esm**: use correct URL for error decoration (Bradley Farias) [#&#8203;37854](https://github.com/nodejs/node/pull/37854)
-   \[[`9db3304368`](https://github.com/nodejs/node/commit/9db3304368)] - **esm**: update to correct deprecation code (Colin Ihrig) [#&#8203;37147](https://github.com/nodejs/node/pull/37147)
-   \[[`e73bfed2f4`](https://github.com/nodejs/node/commit/e73bfed2f4)] - **esm**: deprecate legacy main lookup for modules (Guy Bedford) [#&#8203;36918](https://github.com/nodejs/node/pull/36918)
-   \[[`c1782ea1f5`](https://github.com/nodejs/node/commit/c1782ea1f5)] - **events**: allow the options argument to be null (Luigi Pinca) [#&#8203;39486](https://github.com/nodejs/node/pull/39486)
-   \[[`d2834fb97f`](https://github.com/nodejs/node/commit/d2834fb97f)] - **fs**: improve fsPromises writeFile performance (Nitzan Uziely) [#&#8203;37610](https://github.com/nodejs/node/pull/37610)
-   \[[`ee1d13c90d`](https://github.com/nodejs/node/commit/ee1d13c90d)] - **fs**: use byteLength to handle ArrayBuffer views (Michaël Zasso) [#&#8203;38187](https://github.com/nodejs/node/pull/38187)
-   \[[`b38d6b475b`](https://github.com/nodejs/node/commit/b38d6b475b)] - **fs**: fixup negative length in fs.truncate (James M Snell) [#&#8203;37483](https://github.com/nodejs/node/pull/37483)
-   \[[`fe28128f3c`](https://github.com/nodejs/node/commit/fe28128f3c)] - **fs**: add docs and tests for `AsyncIterable` support in `fh.writeFile` (Antoine du Hamel) [#&#8203;39836](https://github.com/nodejs/node/pull/39836)
-   \[[`2b0e2706c0`](https://github.com/nodejs/node/commit/2b0e2706c0)] - **fs**: improve fsPromises readFile performance (Nitzan Uziely) [#&#8203;37608](https://github.com/nodejs/node/pull/37608)
-   \[[`a4d6f78619`](https://github.com/nodejs/node/commit/a4d6f78619)] - **fs**: move constants to internal/fs/utils.js (Darshan Sen) [#&#8203;38061](https://github.com/nodejs/node/pull/38061)
-   \[[`402f7722ce`](https://github.com/nodejs/node/commit/402f7722ce)] - **fs**: add validatePosition and use in read and readSync (Darshan Sen) [#&#8203;37051](https://github.com/nodejs/node/pull/37051)
-   \[[`2bc301dcff`](https://github.com/nodejs/node/commit/2bc301dcff)] - **http**: decodes url.username and url.password for authorization header (Lew Gordon) [#&#8203;39310](https://github.com/nodejs/node/pull/39310)
-   \[[`5459f4af33`](https://github.com/nodejs/node/commit/5459f4af33)] - **http**: clean up HttpParser correctly (Tobias Koppers) [#&#8203;39292](https://github.com/nodejs/node/pull/39292)
-   \[[`8b3feee148`](https://github.com/nodejs/node/commit/8b3feee148)] - **http,https**: align server option of https with http (Qingyu Deng) [#&#8203;38992](https://github.com/nodejs/node/pull/38992)
-   \[[`cf59e87c8b`](https://github.com/nodejs/node/commit/cf59e87c8b)] - **inspector**: update inspector_protocol to [`89c4adf`](https://github.com/nodejs/node/commit/89c4adf) (Rich Trott) [#&#8203;39650](https://github.com/nodejs/node/pull/39650)
-   \[[`ea5f2047a2`](https://github.com/nodejs/node/commit/ea5f2047a2)] - **inspector**: update inspector_protocol to [`8ec18cf`](https://github.com/nodejs/node/commit/8ec18cf) (Rich Trott) [#&#8203;39614](https://github.com/nodejs/node/pull/39614)
-   \[[`1e5aca550c`](https://github.com/nodejs/node/commit/1e5aca550c)] - **inspector**: mark as stable (Gireesh Punathil) [#&#8203;37748](https://github.com/nodejs/node/pull/37748)
-   \[[`8a2ce5dae6`](https://github.com/nodejs/node/commit/8a2ce5dae6)] - **inspector**: move inspector async hooks to environment (Joyee Cheung) [#&#8203;39112](https://github.com/nodejs/node/pull/39112)
-   \[[`338189ff6f`](https://github.com/nodejs/node/commit/338189ff6f)] - **lib**: simplify validators (Voltrex) [#&#8203;39753](https://github.com/nodejs/node/pull/39753)
-   \[[`e1019351e8`](https://github.com/nodejs/node/commit/e1019351e8)] - **lib**: cleanup validation (Voltrex) [#&#8203;39652](https://github.com/nodejs/node/pull/39652)
-   \[[`dbaf4988bc`](https://github.com/nodejs/node/commit/dbaf4988bc)] - **lib**: use validators (Voltrex) [#&#8203;39663](https://github.com/nodejs/node/pull/39663)
-   \[[`9c33e4bfb2`](https://github.com/nodejs/node/commit/9c33e4bfb2)] - **lib**: use validator (Voltrex) [#&#8203;39547](https://github.com/nodejs/node/pull/39547)
-   \[[`5b1104291d`](https://github.com/nodejs/node/commit/5b1104291d)] - **lib**: use `validateObject` (Voltrex) [#&#8203;39605](https://github.com/nodejs/node/pull/39605)
-   \[[`1ce81079df`](https://github.com/nodejs/node/commit/1ce81079df)] - **lib**: remove use of array destructuring (Antoine du Hamel) [#&#8203;36818](https://github.com/nodejs/node/pull/36818)
-   \[[`b24b34effd`](https://github.com/nodejs/node/commit/b24b34effd)] - **lib**: add `bound apply` variants of varargs `primordials` (ExE Boss) [#&#8203;37005](https://github.com/nodejs/node/pull/37005)
-   \[[`7cdff9a6a8`](https://github.com/nodejs/node/commit/7cdff9a6a8)] - **lib**: refactor `primordials.makeSafe` to use more primordials (ExE Boss) [#&#8203;36865](https://github.com/nodejs/node/pull/36865)
-   \[[`1737352580`](https://github.com/nodejs/node/commit/1737352580)] - **lib**: comment explaining special-case handling of promises (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`7f54cccb6c`](https://github.com/nodejs/node/commit/7f54cccb6c)] - **lib**: refactor to use validateString (ZiJian Liu) [#&#8203;37006](https://github.com/nodejs/node/pull/37006)
-   \[[`98259dc527`](https://github.com/nodejs/node/commit/98259dc527)] - **module**: improve support of data: URLs (Antoine du Hamel) [#&#8203;37392](https://github.com/nodejs/node/pull/37392)
-   \[[`9aba2888a1`](https://github.com/nodejs/node/commit/9aba2888a1)] - **net**: throw ERR_OUT_OF_RANGE if blockList.addSubnet prefix is NaN (ZiJian Liu) [#&#8203;36732](https://github.com/nodejs/node/pull/36732)
-   \[[`2ca12c83b4`](https://github.com/nodejs/node/commit/2ca12c83b4)] - **node-api**: handle pending exception in cb wrapper (Michael Dawson) [#&#8203;39476](https://github.com/nodejs/node/pull/39476)
-   \[[`9e5edf2158`](https://github.com/nodejs/node/commit/9e5edf2158)] - **node-api**: cctest on v8impl::Reference (legendecas) [#&#8203;38970](https://github.com/nodejs/node/pull/38970)
-   \[[`a74032a490`](https://github.com/nodejs/node/commit/a74032a490)] - **node-api**: rtn pending excep on napi_new_instance (legendecas) [#&#8203;38798](https://github.com/nodejs/node/pull/38798)
-   \[[`bcb85adee6`](https://github.com/nodejs/node/commit/bcb85adee6)] - **policy**: canonicalize before resolving specifiers (Bradley Farias) [#&#8203;37863](https://github.com/nodejs/node/pull/37863)
-   \[[`0ff520cf02`](https://github.com/nodejs/node/commit/0ff520cf02)] - **policy**: fix integrity when DEFAULT_ENCODING is set (Tobias Nießen) [#&#8203;39750](https://github.com/nodejs/node/pull/39750)
-   \[[`6c87b591d9`](https://github.com/nodejs/node/commit/6c87b591d9)] - **readline**: allow completer to rewrite existing input (Anna Henningsen) [#&#8203;39178](https://github.com/nodejs/node/pull/39178)
-   \[[`37b4708b19`](https://github.com/nodejs/node/commit/37b4708b19)] - **repl**: fix tla function hoisting (Don Jayamanne) [#&#8203;39745](https://github.com/nodejs/node/pull/39745)
-   \[[`9264caeafe`](https://github.com/nodejs/node/commit/9264caeafe)] - **repl**: do not include legacy getter/setter methods in completion (Anna Henningsen) [#&#8203;39576](https://github.com/nodejs/node/pull/39576)
-   \[[`50c5e71e22`](https://github.com/nodejs/node/commit/50c5e71e22)] - **repl**: correctly hoist top level await declarations (ejose19) [#&#8203;39265](https://github.com/nodejs/node/pull/39265)
-   \[[`1e065a0a43`](https://github.com/nodejs/node/commit/1e065a0a43)] - **repl**: processTopLevelAwait fallback error handling (ejose19) [#&#8203;39290](https://github.com/nodejs/node/pull/39290)
-   \[[`99664494ff`](https://github.com/nodejs/node/commit/99664494ff)] - **repl**: ensure correct syntax err for await parsing (Guy Bedford) [#&#8203;39154](https://github.com/nodejs/node/pull/39154)
-   \[[`761dafafde`](https://github.com/nodejs/node/commit/761dafafde)] - **repl**: fix Ctrl+C on top level await (Antoine du Hamel) [#&#8203;38656](https://github.com/nodejs/node/pull/38656)
-   \[[`88b02cbb08`](https://github.com/nodejs/node/commit/88b02cbb08)] - **repl**: add auto‑completion for dynamic import calls (ExE Boss) [#&#8203;37178](https://github.com/nodejs/node/pull/37178)
-   \[[`8f3a8830ba`](https://github.com/nodejs/node/commit/8f3a8830ba)] - **repl**: refactor to avoid unsafe array iteration (Antoine du Hamel) [#&#8203;37188](https://github.com/nodejs/node/pull/37188)
-   \[[`a48e2d6ec7`](https://github.com/nodejs/node/commit/a48e2d6ec7)] - **repl**: refactor to avoid unsafe array iteration (Darshan Sen) [#&#8203;36663](https://github.com/nodejs/node/pull/36663)
-   \[[`20ffadf437`](https://github.com/nodejs/node/commit/20ffadf437)] - **repl**: refactor to use more primordials (Antoine du Hamel) [#&#8203;36264](https://github.com/nodejs/node/pull/36264)
-   \[[`f69c934ad4`](https://github.com/nodejs/node/commit/f69c934ad4)] - **report**: generates report on threads with no isolates (legendecas) [#&#8203;38994](https://github.com/nodejs/node/pull/38994)
-   \[[`c4686fa5a7`](https://github.com/nodejs/node/commit/c4686fa5a7)] - **src**: fix TextDecoder final flush size calculation (James M Snell) [#&#8203;39737](https://github.com/nodejs/node/pull/39737)
-   \[[`495cd02c20`](https://github.com/nodejs/node/commit/495cd02c20)] - **src**: add cosmetic space character to `async_wrap.h` file (Juan José Arboleda) [#&#8203;39459](https://github.com/nodejs/node/pull/39459)
-   \[[`985ec48975`](https://github.com/nodejs/node/commit/985ec48975)] - **src**: print native module id on native module not found (legendecas) [#&#8203;39460](https://github.com/nodejs/node/pull/39460)
-   \[[`e6ff7e648e`](https://github.com/nodejs/node/commit/e6ff7e648e)] - **src**: close HandleWraps instead of deleting them in OnGCCollect() (Anna Henningsen) [#&#8203;39441](https://github.com/nodejs/node/pull/39441)
-   \[[`5c473bdc12`](https://github.com/nodejs/node/commit/5c473bdc12)] - **src**: remove unused guards around node-api reference (legendecas) [#&#8203;38334](https://github.com/nodejs/node/pull/38334)
-   \[[`41213bd507`](https://github.com/nodejs/node/commit/41213bd507)] - **src**: add JSDoc typings for v8 (Voltrex) [#&#8203;38944](https://github.com/nodejs/node/pull/38944)
-   \[[`02b1df9fac`](https://github.com/nodejs/node/commit/02b1df9fac)] - **src**: fix crash in AfterGetAddrInfo (Anna Henningsen) [#&#8203;39735](https://github.com/nodejs/node/pull/39735)
-   \[[`99493b07d4`](https://github.com/nodejs/node/commit/99493b07d4)] - **src**: fix fatal errors when a current isolate not exist (legendecas) [#&#8203;38624](https://github.com/nodejs/node/pull/38624)
-   \[[`9433c28c14`](https://github.com/nodejs/node/commit/9433c28c14)] - **src**: remove more extra semis from member fns (Shelley Vohr) [#&#8203;38744](https://github.com/nodejs/node/pull/38744)
-   \[[`bad990c934`](https://github.com/nodejs/node/commit/bad990c934)] - **src**: use BaseObject::kInteralFieldCount in Blob (Joyee Cheung) [#&#8203;36991](https://github.com/nodejs/node/pull/36991)
-   \[[`0a759dff52`](https://github.com/nodejs/node/commit/0a759dff52)] - **src**: compare IPv4 addresses in host byte order (Colin Ihrig) [#&#8203;39096](https://github.com/nodejs/node/pull/39096)
-   \[[`d73181f243`](https://github.com/nodejs/node/commit/d73181f243)] - **src**: reduce duplicated boilerplate with new env utility fn (James M Snell) [#&#8203;36536](https://github.com/nodejs/node/pull/36536)
-   \[[`85af15a8b6`](https://github.com/nodejs/node/commit/85af15a8b6)] - **src**: allow instances of net.BlockList to be created internally (James M Snell) [#&#8203;34741](https://github.com/nodejs/node/pull/34741)
-   \[[`1008c80176`](https://github.com/nodejs/node/commit/1008c80176)] - **src**: add SocketAddressLRU Utility (James M Snell) [#&#8203;34618](https://github.com/nodejs/node/pull/34618)
-   \[[`e404841a9c`](https://github.com/nodejs/node/commit/e404841a9c)] - **src**: set PromiseHooks by Environment (Bryan English) [#&#8203;38821](https://github.com/nodejs/node/pull/38821)
-   \[[`c8c290ae8f`](https://github.com/nodejs/node/commit/c8c290ae8f)] - **src,zlib**: tighten up Z_\*\_WINDOWBITS macros (Khaidi Chu) [#&#8203;39115](https://github.com/nodejs/node/pull/39115)
-   \[[`de171177b4`](https://github.com/nodejs/node/commit/de171177b4)] - **stream**: clean `endWritableNT` (Mestery) [#&#8203;39645](https://github.com/nodejs/node/pull/39645)
-   \[[`32a5b8f59b`](https://github.com/nodejs/node/commit/32a5b8f59b)] - **stream**: move duplicated code to an internal module (Rich Trott) [#&#8203;37508](https://github.com/nodejs/node/pull/37508)
-   \[[`f90b22d351`](https://github.com/nodejs/node/commit/f90b22d351)] - **util**: add internal createDeferredPromise() (Colin Ihrig) [#&#8203;37095](https://github.com/nodejs/node/pull/37095)
-   \[[`61b4a98480`](https://github.com/nodejs/node/commit/61b4a98480)] - **zlib**: avoid converting `Uint8Array` instances to `Buffer` (Antoine du Hamel) [#&#8203;39492](https://github.com/nodejs/node/pull/39492)

##### Documentation commits

-   \[[`8efd559347`](https://github.com/nodejs/node/commit/8efd559347)] - **doc**: add duplicate CVE check in sec. release doc (Daniel Bevenius) [#&#8203;39845](https://github.com/nodejs/node/pull/39845)
-   \[[`7b123ec78d`](https://github.com/nodejs/node/commit/7b123ec78d)] - **doc**: improve description of the triagers team (Michaël Zasso) [#&#8203;39833](https://github.com/nodejs/node/pull/39833)
-   \[[`615477f67b`](https://github.com/nodejs/node/commit/615477f67b)] - **doc**: update instructions for cc (Michael Dawson) [#&#8203;39674](https://github.com/nodejs/node/pull/39674)
-   \[[`1a8a26d92e`](https://github.com/nodejs/node/commit/1a8a26d92e)] - **doc**: fix malformed changelog entries (Rich Trott) [#&#8203;39791](https://github.com/nodejs/node/pull/39791)
-   \[[`9e772ca9a1`](https://github.com/nodejs/node/commit/9e772ca9a1)] - **doc**: fix lint errors in packages.md (Rich Trott) [#&#8203;39792](https://github.com/nodejs/node/pull/39792)
-   \[[`2624c98207`](https://github.com/nodejs/node/commit/2624c98207)] - **doc**: add example of self-reference in scoped packages (Jesús Leganés-Combarro 'piranna) [#&#8203;37630](https://github.com/nodejs/node/pull/37630)
-   \[[`00f2cee26c`](https://github.com/nodejs/node/commit/00f2cee26c)] - **doc**: add himadriganguly as a triager (Himadri Ganguly) [#&#8203;39757](https://github.com/nodejs/node/pull/39757)
-   \[[`95b9cc78d2`](https://github.com/nodejs/node/commit/95b9cc78d2)] - **doc**: fix YAML comment opening tags (Jayden Seric) [#&#8203;38324](https://github.com/nodejs/node/pull/38324)
-   \[[`49a7962d58`](https://github.com/nodejs/node/commit/49a7962d58)] - **doc**: fix `fs.rmdir` `recursive` option deprecation history (Antoine du Hamel) [#&#8203;39728](https://github.com/nodejs/node/pull/39728)
-   \[[`53300d33c7`](https://github.com/nodejs/node/commit/53300d33c7)] - **doc**: fixed variable names in queueMicrotask example (ashish maurya) [#&#8203;39634](https://github.com/nodejs/node/pull/39634)
-   \[[`df1e20aaf1`](https://github.com/nodejs/node/commit/df1e20aaf1)] - **doc**: update debugger.md description and examples (Rich Trott) [#&#8203;39661](https://github.com/nodejs/node/pull/39661)
-   \[[`9672bbf01c`](https://github.com/nodejs/node/commit/9672bbf01c)] - **doc**: fix color contrast issue in light mode (Rich Trott) [#&#8203;39660](https://github.com/nodejs/node/pull/39660)
-   \[[`48281ecfcd`](https://github.com/nodejs/node/commit/48281ecfcd)] - **doc**: add code examples to `Writable.destroy()` and `Writable.destroyed` (Juan José Arboleda) [#&#8203;39491](https://github.com/nodejs/node/pull/39491)
-   \[[`8799a134e4`](https://github.com/nodejs/node/commit/8799a134e4)] - **doc**: move `NODE_MODULE_VERSION` in release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`89c8afcf48`](https://github.com/nodejs/node/commit/89c8afcf48)] - **doc**: remove outdated ARM information from release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`a718b26f28`](https://github.com/nodejs/node/commit/a718b26f28)] - **doc**: fence command examples in release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`42669bb049`](https://github.com/nodejs/node/commit/42669bb049)] - **doc**: update backport labels in release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`a437de3c5f`](https://github.com/nodejs/node/commit/a437de3c5f)] - **doc**: add code example to `http.createServer` method (Juan José Arboleda) [#&#8203;39455](https://github.com/nodejs/node/pull/39455)
-   \[[`695569fc17`](https://github.com/nodejs/node/commit/695569fc17)] - **doc**: move lball@redhat.com to emeritus (Lance Ball) [#&#8203;39501](https://github.com/nodejs/node/pull/39501)
-   \[[`c7523da86c`](https://github.com/nodejs/node/commit/c7523da86c)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39488](https://github.com/nodejs/node/pull/39488)
-   \[[`e826109d5c`](https://github.com/nodejs/node/commit/e826109d5c)] - **doc**: update strategic initiative champion (Rich Trott) [#&#8203;39487](https://github.com/nodejs/node/pull/39487)
-   \[[`39da842051`](https://github.com/nodejs/node/commit/39da842051)] - **doc**: simplify unnecessarily specific .mailmap entries (Rich Trott) [#&#8203;39430](https://github.com/nodejs/node/pull/39430)
-   \[[`6a4c6ce4d7`](https://github.com/nodejs/node/commit/6a4c6ce4d7)] - **doc**: update checkbox label in backporting guide (Darshan Sen) [#&#8203;39420](https://github.com/nodejs/node/pull/39420)
-   \[[`d17afa08bd`](https://github.com/nodejs/node/commit/d17afa08bd)] - **doc**: remove \_Addenda\_ from headers (Rich Trott) [#&#8203;39427](https://github.com/nodejs/node/pull/39427)
-   \[[`ae97a96d9e`](https://github.com/nodejs/node/commit/ae97a96d9e)] - **doc**: simplify .mailmap file (Rich Trott) [#&#8203;39418](https://github.com/nodejs/node/pull/39418)
-   \[[`a3dee70f66`](https://github.com/nodejs/node/commit/a3dee70f66)] - **doc**: fix broken internal link in http.md (Rich Trott) [#&#8203;39425](https://github.com/nodejs/node/pull/39425)
-   \[[`ca947ac524`](https://github.com/nodejs/node/commit/ca947ac524)] - **doc**: remove outdated step in onboarding exercise (Rich Trott) [#&#8203;39410](https://github.com/nodejs/node/pull/39410)
-   \[[`86e12607f0`](https://github.com/nodejs/node/commit/86e12607f0)] - **doc**: revise strategic initiatives text (Rich Trott) [#&#8203;39417](https://github.com/nodejs/node/pull/39417)
-   \[[`cd8e773d28`](https://github.com/nodejs/node/commit/cd8e773d28)] - **doc**: update mailmap and AUTHORS (Rich Trott) [#&#8203;39393](https://github.com/nodejs/node/pull/39393)
-   \[[`8376b07ae8`](https://github.com/nodejs/node/commit/8376b07ae8)] - **doc**: use a details tag for completed initiatves (Rich Trott) [#&#8203;39416](https://github.com/nodejs/node/pull/39416)
-   \[[`43d28f5f00`](https://github.com/nodejs/node/commit/43d28f5f00)] - **doc**: update commit-queue.md to indicate GitHub Actions are checked (Rich Trott) [#&#8203;39411](https://github.com/nodejs/node/pull/39411)
-   \[[`63b0603e95`](https://github.com/nodejs/node/commit/63b0603e95)] - **doc**: use \_pull request\_ instead of \_PR\_ in onboarding doc (Rich Trott) [#&#8203;39409](https://github.com/nodejs/node/pull/39409)
-   \[[`73f784f764`](https://github.com/nodejs/node/commit/73f784f764)] - **doc**: add strategic initiatives from TSC repo (Rich Trott) [#&#8203;39394](https://github.com/nodejs/node/pull/39394)
-   \[[`1a494d51dc`](https://github.com/nodejs/node/commit/1a494d51dc)] - **doc**: standardize on \_pull request\_ (Rich Trott) [#&#8203;39384](https://github.com/nodejs/node/pull/39384)
-   \[[`eb12e4ccfb`](https://github.com/nodejs/node/commit/eb12e4ccfb)] - **doc**: make minor edits to pull request text (Rich Trott) [#&#8203;39383](https://github.com/nodejs/node/pull/39383)
-   \[[`ab0bf4fa1a`](https://github.com/nodejs/node/commit/ab0bf4fa1a)] - **doc**: add docker-node and build-wg issue contents (Daniel Bevenius) [#&#8203;39215](https://github.com/nodejs/node/pull/39215)
-   \[[`8438e8bf33`](https://github.com/nodejs/node/commit/8438e8bf33)] - **doc**: add instructions for core vuln files (Daniel Bevenius) [#&#8203;39220](https://github.com/nodejs/node/pull/39220)
-   \[[`c3cfefc2d3`](https://github.com/nodejs/node/commit/c3cfefc2d3)] - **doc**: standardize on not capitalizing \_collaborator\_ (Rich Trott) [#&#8203;39379](https://github.com/nodejs/node/pull/39379)
-   \[[`672023f9f2`](https://github.com/nodejs/node/commit/672023f9f2)] - **doc**: update mailmap and deduplicate AUTHORS entry (Rich Trott) [#&#8203;39391](https://github.com/nodejs/node/pull/39391)
-   \[[`baaa397e39`](https://github.com/nodejs/node/commit/baaa397e39)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39367](https://github.com/nodejs/node/pull/39367)
-   \[[`f39d93a428`](https://github.com/nodejs/node/commit/f39d93a428)] - **doc**: move jdalton to emeritus (Rich Trott) [#&#8203;39380](https://github.com/nodejs/node/pull/39380)
-   \[[`0b1ce72d64`](https://github.com/nodejs/node/commit/0b1ce72d64)] - **doc**: edit guide on pull requests (Rich Trott) [#&#8203;39359](https://github.com/nodejs/node/pull/39359)
-   \[[`6f0b3a20d1`](https://github.com/nodejs/node/commit/6f0b3a20d1)] - **doc**: add text about moving long commit lists out of PR description (Danielle Adams) [#&#8203;39186](https://github.com/nodejs/node/pull/39186)
-   \[[`9d43ce3b80`](https://github.com/nodejs/node/commit/9d43ce3b80)] - **doc**: do not use & for "and" in text (Rich Trott) [#&#8203;39345](https://github.com/nodejs/node/pull/39345)
-   \[[`25c104f21f`](https://github.com/nodejs/node/commit/25c104f21f)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39277](https://github.com/nodejs/node/pull/39277)
-   \[[`b47b47930c`](https://github.com/nodejs/node/commit/b47b47930c)] - **doc**: put information about the past in details tags (Rich Trott) [#&#8203;39321](https://github.com/nodejs/node/pull/39321)
-   \[[`5eafc3afa8`](https://github.com/nodejs/node/commit/5eafc3afa8)] - **doc**: move AndreasMadsen to emeritus (Rich Trott) [#&#8203;39315](https://github.com/nodejs/node/pull/39315)
-   \[[`fbf658f1d5`](https://github.com/nodejs/node/commit/fbf658f1d5)] - **doc**: move ofrobots to collaborator emeritus (Rich Trott) [#&#8203;39307](https://github.com/nodejs/node/pull/39307)
-   \[[`fc7d714149`](https://github.com/nodejs/node/commit/fc7d714149)] - **doc**: simplify CRAN mirror text in benchmark guide (Rich Trott) [#&#8203;39287](https://github.com/nodejs/node/pull/39287)
-   \[[`22f0b7e0d0`](https://github.com/nodejs/node/commit/22f0b7e0d0)] - **doc**: use "repository" instead of "repo" in onboarding.md (Rich Trott) [#&#8203;39286](https://github.com/nodejs/node/pull/39286)
-   \[[`f46ae3ffb6`](https://github.com/nodejs/node/commit/f46ae3ffb6)] - **doc**: update collaborator email address (Rich Trott) [#&#8203;39263](https://github.com/nodejs/node/pull/39263)
-   \[[`8c569cef88`](https://github.com/nodejs/node/commit/8c569cef88)] - **doc**: remove GitHub mark (Rich Trott) [#&#8203;39251](https://github.com/nodejs/node/pull/39251)
-   \[[`b4a0c5a384`](https://github.com/nodejs/node/commit/b4a0c5a384)] - **doc**: remove emailing the TSC from offboarding doc (Rich Trott) [#&#8203;39280](https://github.com/nodejs/node/pull/39280)
-   \[[`a4d70ff0cc`](https://github.com/nodejs/node/commit/a4d70ff0cc)] - **doc**: use "repository" in guides versus repo (Michael Dawson) [#&#8203;39198](https://github.com/nodejs/node/pull/39198)
-   \[[`31163ed9ee`](https://github.com/nodejs/node/commit/31163ed9ee)] - **doc**: update Node-api version matrix (Michael Dawson) [#&#8203;39197](https://github.com/nodejs/node/pull/39197)
-   \[[`9357547519`](https://github.com/nodejs/node/commit/9357547519)] - **doc**: update node-api support matrix (Michael Dawson) [#&#8203;38424](https://github.com/nodejs/node/pull/38424)
-   \[[`f08e9d5230`](https://github.com/nodejs/node/commit/f08e9d5230)] - **doc**: remove onboarding-extras (Rich Trott) [#&#8203;39252](https://github.com/nodejs/node/pull/39252)
-   \[[`6466faf26d`](https://github.com/nodejs/node/commit/6466faf26d)] - **doc**: move Sam Ruby to emeritus (Rich Trott) [#&#8203;39264](https://github.com/nodejs/node/pull/39264)
-   \[[`06acbf6453`](https://github.com/nodejs/node/commit/06acbf6453)] - **doc**: update AUTHORS file (Rich Trott) [#&#8203;39250](https://github.com/nodejs/node/pull/39250)
-   \[[`9178805653`](https://github.com/nodejs/node/commit/9178805653)] - **doc**: fix color contrast for anchor marks in dark mode (Rich Trott) [#&#8203;39168](https://github.com/nodejs/node/pull/39168)
-   \[[`c6118b23f7`](https://github.com/nodejs/node/commit/c6118b23f7)] - **doc**: rename datatypes to data types (FrankEntriken) [#&#8203;39209](https://github.com/nodejs/node/pull/39209)
-   \[[`fdd315918f`](https://github.com/nodejs/node/commit/fdd315918f)] - **doc**: normalize CSS variable names and indentation (Rich Trott) [#&#8203;39199](https://github.com/nodejs/node/pull/39199)
-   \[[`9c7c44781c`](https://github.com/nodejs/node/commit/9c7c44781c)] - **doc**: use more consistent formatting for deprecations (Rich Trott) [#&#8203;39218](https://github.com/nodejs/node/pull/39218)
-   \[[`c97ebd7905`](https://github.com/nodejs/node/commit/c97ebd7905)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39217](https://github.com/nodejs/node/pull/39217)
-   \[[`c4a3a24848`](https://github.com/nodejs/node/commit/c4a3a24848)] - **doc**: use "pull request" instead of "PR" in packages.md (Rich Trott) [#&#8203;39213](https://github.com/nodejs/node/pull/39213)
-   \[[`0d098bfaf0`](https://github.com/nodejs/node/commit/0d098bfaf0)] - **doc**: move v8.stopCoverage() to expected location in doc (Rich Trott) [#&#8203;39212](https://github.com/nodejs/node/pull/39212)
-   \[[`bd6af78749`](https://github.com/nodejs/node/commit/bd6af78749)] - **doc**: move vm.measureMemory() to expected location in doc (Rich Trott) [#&#8203;39211](https://github.com/nodejs/node/pull/39211)
-   \[[`7378b84bb8`](https://github.com/nodejs/node/commit/7378b84bb8)] - **doc**: add missing deprecation code (Colin Ihrig) [#&#8203;37147](https://github.com/nodejs/node/pull/37147)
-   \[[`2f6861ca51`](https://github.com/nodejs/node/commit/2f6861ca51)] - **doc**: use ASCII order for md refs (Antoine du Hamel) [#&#8203;39170](https://github.com/nodejs/node/pull/39170)
-   \[[`fa3909504f`](https://github.com/nodejs/node/commit/fa3909504f)] - **doc**: add cc oss-security@lists.openwall.com (Daniel Bevenius) [#&#8203;39191](https://github.com/nodejs/node/pull/39191)
-   \[[`52105acd5f`](https://github.com/nodejs/node/commit/52105acd5f)] - **doc**: remove instructions for unsupported Node.js versions (Rich Trott) [#&#8203;39185](https://github.com/nodejs/node/pull/39185)
-   \[[`eb2d75da16`](https://github.com/nodejs/node/commit/eb2d75da16)] - **doc**: remove obsolete cc recommendations (Rich Trott) [#&#8203;39181](https://github.com/nodejs/node/pull/39181)
-   \[[`4cf17edd03`](https://github.com/nodejs/node/commit/4cf17edd03)] - **doc**: use "repository" in maintaining-V8 doc (Rich Trott) [#&#8203;39179](https://github.com/nodejs/node/pull/39179)
-   \[[`d6a4f8aac9`](https://github.com/nodejs/node/commit/d6a4f8aac9)] - **doc**: fix broken link in errors.md (Rich Trott) [#&#8203;39200](https://github.com/nodejs/node/pull/39200)
-   \[[`82458b30fe`](https://github.com/nodejs/node/commit/82458b30fe)] - **doc**: correct JavaScript primitive value names in n-api.md (legendecas) [#&#8203;39129](https://github.com/nodejs/node/pull/39129)
-   \[[`2629979fd0`](https://github.com/nodejs/node/commit/2629979fd0)] - **doc**: apply logical ordering to CSS variables (Rich Trott) [#&#8203;39169](https://github.com/nodejs/node/pull/39169)
-   \[[`1996580b06`](https://github.com/nodejs/node/commit/1996580b06)] - **doc**: use repository instead of repo (Rich Trott) [#&#8203;39157](https://github.com/nodejs/node/pull/39157)
-   \[[`74ba115ab6`](https://github.com/nodejs/node/commit/74ba115ab6)] - **doc**: fix `EventTarget.dispatchEvent` docs (Rohan Sharma) [#&#8203;39127](https://github.com/nodejs/node/pull/39127)
-   \[[`2884d9094d`](https://github.com/nodejs/node/commit/2884d9094d)] - **doc**: update AUTHORS file (Rich Trott) [#&#8203;39082](https://github.com/nodejs/node/pull/39082)
-   \[[`d069c725b1`](https://github.com/nodejs/node/commit/d069c725b1)] - **doc**: fix napi_default_property name (Davidson Francis) [#&#8203;39104](https://github.com/nodejs/node/pull/39104)
-   \[[`1b74d3f775`](https://github.com/nodejs/node/commit/1b74d3f775)] - **doc**: fix dead links in packages.md (Michaël Zasso) [#&#8203;39113](https://github.com/nodejs/node/pull/39113)
-   \[[`0c2b5a048d`](https://github.com/nodejs/node/commit/0c2b5a048d)] - **doc**: clearify that http does chunked encoding itself (Mao Wtm) [#&#8203;28379](https://github.com/nodejs/node/pull/28379)
-   \[[`d0d731e271`](https://github.com/nodejs/node/commit/d0d731e271)] - **doc**: add descriptions about when `options.mode` is ignored (Ray) [#&#8203;39881](https://github.com/nodejs/node/pull/39881)
-   \[[`898db5a570`](https://github.com/nodejs/node/commit/898db5a570)] - **doc**: add code example to `fs.truncate` method (Juan José Arb…
@@ -147,6 +162,27 @@ function lazyBuffer() {
return buffer;
}

const addCodeToName = hideStackFrames(function addCodeToName(err, name, code) {
// Set the stack
err = captureLargerStackTrace(err);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has caused some performance issues for all errors due to overcollecting stack frames where no frames were meant to be hidden.

@BridgeAR
Copy link
Member

With this approach it is actually not possible to limit the performance overhead to the methods that use hideStackFrames() anymore. We always either need to overallocate for all Node.js errors (which may cause a lot of overhead for deeply nested code) or we do not overallocate anything at all and the stack trace may stack empty.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. errors Issues and PRs related to JavaScript errors originated in Node.js core.
Projects
None yet
Development

Successfully merging this pull request may close these issues.