GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — util: avoid run debug when enabled is false by fengmk2 · Pull Request #57494 · nodejs/node

Conversation

@fengmk2

@fengmk2 fengmk2 commented Mar 16, 2025

Copy link
Copy Markdown
Contributor

Once there are more than 2 inputs to the debug logger, e.g.: debug(1, 2, 3),
there is a significant performance degradation.

This change can improve performance 700x faster.

Benchmark

Test script

import { debuglog } from 'node:util';
import { run, bench, boxplot, summary } from 'mitata';

const debug = debuglog('test');

boxplot(() => {
  summary(() => {
    bench('debug()', () => {
      debug();
    });

    bench('debug(arg1)', () => {
      debug('arg1');
    });

    bench('debug(arg1, arg2)', () => {
      debug('arg1', 'arg2');
    });

    bench('debug(arg1, arg2, arg3)', () => {
      debug('arg1', 'arg2', 'arg3');
    });

    bench('debug(arg1, arg2, arg3, arg4)', () => {
      debug('arg1', 'arg2', 'arg3', 'arg4');
    });

    bench('debug(arg1, arg2, arg3, arg4, arg5)', () => {
      debug('arg1', 'arg2', 'arg3', 'arg4', 'arg5');
    });

    bench('debug(arg1, arg2, arg3, arg4, arg5, arg6)', () => {
      debug('arg1', 'arg2', 'arg3', 'arg4', 'arg5', 'arg6');
    });
  });
});

await run();

Before

clk: ~2.77 GHz
cpu: Apple M1
runtime: node 22.14.0 (arm64-darwin)

benchmark                                avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------------- -------------------------------
debug()                                    48.10 ns/iter  46.31 ns █▇                   
                                  (44.68 ns … 537.07 ns)  77.05 ns ██                   
                                 ( 95.53  b … 256.21  b) 184.23  b ██▄▂▂▁▁▁▁▁▁▁▁▁▁▂▂▂▁▁▁

debug(arg1)                                 2.49 ns/iter   2.18 ns █                    
                                    (1.66 ns … 53.58 ns)  26.13 ns █                    
                                 ( 33.25  b …  88.13  b)  56.15  b █▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

debug(arg1, arg2)                           2.96 ns/iter   2.56 ns █                    
                                    (1.95 ns … 83.79 ns)  27.63 ns █                    
                                 (  5.38  b …  96.13  b)  64.14  b █▆▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

debug(arg1, arg2, arg3)                   134.43 ns/iter 129.98 ns  █                   
                                 (125.27 ns … 645.71 ns) 202.32 ns ▃█                   
                                 (378.88  b … 683.47  b) 528.22  b ██▃▂▁▁▂▄▂▁▁▁▁▁▁▁▁▁▁▁▁

debug(arg1, arg2, arg3, arg4)             175.44 ns/iter 176.32 ns     █                
                                   (156.77 ns … 1.29 µs) 221.29 ns   ▆▅█                
                                 (435.13  b … 702.23  b) 584.06  b ▅▂████▅▅▂▂▂▂▃▂▃▂▁▂▁▁▁

debug(arg1, arg2, arg3, arg4, arg5)       189.31 ns/iter 189.73 ns   █                  
                                 (179.46 ns … 299.87 ns) 225.29 ns ▇▅█                  
                                 (505.08  b … 663.07  b) 639.79  b ████▇▄▃▂▂▁▁▃▄▄▃▂▂▂▂▁▁

debug(arg1, arg2, arg3, arg4, arg5, arg6) 209.56 ns/iter 212.41 ns █                    
                                 (201.88 ns … 266.42 ns) 247.06 ns █▆                   
                                 (334.36  b … 856.20  b) 695.85  b ██▄▂▂▂▂▁▁▁▁▄▄▃▁▁▁▁▁▁▁

                                          ┌                                            ┐
                                                  ┌┬    ╷
                                  debug()         ││────┤
                                                  └┴    ╵
                                          ┬   ╷
                              debug(arg1) │───┤
                                          ┴   ╵
                                          ┬    ╷
                        debug(arg1, arg2) │────┤
                                          ┴    ╵
                                                                 ┌┬            ╷
                  debug(arg1, arg2, arg3)                        ││────────────┤
                                                                 └┴            ╵
                                                                      ╷ ┌─┬       ╷
            debug(arg1, arg2, arg3, arg4)                             ├─┤ │───────┤
                                                                      ╵ └─┴       ╵
                                                                           ┌┬      ╷
      debug(arg1, arg2, arg3, arg4, arg5)                                  ││──────┤
                                                                           └┴      ╵
                                                                               ┌┬┐     ╷
