Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
7607ad4
crypto: optimize normalizeAlgorithm dispatch hot path
panva Apr 15, 2026
638e07c
lib: optimize webidl conversion options
panva May 4, 2026
b8f7e6d
doc: mark stream.compose stable
mcollina May 16, 2026
58e08bb
gyp: update deps gypfiles
nadalaba May 21, 2026
5715f25
doc: move hyperlinks outside of text blocks
avivkeller May 24, 2026
5d2dc84
doc,lib: align WebCrypto names with spec
panva May 25, 2026
fc2c6c9
test: cover webcrypto prototype pollution systematically
panva May 25, 2026
73295d5
build,win: fix VS2022 arm64 PGO build
StefanStojanovic May 26, 2026
0ba5cc4
src: fix crash when reading length on Storage.prototype
3zrv May 27, 2026
0200292
dns: coerce -0 to +0 in lookup and resolver inputs
panva May 25, 2026
a7bdf3d
fs: coerce -0 to +0 in mode flags and watch intervals
panva May 25, 2026
e69f82c
net: coerce -0 to +0 in BlockList prefixes
panva May 25, 2026
be4b3fe
zlib: coerce -0 to +0 for crc32 seeds
panva May 25, 2026
b81f1b1
src: add Latin1 fast path in StringBytes::Encode utf8
mertcanaltin Jun 1, 2026
400c54d
crypto: fix warnings in test_node_crypto.cc
MayaLekova Jun 2, 2026
f9f192a
test: update test426-fixtures to 2965987bf4c96afa400c9356c8e620cb340aaee
nodejs-github-bot Jun 2, 2026
aced087
deps: update googletest to 8736d2cd5c1dcba41170ed2fddca14021d4916c3
nodejs-github-bot Jun 2, 2026
e87143f
lib: make `Navigator#language` getter throw on invalid `this`
3zrv Jun 2, 2026
9c417fd
test: add more test cases for pathToFileURL
RafaelGSS Jun 2, 2026
2f4e596
src: fix edge case when deflateInit2() fails with Z_VERSION_ERROR
ndossche Jun 2, 2026
4bc1a09
doc: update `blockList` stability status to release candidate
alphaleadership Jun 2, 2026
353a2c0
deps: update amaro to 1.1.10
nodejs-github-bot Jun 2, 2026
28f789d
doc: add worker_threads history entries
bobu-putheeckal Jun 2, 2026
12986ba
crypto: deduplicate X509 subject matching logic
tniessen Jun 2, 2026
2a71073
doc: clarify tty raw mode applies to input processing only
zeeshan56656 Jun 2, 2026
b4037ae
fs: ignore deleted dirs in recursive watch scan
trivikr Jun 3, 2026
85487ce
test: accept SIGILL aborts in async-hooks tests
trivikr Jun 3, 2026
15ca68c
crypto: handle cipher context allocation failures
Herrtian Jun 3, 2026
be256f4
doc: fix "used to sent" → "used to send" in http2
watilde Jun 3, 2026
1692fdb
tools: fix zlib updater script
aduh95 Jun 3, 2026
556d150
doc: add webstreams to args for `pipeline` from `stream/promises`
dsanders11 Jun 4, 2026
98ce551
module: use file: URL as sourceURL for type-stripped CommonJS
joyeecheung Jun 4, 2026
683de5d
doc: fix AES-OCB IV length in SubtleCrypto.supports example
Anshikakalpana Jun 4, 2026
28f380d
watch: cancel pending restart on shutdown
trivikr Jun 4, 2026
8be2b1e
meta: bump step-security/harden-runner from 2.19.0 to 2.19.4
dependabot[bot] Jun 5, 2026
92ac120
meta: bump actions/stale from 10.2.0 to 10.3.0
dependabot[bot] Jun 5, 2026
0f54673
tools: bump the eslint group in /tools/eslint with 7 updates
dependabot[bot] Jun 5, 2026
e7c6457
meta: bump codecov/codecov-action from 6.0.0 to 6.0.1
dependabot[bot] Jun 5, 2026
b28fe96
sqlite: fix stack-use-after-scope with function callback
ndossche May 29, 2026
273315f
meta: bump actions/cache from 5.0.4 to 5.0.5
dependabot[bot] Jun 5, 2026
48a766c
meta: bump github/codeql-action from 4.35.3 to 4.36.1
dependabot[bot] Jun 5, 2026
e9659f5
src: add cleanup hooks to `node::ObjectWrap`
addaleax May 29, 2026
a6b5163
test: add regression test for using `ObjectWrap` in worker
mohd-akram May 26, 2026
4a2303a
test: make Brotli 16GB test wait for backpressure
trivikr Jun 6, 2026
7a39157
doc: update npm supported versions link
parkhojeong Jun 7, 2026
e75d973
src: use C++14 deprecated attribute for `NODE_DEPRECATED`
addaleax Jun 7, 2026
ebd2b91
test_runner: fix watch cwd with isolation none
trivikr Jun 8, 2026
a764d89
http2: retain header memory in session accounting
mcollina Jun 8, 2026
d79d016
doc: fix a/an article typos in module, util, and dns
watilde Jun 8, 2026
9ad3013
events: improve `addAbortListener` perf by caching options object
rluvaton Jun 8, 2026
9386db5
test: update WPT for urlpattern to 2f28df545c
nodejs-github-bot Jun 9, 2026
adc3d3c
deps: update zlib to 1.3.2.1-motley-3246f1b
nodejs-github-bot Jun 9, 2026
2e2b9ed
deps: update sqlite to 3.53.2
nodejs-github-bot Jun 9, 2026
4f36fd1
deps: update googletest to 7140cd416cecd7462a8aae488024abeee55598e4
nodejs-github-bot Jun 9, 2026
f9b161b
fs: prevent spurious recursive watch events on prefix siblings
marcopiraccini Jun 9, 2026
97590e8
stream: check done before backpressure in stream reader
watilde Jun 9, 2026
898c4a8
url: fix URLSearchParams(null) to prudce null= per spec
marcopiraccini Jun 9, 2026
991956e
util: remove style caches from styleText slow path
araujogui Jun 9, 2026
2b50ee3
test: add coverage outside SEA
watilde Jun 4, 2026
b4e941c
test: validate ERR_INVALID_THIS for scheduler methods
watilde Jun 9, 2026
d86c1d9
test: mark SEA tests flaky on linux arm debug
trivikr Jun 11, 2026
b82d8cd
tools: align Bash snippets in GHA with `lint-sh` conventions
aduh95 Jun 12, 2026
388421e
doc: fix typo in packages.md
watilde Jun 12, 2026
9bbb9f9
doc: fix typo in vm.md
watilde Jun 12, 2026
d24afc2
test_runner: remove unused shuffleArrayWithSeed
watilde Jun 13, 2026
00522e6
fs: support caller-supplied readFile() buffers
mcollina Jun 13, 2026
22b4005
deps: add ngtcp2_fmt.c to build configuration (ngtcp2.gyp)
ShenHongFei Jun 13, 2026
1e33e80
lib: add Iterator global to primordials
Renegade334 Jun 1, 2026
24c8908
lib: improve control abstraction coverage in frozen intrinsics
Renegade334 Jun 1, 2026
ae097c6
deps: upgrade npm to 11.17.0
npm-cli-bot Jun 13, 2026
443a43c
net: support TCP_KEEPINTVL and TCP_KEEPCNT in setKeepAlive
guybedford Jun 13, 2026
747aa0c
src: allow tracking children in `MemoryTracker` with weak edges
addaleax Jun 10, 2026
53df158
src: do not track weak `BaseObject`s as childrens of `Realm`s
addaleax Jun 10, 2026
41e7811
test: add tests for 3 methods in utils
watilde Jun 14, 2026
6fb5bb5
quic: fix broken listEndpoints export, test callbacks & nghttp3 include
pimterry Jun 14, 2026
521e6c1
crypto: fix unhandled error in Hash._transform
haramj Jun 14, 2026
f29949e
src: handle empty MaybeLocal in cjs_lexer::Parse
anonrig Jun 15, 2026
4e8db7f
util: fix -0 formatting when numericSeparator is enabled
watilde Jun 9, 2026
b7b5706
doc: fix typo in cli.md
watilde Jun 15, 2026
a42aa0a
debugger: await initialization after run and restart
trivikr Jun 15, 2026
b8d3f5e
test: update WPT for urlpattern to 23aac92784
nodejs-github-bot Jun 16, 2026
7e85198
util: fix scientific notation formatting
watilde Jun 16, 2026
e55eeaf
stream: fix dropped first chunk in Utf8Stream buffer mode
watilde Jun 16, 2026
6f3e342
test: update WPT for url to d4598eba09
nodejs-github-bot Jun 14, 2026
1bac086
stream: only pass the expected number of parameters to callbacks
aduh95 Jun 16, 2026
622f4e1
crypto: make webcrypto aliasKeyFormat directional
panva Jun 16, 2026
1d62b24
sqlite: do not leave database open after failed open
anonrig Jun 16, 2026
6723b1e
doc: fix incorrect test runner mock examples
emmayusufu Jun 17, 2026
8490456
doc,crypto: mark argon2 and encap/decap as stable
panva Jun 17, 2026
dfefe03
benchmark: add child_process async path baselines
anonrig Jun 17, 2026
cf039e2
tls: route event listener exceptions through error handlers
aduh95 Jun 18, 2026
16c511c
debugger: defer probe pause handling until startup
trivikr Jun 18, 2026
d73c832
doc: clarify callback exceptions
mcollina Jun 18, 2026
b351fa5
child_process: serialize advanced IPC messages natively
anonrig Jun 18, 2026
8e769b1
crypto: use EVP_MAC for HMAC on OpenSSL >=3
panva Jun 19, 2026
02cbcc3
tools: update the llhttp updater script
aduh95 Jun 19, 2026
957f0d1
build: add QUIC CI job for PRs matching QUIC related paths
pimterry Jun 19, 2026
62a822e
crypto,tls: do not ignore BN_get_word error
tniessen Jun 19, 2026
7e4b860
deps: update OpenSSL build config to support compression
pimterry Mar 12, 2026
bd1ea8c
tls: add certificateCompression option
pimterry Mar 11, 2026
03f0b88
inspector: fix inspector.close() documented behavior
legendecas Jun 20, 2026
14d0bb1
src: guard OpenSSL compression header include
panva Jun 20, 2026
fdc56ab
stream: fix Utf8Stream stall after full write of multi-byte data
watilde Jun 17, 2026
bca6ae6
doc: fix typo in util.md
watilde Jun 17, 2026
1a3bbdc
build: suppress compiler warnings for histogram
richardlau Jun 20, 2026
19368cd
doc: add aduh95 to last security release steward
aduh95 Jun 20, 2026
6ef38f3
deps: update acorn to 8.17.0
nodejs-github-bot Jun 20, 2026
69084ad
child_process: pass spawn options to the binding positionally
anonrig Jun 20, 2026
0dc2040
tools: bump js-yaml from 4.1.1 to 4.2.0 in /tools/eslint
dependabot[bot] Jun 20, 2026
2ab22ff
tools: bump js-yaml from 4.1.1 to 4.2.0 in /tools/lint-md
dependabot[bot] Jun 20, 2026
5c5dc77
test: mark test-debugger-run-after-quit-restart as flaky on macOS
mcollina Jun 20, 2026
1d1a925
src: omit unconvertible names in cjs_lexer::Parse
anonrig Jun 20, 2026
c40638b
tools: update sccache to v0.16.0
targos Jun 20, 2026
57d0b79
fs: do not treat EPERM as ENOTEMPTY on Windows
PickBas Jun 21, 2026
f67b431
test: tolerate duplicate watch change events
trivikr Jun 21, 2026
8276033
stream: fix Writable.toWeb() desiredSize for non-object-mode
mcollina Jun 21, 2026
2c08dd7
watch: print name of changed file that triggers restart
marcopiraccini Jun 22, 2026
0855d45
debugger: lazily wait for initial break output
trivikr Jun 22, 2026
d03a6b2
doc: add sxa GPG key (ed25519)
sxa Jun 29, 2026
5c2cf58
deps: V8: backport bef0d9c1bc90
joyeecheung Mar 5, 2026
0eeb4f5
src: do not enable wasm trap handler if there's not enough vmem
joyeecheung Feb 28, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build-tarball.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
version: v0.16.0
- name: Environment Information
run: npx envinfo
- name: Download tarball
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/close-stalled.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
if: github.repository == 'nodejs/node'
runs-on: ubuntu-slim
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-close: 30
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3
uses: github/codeql-action/init@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml

- name: Autobuild
uses: github/codeql-action/autobuild@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3
uses: github/codeql-action/autobuild@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3
uses: github/codeql-action/analyze@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1
with:
category: /language:${{matrix.language}}
8 changes: 5 additions & 3 deletions .github/workflows/comment-labeled.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
env:
NUMBER: ${{ github.event.issue.number || github.event.pull_request.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh issue comment "$NUMBER" --repo ${{ github.repository }} --body "$STALE_MESSAGE"
run: gh issue comment "$NUMBER" --repo "$GITHUB_REPOSITORY" --body "$STALE_MESSAGE"

fast-track:
permissions:
Expand All @@ -41,7 +41,8 @@ jobs:
- name: Request Fast-Track
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$FAST_TRACK_MESSAGE"
NUMBER: ${{ github.event.pull_request.number }}
run: gh pr comment "$NUMBER" --repo "$GITHUB_REPOSITORY" --body "$FAST_TRACK_MESSAGE"

notable-change:
permissions:
Expand All @@ -52,4 +53,5 @@ jobs:
- name: Add notable change description
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$NOTABLE_CHANGE_MESSAGE"
NUMBER: ${{ github.event.pull_request.number }}
run: gh pr comment "$NUMBER" --repo "$GITHUB_REPOSITORY" --body "$NOTABLE_CHANGE_MESSAGE"
4 changes: 2 additions & 2 deletions .github/workflows/coverage-linux-without-intl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
version: v0.16.0
- name: Environment Information
run: npx envinfo
- name: Install gcovr
Expand All @@ -81,6 +81,6 @@ jobs:
- name: Clean tmp
run: rm -rf coverage/tmp && rm -rf out
- name: Upload
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
with:
directory: ./coverage
4 changes: 2 additions & 2 deletions .github/workflows/coverage-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
version: v0.16.0
- name: Environment Information
run: npx envinfo
- name: Install gcovr
Expand All @@ -81,6 +81,6 @@ jobs:
- name: Clean tmp
run: rm -rf coverage/tmp && rm -rf out
- name: Upload
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
with:
directory: ./coverage
2 changes: 1 addition & 1 deletion .github/workflows/coverage-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,6 @@ jobs:
- name: Clean tmp
run: npx rimraf ./coverage/tmp
- name: Upload
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
with:
directory: ./coverage
3 changes: 2 additions & 1 deletion .github/workflows/label-flaky-test-issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,5 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NUMBER: ${{ github.event.issue.number }}
run: gh issue edit "$NUMBER" --repo ${{ github.repository }} --add-label "${{ steps.extract-labels.outputs.LABELS }}"
LABELS: ${{ steps.extract-labels.outputs.LABELS }}
run: gh issue edit "$NUMBER" --repo "$GITHUB_REPOSITORY" --add-label "$LABELS"
6 changes: 4 additions & 2 deletions .github/workflows/linters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,10 @@ jobs:
/tools/lint-pr-url.mjs
/doc/api/
sparse-checkout-cone-mode: false
# GH Actions squashes all PR commits, HEAD^ refers to the base branch.
- run: git diff HEAD^ HEAD -G"pr-url:" -- "*.md" | ./tools/lint-pr-url.mjs ${{ github.event.pull_request.html_url }}
# We've checked out a merge commit, HEAD^ refers to the base branch.
- run: git diff HEAD^ HEAD -G"pr-url:" -- "*.md" | ./tools/lint-pr-url.mjs "$PR_URL"
env:
PR_URL: ${{ github.event.pull_request.html_url }}
lint-readme:
runs-on: ubuntu-slim
steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:

steps:
- name: Harden Runner
uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs

Expand Down Expand Up @@ -76,6 +76,6 @@ jobs:

# Upload the results to GitHub's code scanning dashboard.
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3
uses: github/codeql-action/upload-sarif@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1
with:
sarif_file: results.sarif
2 changes: 1 addition & 1 deletion .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
if: github.repository == 'nodejs/node'
runs-on: ubuntu-slim
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 210
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-internet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
version: v0.16.0
- name: Environment Information
run: npx envinfo
- name: Build
Expand Down
82 changes: 82 additions & 0 deletions .github/workflows/test-linux-quic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Test Linux (with QUIC)

on:
workflow_dispatch:
pull_request:
paths:
- .github/workflows/test-linux-quic.yml
- configure.py
- node.gyp
- node.gypi
- deps/ngtcp2/**
- deps/nghttp3/**
- deps/openssl/**
- src/quic/**
- src/node_bob*
- lib/quic.js
- lib/http3.js
- lib/internal/quic/**
- lib/stream/iter.js
- lib/internal/streams/iter/**
- test/cctest/test_quic_*
- test/common/quic*
- test/common/quic/**
- test/parallel/*quic*
- test/parallel/test-stream-iter-*
types: [opened, synchronize, reopened, ready_for_review]

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
PYTHON_VERSION: '3.14'
FLAKY_TESTS: keep_retrying
CLANG_VERSION: '19'
CC: ${{ (github.base_ref == 'main' || github.ref_name == 'main') && 'sccache' || '' }} clang-19
CXX: ${{ (github.base_ref == 'main' || github.ref_name == 'main') && 'sccache' || '' }} clang++-19
SCCACHE_GHA_ENABLED: ${{ github.base_ref == 'main' || github.ref_name == 'main' }}
SCCACHE_IDLE_TIMEOUT: '0'
RUSTC_VERSION: '1.82'

permissions:
contents: read

jobs:
test-quic:
if: github.event.pull_request.draft == false
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
path: node
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./node/.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Install Rust ${{ env.RUSTC_VERSION }}
run: |
rustup override set "$RUSTC_VERSION"
rustup --version
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ env.PYTHON_VERSION }}
allow-prereleases: true
- name: Set up sccache
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
- name: Environment Information
run: npx envinfo
- name: Build
working-directory: node
run: make build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn --v8-enable-temporal-support --experimental-quic"
- name: Test
working-directory: node
run: make test-ci -j1 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9"
- name: Ensure running tests did not cause any change in the tree
working-directory: node
run: git add -A && git diff --name-only --exit-code --staged
2 changes: 1 addition & 1 deletion .github/workflows/test-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
version: v0.16.0
- name: Environment Information
run: npx envinfo
- name: Build
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.12.0
version: v0.16.0
- name: Environment Information
run: npx envinfo
# The `npm ci` for this step fails a lot as part of the Test step. Run it
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-v8.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
with:
persist-credentials: false
- name: Cache node modules and update-v8
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
id: cache-v8-npm
env:
cache-name: cache-v8-npm
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -785,6 +785,8 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
`C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C`
* **Ruy Adorno** <<ruyadorno@hotmail.com>>
`108F52B48DB57BB0CC439B2997B01419BD92F80A`
* **Stewart X Addison** <<sxa@ibm.com>>
`655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD`
* **Ulises Gascón** <<ulisesgascongonzalez@gmail.com>>
`A363A499291CBBC940DD62E41F10027AF002F8B0`

Expand All @@ -802,6 +804,7 @@ gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F
gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga
gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau
gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno
gpg --keyserver hkps://keys.openpgp.org --recv-keys 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD # Stewart X Addison
gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón
```

Expand Down
15 changes: 15 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,21 @@ the community they pose.
responsibility to properly handle errors by attaching appropriate
`'error'` event listeners to EventEmitters that may emit errors.

#### Exceptions Thrown by Application Callbacks (CWE-248)

* Node.js trusts the application code it is asked to run, including callbacks
that are invoked by Node.js APIs. If an application callback throws an
uncaught exception, any resulting crash is not considered a vulnerability in
Node.js.
* For example, [CVE-2026-21637](https://www.cve.org/CVERecord?id=CVE-2026-21637)
was triaged as a Node.js vulnerability, but scenarios that require TLS
callbacks such as `ALPNCallback`, `SNICallback`, or `pskCallback` to throw
are outside the Node.js threat model. Future reports of similar issues,
where the crash depends on application callbacks throwing uncaught
exceptions, will not be treated as Node.js vulnerabilities. It is the
application's responsibility to handle unexpected callback input and report
errors without throwing uncaught exceptions.

#### Permission Model Boundaries (`--permission`)

The Node.js [Permission Model](https://nodejs.org/api/permissions.html)
Expand Down
53 changes: 53 additions & 0 deletions benchmark/buffers/buffer-tostring-utf8-latin1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
'use strict';

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

const bench = common.createBenchmark(main, {
size: [64, 1024, 16384, 262144, 4194304],
content: ['ascii', 'latin1', 'utf8_mixed', 'latin1_then_cjk'],
n: [1e4],
});

function buildBuffer(kind, size) {
if (kind === 'ascii') {
return Buffer.alloc(size, 0x61);
}
if (kind === 'latin1') {
const pair = Buffer.from([0xC3, 0xA9]);
const buf = Buffer.alloc(size);
for (let i = 0; i + 2 <= size; i += 2) pair.copy(buf, i);
return buf;
}
if (kind === 'utf8_mixed') {
const cjk = Buffer.from([0xE4, 0xB8, 0xAD]);
const buf = Buffer.alloc(size);
let i = 0;
while (i + 4 <= size) {
buf[i++] = 0x61;
cjk.copy(buf, i);
i += 3;
}
return buf;
}
if (kind === 'latin1_then_cjk') {
const pair = Buffer.from([0xC3, 0xA9]);
const cjk = Buffer.from([0xE4, 0xB8, 0xAD]);
const buf = Buffer.alloc(size);
const mid = (size >> 1) & ~1;
for (let i = 0; i + 2 <= mid; i += 2) pair.copy(buf, i);
cjk.copy(buf, mid);
for (let i = mid + 3; i + 2 <= size; i += 2) pair.copy(buf, i);
return buf;
}
throw new Error('unknown content: ' + kind);
}

function main({ n, size, content }) {
const buf = buildBuffer(content, size);

bench.start();
for (let i = 0; i < n; i++) {
buf.toString('utf8');
}
bench.end(n);
}
Loading
Loading