Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
84974d9
test: skip failing test on macOS 15.7+
aduh95 Oct 26, 2025
7be4330
doc: add known issue to v24.11.0 release notes
richardlau Oct 28, 2025
2505568
build, src: fix include paths for vtune files
rahulchaphalkar Oct 7, 2025
f872586
lib: remove redundant destroyHook checks
gurgunday Oct 8, 2025
3d784dd
test: prepare junit file attribute normalization
Han5991 Aug 18, 2025
455bfeb
test_runner: add junit file attribute support
Han5991 Aug 18, 2025
2f93a98
tools: use cooldown property correctly
RafaelGSS Oct 8, 2025
65bec03
http2: do not crash on mismatched ping buffer length
Renegade334 Oct 8, 2025
f6ff6e7
test_runner: fix suite timeout
MoLow Oct 9, 2025
cc3a705
test: deflake test-fs-promises-watch-iterator
lpinca Oct 9, 2025
538a00c
test,doc: skip --max-old-space-size-percentage on 32-bit platforms
Asaf-Federman Oct 9, 2025
68f6780
test: skip tests that cause timeouts on IBM i
sravani1510 Oct 9, 2025
4f7745a
lib: fix typo in QuicSessionStats
SeokhunEom Oct 10, 2025
923082a
doc: disambiguate top-level `worker_threads` module exports
Renegade334 Oct 10, 2025
80fdb3d
typings: add buffer internalBinding typing
JinhyeokFang Oct 10, 2025
c01c72b
benchmark: use non-deprecated WriteUtf8V2 method
targos Oct 11, 2025
688115a
doc: update teams in collaborator-guide.md and add links
louwers Oct 11, 2025
f00d4c1
src: update locks to use DictionaryTemplate
jasnell Sep 28, 2025
4e1c5c5
src: make additional cleanups in node locks impl
jasnell Sep 28, 2025
b0da3b9
doc: use markdown when branch-diff major release
RafaelGSS Oct 11, 2025
a56aa9f
deps: upgrade npm to 11.6.2
npm-cli-bot Oct 11, 2025
beadcf1
doc: `createSQLTagStore` -> `createTagStore`
avivkeller Oct 11, 2025
70c2080
doc: improve code snippet alternative of url.parse() using WHATWG URL
styfle Oct 13, 2025
635af55
Revert "test: ensure message event fires in worker message port test"
lpinca Oct 13, 2025
265e9d5
http2: rename variable to additionalPseudoHeaders
tniessen Oct 13, 2025
5aea1a4
lib: fix constructor in _errnoException stack tree
SeokhunEom Oct 13, 2025
8c256d4
http: fix http client leaky with double response
theanarkh Oct 13, 2025
7007f9d
deps: update googletest to 279f847
nodejs-github-bot Oct 14, 2025
8e77163
doc: fix not working code example in vm docs
arturgawlik Oct 14, 2025
03ac05c
inspector: support handshake response for websocket inspection
islandryu Oct 14, 2025
6ed6062
module: handle null source from async loader hooks in sync hooks
joyeecheung Oct 14, 2025
9b83ef5
inspector: add network payload buffer size limits
legendecas Oct 15, 2025
99e2acf
benchmark: add vm.SourceTextModule benchmark
joyeecheung Oct 10, 2025
b370e02
src: add a default branch for module phase
legendecas Oct 15, 2025
9d4e422
tools: add inspector_protocol updater
legendecas Oct 15, 2025
13da0df
doc: fix `blob.bytes()` heading level
xty Oct 16, 2025
ec0d5be
doc: add --heap-snapshot-on-oom to useful v8 flag
jakecastelli Oct 17, 2025
463c645
src: use `Utf8Value` and `TwoByteValue` instead of V8 helpers
addaleax Oct 13, 2025
eb8a049
src: initial enablement of IsolateGroups
jasnell Oct 17, 2025
cedba09
test: move sea tests into test/sea
joyeecheung Oct 13, 2025
91ea9b0
test: skip sea tests on x64 macOS
joyeecheung Oct 13, 2025
a744e42
doc: document wildcard supported by tools/test.py
joyeecheung Oct 17, 2025
4481feb
test: parallelize test-without-async-context-frame correctly
joyeecheung Oct 17, 2025
301c134
typings: delete undefined property in ConfigBinding
whsung0330 Oct 14, 2025
f611ec0
typings: add missing properties in HTTPParser
whsung0330 Oct 14, 2025
9468ade
typings: add missing properties and method in Worker
whsung0330 Oct 14, 2025
4c9a64f
src: replace Environment::GetCurrent with args.GetIsolate
KimSH39 Oct 18, 2025
d60f002
tools: optimize wildcard execution in tools/test.py
joyeecheung Oct 18, 2025
a1c7d1d
benchmark: add benchmark for leaf source text modules
joyeecheung Oct 12, 2025
6183a75
vm: make vm.Module.evaluate() conditionally synchronous
joyeecheung Oct 10, 2025
34e4c8c
test: fix incorrect calculation in test-perf-hooks.js
joyeecheung Oct 18, 2025
748d4f6
util: mark special properties when inspecting them
BridgeAR Oct 18, 2025
b36a898
tools: fix inspector_protocol updater
legendecas Oct 18, 2025
eaa825f
doc: update decorator documentation to reflect actual policy
salman-aziz-4425 Oct 19, 2025
e483267
src: use cached primordials_string
KimSH39 Oct 19, 2025
b03f7b9
build: remove V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE defs
joyeecheung Oct 19, 2025
38a6298
test: split test-runner-watch-mode-kill-signal
joyeecheung Oct 19, 2025
90434ff
meta: loop userland-migrations in deprecations
legendecas Oct 19, 2025
c67cb72
build: build v8 with -fvisibility=hidden -fvisibility-inlines-hidden
joyeecheung Oct 19, 2025
39ddd85
doc: use `any` for `worker_threads.Worker` 'error' event argument `err`
jonasgeiler Oct 19, 2025
8cb3b77
util: use more defensive code when inspecting error objects
aduh95 Oct 20, 2025
696c20b
meta: move one or more collaborators to emeritus
nodejs-github-bot Oct 20, 2025
b788209
deps: update inspector_protocol to af7f5a8173fdbc29f0835ec94395932e328b
nodejs-github-bot Oct 21, 2025
d03b89e
deps: update corepack to 0.34.1
nodejs-github-bot Oct 21, 2025
5673a54
build: use call command when calling python configure
ZenMasterJacob20011 Oct 21, 2025
2949408
tools: limit inspector protocol PR title length
legendecas Oct 21, 2025
a2871ba
msi: fix WiX warnings
StefanStojanovic Oct 22, 2025
9ac5dbb
test_runner: use module.registerHooks in module mocks
joyeecheung Oct 22, 2025
4d8f62a
doc, module: change async customization hooks to experimental
Flarna Oct 22, 2025
43b9ea8
test: fix small compile warning in test_network_requests_buffer.cc
xiaocainiao633 Oct 22, 2025
223c5e1
tools: update gyp-next to 0.20.5
nodejs-github-bot Oct 22, 2025
2473ca7
doc: add missing CAA type to dns.resolveAny() & dnsPromises.resolveAny()
hkleungai Oct 22, 2025
ffbc0ae
module: refactor and clarify async loader hook customizations
joyeecheung Oct 23, 2025
a42dbd1
build: ibmi follow aix visibility
sravani1510 Oct 24, 2025
17b4f38
test: put helper in test-runner-output into common
joyeecheung Oct 24, 2025
1c8716e
test: increase debugger waitFor timeout on macOS
legendecas Oct 24, 2025
8faa494
test,crypto: sha3 algorithms aren't supported with BoringSSL
codebytere Oct 25, 2025
95330b0
crypto: update root certificates to NSS 3.116
nodejs-github-bot Oct 25, 2025
4b85066
win: upgrade Visual Studio workload from 2019 to 2022
gengjiawen Oct 25, 2025
fabf8e4
test,crypto: fix conditional SHA3-* skip on BoringSSL
panva Oct 25, 2025
a587623
src: conditionally disable source phase imports by default
codebytere Oct 26, 2025
0bf8952
doc: mention more codemods in `deprecations.md`
AugustinMauroy Oct 27, 2025
d86a118
http: lazy allocate cookies array
ronag Oct 27, 2025
0a15ccf
benchmark: improve cpu.sh for safety and usability
meteorqz6 Oct 27, 2025
bc00aa4
deps: update simdjson to 4.0.7
nodejs-github-bot Oct 27, 2025
aa04f06
lib: fix typo in createBlobReaderStream
SeokhunEom Oct 27, 2025
13b6879
src: add COUNT_GENERIC_USAGE utility for tests
joyeecheung Oct 27, 2025
6199541
src: fix timing of snapshot serialize callback
joyeecheung Oct 27, 2025
c221d89
deps: update corepack to 0.34.2
nodejs-github-bot Nov 4, 2025
18aefb2
2025-11-11, Version 24.11.1 'Krypton' (LTS)
nodejs-github-bot Nov 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 4 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,7 @@
/doc/contributing/maintaining/maintaining-single-executable-application-support.md @nodejs/single-executable
/src/node_sea* @nodejs/single-executable
/test/fixtures/postject-copy @nodejs/single-executable
/test/parallel/test-single-executable-* @nodejs/single-executable
/test/sequential/test-single-executable-* @nodejs/single-executable
/test/sea @nodejs/single-executable
/tools/dep_updaters/update-postject.sh @nodejs/single-executable