debug(arg1, arg2, arg3, arg4, arg5, arg6)                                      ││├─────┤
                                                                               └┴┘     ╵
                                          └                                            ┘
                                          1.66 ns          124.36 ns           247.06 ns

summary
  debug(arg1)
   1.19x faster than debug(arg1, arg2)
   19.32x faster than debug()
   54.01x faster than debug(arg1, arg2, arg3)
   70.48x faster than debug(arg1, arg2, arg3, arg4)
   76.06x faster than debug(arg1, arg2, arg3, arg4, arg5)
   84.19x faster than debug(arg1, arg2, arg3, arg4, arg5, arg6)

After

clk: ~3.08 GHz
cpu: Apple M1
runtime: node 24.0.0-pre (arm64-darwin)

benchmark                                avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------------- -------------------------------
debug()                                   165.97 ps/iter 162.84 ps              █       
                                  (142.33 ps … 13.80 ns) 173.10 ps              █       
                                 (  0.03  b …  53.95  b)   0.09  b ▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▄

debug(arg1)                               167.87 ps/iter 172.85 ps           █          
                                  (142.33 ps … 14.18 ns) 183.11 ps           █    ▂     
                                 (  0.09  b …  23.35  b)   0.09  b ▁▁▁▁▁▁▁▁▁▁█▁▁▁▁█▁▁▁▁▁

debug(arg1, arg2)                         164.65 ps/iter 162.84 ps              █       
                                  (142.33 ps … 12.07 ns) 173.10 ps              █       
                                 (  0.09  b …  23.60  b)   0.09  b ▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▂

debug(arg1, arg2, arg3)                   165.38 ps/iter 162.84 ps           █          
                                  (142.33 ps … 24.65 ns) 183.11 ps           █          
                                 (  0.09  b …  23.60  b)   0.09  b ▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▂▁▁▁▁▁

debug(arg1, arg2, arg3, arg4)             167.57 ps/iter 172.85 ps           █          
                                  (142.33 ps … 10.47 ns) 183.11 ps           █    ▂     
                                 (  0.09  b …  76.49  b)   0.09  b ▁▁▁▁▁▁▁▁▁▁█▁▁▁▁█▁▁▁▁▁

debug(arg1, arg2, arg3, arg4, arg5)       165.38 ps/iter 162.84 ps           █          
                                  (142.33 ps … 30.79 ns) 183.11 ps           █          
                                 (  0.09  b …  28.22  b)   0.09  b ▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▂▁▁▁▁▁

debug(arg1, arg2, arg3, arg4, arg5, arg6) 166.64 ps/iter 162.84 ps         █            
                                  (142.33 ps … 10.51 ns) 193.12 ps         █            
                                 (  0.10  b …  31.22  b)   0.10  b ▁▁▁▁▁▁▁▁█▁▁▁▆▁▁▁▁▁▁▁▁

                                          ┌                                            ┐
                                          ╷                 ┌──┬     ╷
                                  debug() ├─────────────────┤  │─────┤
                                          ╵                 └──┴     ╵
                                          ╷                 ┌────┬───┐        ╷
                              debug(arg1) ├─────────────────┤    │   ├────────┤
                                          ╵                 └────┴───┘        ╵
                                          ╷                 ┌─┬      ╷
                        debug(arg1, arg2) ├─────────────────┤ │──────┤
                                          ╵                 └─┴      ╵
                                          ╷                 ┌─┬               ╷
                  debug(arg1, arg2, arg3) ├─────────────────┤ │───────────────┤
                                          ╵                 └─┴               ╵
                                          ╷                 ┌───┬────┐        ╷
            debug(arg1, arg2, arg3, arg4) ├─────────────────┤   │    ├────────┤
                                          ╵                 └───┴────┘        ╵
                                          ╷                 ┌─┬               ╷
      debug(arg1, arg2, arg3, arg4, arg5) ├─────────────────┤ │───────────────┤
                                          ╵                 └─┴               ╵
                                          ╷                 ┌───┬                      ╷
