Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
f7adcd8
stream: respect iter consumer abort signals
trivikr Jun 22, 2026
d0b830b
stream: observe abort while awaiting pipeTo source
trivikr Jun 22, 2026
e470c74
doc: fix keepAliveTimeout default in http.createServer options
jahanzaib-iqbal-dev Jun 22, 2026
0342744
test_runner: add timestamp to JUnit reporter testsuites
Han5991 Jun 22, 2026
eda91b6
src: avoid copying source string in TextEncoder.encode
anonrig Jun 22, 2026
55f4844
buffer: implement blob.textStream()
KhafraDev Jun 22, 2026
8ef643d
deps: update googletest to 0b1e895ba4226c2fda5ee0178c9b5b1195a741aa
nodejs-github-bot Jun 23, 2026
00dea28
repl: lazy-load acorn and defer vm context creation
watilde Jun 12, 2026
874c46c
meta: update sccache version in test-linux-quic
Renegade334 Jun 23, 2026
f90f1bd
perf_hooks: add NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP constant
szegedi Jun 23, 2026
28047a3
tools: exclude `libffi` changes from `test-shared` GHA CI
aduh95 Jun 23, 2026
1182ad8
stream: proxy first own method in Readable.wrap()
watilde Jun 23, 2026
3229886
test: fix flaky test-runner coverage threshold test
trivikr Jun 23, 2026
1f72393
lib: lazily initialize kEvents and kHandlers maps
araujogui Jun 23, 2026
0908d76
crypto: reject small-order EdDSA points during verify
panva Jun 20, 2026
7a9dcad
util: fix OOM in inspect color stack formatting
Ijtihed Jun 23, 2026
269b609
test_runner: improve coverage failure diagnostics
trivikr Jun 23, 2026
24e3209
test: use one-off agent in http consumed timeout test
trivikr Jun 24, 2026
60abc44
doc: fix callback example import in fs docs
Rawal27 Jun 24, 2026
bf080c7
test: mark hr-time WPT flaky on macos15-x64
trivikr Jun 24, 2026
d5f8260
doc: update toolchain for official AIX releases
richardlau Jun 24, 2026
4c91090
test: fix typo from funciton to function
parkhojeong May 18, 2026
1b4f213
test: fix typo from overriden to overridden
parkhojeong May 18, 2026
39e0c14
perf_hooks: sample delay per event loop iteration
pabloerhard Jun 24, 2026
570952d
test: keep finalization close fixture ref alive
trivikr Jun 25, 2026
66f6ac0
build: support setting an emulator from configure script
tie Jun 25, 2026
32bb554
crypto: fix large DH generator validation
tniessen Jun 25, 2026
3bdd7e2
tls: handle large RSA exponents in X.509 cert
tniessen Jun 25, 2026
12edf1d
src: avoid redundant call to `std::get_if<>()`
tniessen Jun 25, 2026
7a17c50
tools: update libffi updater script
aduh95 Jun 25, 2026
6d11a71
tools: update `build-shared/action.yml` to a reusable workflow
aduh95 Jun 25, 2026
feefd17
deps: V8: cherry-pick 1a391f98cc7a
bakkot May 11, 2026
a640543
deps: V8: cherry-pick 0cc9eb22c0b0
bakkot Jun 11, 2026
879fdc4
deps: V8: backport da20a197a7f9
bakkot Jun 19, 2026
dc052c0
diagnostics_channel: return original thenable
Qard Jun 26, 2026
7a16ccc
doc: announce upcoming end of tier 2 support for macOS x64
aduh95 Jun 26, 2026
c7e57f5
deps: c-ares: cherry-pick 8ba37af8e3fb
Renegade334 Jun 26, 2026
b373202
esm: add `--experimental-import-text` flag
efekrskl Jun 26, 2026
189e830
doc: add missing option to man page
richardlau Jun 26, 2026
f4e7bf1
build: pin envinfo versions in github actions
joyeecheung Jun 26, 2026
bbdd764
vfs: read RealFSProvider files from open fd
trivikr Jun 27, 2026
58d9685
typings: add typing for crypto
panva Jun 25, 2026
5933516
zlib: reject trailing gzip members in web streams
panva Jun 20, 2026
90007a5
zlib: expose rejectGarbageAfterEnd option
panva Jun 20, 2026
85fc79d
doc: fix broken links and duplicate stability label
aduh95 Jun 27, 2026
7b01040
meta: speed up stale bot
avivkeller Jun 27, 2026
2a12664
doc: clarify vfs is not a sandbox
mcollina Jun 28, 2026
f3db304
doc: update list of people in `SECURITY.md`
richardlau Jun 28, 2026
ff9122c
test: improve lcov reporter snapshot diagnostics
trivikr Jun 29, 2026
83b91ea
test_runner: filter execArgv fallback for child tests
trivikr Jun 29, 2026
ff537ba
doc: update `Http2Server.close` & `Http2SecureServer.close`
samuel871211 Jun 29, 2026
d0d8f0c
test: update WPT for urlpattern to 11a459a2b1
nodejs-github-bot Jun 29, 2026
17228a8
tools: add GHA benchmark runner
aduh95 Jun 29, 2026
fe5260c
meta: update status of past strategic initiatives
joyeecheung Jun 29, 2026
dbb3126
src: abstract tracing agent for both legacy and perfetto
legendecas Jun 29, 2026
657a35f
tools: validate version number in release proposal commit message lint
aduh95 Jun 29, 2026
92859b8
vm: fix copying PropertyDescriptor
legendecas Jun 29, 2026
6b8dc58
meta: move one or more collaborators to emeritus
nodejs-github-bot Jun 29, 2026
74e3aa2
deps: update sqlite to 3.53.3
nodejs-github-bot Jun 30, 2026
2e500ba
deps: update googletest to 8b53336594cc52213c6c2c7a0b29194fa896d039
nodejs-github-bot Jun 30, 2026
af91029
deps: update nghttp3 to 1.17.0
nodejs-github-bot Jun 30, 2026
f162234
stream: normalize Broadcast.from() byte inputs
trivikr Jun 30, 2026
9395d20
vfs: avoid recursive readdir symlink cycles
mcollina Jun 30, 2026
b7bf6e3
doc: add guide and answers to FAQs for first-time contributors
joyeecheung Jun 30, 2026
9e50bb0
dgram: skip dns.lookup() for literal IP addresses
BridgeAR Jun 30, 2026
bdf3262
process: fix finalization cleanup ref tracking
trivikr Jun 30, 2026
4e0236d
tls: report negotiated TLS groups
panva Jul 1, 2026
6e187db
tools: update c-ares updater script
aduh95 Jul 1, 2026
8e8874b
http: document and validate options.path when it's in absolute-form
joyeecheung Jul 1, 2026
6a80ab4
build: add manually-dispatched stress-test workflow
joyeecheung Jul 1, 2026
bb2eed8
doc: add sxa GPG key (ed25519)
sxa Jun 29, 2026
518309c
build: suppress clang errors building libffi on Windows
Renegade334 Jul 1, 2026
ef4915f
doc: fix Fast FFI argument count in ffi.md
watilde Jul 1, 2026
06c1fbc
build: enable Maglev for riscv64
JamieMagee Jul 1, 2026
b09e624
test: make blob desiredSize assertion robust
trivikr Jul 2, 2026
4dceefd
tools: bump undici from 6.24.1 to 6.27.0 in /tools/doc
dependabot[bot] Jul 2, 2026
fe0ea2b
tools: bump @node-core/doc-kit
dependabot[bot] Jul 2, 2026
0854482
doc: clarify defense-in-depth issues
mcollina Jul 2, 2026
2699fe4
quic: fixes undefined handle in QuicStream kInspect
martenrichter Jul 2, 2026
92a3dc3
lib,permission: fix addon permission drop
mawalu Jul 2, 2026
aeb539a
http: fix drain event with cork/uncork
davidje13 Jul 2, 2026
322230d
vfs: support writeFileSync with virtual fds
trivikr Jul 2, 2026
87648c0
benchmark: trim down the argon2 sets
panva Jul 2, 2026
7f26c54
child_process: fix permission model propagation via NODE_OPTIONS
mcollina Jul 2, 2026
48c5c86
module: enable import support for addons by default
legendecas Jul 2, 2026
12a2b9d
doc: fix typo in node-config-schema.json
hamidrezaghavami Jul 3, 2026
f49704b
meta: clarify V8 flags are outside threat model
mcollina Jul 3, 2026
eacfbd0
http: add CONNECT method handling for default Host header with proxy
Archkon Jul 3, 2026
34a537c
lib: use `__proto__: null` when calling `ObjectDefineProperty`
aduh95 Jul 3, 2026
0cd443d
esm: print required top-level await locations without evaluating
joyeecheung Jul 2, 2026
c0a8760
meta: bump github/codeql-action/upload-sarif from 4.36.1 to 4.36.2
dependabot[bot] Jul 3, 2026
0ddde95
meta: bump actions/setup-python from 6.2.0 to 6.3.0
dependabot[bot] Jul 3, 2026
2cad2d6
meta: bump github/codeql-action/init from 4.36.1 to 4.36.2
dependabot[bot] Jul 3, 2026
845c63e
meta: bump rtCamp/action-slack-notify from 2.3.3 to 2.4.0
dependabot[bot] Jul 3, 2026
fe460cc
meta: bump codecov/codecov-action from 6.0.1 to 7.0.0
dependabot[bot] Jul 3, 2026
873d1e0
meta: bump actions/checkout from 6.0.2 to 7.0.0
dependabot[bot] Jul 3, 2026
64aa170
meta: bump github/codeql-action/analyze from 4.36.1 to 4.36.2
dependabot[bot] Jul 3, 2026
0808dcd
meta: bump github/codeql-action/autobuild from 4.36.1 to 4.36.2
dependabot[bot] Jul 3, 2026
829c4a5
meta: bump actions/cache from 5.0.5 to 6.1.0
dependabot[bot] Jul 3, 2026
d940f02
tools: bump the eslint group in /tools/eslint with 8 updates
dependabot[bot] Jul 3, 2026
c81f894
stream: cut per-chunk overhead in WHATWG streams
mcollina Jul 4, 2026
0b6af91
vfs: handle current-position sentinel in memory files
trivikr Jul 4, 2026
ce659a1
src: fix escaping of single quotes in task runner
aduh95 Jul 4, 2026
3966eb6
doc: fix typo in examples
vassudanagunta Jul 4, 2026
ea3b870
tools: remove `envinfo` from our workflows
aduh95 Jul 4, 2026
851b460
esm: improve ERR_REQUIRE_ASYNC_MODULE
joyeecheung Jul 2, 2026
38b9914
stream: refactor unnecessary optional chaining away
aduh95 Jul 4, 2026
d3fa77c
stream: fix merge abort for pending sources
trivikr Jul 4, 2026
ab5ed72
stream: reject iter consumers on abort
trivikr Jul 4, 2026
999a83c
stream: expose ReadableStreamTee
mcollina Jul 5, 2026
ee873b7
tools: bump `temporal_rs` version
aduh95 Jul 5, 2026
05eae28
doc: recommend node-stress-single-test for flaky tests
trivikr Jul 5, 2026
6d14279
buffer: add fast api for isUtf8 and isAscii
gurgunday Jun 27, 2026
a67d9a7
build: allow linting node.1
avivkeller Jul 6, 2026
87b8f2a
meta: fix linter warning in `stale.yml`
aduh95 Jul 6, 2026
20ce359
doc: clarify HTTP/1.1 response ordering
mcollina Jul 6, 2026
da88f70
doc: add note on visibility of CI failures to new contributor guide
sxa Jul 2, 2026
a483bfd
buffer: remove unreachable overflow check in atob
haramj Oct 8, 2025
243b0e4
lib: reject string "0" in validatePort when allowZero is false
watilde Jul 6, 2026
8d4bec2
doc: update Http2SecureServer.on("timeout") default value
samuel871211 Jul 6, 2026
9a65b7f
quic: drop version negotiation packets with oversized CIDs
3zrv Jul 6, 2026
a22a840
doc: clarify QUIC stream state wording
EduardF1 Jun 30, 2026
eb2e96b
inspector: fix crash when writing to closed inspector socket
Yayapapa Jul 6, 2026
7f7e586
deps: update undici to 8.7.0
nodejs-github-bot Jul 6, 2026
d5f01bb
vfs: reject rename into descendant directory
trivikr Jul 6, 2026
98be430
zlib: validate flush kind for brotli streams
Ic3b3rg Jun 4, 2026
9046035
zlib: validate flush king for all streams
Ic3b3rg Jun 5, 2026
efbbb9a
stream: preserve half-open duplexes in async iteration
efekrskl Jul 6, 2026
086741d
timers: reuse Timeout objects in setStreamTimeout
mcollina Jul 6, 2026
c96c838
tools: update RUSTC_VERSION for remaining GHA workflows
Renegade334 Jul 6, 2026
bebd1b8
2026-07-08, Version 26.5.0 (Current)
nodejs-github-bot Jul 6, 2026
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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<!--
If you are submitting a pull request for the first time,
check out the guide for first-time contributors for tips and answers to FAQs:
https://github.com/nodejs/node/blob/HEAD/doc/contributing/first-contributions.md
Before submitting a pull request, please read:
- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
Expand Down
65 changes: 0 additions & 65 deletions .github/actions/build-shared/action.yml