# Permission Model
Expand Down Expand Up @@ -229,3 +228,6 @@
/lib/path.js @nodejs/path
/lib/path/* @nodejs/path
/test/parallel/test-path-* @nodejs/path

# userland-migrations
/doc/api/deprecations.md @nodejs/userland-migrations
32 changes: 16 additions & 16 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ updates:
directory: /
schedule:
interval: monthly
cooldown:
- semver-major-days: 5
- semver-minor-days: 5
- semver-patch-days: 5
cooldown:
semver-major-days: 5
semver-minor-days: 5
semver-patch-days: 5

commit-message:
prefix: meta
Expand All @@ -19,10 +19,10 @@ updates:
directory: /tools/eslint
schedule:
interval: monthly
cooldown:
- semver-major-days: 5
- semver-minor-days: 5
- semver-patch-days: 5
cooldown:
semver-major-days: 5
semver-minor-days: 5
semver-patch-days: 5
commit-message:
prefix: tools
open-pull-requests-limit: ${{secrets.OPEN_PR_LIMIT}}
Expand All @@ -36,10 +36,10 @@ updates:
directory: /tools/lint-md
schedule:
interval: monthly
cooldown:
- semver-major-days: 5
- semver-minor-days: 5
- semver-patch-days: 5
cooldown:
semver-major-days: 5
semver-minor-days: 5
semver-patch-days: 5
commit-message:
prefix: tools
open-pull-requests-limit: ${{secrets.OPEN_PR_LIMIT}}
Expand All @@ -53,10 +53,10 @@ updates:
directory: /tools/doc
schedule:
interval: weekly
cooldown:
- semver-major-days: 5
- semver-minor-days: 5
- semver-patch-days: 5
cooldown:
semver-major-days: 5
semver-minor-days: 5
semver-patch-days: 5
commit-message:
prefix: tools
open-pull-requests-limit: ${{secrets.OPEN_PR_LIMIT}}
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ on:
- gyp-next
- histogram
- icu
- inspector_protocol
- libuv
- llhttp
- minimatch
Expand Down Expand Up @@ -149,6 +150,14 @@ jobs:
cat temp-output
tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true
rm temp-output
- id: inspector_protocol
subsystem: deps
label: dependencies, inspector
run: |
./tools/dep_updaters/update-inspector-protocol.sh > temp-output
cat temp-output
tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true
rm temp-output
- id: libuv
subsystem: deps
label: dependencies
Expand Down Expand Up @@ -276,7 +285,9 @@ jobs:
with:
persist-credentials: false
- name: Set up Python ${{ env.PYTHON_VERSION }}
if: matrix.id == 'icu' && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id)
if: |
(matrix.id == 'icu' || matrix.id == 'inspector_protocol') &&
(github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id)
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.PYTHON_VERSION }}
Expand Down
21 changes: 21 additions & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,27 @@ You can also execute the tests in a test suite directory
tools/test.py test/message
```

You can execute tests that match a specific naming pattern using the wildcard
`*`. For example, to run all tests under `test/parallel` with a name that starts
with `test-stream-`:

```bash
tools/test.py test/parallel/test-stream-*
tools/test.py parallel/test-stream-* # The test/ prefix can be omitted
# In some shell environments, you may need to quote the pattern
tools/test.py "test/parallel/test-stream-*"
```

The whildcard `*` can be used in any part of the path. For example, to run all tests
with a name that starts with `test-inspector-`, regardless of the directory they are in:

```bash
# Matches test/sequential/test-inspector-*, test/parallel/test-inspector-*,
# test/known_issues/test-inspector-*, etc.
tools/test.py "test/*/test-inspector-*"
tools/test.py "*/test-inspector-*" # The test/ prefix can be omitted
```

If you want to check the other options, please refer to the help by using
the `--help` option:

Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.11.0">24.11.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.11.1">24.11.1</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.11.0">24.11.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.10.0">24.10.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.9.0">24.9.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.8.0">24.8.0</a><br/>
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,6 @@ For information about the governance of the Node.js project, see
**Erick Wendel** <<[email protected]>> (he/him)
* [Ethan-Arrowood](https://github.com/Ethan-Arrowood) -
**Ethan Arrowood** <<[email protected]>> (he/him)
* [F3n67u](https://github.com/F3n67u) -
**Feng Yu** <<[email protected]>> (he/him)
* [fhinkel](https://github.com/fhinkel) -
**Franziska Hinkelmann** <<[email protected]>> (she/her)
* [Flarna](https://github.com/Flarna) -
Expand Down Expand Up @@ -527,6 +525,8 @@ For information about the governance of the Node.js project, see
**Eugene Ostroukhov** <<[email protected]>>
* [evanlucas](https://github.com/evanlucas) -
**Evan Lucas** <<[email protected]>> (he/him)
* [F3n67u](https://github.com/F3n67u) -
**Feng Yu** <<[email protected]>> (he/him)
* [firedfox](https://github.com/firedfox) -
**Daniel Wang** <<[email protected]>>
* [Fishrock123](https://github.com/Fishrock123) -
Expand Down Expand Up @@ -751,8 +751,6 @@ maintaining the Node.js project.
**Oliver Medhurst** <<[email protected]>> (they/them)
* [daeyeon](https://github.com/daeyeon) -
**Daeyeon Jeong** <<[email protected]>> (he/him)
* [F3n67u](https://github.com/F3n67u) -
**Feng Yu** <<[email protected]>> (he/him)
* [gireeshpunathil](https://github.com/gireeshpunathil) -
**Gireesh Punathil** <<[email protected]>> (he/him)
* [gurgunday](https://github.com/gurgunday) -
Expand Down
56 changes: 54 additions & 2 deletions benchmark/cpu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,73 @@ CPUPATH=/sys/devices/system/cpu

MAXID=$(cat $CPUPATH/present | awk -F- '{print $NF}')

[ "$(uname -s || true)" = "Linux" ] || \
echo "Warning: This script supports Linux only." >&2

[ "$(id -u || true)" = "0" ] || \
echo "Warning: This script typically needs root access to modify CPU governor. Consider running it with sudo." >&2

get_default_governor() {
case "$(cat "$CPUPATH/cpu0/cpufreq/scaling_available_governors")" in
*"schedutil"*) echo "schedutil" ;;
*"ondemand"*) echo "ondemand" ;;
*"conservative"*) echo "conservative";;
*) echo "powersave" ;;
esac

}

set_governor() {
echo "Setting CPU frequency governor to \"$1\""
governor_name="$1"

echo "Setting governor for all CPU cores to \"$governor_name\"..."

i=0
while [ "$i" -le "$MAXID" ]; do
echo "$1" > "$CPUPATH/cpu$i/cpufreq/scaling_governor"
i=$((i + 1))
done

echo "Done."
}

usage() {
default_gov=$(get_default_governor)
echo "CPU Governor Management Script"
echo "----------------------------------------------------------------------------"
echo "Usage: $0 [command]"
echo
echo "Commands:"
echo " fast Sets the governor to 'performance' for maximum speed."
echo " (Warning: Increases heat/power use. Use for short-term tasks.)"
echo
echo " reset Resets the governor to the system's recommended default ('$default_gov')."
echo
echo " get Shows the current CPU governor for ALL cores."
echo "----------------------------------------------------------------------------"
}

case "$1" in
fast | performance)
echo "Warning: The 'performance' mode locks the CPU at its highest speed."
echo "It is highly recommended to 'reset' after your task is complete."
set_governor "performance"
;;

reset | default)
default_governor=$(get_default_governor)
set_governor "$default_governor"
;;

get | status)
echo "Current governor status for all cores:"
grep . "$CPUPATH"/cpu*/cpufreq/scaling_governor
;;

*)
echo "Usage: $0 fast"
usage
exit 1
;;
esac

exit 0
37 changes: 37 additions & 0 deletions benchmark/esm/import-esm-reload.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
'use strict';

const common = require('../common');
const fs = require('fs');
const tmpdir = require('../../test/common/tmpdir');
const assert = require('assert');
const { pathToFileURL } = require('url');
const bench = common.createBenchmark(main, {
count: [1, 100],
n: [1000],
});

function prepare(count) {
tmpdir.refresh();
const dir = tmpdir.resolve('modules');
fs.mkdirSync(dir, { recursive: true });
let modSource = '';
for (let i = 0; i < count; ++i) {
modSource += `export const value${i} = 1;\n`;
}
const script = tmpdir.resolve('mod.js');
fs.writeFileSync(script, modSource, 'utf8');
return script;
}

async function main({ n, count }) {
const script = prepare(count);
const url = pathToFileURL(script).href;
let result = 0;
bench.start();
for (let i = 0; i < n; i++) {
const mod = await import(`${url}?t=${i}`);
result += mod[`value${count - 1}`];
}
bench.end(n);
assert.strictEqual(result, n);
}
3 changes: 2 additions & 1 deletion benchmark/napi/function_args/binding.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ void CallWithString(const FunctionCallbackInfo<Value>& args) {
Local<String> str = args[0].As<String>();
const size_t length = str->Utf8LengthV2(args.GetIsolate()) + 1;
char* buf = new char[length];
str->WriteUtf8(args.GetIsolate(), buf, length);
str->WriteUtf8V2(
args.GetIsolate(), buf, length, String::WriteFlags::kNullTerminate);
delete[] buf;
}
}
Expand Down
48 changes: 48 additions & 0 deletions benchmark/vm/source-text-module-chained.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
'use strict';

const vm = require('vm');
const common = require('../common.js');
const assert = require('assert');

const bench = common.createBenchmark(main, {
stage: ['all', 'instantiate', 'evaluate'],
n: [1000],
}, {
flags: ['--experimental-vm-modules'],
});

function main({ stage, n }) {
const arr = [new vm.SourceTextModule(`
export const value = 42;
`)];

if (stage === 'all') {
bench.start();
}

for (let i = 0; i < n; i++) {
const m = new vm.SourceTextModule(`
export { value } from 'mod${i}';
`);
arr.push(m);
m.linkRequests([arr[i]]);
}

if (stage === 'instantiate') {
bench.start();
}
arr[n].instantiate();
if (stage === 'instantiate') {
bench.end(n);
}

if (stage === 'evaluate') {
bench.start();
}
arr[n].evaluate();
if (stage === 'evaluate' || stage === 'all') {
bench.end(n);
}

assert.strictEqual(arr[n].namespace.value, 42);
}
Loading
Loading