v18.8.0 release proposal
2022-08-16, Version 18.8.0 (Current), @danielleadams
Notable changes
bootstrap: implement run-time user-land snapshots via --build-snapshot and --snapshot-blob
This patch introduces --build-snapshot
and --snapshot-blob
options for creating and using user land snapshots.
To generate a snapshot using snapshot.js as an entry point and write the snapshot blob to snapshot.blob:
echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js
node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
To restore application state from snapshot.blob, with index.js as the entry point script for the deserialized application:
echo "console.log(globalThis.foo)" > index.js
node --snapshot-blob snapshot.blob index.js
# => I am from the snapshot
Users can also use the v8.startupSnapshot
API to specify an entry point at snapshot building time, thus avoiding the need of an additional entry script at deserialization time:
echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
node --snapshot-blob snapshot.blob
# => I am from the snapshot
Contributed by Joyee Cheung in #38905
Other notable changes
- crypto:
- doc:
-
http:
- (SEMVER-MINOR) make idle http parser count configurable (theanarkh) #43974
-
net:
- (SEMVER-MINOR) add local family (theanarkh) #43975
- src:
-
tls:
-
(SEMVER-MINOR) pass a valid socket on
tlsClientError
(Daeyeon Jeong) #44021
-
(SEMVER-MINOR) pass a valid socket on
-
worker:
- deprecate
--trace-atomics-wait
(Keyhan Vakil) #44093
- deprecate
Commits
- [
83a7ffe71e
] - assert: addgetCalls
andreset
to callTracker (Moshe Atlow) #44191 - [
fb5884a3af
] - assert: add assert.Snapshot (Moshe Atlow) #44095 - [
98fa488066
] - bootstrap: check more metadata when loading the snapshot (Joyee Cheung) #44132 - [
bd27b8b8d2
] - bootstrap: turn on FunctionCodeHandling::kKeep in the snapshot builder (Joyee Cheung) #44104 - [
2178f1772f
] - bootstrap: support more builtins in the embedded code cache (Joyee Cheung) #44018 - [
54c8339e94
] - (SEMVER-MINOR) bootstrap: clean up warning setup during serialization (Joyee Cheung) #38905 - [
31589b50fd
] - (SEMVER-MINOR) bootstrap: implement --snapshot-blob and --build-snapshot (Joyee Cheung) #38905 - [
bb346eaaa1
] - build: enable pointer authentication for branch protection on arm64 (Jeremiah Gowdy) #43200 - [
5e1ab72a98
] - build: add workflow to label flaky-test platform (Rafael Gonzaga) #44042 - [
2b89d11a2b
] - build: optimized and fixed building configuration to Android (BuShe) #44016 - [
befe01cac4
] - build: allow test-internet on forks if not scheduled (Rich Trott) #44073 - [
273c53247c
] - build: skip test-internet run on forks (Rich Trott) #44054 - [
45dcd5c8f6
] - (SEMVER-MINOR) crypto: allow zero-length IKM in HKDF and in webcrypto PBKDF2 (Filip Skokan) #44201 - [
521ad0e476
] - (SEMVER-MINOR) crypto: allow zero-length secret KeyObject (Filip Skokan) #44201 - [
05bf817e72
] - crypto: fix webcrypto deriveBits validations (Filip Skokan) #44173 - [
02bcf13d09
] - crypto: fix webcrypto EC key namedCurve validation errors (Filip Skokan) #44172 - [
a60ae674db
] - crypto: fix webcrypto generateKey() AES key length validation error (Filip Skokan) #44170 - [
90f3c5e74f
] - crypto: fix webcrypto operation errors to be OperationError (Filip Skokan) #44171 - [
c18c64665b
] - deps: update corepack to 0.12.3 (Node.js GitHub Bot) #44229 - [
c9602fa2e5
] - deps: upgrade npm to 8.17.0 (npm team) #44205 - [
273014bd04
] - deps: update undici to 5.8.2 (Node.js GitHub Bot) #44187 - [
14b34e56f0
] - deps: update undici to 5.8.1 (Node.js GitHub Bot) #44158 - [
7d89e1b4b3
] - deps: update corepack to 0.12.2 (Node.js GitHub Bot) #44159 - [
6256bd5b35
] - deps: V8: cherry-pick 9861ce1deae2 (Milad Fa) #44115 - [
646417cdfe
] - deps: remove unnecessary file (Brian White) #44133 - [
d6ebc7577e
] - deps: upgrade npm to 8.16.0 (npm team) #44119 - [
6cfb1ac419
] - deps: upgrade base64 to dc6a41ce36e (Brian White) #44032 - [
6bf688d1d8
] - deps: upgrade npm to 8.15.1 (npm team) #44013 - [
c900bc1cdc
] - deps: cherry-pick 00704f5a from V8 upstream (Keyhan Vakil) #43921 - [
741402daff
] - doc: fix added version for readable.closed/destroyed (Matthew Peveler) #44033 - [
46c92c138c
] - doc: improved building doc for Android (BuShe) #44166 - [
a127c48a63
] - doc: add MoLow to collaborators (Moshe Atlow) #44214 - [
60de663334
] - doc: update tags in adding-new-napi-api.md (Chengzhong Wu) #44190 - [
03321cb9c8
] - doc: fix typo in diagnostics_channel (Evan Lucas) #44199 - [
eded43c273
] - doc: add Retry CI in collaborator guide (Livia Medeiros) #44130 - [
51b4a1bf96
] - doc: add performance note to--enable-source-maps
docs (Saurabh Daware) #43817 - [
f461d79a2a
] - doc: remove unused code in call tracker example (Colin Ihrig) #44127 - [
1f33319d13
] - doc: add theanarkh to collaborators (theanarkh) #44131 - [
29bbabdaf6
] - doc: clarify tls.tlsSocket.getCipher().version (Adam Majer) #44086 - [
5adf039bff
] - doc: update repository list in onboarding doc (Rich Trott) #44089 - [
1a9ae9160a
] - doc: add ErickWendel to collaborators (Erick Wendel) #44088 - [
df91dc11fc
] - doc: update collaborator email (Ruy Adorno) #44044 - [
cd64813c5a
] - doc: copyedittest.md
(Antoine du Hamel) #44061 - [
a6c6e88030
] - doc: add kvakil to triagers (Keyhan Vakil) #43996 - [
c7fdc53db8
] - doc: clarify part of onboarding guide regarding adding to teams (Darshan Sen) #44024 - [
dd34dd934d
] - doc: fix code examples incrypto.md
(Antoine du Hamel) #44053 - [
9fd426231d
] - doc: claim ABI version for Electron 21 (Keeley Hammond) #44034 - [
d1e69894c0
] - doc: remove old reference from crypto/README.md (Tobias Nießen) #44012 - [
385366533f
] - doc: add missing env vars to man page (cola119) #43492 - [
bf9bceff89
] - doc: list supported MODP groups explicitly (Tobias Nießen) #43986 - [
ad537e6e95
] - doc: fix typo in packages.md (Dominic Saadi) #44005 - [
9856fc72f8
] - doc: fix typos intest.md
(Antoine du Hamel) #43997 - [
51db3527e8
] - doc: add missing test runner option (Moshe Atlow) #43989 - [
68c4e45bae
] - doc,worker: deprecate--trace-atomics-wait
(Keyhan Vakil) #44093 - [
fd804309cb
] - errors: refactor to use optional chaining (SindreXie) #44184 - [
c975427fd5
] - esm: do not bind loader hook functions (Antoine du Hamel) #44122 - [
c2ea22f427
] - esm: fix loader hooks accepting too many arguments (Jacob Smith) #44109 - [
c0d2098df4
] - esm: move package config helpers (Geoffrey Booth) #43967 - [
eac875e5c9
] - events: use bitset to save memory (Basit Chonka) #43700 - [
f5fcd49882
] - http: fix error message when specifying headerTimeout for createServer (Nick Sia) #44163 - [
ed36b0dfa7
] - http: trace http request / response (theanarkh) #44102 - [
0b909a446c
] - (SEMVER-MINOR) http: make idle http parser count configurable (theanarkh) #43974 - [
cd8704d771
] - http: reuse socket only when it is drained (ywave620) #43902 - [
3af44c6cb6
] - http: do not leak error listeners (Paolo Insogna) #43587 - [
1c51d83ac8
] - lib: fix diagnostics channel (theanarkh) #44154 - [
3dbbaa059f
] - lib: pass env variables to child process on z/OS (alexcfyung) #42255 - [
a0a7bc1662
] - lib: add missing env vars to --help (cola119) #43492 - [
1a31e38361
] - lib: addPromise
methods toavoid-prototype-pollution
lint rule (Antoine du Hamel) #43849 - [
40c0f5583f
] - meta: update AUTHORS (Node.js GitHub Bot) #44231 - [
601b03de98
] - meta: update AUTHORS (Node.js GitHub Bot) #44161 - [
0de278c056
] - meta: add codeowner for src/node_snapshot* (Chengzhong Wu) #44113 - [
62fd899415
] - meta: update AUTHORS (Node.js GitHub Bot) #44065 - [
c4e8f951f3
] - meta: shorten PowerShell snippet for bug-report template (NicoNekoru) #44011 - [
3f32526561
] - module: protect against prototype mutation (Antoine du Hamel) #44007 - [
2a75bcee26
] - net: remove unused callback (theanarkh) #44204 - [
5cb5c65f4f
] - (SEMVER-MINOR) net: create diagnostics channels lazily (Joyee Cheung) #38905 - [
3348ddef02
] - (SEMVER-MINOR) net: add local family (theanarkh) #43975 - [
e6a47e85d2
] - net, dns: socket should handle its output as input (Adam Majer) #44083 - [
6a4e99bc1f
] - (SEMVER-MINOR) net,tls: pass a valid socket ontlsClientError
(Daeyeon Jeong) #44021 - [
9fedf35d5e
] - perf_hooks: fix gc elapsed time (theanarkh) #44058 - [
ceb62e5be8
] - src: remove usage on ScriptCompiler::CompileFunctionInContext (Chengzhong Wu) #44198 - [
ce5de6e743
] - src: fix --heapsnapshot-near-heap-limit error hint (Chengzhong Wu) #44216 - [
3359c2c6a3
] - src: iterate over base objects to prepare for snapshot (Joyee Cheung) #44192 - [
c51d85e25a
] - src: fix cppgc incompatibility in v8 (Shelley Vohr) #43521 - [
70bb6a35ca
] - src: disambiguate terms used to refer to builtins and addons (Joyee Cheung) #44135 - [
8082c24c60
] - src: prevent copying ArrayBufferViewContents (Keyhan Vakil) #44091 - [
9dc33f1923
] - (SEMVER-MINOR) src: add detailed embedder process initialization API (Anna Henningsen) #44121 - [
ebff06b8de
] - src: remove usages of GetBackingStore in crypto (Keyhan Vakil) #44079 - [
c7373b73e3
] - src: remove unowned usages of GetBackingStore (Keyhan Vakil) #44080 - [
8a79636528
] - src: remove usages of GetBackingStore in node-api (Keyhan Vakil) #44075 - [
34a92d15b7
] - src: remove usages of GetBackingStore in modules (Keyhan Vakil) #44076 - [
ddf9c165d1
] - src: remove usages of GetBackingStore in WASI (Keyhan Vakil) #44077 - [
43e8be03b6
] - src: remove usages of GetBackingStore in startup (Keyhan Vakil) #44078 - [
975931dad5
] - src: nest namespace report in namespace node (Chengzhong Wu) #44069 - [
b935c4f1c9
] - src: use a typed array internally for process._exiting (Darshan Sen) #43883 - [
6343e1d110
] - src: fix bug in GetErrorSource() (Tobias Nießen) #44019 - [
b4677f74fa
] - src: fix to use replacement character (Kohei Ueno) #43999 - [
11960235ed
] - src: improve SPKAC::ExportChallenge() (Tobias Nießen) #44002 - [
ca24eace1c
] - src: fix typo in src/README.md (Anna Henningsen) #44009 - [
2c44730d97
] - src: remove unnecessary cast in crypto_sig.cc (Tobias Nießen) #44001 - [
08f6f1c5b0
] - src,buffer: remove unused chars_written parameter (Keyhan Vakil) #44092 - [
40ef04c740
] - src,fs: refactor duplicated code in fs.readdir (Daeyeon Jeong) #43204 - [
63b5c49871
] - src,lib: print prinstine source when source map source not found (Chengzhong Wu) #44052 - [
f7a6235609
] - (SEMVER-MINOR) src,lib: print source map error source on demand (Chengzhong Wu) #43875 - [
0e67128e6c
] - src,test: fix typos (SADIK KUZU) #44110 - [
96c3373dbe
] - stream: improve views validation onBYOBRequest
(Daeyeon Jeong) #44155 - [
e057480e2c
] - stream: update TextEncoderStream to align the latest spec (Kohei Ueno) #44101 - [
900c4c03b9
] - test: reduce http-server-request-timeouts-mixed flakiness (Nick Sia) #44169 - [
a82e7683ed
] - test: remove cjs loader from stack traces (Geoffrey Booth) #44197 - [
64300a6ce4
] - test: add filesystem check totest-fs-stat-date.mjs
(Livia Medeiros) #44174 - [
ee394f3adc
] - test: mark connection leak test flaky on IBM i (Richard Lau) #44215 - [
b0e3e69686
] - test: usemustSucceed
instead ofmustCall
withassert.ifError
(MURAKAMI Masahiko) #44196 - [
c5c3c5ead8
] - test: update WPT runner (Filip Skokan) #43455 - [
7104210024
] - test: update wpt url status (Kohei Ueno) #44175 - [
fad0630c73
] - test: update wasm/jsapi web platform tests (Yagiz Nizipli) #44100 - [
ba1915dfb2
] - test: update hr-time web platform tests (Yagiz Nizipli) #44100 - [
bcb94aad53
] - test: update console web platform tests (Yagiz Nizipli) #44100 - [
fcd5f7a235
] - test: move tests with many workers to sequential (Keyhan Vakil) #44139 - [
7007a9fd1b
] - test: deflake gc-http-client tests by restricting number of requests (Nick Sia) #44146 - [
41ecf71a27
] - test: move test-vm-break-on-sigint to sequential (Keyhan Vakil) #44140 - [
c75c478a28
] - test: remove test-http-client-response-timeout flaky designation (Luigi Pinca) #44145 - [
1598894886
] - test: s390x z15 accelerated zlib fixes (Adam Majer) #44117 - [
9fc95349c6
] - test: tune down parallelism for some flaky tests (Keyhan Vakil) #44090 - [
02e10a5512
] - (SEMVER-MINOR) test: test snapshotting TypeScript compiler (Joyee Cheung) #38905 - [
c5e04c5ca7
] - (SEMVER-MINOR) test: add UMD module test with marked (Joyee Cheung) #38905 - [
f27e003e22
] - test: fixinternet/test-inspector-help-page
(Daeyeon Jeong) #44025 - [
f88231815a
] - test: remove duplicate test (Luigi Pinca) #44051 - [
cbc118998a
] - test: refactor ESM tests to improve performance (Jacob Smith) #43784 - [
373523b15f
] - test: remove test-gc-http-client-timeout from flaky list (Feng Yu) #43971 - [
c939e19620
] - test: reduce loop times for preventing test from timeout (theanarkh) #43981 - [
62a0a4ce7e
] - test: fix test-cluster-concurrent-disconnect (Daeyeon Jeong) #43961 - [
f6a7019742
] - test: change misleading variable name (Tobias Nießen) #43990 - [
2f2ea4bd7e
] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #44223 - [
a36befa3de
] - test_runner: refactor to use more primordials (Antoine du Hamel) #44062 - [
b45ad007a3
] - test_runner: verbous error when entire test tree is canceled (Moshe Atlow) #44060 - [
45f580fc32
] - test_runner: empty pending tests queue post running (Moshe Atlow) #44059 - [
d8a03cce36
] - test_runner: add before/after/each hooks (Moshe Atlow) #43730 - [
24baa87957
] - test_runner: fix top leveldescribe
queuing (Moshe Atlow) #43998 - [
e2a3bf3c76
] - test_runner: graceful termination on--test
only (Moshe Atlow) #43977 - [
ad1a82368d
] - test_runner: validateconcurrency
option (Antoine du Hamel) #43976 - [
3abea4d570
] - tools: update lint-md-dependencies to rollup@2.77.3 (Node.js GitHub Bot) #44230 - [
3adecada01
] - tools: update eslint to 8.21.0 (Node.js GitHub Bot) #44162 - [
2a38896454
] - tools: update lint-md-dependencies to @rollup/plugin-commonjs@22.0.2 (Node.js GitHub Bot) #44160 - [
6c4b2e0cf4
] - tools: update undici CPE in vuln checking script (Facundo Tuesca) #44128 - [
65887b65ca
] - tools: update lint-md-dependencies to rollup@2.77.2 (Node.js GitHub Bot) #44064 - [
091d015375
] - tools: add verbose flag to find-inactive-collaborators (Rich Trott) #43964