This file was deleted.

203 changes: 203 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
name: Benchmark

on:
workflow_dispatch:
inputs:
repo:
type: string
description: GitHub repository to fetch from (default to the current repo)
pr_id:
type: number
required: true
description: The PR to test
commit:
required: true
type: string
description: The expect HEAD of the PR
category:
required: true
type: string
description: The category (or categories) of tests to run, for example buffers, cluster etc. Maps to a folders in node/benchmark
filter:
type: string
description: A substring to restrict the benchmarks to run in a category. e.g. `net-c2c`
runs:
type: number
default: 30
description: How many times to repeat each benchmark

permissions:
contents: read

jobs:
build:
strategy:
fail-fast: true
matrix:
include:
- runner: ubuntu-24.04
system: x86_64-linux
- runner: ubuntu-24.04-arm
system: aarch64-linux
- runner: macos-15-intel
system: x86_64-darwin
- runner: macos-latest
system: aarch64-darwin
name: '${{ matrix.system }}: with shared libraries'
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
repository: ${{ inputs.repo || github.repository }}
ref: refs/pull/${{ inputs.pr_id }}/merge
persist-credentials: false
fetch-depth: 2

- name: Validate PR head and roll back to base commit
run: |
[ "$(git rev-parse HEAD^2)" = "$EXPECTED_SHA" ]
git reset HEAD^ --hard
env:
EXPECTED_SHA: ${{ inputs.commit }}

- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
extra_nix_config: sandbox = true

- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
with:
# We do not pass any `authToken` to avoid polluting the cache with potentially untrusted code.
name: nodejs

- name: Configure sccache
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
core.exportVariable('SCCACHE_GHA_VERSION', 'on');
core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on');
core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Build Node.js on the base commit
run: |
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure --keep TAR_DIR --keep FLAKY_TESTS \
--keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
--arg useSeparateDerivationForV8 true \
--arg loadJSBuiltinsDynamically false \
--arg ccache "${NIX_SCCACHE:-null}" \
--arg devTools '[]' \
--arg benchmarkTools '[]' \
--run '
make build-ci -j4 V=1
'
mv out/Release/node base_node
- name: Checkout the merge commit
run: git reset FETCH_HEAD --hard

- name: Re-build Node.js on the merge commit
# ccache is disabled here to avoid polluting the cache. Local build outputs should make this build relatively quick anyway.
run: |
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure \
--arg useSeparateDerivationForV8 true \
--arg loadJSBuiltinsDynamically false \
--arg ccache 'null' \
--arg devTools '[]' \
--arg benchmarkTools '[]' \
--run '
make -j4 V=1
'
- name: Run benchmark
run: |
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure --keep FILTER --keep LC_ALL --keep LANG \
--arg loadJSBuiltinsDynamically false \
--arg ccache 'null' \
--arg icu 'null' \
--arg sharedLibDeps '{}' \
--arg devTools '[]' \
--run '
set -o pipefail
./base_node benchmark/compare.js \
--filter "$FILTER" \
--runs ${{ inputs.runs }} \
--old ./base_node --new ./node \
-- ${{ inputs.category }} \
| tee /dev/stderr \
> ${{ matrix.system }}.csv
echo "> [!WARNING] "
echo "> Do not take GHA benchmark results as face value, always confirm them"
echo "> using a dedicated machine, e.g. Jenkins CI."
echo
echo "Benchmark results:"
echo
echo '"'"'```'"'"'
Rscript benchmark/compare.R < ${{ matrix.system }}.csv
echo '"'"'```'"'"'
echo
echo "> [!WARNING] "
echo "> Do not take GHA benchmark results as face value, always confirm them"
echo "> using a dedicated machine, e.g. Jenkins CI."
' | tee /dev/stderr >> "$GITHUB_STEP_SUMMARY"
env:
FILTER: ${{ inputs.filter }}