debug(arg1, arg2, arg3, arg4, arg5, arg6) ├─────────────────┤   │──────────────────────┤
                                          ╵                 └───┴                      ╵
                                          └                                            ┘
                                          142.33 ps         167.72 ps          193.12 ps

summary
  debug(arg1, arg2)
   1x faster than debug(arg1, arg2, arg3)
   1x faster than debug(arg1, arg2, arg3, arg4, arg5)
   1.01x faster than debug()
   1.01x faster than debug(arg1, arg2, arg3, arg4, arg5, arg6)
   1.02x faster than debug(arg1, arg2, arg3, arg4)
   1.02x faster than debug(arg1)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

bricss and gurgunday reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. util Issues and PRs related to the built-in util module. labels Mar 16, 2025
fengmk2
fengmk2 commented Mar 16, 2025
View reviewed changes
Comment thread lib/internal/util/debuglog.js Outdated

@fengmk2 fengmk2 Mar 16, 2025

Copy link
Copy Markdown
Contributor Author

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.

args was never used

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@fengmk2
util: avoid run debug when enabled is false
f6b4d12
it can improve performace 700x faster
@fengmk2
fengmk2 force-pushed the improve-debuglog-perf branch from 713532d to f6b4d12 Compare March 16, 2025 11:15
@aduh95
aduh95 force-pushed the main branch from dab3f4b to 2cb1d07 Compare March 16, 2025 11:18
gurgunday
gurgunday reviewed Mar 16, 2025
View reviewed changes

@gurgunday gurgunday left a comment

Copy link
Copy Markdown
Member

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!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@codecov

codecov Bot commented Mar 16, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.22%. Comparing base (d5ac3e3) to head (f6b4d12).
Report is 39 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #57494      +/-   ##
==========================================
- Coverage   90.23%   90.22%   -0.01%     
==========================================
  Files         629      629              
  Lines      184823   184849      +26     
  Branches    36203    36213      +10     
==========================================
+ Hits       166780   166787       +7     
- Misses      11013    11028      +15     
- Partials     7030     7034       +4     
Files with missing lines Coverage Δ
lib/internal/util/debuglog.js 95.21% <100.00%> (+0.01%) ⬆️

... and 44 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

anonrig
anonrig approved these changes Mar 16, 2025
View reviewed changes
@anonrig anonrig added author ready PRs with CI started, the required approvals, and no outstanding review comments. request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. labels Mar 16, 2025
cjihrig
cjihrig approved these changes Mar 16, 2025
View reviewed changes
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Mar 16, 2025
@nodejs-github-bot

nodejs-github-bot commented Mar 16, 2025

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/65783/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell approved these changes Mar 16, 2025
View reviewed changes
@nodejs-github-bot

nodejs-github-bot commented Mar 18, 2025

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/65817/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

ljharb
ljharb approved these changes Mar 18, 2025
View reviewed changes
@anonrig anonrig added the commit-queue PRs queued for automated landing through the Commit Queue. label Mar 20, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Mar 21, 2025
@nodejs-github-bot
nodejs-github-bot merged commit afe3909 into nodejs:main Mar 21, 2025
@nodejs-github-bot

nodejs-github-bot commented Mar 21, 2025

Copy link
Copy Markdown
Collaborator

Landed in afe3909

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@fengmk2
fengmk2 deleted the improve-debuglog-perf branch March 21, 2025 04:58
aduh95 pushed a commit that referenced this pull request Mar 23, 2025
@fengmk2 @aduh95
util: avoid run debug when enabled is false
f36bee4
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
@github-actions github-actions Bot mentioned this pull request Mar 30, 2025
2025-04-01, Version 23.11.0 (Current) #57694
Merged
RafaelGSS pushed a commit that referenced this pull request Apr 1, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
c9eae7b
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
@RafaelGSS RafaelGSS mentioned this pull request Apr 8, 2025
v22.x-staging cherry-pick status #57799
Closed
RafaelGSS pushed a commit to RafaelGSS/node that referenced this pull request Apr 8, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
4b8d6d0
it can improve performace 700x faster

