Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
217 commits
Select commit Hold shift + click to select a range
75a9fa6
test: fix flaky cleanup in http2 test
pimterry Sep 3, 2026
48158fb
src: stop leaking a CppHeap in CommonEnvironmentSetup
codebytere Sep 7, 2026
7cdf5f0
vfs: answer for unowned paths under reserved root
pipobscure Sep 7, 2026
619470a
stream: allocate stream read buffers from a slab
mcollina Jul 12, 2026
1560521
stream: create write request objects lazily
mcollina Jul 12, 2026
f24a495
build: fix quiet default for make builds
codebytere Sep 7, 2026
9fd3e6c
inspector: fix crash when the IsolateData has no platform
codebytere Sep 7, 2026
830ca7d
src: fix null pointer call when running without a startup snapshot
codebytere Sep 7, 2026
84ecb21
quic: reject zero addressLRUSize
christianaurichzm Sep 7, 2026
79331f5
doc: note that FreeEnvironment() runs a shared event loop
codebytere Sep 8, 2026
62fe96c
typings: add missing sea binding properties
hyemimi Sep 8, 2026
c5c7036
typings: add timeoutInfo to TimersBinding
greenheadHQ Sep 8, 2026
2b502e0
fs: support removing read-only files in rmSync on Windows
SparshGarg999 Sep 8, 2026
5b6ac71
lib: use Web IDL interface brand checks
panva Sep 8, 2026
bdacc08
lib: validate sequence iterator objects
panva Sep 8, 2026
412399e
doc: clarify supported Python releases
MikeMcC399 Sep 8, 2026
e379c26
vfs: align virtual file handles with open(2)
pipobscure Sep 8, 2026
f744023
doc: expand revert commit collaborator instructions
MikeMcC399 Sep 8, 2026
cd5a761
crypto: use primordials in HKDF info validation
panva Sep 1, 2026
e44669b
crypto: validate the limit of PBKDF2 iterations
panva Sep 1, 2026
080e76b
net: support sending net.BoundSocket to threads and child processes
guybedford Jul 27, 2026
3cb3c23
typings: add task_queue internal binding types
leah-1ee Sep 8, 2026
7534117
lib: optimize internal Web IDL dictionaries
panva Sep 8, 2026
fa972d0
meta: add web-standards as webidl owners
panva Sep 8, 2026
0306b0a
sqlite: bind undefined to NULL
TrevorBurnham Sep 8, 2026
46ddc02
tools: apply feedback to and simplify contributor guidance workflow
panva Sep 8, 2026
e3ad682
tools: improve benchmark build cache reuse
panva Sep 8, 2026
cfee7fa
stream: amortize writable buffer compaction
gurgunday Sep 8, 2026
9f2d544
test: move sqlite length validation out of the reentry test
TrevorBurnham Sep 8, 2026
2d0c3fe
doc: add DOMException section to errors API reference
zeexzeex Sep 8, 2026
833c58d
quic: fix crash in onStreamClose
martenrichter Sep 8, 2026
ae29cc9
quic: split headers out from src/quic/stream.{h/cc}
jasnell Sep 6, 2026
29d3406
vfs: apply open(2) effects to ZipProvider handles
pipobscure Sep 6, 2026
5c4d319
vfs: commit ZipProvider handles the way open(2) does
pipobscure Sep 6, 2026
08f96f1
vfs: give ZipProvider option bags a null prototype
pipobscure Sep 6, 2026
7f51681
test: fix flaky test-bench-stream
mcollina Sep 7, 2026
fb8a97f
stream: improve handling of falsy errors in stream/iter
jasnell Sep 8, 2026
678ff35
zlib: improve zstd decoding across chunk boundaries
jasnell Sep 6, 2026
baf112b
sqlite: always copy changeset before applying
trivikr Sep 9, 2026
69911bf
doc: qualify directory read ordering for native fs
trivikr Sep 9, 2026
de552bd
vfs: return FileHandle from fs.promises.open
trivikr Sep 9, 2026
ac7fcf0
build: sync cargo/rustc version warnings
richardlau Sep 9, 2026
cf5d4a8
vfs: reject statfs for missing paths
trivikr Sep 9, 2026
07ae602
tools: unlabel author ready on base branch conflicts
panva Sep 9, 2026
0d14c0e
path: remove `StringPrototypeCharCodeAt` from some methods of `posix`
HBSPS Sep 9, 2026
e5bbcfd
tools: lint PR commit messages without approval
panva Sep 9, 2026
7f514d3
lib: fix shared buffer growability validation
panva Sep 9, 2026
9a3697c
doc: document windowsHide for child_process.fork
christopher-buss Sep 9, 2026
b9b0e33
lib: avoid unsafe array iteration in cli table
HoonDongKang Sep 9, 2026
6f5fb76
sqlite: track registered user-defined functions
trivikr Sep 10, 2026
f245e53
src: seed V8 from the OS CSPRNG instead of OpenSSL's DRBG
colinhacks Sep 10, 2026
89bae46
buffer: fix unaligned UTF-16LE decoding
mcollina Sep 10, 2026
8d1ce4d
doc: add inoway46 as triager
inoway46 Sep 10, 2026
472215f
test: try fixing windows build replacing WMIC
jasnell Sep 10, 2026
81eba46
tools: fix commit queue error summary matching
panva Sep 10, 2026
28acafe
lib: avoid repeat internal receiver checks
panva Sep 10, 2026
775173a
crypto: optimize private EC JWK import
panva Sep 7, 2026
f1295e1
crypto: read EC curve metadata directly
panva Sep 7, 2026
220a499
crypto: export EC JWK coordinates directly
panva Sep 7, 2026
fab5ddd
crypto: avoid EC raw export reconstruction
panva Sep 7, 2026
70edf90
crypto: avoid EC reconstruction for signature sizing
panva Sep 7, 2026
858702e
test: skip C++ symbols in tick-processor-arguments
pipobscure Sep 10, 2026
afc3e55
src: fix Stop() terminating the next Environment on the isolate
codebytere Sep 2, 2026
0e449d0
tools: bump js-yaml from 4.3.1 to 4.3.2 in /tools/lint-md
dependabot[bot] Sep 11, 2026
15f2549
tools: bump js-yaml from 4.3.1 to 4.3.2 in /tools/eslint
dependabot[bot] Sep 11, 2026
62e2bf0
src: detach cppgc wrappers from their Realm before it is freed
codebytere Sep 3, 2026
6eee01f
test: fix flaky common WPT inspector test
inoway46 Sep 11, 2026
4cdcf7f
zlib: fix zstd reset
jasnell Sep 6, 2026
89aa2bd
doc: fill in missing zstd docs
jasnell Sep 6, 2026
5e55085
zlib: reject invalid zstd dictionaries
jasnell Sep 6, 2026
1518b7d
src: keep the first snapshot blob alive for later isolates
codebytere Sep 2, 2026
05f4e54
src: fix external reference list race between concurrent isolates
codebytere Sep 3, 2026
d141ddb
tls: defer re-entrant calls to SSL state machine from JS
pimterry Sep 11, 2026
a914909
vfs: support renaming implicit ZIP directories
trivikr Sep 11, 2026
07fcf1e
ffi: throw ERR_INVALID_ARG_TYPE for wrong-typed pointer and size
soulee-dev Sep 12, 2026
88ba17b
test: deflake node-api test-free-called
christianaurichzm Sep 10, 2026
2a8b5d9
tls: load all CRLs from a PEM bundle
lazerg Sep 12, 2026
9b3f1aa
fs: throw on existing dir in cpSync with errorOnExist
watilde Sep 12, 2026
e51673b
url: add Symbol.toStringTag to URLPattern
XadillaX Sep 12, 2026
975cac5
quic: add promise to QuicStream for pending strms
martenrichter Sep 12, 2026
816790e
vfs: resolve symlinks when checking rename descendants
trivikr Sep 12, 2026
4141e22
src: don't kill own process group on failed spawn
lazerg Sep 12, 2026
5661526
stream: fix ERR_INVALID_STATE when cancelling Readable.toWeb()
richardscarrott Sep 12, 2026
898cd55
stream: reject closed only after sink abort settles
lazerg Sep 12, 2026
2c0ccc0
lib: fix for FileHandle.readableWebStream
pdaehne Jun 25, 2025
3325ded
doc: fix sign-off format in AGENTS.md
panva Sep 12, 2026
5e2fbfe
perf_hooks: validate import normalization offset
mcollina Sep 12, 2026
aec01c5
stream: keep webstream stream states in fast-mode objects
mcollina Aug 28, 2026
f81a148
stream: avoid promise allocation for parked transform writes
mcollina Aug 28, 2026
441350a
tools: do not download build tools when linting Nix files
aduh95 Sep 12, 2026
53d7592
meta: expand on collaborator restoration process
legendecas Sep 12, 2026
7fe6472
test: cover experimental stream iterator builtins
sjungwon03 Sep 12, 2026
d03e731
meta: add joyeecheung as v8 currency strategic initiative champion
joyeecheung Sep 12, 2026
2bf0824
assert: fix TypeError on deepStrictEqual with null Map key or Set member
semx Sep 12, 2026
04e5c28
stream: fix async iteration of undefined chunks
everett1992 Sep 12, 2026
9b3085e
test_runner: fix quote escaping in JUnit
hanityx Sep 12, 2026
e4ca72a
test: avoid allocations in external memory test
panva Sep 13, 2026
7131e3b
test: reduce ZIP64 stress test I/O
panva Sep 11, 2026
f23847a
test: use named parameters in DH stress test
panva Sep 11, 2026
f523342
test: close WebAssembly test HTTP servers
panva Sep 11, 2026
6314ccf
tools: reduce test runner timing overhead
panva Sep 11, 2026
831ec42
test: avoid idle HTTP/HTTPS connections
panva Sep 11, 2026
37f24ed
test: reuse fixed primes in DH tests
panva Sep 11, 2026
5c7e6b4
test: synchronize ordered runner events
panva Sep 11, 2026
1a15aff
test: skip retries in DNS timeout coverage
panva Sep 11, 2026
71a54aa
test: collect timeout signals explicitly
panva Sep 11, 2026
2170207
test: unref cancelled broadcast source timer
panva Sep 11, 2026
f2aa27d
test: overlap SLH-DSA signature checks
panva Sep 11, 2026
a05023f
src: fix crash on empty, foreign or truncated --snapshot-blob files
codebytere Sep 13, 2026
3666d6a
test: schedule WPT variants individually
panva Sep 13, 2026
c518831
benchmark: add --csv option to compare.js with --analyze
jasnell Sep 9, 2026
fa19eca
test: improve sequential test performance
jasnell Sep 9, 2026
5a5abd8
src: avoid copying SEA snapshot data
colinhacks Sep 14, 2026
88b12c0
test_runner: avoid reusing v8 serializers
inoway46 Sep 14, 2026
2054437
http2: fix onread assert when destroying session from stream handler
sankalpsthakur Sep 2, 2026
6515db8
test: fix RSA/DSA wrong-passphrase flake
panva Sep 14, 2026
5496943
doc: clarify permission model scope for output paths
RafaelGSS Sep 14, 2026
32401c2
perf_hooks: reuse buffer for uv metrics
HoonDongKang Sep 14, 2026
d4cb916
test: skip test-vfs-real-provider-watch.js on IBM i
sravani1510 Sep 15, 2026
287ece3
tools: pass author to commit message validator
panva Sep 15, 2026
64fb33d
ffi: load libraries from a mounted VFS
mcollina Sep 15, 2026
8929730
test: fix stderr Buffer assertion in exec encoding test
greenheadHQ Sep 13, 2026
61a98e6
quic: fix readable stream truncation on stop-sending, abort & timeout
pimterry Sep 15, 2026
66f182f
tools: make checkout credential use explicit
panva Sep 13, 2026
d5880dc
tools: correct Slack action version comments
panva Sep 13, 2026
caf0ee0
tools: use self-repository references
panva Sep 13, 2026
a5b1659
tools: avoid workflow shell interpolation
panva Sep 13, 2026
3a69cc1
doc: clarify QUIC async write backpressure
johnfinnerty-nz Sep 15, 2026
e8edeff
deps: update googletest to 8eff9e336692fc95961e096564f1044c600b881d
nodejs-github-bot Sep 15, 2026
27c6223
src: ffi: create fast-call metadata Symbols lazily
mcollina Sep 15, 2026
1bbc548
vfs: close the fs hook gaps for mounted paths
pipobscure Sep 15, 2026
8a27474
test: cover cpSync fast path timestamp preservation
abhi128nandan Sep 15, 2026
ee29c56
test: prevent parser reuse across close scenarios
panva Sep 15, 2026
cce2795
lib: fix AbortSignal.any() abort propagation
inoway46 Sep 16, 2026
9511071
inspector: fix abort when two Environments own the inspector
codebytere Sep 2, 2026
2cc17dd
doc: note that default signal handling resets the signal mask
codebytere Sep 3, 2026
2b1701f
fs: add openAsBlobSync
greenheadHQ Sep 16, 2026
77d8f17
http: don't destroy socket after request completes
barathraj048 Sep 16, 2026
c58a4e0
crypto: add Hybrid KEMs to Web Cryptography
panva Sep 5, 2026
f8cdf05
test,benchmark: use OpenSSL feature helpers
panva Sep 5, 2026
a0f99f1
src: support building with the V8 sandbox
codebytere Aug 21, 2026
3c999ed
src,lib: add util.markPromiseAsHandled
jasnell Sep 7, 2026
c3307eb
test: update WPT for WebCryptoAPI to 55ce71bb9d
nodejs-github-bot Sep 7, 2026
bfa6d49
test: implement low-risk test optimizations
jasnell Sep 9, 2026
6ddbb99
doc,test: account for OpenSSL 4.1 behaviours
panva Sep 12, 2026
c0a42d2
crypto: add crypto.parsePKCS12()
bmuenzenmeyer Sep 12, 2026
a326546
perf_hooks: implement qrde analysis support in Histogram
jasnell Sep 5, 2026
13e61f6
perf_hooks: implement SlidingWindowHistogram
jasnell Sep 5, 2026
f7d18ec
test: expand histogram test coverage
jasnell Sep 5, 2026
336f33c
util: implement debounce
jasnell Sep 8, 2026
3ce4d23
util: implement util.throttle
jasnell Sep 13, 2026
e90575c
test: deflake util.throttle tests
panva Sep 15, 2026
46f76ed
http2: settle pending write callbacks on destroy
mcollina Sep 15, 2026
da341e2
lib,src: apply multiple updates to dtls implementation
jasnell Aug 23, 2026
bfb544e
crypto: optimize and benchmark key preparation
panva Sep 9, 2026
9ec030b
src: print exception thrown during primordial initialization
joyeecheung Sep 16, 2026
c50cb9a
vfs: write RealFSProvider files to open fd
christianaurichzm Sep 16, 2026
02c2302
tls: propagate singleUse to the secure context
ViniciusDev26 Sep 17, 2026
3134ca6
stream: update broadcast to retain buffered data with zero consumers
jasnell Aug 30, 2026
36cc238
stream: make Broadcast.from abort its background pump
jasnell Aug 30, 2026
0372056
stream: make share budget failures detach before throwing
jasnell Aug 30, 2026
30e1f76
stream: reject unbounded at SyncShare construction
jasnell Aug 30, 2026
7d245cf
stream: fixup stream/iter to drop at most one entry per share call
jasnell Sep 15, 2026
7cf4488
quic: fix timeout regression from 11ed32572b3
jasnell Sep 15, 2026
410093d
src: avoid union type-punning in trace values
XadillaX Sep 17, 2026
1c12f81
doc: remove obsolete mentioning of cl.exe on windows
legendecas Sep 17, 2026
0df54fb
quic: improve stream cleanup & lookup
pimterry Sep 9, 2026
a76e97b
build: derive V8_LOGGING_LEVEL from dcheck_always_on
joyeecheung Sep 17, 2026
12116d1
test: unskip `test-watch-create-isolation-none`
aduh95 Sep 17, 2026
8914947
tools: update pgo build doc for linux
legendecas Sep 17, 2026
971adec
crypto: use names for asymmetric key algorithms
panva Sep 17, 2026
16e3e7e
vfs: add --vfs-mount and --vfs-load startup flags
pipobscure Sep 17, 2026
9165abe
meta: bump github/codeql-action/autobuild from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
1ed8b05
meta: bump github/codeql-action/analyze from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
1ada705
meta: bump github/codeql-action/init from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
c75b830
meta: bump cachix/cachix-action
dependabot[bot] Sep 18, 2026
b7eef15
tools: bump the eslint group in /tools/eslint with 6 updates
dependabot[bot] Sep 18, 2026
293e69d
sqlite: throw on invalid URL path instead of abort
araujogui Sep 18, 2026
cb9995b
fs: honor dereference for symlinks nested in cpSync trees
christianaurichzm Sep 18, 2026
4075161
stream: destroy Duplex.from async function on early return
ac-mmi Sep 18, 2026
b7406b0
fs: coerce FileHandle.read length like fs.read
xia-chao Sep 18, 2026
c438176
child_process: clear timeout timer on spawn-time error too
kishore280 Sep 18, 2026
e5d2a33
stream: destroy half-open sockets after iteration
mcollina Sep 18, 2026
7e1db47
inspector: report an error when DOM storage is unavailable
zeexzeex Sep 18, 2026
317abb8
doc: clarify sub-1000ms behavior in socket.setKeepAlive
haramj Sep 18, 2026
20606a4
build: suppress OpenSSL asm warnings with clang
richardlau Sep 14, 2026
4743cd8
quic: fix two small bugs in HTTP/3 stream internals
pimterry Sep 10, 2026
aa531a3
tools: summarize auto-start-ci failures
panva Sep 18, 2026
b98787f
src: reuse crypto GetCipherInfo in DTLS session
IlyasShabi Sep 18, 2026
3c9586c
tools: group CodeQL GHA updates
aduh95 Sep 18, 2026
2fffb38
doc: fix duplicate 'the' typo in `node_platform.cc`
almuzahidseyam Sep 18, 2026
0f75917
meta: bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0
dependabot[bot] Sep 18, 2026
13eb484
meta: bump step-security/harden-runner from 2.21.0 to 2.21.1
dependabot[bot] Sep 18, 2026
80c1bf7
test: deflake user timing WPT assertions
panva Sep 18, 2026
d63928d
test: move permission FFI test to native suite
inoway46 Sep 18, 2026
eb4fabe
doc: add araujogui to collaborators
araujogui Sep 17, 2026
dda22c0
test: deflake test-run-watch-cwd-isolation-none-*
aduh95 Sep 18, 2026
66fd788
trace_events: fix abort when Node.js does not own the V8 platform
codebytere Sep 18, 2026
d62a452
deps: V8: backport a0607c5006b8
aduh95 Sep 4, 2026
01cee9d
build: do not use bundled simdutf when built with `--shared-simdutf`
aduh95 Aug 28, 2026
f8b7a2f
tools: clean up handling of shared libs in `shell.nix`
aduh95 Sep 7, 2026
870a366
deps: V8: cherry-pick 95efbaf92a0d
isheludko Feb 26, 2026
060ed69
tools: disable fortify warnings in `test-shared`
aduh95 Sep 14, 2026
1f24901
src: fix `-Wextra` warning in `WriteFileSync`
aduh95 Sep 14, 2026
6105b37
tools: bump eslint-plugin-jsdoc in /tools/eslint in the eslint group
dependabot[bot] Sep 20, 2026
dcc9c3c
test: avoid call to `chmodSync` in `test-fs-cp-async-file-modes`
aduh95 Sep 20, 2026
54a625e
crypto: derive keys through EVP_KDF
panva Sep 18, 2026
ca8ee04
crypto: decode PKCS#1 keys through providers
panva Sep 18, 2026
3de05da
crypto: fetch ciphers for private-key encoding
panva Sep 18, 2026
97828d9
crypto: use provider EC group names
panva Sep 18, 2026
f90d3d3
crypto: skip private RSA parameters in key details
panva Sep 7, 2026
0b88aa5
crypto: read RSA-PSS restrictions from provider
panva Sep 8, 2026
7e79c33
test: consolidate crypto provider cache coverage
panva Sep 18, 2026
b7fe779
tools: update `tools/v8` for Python 3.13
richardlau Sep 20, 2026
94affce
Revert "deps: V8: override `depot_tools` version"
richardlau Sep 20, 2026
8955781
crypto: remove redundent `std::move` call
aduh95 Sep 20, 2026
151845a
2026-09-22, Version 26.10.0 (Current)
nodejs-github-bot Sep 20, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@
# Web Standards
/lib/internal/bootstrap/web/* @nodejs/web-standards
/lib/internal/navigator.js @nodejs/web-standards
/lib/internal/webidl.js @nodejs/web-standards
/test/fixtures/wpt/ @nodejs/web-standards
/test/wpt/ @nodejs/web-standards

Expand Down
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ updates:
commit-message:
prefix: meta
open-pull-requests-limit: 10
groups:
codeql-action:
applies-to: version-updates
patterns:
- github/codeql-action

- package-ecosystem: npm
directory: /tools/eslint
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/author-ready-conflicts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Unlabel not-ready pull requests

on:
schedule:
- cron: 15 3 * * *

permissions:
contents: read

jobs:
remove-label:
name: Remove author ready
if: github.repository == 'nodejs/node'
runs-on: ubuntu-slim
permissions:
pull-requests: write
steps:
- name: Remove the label and comment
env:
GH_TOKEN: ${{ github.token }}
MESSAGE: >-
This pull request has conflicts with its base branch, removing the
`author ready` label.

Please
[rebase](https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#step-5-rebase)
your branch onto the latest base branch, resolve the conflicts
locally, and force-push.

Afterwards the pull request needs a fresh collaborator approval,
and a collaborator will add the label back once it is
[author ready](https://github.com/nodejs/node/blob/HEAD/doc/contributing/collaborator-guide.md#author-ready-pull-requests)
again.
run: |
# Requesting the mergeable field makes GitHub compute the merge state,
# pull requests still reported as UNKNOWN are picked up by a later run.
gh pr list \
--repo "$GITHUB_REPOSITORY" \
--label 'author ready' \
--state open \
--limit 100 \
--json number,mergeable \
--jq '.[] | select(.mergeable == "CONFLICTING") | .number' |
while read -r number; do
gh pr edit "$number" --repo "$GITHUB_REPOSITORY" --remove-label 'author ready'
printf '%s\n' "$MESSAGE" |
gh pr comment "$number" --repo "$GITHUB_REPOSITORY" --body-file -
done
4 changes: 3 additions & 1 deletion .github/workflows/auto-start-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ jobs:

- name: Start the CI
run: |
read -r -a numbers <<< "$PULL_REQUESTS"
curl -fsSL "https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/tools/actions/start-ci.sh" \
| sh -s -- ${{ needs.get-prs-for-ci.outputs.numbers }}
| sh -s -- "${numbers[@]}"
env:
GH_TOKEN: ${{ github.token }}
PULL_REQUESTS: ${{ needs.get-prs-for-ci.outputs.numbers }}
42 changes: 28 additions & 14 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ jobs:
steps:
- name: Mark token input as sensitive
if: inputs.token != ''
run: echo "::add-mask::${{ inputs.token }}"
run: printf '::add-mask::%s\n' "$COMMENT_TOKEN"
env:
COMMENT_TOKEN: ${{ inputs.token }}
- name: Add link to the current run
id: comment
run: |
Expand All @@ -69,13 +71,14 @@ jobs:
include:
- runner: ubuntu-24.04
system: x86_64-linux
perfetto: true
- 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'
name: '${{ matrix.system }}: with shared libraries${{ matrix.perfetto && '' and perfetto'' || '''' }}'
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -96,7 +99,7 @@ jobs:
with:
extra_nix_config: sandbox = true

- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@38b082610b782e7e93e209c35fd730d399dee866 # v17
with:
# We do not pass any `authToken` to avoid polluting the cache with potentially untrusted code.
name: nodejs
Expand All @@ -105,7 +108,8 @@ jobs:
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
core.exportVariable('SCCACHE_GHA_VERSION', 'on');
core.exportVariable('SCCACHE_GHA_ENABLED', 'on');
core.exportVariable('SCCACHE_GHA_RW_MODE', 'READ_ONLY');
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 || '');
Expand All @@ -115,52 +119,58 @@ jobs:
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 \
--keep SCCACHE_GHA_ENABLED --keep SCCACHE_GHA_RW_MODE \
--keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
--arg useSeparateDerivationForV8 true \
--arg withPerfetto ${{ matrix.perfetto || false }} \
--arg loadJSBuiltinsDynamically false \
--arg ccache "${NIX_SCCACHE:-null}" \
--arg ccache '(import <nixpkgs> {}).sccache' \
--arg devTools '[]' \
--arg benchmarkTools '[]' \
--run '
make build-ci -j4 V=1
make build-ci -j4 V=1 && sccache --stop-server
'
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.
# Keep the compiler command unchanged for incremental builds, but never cache PR build outputs.
run: |
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure \
--pure --keep SCCACHE_LOCAL_RW_MODE \
--arg useSeparateDerivationForV8 true \
--arg withPerfetto ${{ matrix.perfetto || false }} \
--arg loadJSBuiltinsDynamically false \
--arg ccache 'null' \
--arg ccache '(import <nixpkgs> {}).sccache' \
--arg devTools '[]' \
--arg benchmarkTools '[]' \
--run '
make build-ci -j4 V=1
'
env:
SCCACHE_LOCAL_RW_MODE: READ_ONLY

- name: Run benchmark
run: |
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure --keep FILTER --keep LC_ALL --keep LANG \
--pure --keep CATEGORIES --keep FILTER --keep RUNS --keep LC_ALL --keep LANG \
--arg loadJSBuiltinsDynamically false \
--arg ccache 'null' \
--arg icu 'null' \
--arg sharedLibDeps '{}' \
--arg devTools '[]' \
--run '
set -o pipefail
read -r -a categories <<< "$CATEGORIES"
./base_node benchmark/compare.js \
--filter "$FILTER" \
--runs ${{ inputs.runs }} \
--runs "$RUNS" \
--old ./base_node --new ./node \
-- ${{ inputs.category }} \
-- "${categories[@]}" \
| tee /dev/stderr \
> ${{ matrix.system }}.csv
echo "> [!WARNING] "
Expand All @@ -178,7 +188,9 @@ jobs:
echo "> using a dedicated machine, e.g. Jenkins CI."
' | tee /dev/stderr >> "$GITHUB_STEP_SUMMARY"
env:
CATEGORIES: ${{ inputs.category }}
FILTER: ${{ inputs.filter }}
RUNS: ${{ inputs.runs }}

- name: Upload raw benchmark results
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
Expand Down Expand Up @@ -239,7 +251,9 @@ jobs:
' | tee /dev/stderr ${{ inputs.post-comment && 'body.txt' || '' }} >> "$GITHUB_STEP_SUMMARY"
- name: Mark token input as sensitive
if: inputs.token != ''
run: echo "::add-mask::${{ inputs.token }}"
run: printf '::add-mask::%s\n' "$COMMENT_TOKEN"
env:
COMMENT_TOKEN: ${{ inputs.token }}
- name: Edit comment
if: inputs.post-comment
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-shared.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
with:
extra_nix_config: sandbox = true

- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@38b082610b782e7e93e209c35fd730d399dee866 # v17
with:
name: nodejs
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
Expand Down
7 changes: 1 addition & 6 deletions .github/workflows/build-tarball.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,8 @@ jobs:
SCCACHE_GHA_ENABLED: ${{ github.base_ref == 'main' || github.ref_name == 'main' }}
SCCACHE_IDLE_TIMEOUT: '0'
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/actions/install-clang
sparse-checkout-cone-mode: false
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./.github/actions/install-clang
uses: $/.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }}
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,20 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
uses: github/codeql-action/init@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml

- name: Autobuild
uses: github/codeql-action/autobuild@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
uses: github/codeql-action/autobuild@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
uses: github/codeql-action/analyze@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
with:
category: /language:${{matrix.language}}
13 changes: 0 additions & 13 deletions .github/workflows/commit-lint-problem-matcher.json

This file was deleted.

53 changes: 37 additions & 16 deletions .github/workflows/commit-lint.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,56 @@
name: First commit message adheres to guidelines

on:
pull_request:
pull_request_target:
branches:
- main

env:
NODE_VERSION: lts/*

permissions:
contents: read
pull-requests: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
lint-commit-message:
name: lint-commit-message
runs-on: ubuntu-slim
steps:
- name: Compute number of commits in the PR
id: nb-of-commits
run: |
echo "plusOne=$((${{ github.event.pull_request.commits }} + 1))" >> $GITHUB_OUTPUT
echo "minusOne=$((${{ github.event.pull_request.commits }} - 1))" >> $GITHUB_OUTPUT
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }}
persist-credentials: false
- run: git reset HEAD^2
- name: Install Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}
- name: Validate commit message
run: |
echo "::add-matcher::.github/workflows/commit-lint-problem-matcher.json"
git rev-parse HEAD~${{ steps.nb-of-commits.outputs.minusOne }} | xargs npx -q core-validate-commit --no-validate-metadata --tap
- name: Validate first commit message
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { data: [commit] } = await github.rest.pulls.listCommits({
...context.repo,
pull_number: context.issue.number,
per_page: 1,
});
if (!commit) {
throw new Error('No commits found in pull request');
}
const { exitCode, stdout, stderr } = await exec.getExecOutput('npx', [
'-q', '--yes', '--ignore-scripts', 'core-validate-commit@6.0.0',
'--no-validate-metadata', '--tap', '-',
], {
cwd: process.env.RUNNER_TEMP,
input: Buffer.from(JSON.stringify([{
id: commit.sha,
message: commit.commit.message,
author: commit.commit.author,
}])),
silent: true,
ignoreReturnCode: true,
});
if (exitCode !== 0) {
core.setFailed(stdout + stderr || 'Commit message validation failed');
} else {
core.info('First commit message passes validation');
}
5 changes: 4 additions & 1 deletion .github/workflows/commit-queue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -188,13 +188,16 @@ jobs:
# to be set here because `checkout` configures GitHub authentication
# for push as well.
token: ${{ secrets.GH_USER_TOKEN }}
persist-credentials: true

- name: Start the Commit Queue
if: steps.get_mergeable_prs.outputs.numbers != ''
run: |
git config --local user.email "github-bot@iojs.org"
git config --local user.name "Node.js GitHub Bot"
ncu-config set token "$GH_TOKEN"
./tools/actions/commit-queue.sh ${{ steps.get_mergeable_prs.outputs.numbers }}
read -r -a numbers <<< "$PULL_REQUESTS"
./tools/actions/commit-queue.sh "${numbers[@]}"
env:
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}
PULL_REQUESTS: ${{ steps.get_mergeable_prs.outputs.numbers }}
Loading
Loading