- name: Upload raw benchmark results
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: csv-${{ matrix.system }}
path: ${{ matrix.system }}.csv

aggregate-results:
needs: build
name: Aggregate benchmark results
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
sparse-checkout: |
benchmark/*.R
tools/nix/*.nix
*.nix
sparse-checkout-cone-mode: false

- name: Download benchmark raw results
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: csv-*
merge-multiple: true
path: raw-results

- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
extra_nix_config: sandbox = true

- name: Benchmark results
run: |
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure \
-E '(import <nixpkgs> {}).mkShell { buildInputs = import ./tools/nix/benchmarkTools.nix { withHttpBenchmarkDeps = false; }; }' \
--run '
export LC_ALL=C.UTF-8
echo "> [!WARNING] "
echo "> Do not take GHA benchmark results as face value, always confirm them"
echo "> using a dedicated machine, e.g. Jenkins CI."
echo
echo "Benchmark results:"
echo
echo '"'"'```'"'"'
awk "FNR==1 && NR!=1{next;}{print}" raw-results/*.csv | Rscript benchmark/compare.R
echo '"'"'```'"'"'
echo
echo "> [!WARNING] "
echo "> Do not take GHA benchmark results as face value, always confirm them"
echo "> using a dedicated machine, e.g. Jenkins CI."
' | tee /dev/stderr >> "$GITHUB_STEP_SUMMARY"
89 changes: 89 additions & 0 deletions .github/workflows/build-shared.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Build Node.js (shared libraries)

on:
workflow_call:
inputs:
runner:
description: The runner to use for the job.
required: true
type: string
extra-nix-flags:
description: Additional CLI arguments appended to the nix-shell invocation.
required: false
type: string
default: ''
with-sccache:
description: Whether to enable sccache
required: false
type: boolean
default: false
v8-nar:
description: An optional name for the NAR archive for V8 that needs to be downloaded
required: false
type: string
default: ''
secrets:
CACHIX_AUTH_TOKEN:
description: Cachix auth token for nodejs.cachix.org.
required: false

permissions: {}

env:
FLAKY_TESTS: keep_retrying

jobs:
build:
runs-on: ${{ inputs.runner }}
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: tarballs
path: tarballs

- name: Extract tarball
shell: bash
run: |
tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP"
echo "TAR_DIR=$RUNNER_TEMP/$(basename tarballs/*.tar.gz .tar.gz)" >> "$GITHUB_ENV"

- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
extra_nix_config: sandbox = true

- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
with:
name: nodejs
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}

- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
if: inputs.v8-nar
with:
name: ${{ inputs.v8-nar }}

- name: Configure sccache
if: inputs.with-sccache
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
core.exportVariable('SCCACHE_GHA_ENABLED', 'on');
core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on');
core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('NIX_SCCACHE', '(import <nixpkgs> {}).sccache');

- name: Build Node.js and run tests
shell: bash
run: |
nix-shell \
-I "nixpkgs=$TAR_DIR/tools/nix/pkgs.nix" \
--pure --keep TAR_DIR --keep FLAKY_TESTS \
--keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
--arg loadJSBuiltinsDynamically false \
--arg ccache "${NIX_SCCACHE:-null}" \
--arg devTools '[]' \
--arg benchmarkTools '[]' \
${{ inputs.extra-nix-flags }} \
--run '
make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS"
' "$TAR_DIR/shell.nix"
Loading
Loading