PR-URL: nodejs#57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
@aduh95 aduh95 mentioned this pull request Apr 11, 2025
2025-04-23, Version 22.15.0 'Jod' (LTS), @UlisesGascon prepared by @RafaelGSS #57840
Merged
RafaelGSS pushed a commit that referenced this pull request Apr 14, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
0ef3a9a
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
aduh95 pushed a commit that referenced this pull request Apr 14, 2025
@fengmk2 @aduh95
util: avoid run debug when enabled is false
4e1c1f4
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
aduh95 pushed a commit that referenced this pull request Apr 15, 2025
@fengmk2 @aduh95
util: avoid run debug when enabled is false
a196c23
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 16, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
9005960
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 17, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
e301098
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Apr 20, 2025
ECG Bot @tmeijn
build(deps): update node to v23.11.0
e073dc8
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `23.10.0` -> `23.11.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>nodejs/node (node)</summary>

### [`v23.11.0`](https://github.com/nodejs/node/releases/tag/v23.11.0): 2025-04-01, Version 23.11.0 (Current), @&#8203;aduh95

[Compare Source](nodejs/node@v23.10.0...v23.11.0)

##### Notable Changes

-   \[[`64b086740a`](nodejs/node@64b086740a)] - **(SEMVER-MINOR)** **assert**: implement partial error comparison (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`053cef70e0`](nodejs/node@053cef70e0)] - **(SEMVER-MINOR)** **crypto**: add optional callback to `crypto.diffieHellman` (Filip Skokan) [#&#8203;57274](nodejs/node#57274)
-   \[[`f8aff90235`](nodejs/node@f8aff90235)] - **(SEMVER-MINOR)** **process**: add `execve` (Paolo Insogna) [#&#8203;56496](nodejs/node#56496)
-   \[[`4b04c92d7d`](nodejs/node@4b04c92d7d)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.columns()` (Colin Ihrig) [#&#8203;57490](nodejs/node#57490)
-   \[[`1b8d1d3a3a`](nodejs/node@1b8d1d3a3a)] - **(SEMVER-MINOR)** **util**: expose diff function used by the assertion errors (Giovanni Bucci) [#&#8203;57462](nodejs/node#57462)

##### Commits

-   \[[`7b72396c8b`](nodejs/node@7b72396c8b)] - **assert**: improve partialDeepStrictEqual performance (Ruben Bridgewater) [#&#8203;57509](nodejs/node#57509)
-   \[[`64b086740a`](nodejs/node@64b086740a)] - **(SEMVER-MINOR)** **assert**: implement partial error comparison (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`f694d7de0e`](nodejs/node@f694d7de0e)] - **(SEMVER-MINOR)** **assert**: improve partialDeepStrictEqual (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`80d9d5653f`](nodejs/node@80d9d5653f)] - **(SEMVER-MINOR)** **assert,util**: improve performance (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`d52a71f832`](nodejs/node@d52a71f832)] - **(SEMVER-MINOR)** **benchmark**: adjust assert runtimes (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`7592cf4cd7`](nodejs/node@7592cf4cd7)] - **(SEMVER-MINOR)** **benchmark**: skip running some assert benchmarks by default (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`e4cc54a746`](nodejs/node@e4cc54a746)] - **(SEMVER-MINOR)** **benchmark**: add assert partialDeepStrictEqual benchmark (Ruben Bridgewater) [#&#8203;57370](nodejs/node#57370)
-   \[[`de48407011`](nodejs/node@de48407011)] - **build**: fix update-wpt workflow (Jonas) [#&#8203;57468](nodejs/node#57468)
-   \[[`52cd0954f9`](nodejs/node@52cd0954f9)] - **cli**: clarify --cpu-prof-name allowed values (Eugenio Ceschia) [#&#8203;57433](nodejs/node#57433)
-   \[[`7611fc14de`](nodejs/node@7611fc14de)] - **crypto**: fix output of privateDecrypt with zero-length data (Filip Skokan) [#&#8203;57575](nodejs/node#57575)
-   \[[`cc42ee8fc7`](nodejs/node@cc42ee8fc7)] - **crypto**: ensure expected JWK alg in SubtleCrypto.importKey RSA imports (Filip Skokan) [#&#8203;57450](nodejs/node#57450)
-   \[[`053cef70e0`](nodejs/node@053cef70e0)] - **(SEMVER-MINOR)** **crypto**: add optional callback to crypto.diffieHellman (Filip Skokan) [#&#8203;57274](nodejs/node#57274)
-   \[[`1f08864fd7`](nodejs/node@1f08864fd7)] - **debugger**: fix behavior of plain object exec in debugger repl (Dario Piotrowicz) [#&#8203;57498](nodejs/node#57498)
-   \[[`162b2828eb`](nodejs/node@162b2828eb)] - **deps**: update undici to 6.21.2 (Matteo Collina) [#&#8203;57442](nodejs/node#57442)
-   \[[`43bea6bb80`](nodejs/node@43bea6bb80)] - **deps**: V8: cherry-pick [`c172ffc`](nodejs/node@c172ffc5bf54) (Choongwoo Han) [#&#8203;57437](nodejs/node#57437)
-   \[[`99f93afb9d`](nodejs/node@99f93afb9d)] - **deps**: update ada to v3.2.1 (Yagiz Nizipli) [#&#8203;57429](nodejs/node#57429)
-   \[[`30e5658f12`](nodejs/node@30e5658f12)] - **deps**: update googletest to [`0bdccf4`](nodejs/node@0bdccf4) (Node.js GitHub Bot) [#&#8203;57380](nodejs/node#57380)
-   \[[`573467c070`](nodejs/node@573467c070)] - **deps**: update acorn to 8.14.1 (Node.js GitHub Bot) [#&#8203;57382](nodejs/node#57382)
-   \[[`affeaac0c7`](nodejs/node@affeaac0c7)] - **doc**: add gurgunday as triager (Gürgün Dayıoğlu) [#&#8203;57594](nodejs/node#57594)
-   \[[`4ed1a098f5`](nodejs/node@4ed1a098f5)] - **doc**: clarify behaviour of node-api adjust function (Michael Dawson) [#&#8203;57463](nodejs/node#57463)
-   \[[`921041b284`](nodejs/node@921041b284)] - **doc**: remove Corepack documentation (Antoine du Hamel) [#&#8203;57635](nodejs/node#57635)
-   \[[`99dbd8b391`](nodejs/node@99dbd8b391)] - **doc**: remove mention of `--require` not supporting ES modules (Huáng Jùnliàng) [#&#8203;57620](nodejs/node#57620)
-   \[[`8c76b2949e`](nodejs/node@8c76b2949e)] - **doc**: mention reports should align with Node.js CoC (Rafael Gonzaga) [#&#8203;57607](nodejs/node#57607)
-   \[[`ee1c78a7a3`](nodejs/node@ee1c78a7a3)] - **doc**: add section stating that very stale MRs should be closed (Dario Piotrowicz) [#&#8203;57541](nodejs/node#57541)
-   \[[`595e9e5ad6`](nodejs/node@595e9e5ad6)] - **doc**: add bjohansebas as triager (Sebastian Beltran) [#&#8203;57564](nodejs/node#57564)
-   \[[`3742d2a198`](nodejs/node@3742d2a198)] - **doc**: update support channels (Claudio W.) [#&#8203;57538](nodejs/node#57538)
-   \[[`717c44dead`](nodejs/node@717c44dead)] - **doc**: make stability labels more consistent (Antoine du Hamel) [#&#8203;57516](nodejs/node#57516)
-   \[[`b4576a6f57`](nodejs/node@b4576a6f57)] - **doc**: remove cryptoStream API reference (Jonas) [#&#8203;57579](nodejs/node#57579)
-   \[[`2c4f894036`](nodejs/node@2c4f894036)] - **doc**: module resolution pseudocode corrections (Marcel Laverdet) [#&#8203;57080](nodejs/node#57080)
-   \[[`c45894f90c`](nodejs/node@c45894f90c)] - **doc**: add history entry for DEP0190 in `child_process.md` (Antoine du Hamel) [#&#8203;57544](nodejs/node#57544)
-   \[[`c21068b696`](nodejs/node@c21068b696)] - **doc**: remove deprecated pattern in `child_process.md` (Antoine du Hamel) [#&#8203;57568](nodejs/node#57568)
-   \[[`87e0dda352`](nodejs/node@87e0dda352)] - **doc**: mark multiple experimental APIS as stable (James M Snell) [#&#8203;57510](nodejs/node#57510)
-   \[[`d637763e4e`](nodejs/node@d637763e4e)] - **doc**: remove mertcanaltin from Triagers (Mert Can Altin) [#&#8203;57531](nodejs/node#57531)
-   \[[`ee6025495d`](nodejs/node@ee6025495d)] - **doc**: recommend watching the collaborators repo in the onboarding doc (Darshan Sen) [#&#8203;57527](nodejs/node#57527)
-   \[[`706b64638b`](nodejs/node@706b64638b)] - **doc**: remove mention of visa fees from onboarding doc (Darshan Sen) [#&#8203;57526](nodejs/node#57526)
-   \[[`176d951bd0`](nodejs/node@176d951bd0)] - **doc**: deprecate passing `args` to `spawn` and `execFile` (Antoine du Hamel) [#&#8203;57389](nodejs/node#57389)
-   \[[`5c05ba119b`](nodejs/node@5c05ba119b)] - **doc**: remove some inconsistencies in `deprecations.md` (Antoine du Hamel) [#&#8203;57512](nodejs/node#57512)
-   \[[`9d5be4bb8c`](nodejs/node@9d5be4bb8c)] - **doc**: run license-builder (github-actions\[bot]) [#&#8203;57511](nodejs/node#57511)
-   \[[`273607edb4`](nodejs/node@273607edb4)] - **doc**: add new writing-docs contributing md (Dario Piotrowicz) [#&#8203;57502](nodejs/node#57502)
-   \[[`e28c723f24`](nodejs/node@e28c723f24)] - **doc**: add node.js streams references to Web Streams doc (Dario Piotrowicz) [#&#8203;57393](nodejs/node#57393)
-   \[[`47296492ba`](nodejs/node@47296492ba)] - **doc**: replace NOTEs that do not render properly (Colin Ihrig) [#&#8203;57484](nodejs/node#57484)
-   \[[`db9c37f792`](nodejs/node@db9c37f792)] - **doc**: prefer to sign commits under nodejs repository (Rafael Gonzaga) [#&#8203;57311](nodejs/node#57311)
-   \[[`e5e3987ae7`](nodejs/node@e5e3987ae7)] - **doc**: fixed the incorrect splitting of multiple words (letianpailove) [#&#8203;57454](nodejs/node#57454)
-   \[[`91a824e43b`](nodejs/node@91a824e43b)] - **doc**: add review guidelines for collaborator nominations (Antoine du Hamel) [#&#8203;57449](nodejs/node#57449)
-   \[[`2a5fcb2172`](nodejs/node@2a5fcb2172)] - **doc**: fix typo in `url.md` (Allon Murienik) [#&#8203;57467](nodejs/node#57467)
-   \[[`17ccf9282f`](nodejs/node@17ccf9282f)] - **doc**: add history info for --use-system-ca (Darshan Sen) [#&#8203;57432](nodejs/node#57432)
-   \[[`9adaaeb965`](nodejs/node@9adaaeb965)] - **doc**: remove typo YAML snippet from tls.getCACertificates doc (Darshan Sen) [#&#8203;57459](nodejs/node#57459)
-   \[[`ee4e855f8e`](nodejs/node@ee4e855f8e)] - **doc**: fix typo in sqlite.md (Tobias Nießen) [#&#8203;57473](nodejs/node#57473)
-   \[[`8cb3441443`](nodejs/node@8cb3441443)] - **doc**: explicit mention arbitrary code execution as a vuln (Rafael Gonzaga) [#&#8203;57426](nodejs/node#57426)
-   \[[`27f183ad03`](nodejs/node@27f183ad03)] - **doc**: update maintaining-openssl.md for openssl (Richard Lau) [#&#8203;57413](nodejs/node#57413)
-   \[[`ca67145d60`](nodejs/node@ca67145d60)] - **doc**: add missing `deprecated` badges in `fs.md` (Yukihiro Hasegawa) [#&#8203;57384](nodejs/node#57384)
-   \[[`3687390510`](nodejs/node@3687390510)] - **doc**: fix small typo in `process.md` (Felix Rieseberg) [#&#8203;57333](nodejs/node#57333)
-   \[[`097d9926e3`](nodejs/node@097d9926e3)] - **doc**: add note about sync nodejs-private branches (Rafael Gonzaga) [#&#8203;57404](nodejs/node#57404)
-   \[[`5006627969`](nodejs/node@5006627969)] - **fs**: apply exclude function to root path (Rich Trott) [#&#8203;57420](nodejs/node#57420)
-   \[[`0583c3db92`](nodejs/node@0583c3db92)] - **http**: coerce content-length to number (Marco Ippolito) [#&#8203;57458](nodejs/node#57458)
-   \[[`2a580b9332`](nodejs/node@2a580b9332)] - **lib**: add warning when binding inspector to public IP (Demian Parkhomenko) [#&#8203;55736](nodejs/node#55736)
-   \[[`fda56b9837`](nodejs/node@fda56b9837)] - **lib**: limit split function calls to prevent excessive array length (Gürgün Dayıoğlu) [#&#8203;57501](nodejs/node#57501)
-   \[[`d5a26f6525`](nodejs/node@d5a26f6525)] - **lib**: make getCallSites sourceMap option truly optional (James M Snell) [#&#8203;57388](nodejs/node#57388)
-   \[[`00a5b18043`](nodejs/node@00a5b18043)] - **meta**: add some clarification to the nomination process (James M Snell) [#&#8203;57503](nodejs/node#57503)
-   \[[`d0c96c463c`](nodejs/node@d0c96c463c)] - **meta**: remove collaborator self-nomination (Rich Trott) [#&#8203;57537](nodejs/node#57537)
-   \[[`a9a93f31ee`](nodejs/node@a9a93f31ee)] - **meta**: edit collaborator nomination process (Antoine du Hamel) [#&#8203;57483](nodejs/node#57483)
-   \[[`0ca362f5f2`](nodejs/node@0ca362f5f2)] - **meta**: move ovflowd to emeritus (Claudio W.) [#&#8203;57443](nodejs/node#57443)
-   \[[`f8aff90235`](nodejs/node@f8aff90235)] - **(SEMVER-MINOR)** **process**: add execve (Paolo Insogna) [#&#8203;56496](nodejs/node#56496)
-   \[[`e8d4a31d4b`](nodejs/node@e8d4a31d4b)] - **sqlite**: add support for unknown named parameters (Colin Ihrig) [#&#8203;57552](nodejs/node#57552)
-   \[[`5652da642d`](nodejs/node@5652da642d)] - **sqlite**: add DatabaseSync.prototype.isOpen (Colin Ihrig) [#&#8203;57522](nodejs/node#57522)
-   \[[`5c976f16cd`](nodejs/node@5c976f16cd)] - **sqlite**: add DatabaseSync.prototype\[Symbol.dispose]\() (Colin Ihrig) [#&#8203;57506](nodejs/node#57506)
-   \[[`4b04c92d7d`](nodejs/node@4b04c92d7d)] - **(SEMVER-MINOR)** **sqlite**: add StatementSync.prototype.columns() (Colin Ihrig) [#&#8203;57490](nodejs/node#57490)
-   \[[`7f5e31645c`](nodejs/node@7f5e31645c)] - **src**: ensure primordials are initialized exactly once (Chengzhong Wu) [#&#8203;57519](nodejs/node#57519)
-   \[[`9611980f58`](nodejs/node@9611980f58)] - **src**: improve error handling in multiple files (James M Snell) [#&#8203;57507](nodejs/node#57507)
-   \[[`3ddc5cd875`](nodejs/node@3ddc5cd875)] - **src**: cache urlpattern properties (JonasBa) [#&#8203;57465](nodejs/node#57465)
-   \[[`b9d9ee4da2`](nodejs/node@b9d9ee4da2)] - **src**: make minor cleanups in encoding_binding.cc (James M Snell) [#&#8203;57448](nodejs/node#57448)
-   \[[`f8acf2dd2a`](nodejs/node@f8acf2dd2a)] - **src**: make minor cleanups in compile_cache.cc (James M Snell) [#&#8203;57448](nodejs/node#57448)
-   \[[`6ee15c6509`](nodejs/node@6ee15c6509)] - **src**: define urlpattern components using a macro (JonasBa) [#&#8203;57452](nodejs/node#57452)
-   \[[`4ab3c1690a`](nodejs/node@4ab3c1690a)] - **src**: cleanup crypto more (James M Snell) [#&#8203;57323](nodejs/node#57323)
-   \[[`5be80b1748`](nodejs/node@5be80b1748)] - **src**: refine ncrypto more (James M Snell) [#&#8203;57300](nodejs/node#57300)
-   \[[`6a13319a6e`](nodejs/node@6a13319a6e)] - **src**: cleanup aliased_buffer.h (Mohammed Keyvanzadeh) [#&#8203;57395](nodejs/node#57395)
-   \[[`3cff7f80bb`](nodejs/node@3cff7f80bb)] - **src**: suggest --use-system-ca when a certificate error occurs (Aditi) [#&#8203;57362](nodejs/node#57362)
-   \[[`3d372ad9f3`](nodejs/node@3d372ad9f3)] - **test**: update WPT for urlpattern to [`6ceca69`](nodejs/node@6ceca69d26) (Node.js GitHub Bot) [#&#8203;57486](nodejs/node#57486)
-   \[[`481ea665af`](nodejs/node@481ea665af)] - **test**: add more number cases for buffer.indexOf (Meghan Denny) [#&#8203;57200](nodejs/node#57200)
-   \[[`27b01ed4e7`](nodejs/node@27b01ed4e7)] - **test**: update parallel/test-tls-dhe for OpenSSL 3.5 (Richard Lau) [#&#8203;57477](nodejs/node#57477)
-   \[[`8f7debcf41`](nodejs/node@8f7debcf41)] - **timers**: optimize timer functions with improved argument handling (Gürgün Dayıoğlu) [#&#8203;57072](nodejs/node#57072)
-   \[[`d4abd9d3fb`](nodejs/node@d4abd9d3fb)] - **timers**: remove unnecessary allocation of \_onTimeout (Gürgün Dayıoğlu) [#&#8203;57497](nodejs/node#57497)
-   \[[`f8f81c8ba2`](nodejs/node@f8f81c8ba2)] - **timers**: remove unused parameter from insertGuarded (Gürgün Dayıoğlu) [#&#8203;57251](nodejs/node#57251)
-   \[[`c4fdb27b51`](nodejs/node@c4fdb27b51)] - **tls**: remove unnecessary type check on normalize (Yagiz Nizipli) [#&#8203;57336](nodejs/node#57336)
-   \[[`ad5dcc5798`](nodejs/node@ad5dcc5798)] - **tools**: fix WPT update cron string (Antoine du Hamel) [#&#8203;57665](nodejs/node#57665)
-   \[[`7faa482588`](nodejs/node@7faa482588)] - **tools**: remove stalled label on unstalled issues and MRs (Rich Trott) [#&#8203;57630](nodejs/node#57630)
-   \[[`e3bb26da2b`](nodejs/node@e3bb26da2b)] - **tools**: update sccache to support GH cache changes (Michaël Zasso) [#&#8203;57573](nodejs/node#57573)
-   \[[`f0c9f505d9`](nodejs/node@f0c9f505d9)] - **tools**: bump [@&#8203;babel/helpers](https://github.com/babel/helpers) from 7.26.9 to 7.26.10 in /tools/eslint (dependabot\[bot]) [#&#8203;57444](nodejs/node#57444)
-   \[[`a40ff1f646`](nodejs/node@a40ff1f646)] - **url**: fix constructor error message for URLPattern (jakecastelli) [#&#8203;57482](nodejs/node#57482)
-   \[[`f36bee4b89`](nodejs/node@f36bee4b89)] - **util**: avoid run debug when enabled is false (fengmk2) [#&#8203;57494](nodejs/node#57494)
-   \[[`1b8d1d3a3a`](nodejs/node@1b8d1d3a3a)] - **(SEMVER-MINOR)** **util**: expose diff function used by the assertion errors (Giovanni Bucci) [#&#8203;57462](nodejs/node#57462)
-   \[[`1f7b08a317`](nodejs/node@1f7b08a317)] - **win,test**: disable test case failing with ClangCL (Stefan Stojanovic) [#&#8203;57397](nodejs/node#57397)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzAuMiIsInVwZGF0ZWRJblZlciI6IjM5LjIzMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
5f54505
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
@fengmk2 @RafaelGSS
util: avoid run debug when enabled is false
0635cc0
it can improve performace 700x faster

PR-URL: #57494
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@gurgunday gurgunday gurgunday left review comments
@ljharb ljharb ljharb approved these changes
@jasnell jasnell jasnell approved these changes
@anonrig anonrig anonrig approved these changes
@cjihrig cjihrig cjihrig approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. needs-ci PRs that need a full CI run. util Issues and PRs related to the built-in util module.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

7 participants

@fengmk2 @nodejs-github-bot @ljharb @jasnell @anonrig @cjihrig @gurgunday
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.