Skip to content

Latest commit

 

History

History
1262 lines (1125 loc) · 179 KB

CHANGELOG_V15.md

File metadata and controls

1262 lines (1125 loc) · 179 KB

Node.js 15 ChangeLog

Current
15.5.0
15.4.0
15.3.0
15.2.1
15.2.0
15.1.0
15.0.1
15.0.0

2020-12-22, Version 15.5.0 (Current), @targos

Notable Changes

Extended support for AbortSignal in child_process and stream

The following APIs now support an AbortSignal in their options object:

  • child_process.spawn()

Calling .abort() on the corresponding AbortController is similar to calling .kill() on the child process except the error passed to the callback will be an AbortError:

const controller = new AbortController();
const { signal } = controller;
const grep = spawn('grep', ['ssh'], { signal });
grep.on('error', (err) => {
  // This will be called with err being an AbortError if the controller aborts
});
controller.abort(); // stops the process
  • new stream.Writable() and new stream.Readable()

Calling .abort() on the corresponding AbortController will behave the same way as calling .destroy(new AbortError()) on the stream:

const { Readable } = require('stream');
const controller = new AbortController();
const read = new Readable({
  read(size) {
    // ...
  },
  signal: controller.signal
});
// Later, abort the operation closing the stream
controller.abort();

Contributed by Benjamin Gruenbaum #36431, #36432.

BigInt support in querystring.stringify()

If querystring.stringify() is called with an object that contains BigInt values, they will now be serialized to their decimal representation instead of the empty string:

const querystring = require('querystring');
console.log(querystring.stringify({ bigint: 2n ** 64n }));
// Prints: bigint=18446744073709551616

Contributed by Darshan Sen #36499.

Additions to the C++ embedder APIs

A new IsolateSettingsFlag is available for those calling SetIsolateUpForNode(): SHOULD_NOT_SET_PREPARE_STACK_TRACE_CALLBACK can be used to prevent Node.js from setting a custom callback to prepare stack traces.

Contributed by Shelley Vohr #36447.


Added node::GetEnvironmentIsolateData() and node::GetArrayBufferAllocator() to respectively get the current IsolateData* and, from it, the current Node.js ArrayBufferAllocator if there is one.

Contributed by Anna Henningsen #36441.

New core collaborator

With this release, we welcome a new Node.js core collaborator:

Commits

Semver-minor commits

  • [e449571230] - (SEMVER-MINOR) child_process: add signal support to spawn (Benjamin Gruenbaum) #36432
  • [25d7e90386] - (SEMVER-MINOR) http: use autoDestroy: true in incoming message (Daniele Belardi) #33035
  • [5481be8cbd] - (SEMVER-MINOR) lib: support BigInt in querystring.stringify (raisinten) #36499
  • [036ed1fafc] - (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #36441
  • [e23309486b] - (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #36447
  • [6ecbc1dcb3] - (SEMVER-MINOR) stream: support abortsignal in constructor (Benjamin Gruenbaum) #36431

Semver-patch commits

  • [1330995b80] - build,lib,test: change whitelist to allowlist (Michaël Zasso) #36406
  • [dc8d1a74a6] - deps: upgrade npm to 7.3.0 (Ruy Adorno) #36572
  • [b6a31f0a70] - deps: update archs files for OpenSSL-1.1.1i (Myles Borins) #36520
  • [5b49807c3f] - deps: re-enable OPENSSL_NO_QUIC guards (James M Snell) #36520
  • [309e2971a2] - deps: various quic patches from akamai/openssl (Todd Short) #36520
  • [27fb651cbc] - deps: upgrade openssl sources to 1.1.1i (Myles Borins) #36520
  • [1f43aadf90] - deps: update patch and docs for openssl update (Myles Borins) #36520
  • [752c94d202] - deps: fix npm doctor tests for pre-release node (nlf) #36543
  • [b0393fa2ed] - deps: upgrade npm to 7.2.0 (Myles Borins) #36543
  • [cb4652e91d] - deps: update to c-ares 1.17.1 (Danny Sonnenschein) #36207
  • [21fbcb6f81] - deps: V8: backport 4bf051d536a1 (Anna Henningsen) #36482
  • [30fe0ff681] - deps: upgrade npm to 7.1.2 (Darcy Clarke) #36487
  • [0baa610c3e] - deps: upgrade npm to 7.1.1 (Ruy Adorno) #36459
  • [5929b08851] - deps: upgrade npm to 7.1.0 (Ruy Adorno) #36395
  • [deaafd5788] - dns: refactor to use more primordials (Antoine du Hamel) #36314
  • [e30af7be33] - fs: refactor to use optional chaining (ZiJian Liu) #36524
  • [213dcd7930] - http: add test for incomingmessage destroy (Daniele Belardi) #33035
  • [36b4ddd382] - http: use standard args order in IncomingMEssage onError (Daniele Belardi) #33035
  • [60b5e696fc] - http: remove trailing space (Daniele Belardi) #33035
  • [f11a648d8e] - http: add comments in _http_incoming (Daniele Belardi) #33035
  • [4b81d79b58] - http: fix lint error in incoming message (Daniele Belardi) #33035
  • [397e31e25f] - http: reafactor incoming message destroy (Daniele Belardi) #33035
  • [9852ebca8d] - http: do not loop over prototype in Agent (Michaël Zasso) #36410
  • [e46a46a4cd] - inspector: refactor to use more primordials (Antoine du Hamel) #36356
  • [728f512c7d] - lib: make safe primordials safe to iterate (Antoine du Hamel) #36391
  • [f368d697cf] - Revert "perf_hooks: make PerformanceObserver an AsyncResource" (Nicolai Stange) #36343
  • [e2ced0d401] - perf_hooks: invoke performance_entry_callback via MakeSyncCallback() (Nicolai Stange) #36343
  • [7c903ec6c8] - repl: disable blocking completions by default (Anna Henningsen) #36564
  • [d38a0ec93e] - src: remove unnecessary ToLocalChecked node_errors (Daniel Bevenius) #36547
  • [bbc0d14cd2] - src: use correct microtask queue for checkpoints (Anna Henningsen) #36581
  • [7efb3111e8] - src: remove unnecessary ToLocalChecked call (Daniel Bevenius) #36523
  • [68687d3419] - src: remove empty name check in node_env_var.cc (raisinten) #36133
  • [1b4984de98] - src: remove duplicate V macros in node_v8.cc (Daniel Bevenius) #36454
  • [5ff7f42e65] - src: use correct outer Context’s microtask queue (Anna Henningsen) #36482
  • [96c095f237] - src: guard against env != null in node_errors.cc (Anna Henningsen) #36414
  • [4f3d7bb417] - src: introduce convenience node::MakeSyncCallback() (Nicolai Stange) #36343
  • [e59788262c] - src: add typedef for CleanupHookCallback callback (Daniel Bevenius) #36442
  • [2a60e3b9df] - src: fix indentation in memory_tracker-inl.h (Daniel Bevenius) #36425
  • [210390f6fd] - src: remove identical V macro (Daniel Bevenius) #36427
  • [02afe586aa] - src: use using declarations consistently (Daniel Bevenius) #36365
  • [169406b7d7] - src: add missing context scopes (Anna Henningsen) #36413
  • [3f33d0bcda] - stream: fix pipe deadlock when starting with needDrain (Robert Nagy) #36563
  • [d8b5b9499c] - stream: accept iterable as a valid first argument (ZiJian Liu) #36479
  • [58319d5336] - tls: forward new SecureContext options (Alba Mendez) #36416
  • [fa40366276] - util: simplify constructor retrieval in inspect() (Rich Trott) #36466
  • [cc544dbfaa] - util: fix instanceof checks with null prototypes during inspection (Ruben Bridgewater) #36178
  • [13d6597b4b] - util: fix module prefixes during inspection (Ruben Bridgewater) #36178
  • [20ecc82569] - worker: fix broadcast channel SharedArrayBuffer passing (Anna Henningsen) #36501
  • [56fe9bae26] - worker: refactor MessagePort entanglement management (Anna Henningsen) #36345

Documentation commits

Other commits

2020-12-09, Version 15.4.0 (Current), @danielleadams

Notable Changes

  • child_processes:
    • add AbortSignal support (Benjamin Gruenbaum) #36308
  • deps:
    • update ICU to 68.1 (Michaël Zasso) #36187
  • events:
    • support signal in EventTarget (Benjamin Gruenbaum) #36258
    • graduate Event, EventTarget, AbortController (James M Snell) #35949
  • http:
    • enable call chaining with setHeader() (pooja d.p) #35924
  • module:
    • add isPreloading indicator (James M Snell) #36263
  • stream:
    • support abort signal (Benjamin Gruenbaum) #36061
    • add FileHandle support to Read/WriteStream (Momtchil Momtchev) #35922
  • worker:
    • add experimental BroadcastChannel (James M Snell) #36271

Commits

  • [e79bdc313a] - assert: refactor to use more primordials (Antoine du Hamel) #36234
  • [2344e3e360] - benchmark: changed fstat to fstatSync (Narasimha Prasanna HN) #36206
  • [ca8db41151] - benchmark,child_process: remove failing benchmark parameter (Antoine du Hamel) #36295
  • [9db9be774b] - buffer: refactor to use primordials instead of Array#reduce (Antoine du Hamel) #36392
  • [8d8d2261a5] - buffer: refactor to use more primordials (Antoine du Hamel) #36166
  • [74adc441c4] - build: fix typo in Makefile (raisinten) #36176
  • [224a6471cc] - (SEMVER-MINOR) child_process: add AbortSignal support (Benjamin Gruenbaum) #36308
  • [4ca1bd8806] - child_process: refactor to use more primordials (Zijian Liu) #36269
  • [841e8f444e] - crypto: fix "Invalid JWK" error messages (Filip Skokan) #36200
  • [278862aeb9] - deps: upgrade npm to 7.0.15 (Ruy Adorno) #36293
  • [66bc2067ce] - deps: V8: cherry-pick 86991d0587a1 (Benjamin Coe) #36254
  • [095cef2c11] - deps: update ICU to 68.1 (Michaël Zasso) #36187
  • [8d69d8387e] - dgram: refactor to use more primordials (Antoine du Hamel) #36286
  • [bef550a50c] - doc: add Powershell oneliner to get Windows version (Michael Bashurov) #30289
  • [2649c384c6] - doc: add version metadata to timers/promises (Colin Ihrig) #36378
  • [0401ffbfb6] - doc: add process for handling premature disclosure (Michael Dawson) #36155
  • [3e5fcda13e] - doc: add table header in intl.md (Rich Trott) #36261
  • [65d89fdd69] - doc: adding example to Buffer.isBuffer method (naortedgi) #36233
  • [03cf8dbc0e] - doc: fix typo in events.md (Luigi Pinca) #36231
  • [b176d61e8c] - doc: fix --experimental-wasm-modules text location (Colin Ihrig) #36220
  • [44c4aaddad] - doc: stabilize subpath patterns (Guy Bedford) #36177
  • [fdf5d851d0] - doc: add missing version to update cmd (Ruy Adorno) #36204
  • [186ad24fdf] - doc: cleanup events.md structure (James M Snell) #36100
  • [c14512b9a5] - errors: display original symbol name (Benjamin Coe) #36042
  • [855a85c124] - (SEMVER-MINOR) events: support signal in EventTarget (Benjamin Gruenbaum) #36258
  • [dc1930923b] - (SEMVER-MINOR) events: graduate Event, EventTarget, AbortController (James M Snell) #35949
  • [537e5cbf51] - fs: move method definition from header (Yash Ladha) #36256
  • [744b8aa807] - fs: pass ERR_DIR_CLOSED asynchronously to dir.close (Zijian Liu) #36243
  • [c04a2df185] - fs: refactor to use more primordials (Antoine du Hamel) #36196
  • [58abdcaceb] - (SEMVER-MINOR) http: enable call chaining with setHeader() (pooja d.p) #35924
  • [cedf51f3ce] - http2: refactor to use more primordials (Antoine du Hamel) #36357
  • [5f41f1b19e] - http2: check write not scheduled in scope destructor (David Halls) #36241
  • [4127eb2405] - https: add abortcontroller test (Benjamin Gruenbaum) #36307
  • [c2938bde6c] - lib: add uncurried accessor properties to primordials (ExE Boss) #36329
  • [f73a0a8069] - lib: fix typo in internal/errors.js (raisinten) #36426
  • [617cb58cc8] - lib: refactor primordials.uncurryThis (Antoine du Hamel) #36221
  • [cc18907ec4] - module: refactor to use more primordials (Antoine du Hamel) #36348
  • [d4de7c7eb9] - (SEMVER-MINOR) module: add isPreloading indicator (James M Snell) #36263
  • [8611b8f98a] - net: refactor to use more primordials (Antoine du Hamel) #36303
  • [2a24096720] - os: refactor to use more primordials (Antoine du Hamel) #36284
  • [0e7f0c6d27] - path: refactor to use more primordials (Antoine du Hamel) #36302
  • [ea46ca8cbf] - perf_hooks: refactor to use more primordials (Antoine du Hamel) #36297
  • [a9ac86d1ee] - policy: refactor to use more primordials (Antoine du Hamel) #36210
  • [39d0ceda48] - process: refactor to use more primordials (Antoine du Hamel) #36212
  • [ab084c199e] - querystring: refactor to use more primordials (Antoine du Hamel) #36315
  • [d29199ef82] - quic: refactor to use more primordials (Antoine du Hamel) #36211
  • [b885409e48] - readline: refactor to use more primordials (Antoine du Hamel) #36296
  • [9cb53f635a] - repl: refactor to use more primordials (Antoine du Hamel) #36264
  • [8dadaa652e] - src: remove some duplication in DeserializeProps (Daniel Bevenius) #36336
  • [a03aa0a6b2] - src: rename AliasedBufferInfo->AliasedBufferIndex (Daniel Bevenius) #36339
  • [e7b2d91e04] - src: use transferred consistently (Daniel Bevenius) #36340
  • [6ebb98af11] - src: use ToLocal in DeserializeProperties (Daniel Bevenius) #36279
  • [47397ffd56] - src: update node.rc file description (devsnek) #36197
  • [cfc8ec18db] - src: fix label indentation (Rich Trott) #36213
  • [197ba21279] - (SEMVER-MINOR) stream: support abort signal (Benjamin Gruenbaum) #36061
  • [6033d30361] - (SEMVER-MINOR) stream: add FileHandle support to Read/WriteStream (Momtchil Momtchev) #35922
  • [a15addc153] - string_decoder: refactor to use more primordials (Antoine du Hamel) #36358
  • [b39d150e60] - test: fix comment misspellings of transferred (Rich Trott) #36360
  • [a7e794d1bf] - test: fix flaky test-http2-respond-file-error-pipe-offset (Rich Trott) #36305
  • [1091a658e1] - test: fix bootstrap test (Benjamin Gruenbaum) #36418
  • [fbcb72a665] - test: increase coverage for readline (Zijian Liu) #36389
  • [22028aae54] - test: skip flaky parts of broadcastchannel test on Windows (Rich Trott) #36386
  • [faca2b829e] - test: fix test-worker-broadcastchannel-wpt (Rich Trott) #36353
  • [ea09da492c] - test: fix typo in comment (inokawa) #36312
  • [b61ca1bfe6] - test: replace anonymous functions by arrows (Aleksandr Krutko) #36125
  • [2c7358ef43] - test: fix flaky sequential/test-fs-watch (Rich Trott) #36249
  • [b613950016] - test: increase coverage for util.inspect() (Rich Trott) #36228
  • [69a8f05488] - test: improve test coverage SourceMap API (Juan José Arboleda) #36089
  • [44d6d0bf0d] - test: fix missed warning for non-experimental AbortController (James M Snell) #36240
  • [29b5236256] - timers: reject with AbortError on cancellation (Benjamin Gruenbaum) #36317
  • [b20409e985] - tls: refactor to use more primordials (Antoine du Hamel) #36266
  • [f317bba034] - tls: permit null as a cipher value (Rich Trott) #36318
  • [9ae59c847a] - tools: upgrade to @babel/eslint-parser 7.12.1 (Antoine du Hamel) #36321
  • [e798770803] - tools: refloat 7 Node.js patches to cpplint.py (Rich Trott) #36324
  • [a8b95cfcb2] - tools: bump cpplint to 1.5.4 (Rich Trott) #36324
  • [754b7a76b1] - tools: remove bashisms from macOS release scripts (Antoine du Hamel) #36121
  • [2868ffb331] - tools: remove bashisms from release script (Antoine du Hamel) #36123
  • [8cf1addaa8] - tools: update stability index linking logic (Rich Trott) #36280
  • [d95ae65986] - tools: update highlight.js to 10.1.2 (Myles Borins) #36309
  • [5935ccc11c] - tools: fix undeclared identifier FALSE (Antoine du Hamel) #36276
  • [a2da7ba914] - tools: use using-declaration consistently (Daniel Bevenius) #36245
  • [82c1e39c4a] - tools: refloat 7 Node.js patches to cpplint.py (Rich Trott) #36235
  • [bcf7393412] - tools: bump cpplint to 1.5.3 (Rich Trott) #36235
  • [be11976407] - tools: enable no-nonoctal-decimal-escape lint rule (Colin Ihrig) #36217
  • [c86c2399a2] - tools: update ESLint to 7.14.0 (Colin Ihrig) #36217
  • [cfadd82cf3] - tools: refloat 7 Node.js patches to cpplint.py (Rich Trott) #36213
  • [03e8aaf613] - tools: bump cpplint.py to 1.5.2 (Rich Trott) #36213
  • [6bc007fc94] - tty: refactor to use more primordials (Zijian Liu) #36272
  • [fbd5652943] - v8: refactor to use more primordials (Antoine du Hamel) #36285
  • [8731a80439] - vm: add SafeForTerminationScopes for SIGINT interruptions (Anna Henningsen) #36344
  • [47345a1f84] - worker: refactor to use more primordials (Antoine du Hamel) #36393
  • [21c4704c7b] - worker: refactor to use more primordials (Antoine du Hamel) #36267
  • [802d44b1a9] - (SEMVER-MINOR) worker: add experimental BroadcastChannel (James M Snell) #36271
  • [4b4caada9f] - zlib: refactor to use more primordials (Antoine du Hamel) #36347

2020-11-24, Version 15.3.0 (Current), @codebytere

Notable Changes

  • [6349b1d673] - (SEMVER-MINOR) dns: add a cancel() method to the promise Resolver (Szymon Marczak) #33099
  • [9ce9b016e6] - (SEMVER-MINOR) events: add max listener warning for EventTarget (James M Snell) #36001
  • [8390f8a86b] - (SEMVER-MINOR) http: add support for abortsignal to http.request (Benjamin Gruenbaum) #36048
  • [9c6be3cc90] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #35978
  • [15ff155c12] - (SEMVER-MINOR) lib: add throws option to fs.f/l/statSync (Andrew Casey) #33716
  • [85c85d368a] - (SEMVER-MINOR) path: add path/posix and path/win32 alias modules (ExE Boss) #34962
  • [d1baae3640] - (SEMVER-MINOR) readline: add getPrompt to get the current prompt (Mattias Runge-Broberg) #33675
  • [5729478509] - (SEMVER-MINOR) src: add loop idle time in diagnostic report (Gireesh Punathil) #35940
  • [baa87c1a7d] - (SEMVER-MINOR) util: add util/types alias module (ExE Boss) #34055

Commits

  • [34aa0c868e] - assert: refactor to use more primordials (Antoine du Hamel) #35998
  • [28d710164a] - async_hooks: refactor to use more primordials (Antoine du Hamel) #36168
  • [1924255fdb] - async_hooks: fix leak in AsyncLocalStorage exit (Stephen Belanger) #35779
  • [3ee556a867] - benchmark: fix build warnings (Gabriel Schulhof) #36157
  • [fcc38a1312] - build: replace which with command -v (raisinten) #36118
  • [60874ba941] - build: try “python3” as a last resort for 3.x (Ole André Vadla Ravnås) #35983
  • [fbe210b2a1] - build: conditionally clear vcinstalldir (Brian Ingenito) #36009
  • [56f83e6876] - build: refactor configure.py to use argparse (raisinten) #35755
  • [0b70822461] - child_process: refactor to use more primordials (Antoine du Hamel) #36003
  • [e54108f2e4] - cluster: refactor to use more primordials (Antoine du Hamel) #36011
  • [272fc794b2] - crypto: fix format warning in AdditionalConfig (raisinten) #36060
  • [63a138e02f] - crypto: fix passing TypedArray to webcrypto AES methods (Antoine du Hamel) #36087
  • [4a88c73fa5] - deps: upgrade npm to 7.0.14 (nlf) #36238
  • [d16e8622a7] - deps: upgrade npm to 7.0.13 (Ruy Adorno) #36202
  • [c23ee3744f] - deps: upgrade npm to 7.0.12 (Ruy Adorno) #36153
  • [0fcbb1c0d5] - deps: V8: cherry-pick 3176bfd447a9 (Anna Henningsen) #35612
  • [27f1bc05fd] - deps: upgrade npm to 7.0.11 (Darcy Clarke) #36112
  • [8ae3ffe2be] - deps: V8: cherry-pick 1d0f426311d4 (Ole André Vadla Ravnås) #35986
  • [4b7ba11d67] - deps: V8: cherry-pick 4e077ff0444a (Ole André Vadla Ravnås) #35986
  • [098a5b1298] - deps: V8: cherry-pick 086eecbd96b6 (Ole André Vadla Ravnås) #35986
  • [d2c757ab19] - deps: V8: cherry-pick 27e1ac1a79ff (Ole André Vadla Ravnås) #35986
  • [6349b1d673] - (SEMVER-MINOR) dns: add a cancel() method to the promise Resolver (Szymon Marczak) #33099
  • [0fbade38ef] - doc: add arm64 macOS as experimental (Richard Lau) #36189
  • [42dfda8f78] - doc: remove stray comma in url.md (Rich Trott) #36175
  • [8bbdbccbb6] - doc: revise agent.destroy() text (Rich Trott) #36163
  • [545ac1fec5] - doc: fix punctuation in v8.md (Rich Trott) #36192
  • [a6a90af8c0] - doc: add compatibility/interop technical value (Geoffrey Booth) #35323
  • [4ab4a99900] - doc: de-emphasize wrapping in napi_define_class (Gabriel Schulhof) #36159
  • [bb29508e8f] - doc: add link for v8.takeCoverage() (Rich Trott) #36135
  • [24065b92f1] - doc: mark modules implementation as stable (Guy Bedford) #35781
  • [142cacdc63] - doc: clarify text about process not responding (Rich Trott) #36117
  • [0ff384b0be] - doc: esm docs consolidation and reordering (Guy Bedford) #36046
  • [b17a83a00d] - doc: claim ABI version for Electron v13 (Shelley Vohr) #36101
  • [e8a8513b2c] - doc: fix invalid link in worker_threads.md (Rich Trott) #36109
  • [cd33594a0d] - doc: move shigeki to emeritus (Rich Trott) #36093
  • [eefc6aa6c9] - doc: document the error when cwd not exists in child_process.spawn (FeelyChau) #34505
  • [841a2812d0] - doc: fix typo in debugger.md (Rich Trott) #36066
  • [500e709439] - doc: update list styles for remark-parse@9 rendering (Rich Trott) #36049
  • [a8dab217eb] - doc,url: fix url.hostname example (Rishabh Mehan) #33735
  • [e48ec703ba] - domain: improve deprecation warning text for DEP0097 (Anna Henningsen) #36136
  • [bcbf176c22] - errors: refactor to use more primordials (Antoine du Hamel) #36167
  • [66788970ac] - esm: refactor to use more primordials (Antoine du Hamel) #36019
  • [9ce9b016e6] - (SEMVER-MINOR) events: add max listener warning for EventTarget (James M Snell) #36001
  • [1550073dbc] - events: disabled manual construction AbortSignal (raisinten) #36094
  • [8a6cabbb23] - events: port some wpt tests (Ethan Arrowood) #34169
  • [3691eccf0a] - fs: remove experimental from promises.rmdir recursive (Anders Kaseorg) #36131
  • [76b1863240] - fs: filehandle read now accepts object as argument (Nikola Glavina) #34180
  • [2fdf509268] - http: fix typo in comment (Hollow Man) #36193
  • [8390f8a86b] - (SEMVER-MINOR) http: add support for abortsignal to http.request (Benjamin Gruenbaum) #36048
  • [387d92fd0e] - http: onFinish will not be triggered again when finished (rickyes) #35845
  • [48bf59bb8b] - http2: add support for AbortSignal to http2Session.request (Madara Uchiha) #36070
  • [8a0c3b9c76] - http2: refactor to use more primordials (Antoine du Hamel) #36142
  • [f0aed8c01c] - http2: add support for TypedArray to getUnpackedSettings (Antoine du Hamel) #36141
  • [9c6be3cc90] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #35978
  • [0b40568afe] - http2: delay session.receive() by a tick (Szymon Marczak) #35985
  • [1a4d43f840] - lib: refactor to use more primordials (Antoine du Hamel) #36140
  • [d6ea12e003] - lib: set abort-controller toStringTag (Benjamin Gruenbaum) #36115
  • [82f1cde57e] - lib: remove primordials.SafePromise (Antoine du Hamel) #36149
  • [15ff155c12] - (SEMVER-MINOR) lib: add throws option to fs.f/l/statSync (Andrew Casey) #33716
  • [75707f45eb] - lib,tools: enforce access to prototype from primordials (Antoine du Hamel) #36025
  • [79b2ba6744] - n-api: clean up binding creation (Gabriel Schulhof) #36170
  • [5698cc08f0] - n-api: fix test_async_context warnings (Gabriel Schulhof) #36171
  • [3d623d850c] - n-api: improve consistency of how we get context (Michael Dawson) #36068
  • [89da0c3353] - n-api: factor out calling pattern (Gabriel Schulhof) #36113
  • [5c0ddbca01] - net: fix invalid write after end error (Robert Nagy) #36043
  • [85c85d368a] - (SEMVER-MINOR) path: add path/posix and path/win32 alias modules (ExE Boss) #34962
  • [ed8af3a8b7] - perf_hooks: make nodeTiming a first-class object (Momtchil Momtchev) #35977
  • [eb9295b583] - promise: emit error on domain unhandled rejections (Benjamin Gruenbaum) #36082
  • [59af919d6b] - querystring: reduce memory usage by Int8Array (sapics) #34179
  • [d1baae3640] - (SEMVER-MINOR) readline: add getPrompt to get the current prompt (Mattias Runge-Broberg) #33675
  • [6d1b1c7ad0] - src: integrate URL::href() and use in inspector (Daijiro Wachi) #35912
  • [7086f2e653] - src: refactor using-declarations node_env_var.cc (raisinten) #36128
  • [122797e87f] - src: remove duplicate logic for getting buffer (Yash Ladha) #34553
  • [5729478509] - (SEMVER-MINOR) src: add loop idle time in diagnostic report (Gireesh Punathil) #35940
  • [a81dc9ae18] - src,crypto: refactoring of crypto_context, SecureContext (James M Snell) #35665
  • [5fa35f6934] - test: update comments in test-fs-read-offset-null (Rich Trott) #36152
  • [73bb54af77] - test: update wpt url and resource (Daijiro Wachi) #36032
  • [77b47dfd08] - test: fix typo in inspector-helper.js (Luigi Pinca) #36127
  • [474664963c] - test: deflake test-http-destroyed-socket-write2 (Luigi Pinca) #36120
  • [f9bbd35937] - test: make test-http2-client-jsstream-destroy.js reliable (Rich Trott) #36129
  • [c19df17acb] - test: add test for fs.read when offset key is null (mayank agarwal) #35918
  • [9405cddbee] - test: improve test-stream-duplex-readable-end (Luigi Pinca) #36056
  • [3be5e86c57] - test: add util.inspect test for null maxStringLength (Rich Trott) #36086
  • [6a4cc43028] - test: replace var with const (Aleksandr Krutko) #36069
  • [a367c0dfc2] - timers: refactor to use more primordials (Antoine du Hamel) #36132
  • [a6ef92bc27] - tools: bump unist-util-find@1.0.1 to unist-util-find@1.0.2 (Rich Trott) #36106
  • [2d2491284e] - tools: only use 2 cores for macos action (Myles Borins) #36169
  • [d8fcf2c324] - tools: remove bashisms from license builder script (Antoine du Hamel) #36122
  • [7e7ddb11c0] - tools: hide commit queue action link (Antoine du Hamel) #36124
  • [63494e434a] - tools: update doc tools to remark-parse@9.0.0 (Rich Trott) #36049
  • [bf0550ce4e] - tools: enforce use of single quotes in editorconfig (Antoine du Hamel) #36020
  • [49649a499e] - tools: fix config serialization w/ long strings (Ole André Vadla Ravnås) #35982
  • [be220b213d] - tools: update ESLint to 7.13.0 (Luigi Pinca) #36031
  • [4140f491fd] - util: fix to inspect getters that access this (raisinten) #36052
  • [baa87c1a7d] - (SEMVER-MINOR) util: add util/types alias module (ExE Boss) #34055
  • [f7b2fce1c1] - vm: refactor to use more primordials (Antoine du Hamel) #36023
  • [4e3883ec2d] - win,build,tools: support VS prerelease (Baruch Odem) #36033

2020-11-16, Version 15.2.1 (Current), @targos

Notable changes

This is a security release.

Vulnerabilities fixed:

  • CVE-2020-8277: Denial of Service through DNS request (High). A Node.js application that allows an attacker to trigger a DNS request for a host of their choice could trigger a Denial of service by getting the application to resolve a DNS record with a larger number of responses.

Commits

2020-11-10, Version 15.2.0 (Current), @danielleadams

Notable changes

  • events:
    • getEventListeners static (Benjamin Gruenbaum) #35991
  • fs:
    • support abortsignal in writeFile (Benjamin Gruenbaum) #35993
    • add support for AbortSignal in readFile (Benjamin Gruenbaum) #35911
  • stream:
    • fix thrown object reference (Gil Pedersen) #36065

Commits

  • [9d9a044c1b] - benchmark: ignore build artifacts for napi addons (Richard Lau) #35970
  • [4c6de854be] - benchmark: remove modules that require intl (Richard Lau) #35968
  • [292915a6a8] - bootstrap: refactor to use more primordials (Antoine du Hamel) #35999
  • [10c9ea771d] - build: fix zlib inlining for IA-32 (raisinten) #35679
  • [6ac9c8f31b] - build, tools: look for local installation of NASM (Richard Lau) #36014
  • [9757b47c44] - console: use more primordials (Antoine du Hamel) #35734
  • [0d7422651b] - crypto: refactor to use more primordials (Antoine du Hamel) #36012
  • [dc4936ba50] - crypto: fix comment in ByteSource (Tobias Nießen) #35972
  • [7cb5c0911e] - deps: cherry-pick 9a49b22 from V8 upstream (Daniel Bevenius) #35939
  • [4b03670877] - dns: fix trace_events name for resolveCaa() (Rich Trott) #35979
  • [dcb27600da] - doc: escape asterisk in cctest gtest-filter (raisinten) #36034
  • [923276ca53] - doc: move v8.getHeapCodeStatistics() (Rich Trott) #36027
  • [71fa9c6b24] - doc: add note regarding file structure in src/README.md (Denys Otrishko) #35000
  • [99cb36238d] - doc: advise users to import the full set of trusted release keys (Reşat SABIQ) #32655
  • [06cc400160] - doc: fix crypto doc linter errors (Antoine du Hamel) #36035
  • [01129a7b39] - doc: revise v8.getHeapSnapshot() (Rich Trott) #35849
  • [77d33c9b2f] - doc: update core-validate-commit link in guide (Daijiro Wachi) #35938
  • [6d56ba03e2] - doc: update benchmark CI test indicator in README (Rich Trott) #35945
  • [8bd364a9b3] - doc: add new wordings to the API description (Pooja D.P) #35588
  • [acd3617e1a] - doc: option --prof documentation help added (krank2me) #34991
  • [6968b0fd49] - doc: fix release-schedule link in backport guide (Daijiro Wachi) #35920
  • [efbfeff62b] - doc: fix incorrect heading level (Bryan Field) #35965
  • [9c4b360d08] - doc,crypto: added sign/verify method changes about dsaEncoding (Filip Skokan) #35480
  • [85cf30541d] - doc,fs: document value of stats.isDirectory on symbolic links (coderaiser) #27413
  • [d6bd78ff82] - doc,net: document socket.timeout (Brandon Kobel) #34543
  • [36c20d939a] - doc,stream: write(chunk, encoding, cb) encoding can be null (dev-script) #35372
  • [9d26c4d496] - domain: refactor to use more primordials (Antoine du Hamel) #35885
  • [d83e253065] - errors: refactor to use more primordials (Antoine du Hamel) #35944
  • [567f8d8caf] - (SEMVER-MINOR) events: getEventListeners static (Benjamin Gruenbaum) #35991
  • [9e673723e3] - events: fire handlers in correct oder (Benjamin Gruenbaum) #35931
  • [ff59fcdf7b] - events: define abort on prototype (Benjamin Gruenbaum) #35931
  • [ab0eb4f2c9] - events: support event handlers on prototypes (Benjamin Gruenbaum) #35931
  • [33e2ee58a7] - events: define event handler as enumerable (Benjamin Gruenbaum) #35931
  • [a7d0c76f86] - events: support emit on nodeeventtarget (Benjamin Gruenbaum) #35851
  • [76332a0439] - events: port some wpt tests (Benjamin Gruenbaum) #33621
  • [ccf9f0e62e] - (SEMVER-MINOR) fs: support abortsignal in writeFile (Benjamin Gruenbaum) #35993
  • [7ef9c707e9] - fs: replace finally with PromisePrototypeFinally (Baruch Odem (Rothkoff)) #35995
  • [ccbe267515] - fs: remove unnecessary Function#bind() in fs/promises (Ben Noordhuis) #35208
  • [6011bfdec5] - fs: remove unused assignment (Rich Trott) #35882
  • [92bdfd141b] - (SEMVER-MINOR) fs: add support for AbortSignal in readFile (Benjamin Gruenbaum) #35911
  • [11f592450b] - http2: add has method to proxySocketHandler (masx200) #35197
  • [28ed7d062e] - http2: centralise socket event binding in Http2Session (Momtchil Momtchev) #35772
  • [429113ebfb] - http2: move events to the JSStreamSocket (Momtchil Momtchev) #35772
  • [1dd744a420] - http2: fix error stream write followed by destroy (David Halls) #35951
  • [af2a560c42] - lib: add %TypedArray% abstract constructor to primordials (ExE Boss) #36016
  • [b700900d02] - lib: refactor to use more primordials (Antoine du Hamel) #35875
  • [7a375902ff] - module: refactor to use more primordials (Antoine du Hamel) #36024
  • [8d76db86b5] - module: refactor to use iterable-weak-map (Benjamin Coe) #35915
  • [9b6512f7de] - n-api: unlink reference during its destructor (Gabriel Schulhof) #35933
  • [1b277d97f3] - src: remove ERR prefix in crypto status enums (Daniel Bevenius) #35867
  • [9774b4cc72] - stream: fix thrown object reference (Gil Pedersen) #36065
  • [359a6590b0] - stream: writableNeedDrain (Robert Nagy) #35348
  • [b7aa5e2296] - stream: remove isPromise utility function (Antoine du Hamel) #35925
  • [fdae9ad188] - test: fix races in test-performance-eventlooputil (Gerhard Stoebich) #36028
  • [0a4c96a7df] - test: use global.EventTarget instead of internals (Antoine du Hamel) #36002
  • [f73b8d84db] - test: improve error message for policy failures (Bradley Meck) #35633
  • [cb6f0d3d89] - test: update old comment style test_util.cc (raisinten) #35884
  • [23f0d0c45c] - test: fix error in test/internet/test-dns.js (Rich Trott) #35969
  • [77e4f19701] - timers: cleanup abort listener on awaitable timers (James M Snell) #36006
  • [a7350b3a8f] - tools: don't print gold linker warning w/o flag (Myles Borins) #35955
  • [1f27214480] - tools: add new ESLint rule: prefer-primordials (Leko) #35448
  • [da3c2ab828] - tools,doc: enable ecmaVersion 2021 in acorn parser (Antoine du Hamel) #35994
  • [f8098c3e43] - tools,lib: recommend using safe primordials (Antoine du Hamel) #36026
  • [eea7e3b0d0] - tools,lib: tighten prefer-primordials rules for Error statics (Antoine du Hamel) #36017
  • [7a2edea7ed] - win, build: fix build time on Windows (Bartosz Sosnowski) #35932

2020-11-04, Version 15.1.0 (Current), @targos

Notable Changes

Diagnostics channel (experimental module)

diagnostics_channel is a new experimental module that provides an API to create named channels to report arbitrary message data for diagnostics purposes.

With diagnostics_channel, Node.js core and module authors can publish contextual data about what they are doing at a given time. This could be the hostname and query string of a mysql query, for example. Just create a named channel with dc.channel(name) and call channel.publish(data) to send the data to any listeners to that channel.

const dc = require('diagnostics_channel');
const channel = dc.channel('mysql.query');

MySQL.prototype.query = function query(queryString, values, callback) {
  // Broadcast query information whenever a query is made
  channel.publish({
    query: queryString,
    host: this.hostname,
  });

  this.doQuery(queryString, values, callback);
};

Channels are like one big global event emitter but are split into separate objects to ensure they get the best performance. If nothing is listening to the channel, the publishing overhead should be as close to zero as possible. Consuming channel data is as easy as using channel.subscribe(listener) to run a function whenever a message is published to that channel.

const dc = require('diagnostics_channel');
const channel = dc.channel('mysql.query');

channel.subscribe(({ query, host }) => {
  console.log(`mysql query to ${host}: ${query}`);
});

The data captured can be used to provide context for what an app is doing at a given time. This can be used for things like augmenting tracing data, tracking network and filesystem activity, logging queries, and many other things. It's also a very useful data source for diagnostics tools to provide a clearer picture of exactly what the application is doing at a given point in the data they are presenting.

Contributed by Stephen Belanger #34895.

New child process 'spawn' event

Instances of ChildProcess now emit a new 'spawn' event once the child process has spawned successfully.

If emitted, the 'spawn' event comes before all other events and before any data is received via stdout or stderr.

The 'spawn' event will fire regardless of whether an error occurs within the spawned process. For example, if bash some-command spawns successfully, the 'spawn' event will fire, though bash may fail to spawn some-command. This caveat also applies when using { shell: true }.

Contributed by Matthew Francis Brunetti #35369.

Set the local address for DNS resolution

It is now possible to set the local IP address used by a Resolver instance to send its requests. This allows programs to specify outbound interfaces when used on multi-homed systems.

The resolver will use the v4 local address when making requests to IPv4 DNS servers, and the v6 local address when making requests to IPv6 DNS servers.

const { Resolver } = require('dns');

const resolver = new Resolver();

resolver.setLocalAddress('10.1.2.3');
// Equivalent to: resolver.setLocalAddress('10.1.2.3', '::0');

Contributed by Josh Dague #34824.

Control V8 coverage at runtime

The v8 module includes two new methods to control the V8 coverage started by the NODE_V8_COVERAGE environment variable.

With v8.takeCoverage(), it is possible to write a coverage report to disk on demand. This can be done multiple times during the lifetime of the process, and the execution counter will be reset on each call. When the process is about to exit, one last coverage will still be written to disk, unless v8.stopCoverage() was invoked before.

The v8.stopCoverage() method allows to stop the coverage collection, so that V8 can release the execution counters and optimize code.

Contributed by Joyee Cheung #33807.

Analyze Worker's event loop utilization

Worker instances now have a performance property, with a single eventLoopUtilization method that can be used to gather information about the worker's event loop utilization between the 'online' and 'exit' events.

The method works the same way as perf_hooks eventLoopUtilization().

Contributed by Trevor Norris #35664.

Take a V8 heap snapshot just before running out of memory (experimental)

With the new --heapsnapshot-near-heap-limit=max_count experimental command line flag, it is now possible to automatically generate a heap snapshot when the V8 heap usage is approaching the heap limit. count should be a non-negative integer (in which case Node.js will write no more than max_count snapshots to disk).

When generating snapshots, garbage collection may be triggered and bring the heap usage down, therefore multiple snapshots may be written to disk before the Node.js instance finally runs out of memory. These heap snapshots can be compared to determine what objects are being allocated during the time consecutive snapshots are taken.

Generating V8 snapshots takes time and memory (both memory managed by the V8 heap and native memory outside the V8 heap). The bigger the heap is, the more resources it needs. Node.js will adjust the V8 heap to accommondate the additional V8 heap memory overhead, and try its best to avoid using up all the memory avialable to the process.

$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Wrote snapshot to Heap.20200430.100036.49580.0.001.heapsnapshot
Wrote snapshot to Heap.20200430.100037.49580.0.002.heapsnapshot
Wrote snapshot to Heap.20200430.100038.49580.0.003.heapsnapshot

<--- Last few GCs --->

[49580:0x110000000]     4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms  (average mu = 0.126, current mu = 0.034) allocation failure scavenge might not succeed
[49580:0x110000000]     4845 ms: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 ms  (average mu = 0.088, current mu = 0.031) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
....

Contributed by Joyee Cheung #33010.

Commits

Semver-minor commits

  • [8169902b40] - (SEMVER-MINOR) child_process: add ChildProcess 'spawn' event (Matthew Francis Brunetti) #35369
  • [548f91af2c] - (SEMVER-MINOR) dns: add setLocalAddress to Resolver (Josh Dague) #34824
  • [f861733bac] - (SEMVER-MINOR) http: report request start and end with diagnostics_channel (Stephen Belanger) #34895
  • [883ed4b7f1] - (SEMVER-MINOR) http2: add updateSettings to both http2 servers (Vincent Boivin) #35383
  • [b38a43d5d9] - (SEMVER-MINOR) lib: create diagnostics_channel module (Stephen Belanger) #34895
  • [a7f37bc725] - (SEMVER-MINOR) src: add --heapsnapshot-near-heap-limit option (Joyee Cheung) #33010
  • [7bfa872013] - (SEMVER-MINOR) v8: implement v8.stopCoverage() (Joyee Cheung) #33807
  • [15ffed5319] - (SEMVER-MINOR) v8: implement v8.takeCoverage() (Joyee Cheung) #33807
  • [221e28311f] - (SEMVER-MINOR) worker: add eventLoopUtilization() (Trevor Norris) #35664

Semver-patch commits

  • [d95013f399] - assert,repl: enable ecmaVersion 2021 in acorn parser (Michaël Zasso) #35827
  • [b11c7378e3] - build: fix lint-js-fix target (Antoine du Hamel) #35927
  • [a5fa849631] - build: add vcbuilt test-doc target (Antoine du Hamel) #35708
  • [34281cdaba] - build: turn off Codecov comments (bcoe) #35800
  • [a9c09246bb] - build: add license-builder GitHub Action (Tierney Cyren) #35712
  • [4447ff1162] - build,tools: gitHub Actions: use Node.js Fermium (Antoine du Hamel) #35840
  • [273e147017] - build,tools: add lint-js-doc target (Antoine du Hamel) #35708
  • [0ebf44b466] - crypto: pass empty passphrases to OpenSSL properly (Tobias Nießen) #35914
  • [644c416389] - crypto: rename check to createJob (Daniel Bevenius) #35858
  • [79a8fb62e6] - crypto: fixup scrypt regressions (James M Snell) #35821
  • [abd7c9447c] - crypto: fix webcrypto ECDH JWK import (Filip Skokan) #35855
  • [d3f1cde908] - deps: upgrade npm to 7.0.8 (Myles Borins) #35953
  • [55adee0947] - deps: upgrade npm to 7.0.7 (Luigi Pinca) #35908
  • [5cb77f2e79] - deps: upgrade to cjs-module-lexer@1.0.0 (Guy Bedford) #35928
  • [1303a1fca8] - deps: update to cjs-module-lexer@0.5.2 (Guy Bedford) #35901
  • [20accb08fa] - deps: upgrade to cjs-module-lexer@0.5.0 (Guy Bedford) #35871
  • [52a77db759] - deps: update acorn to v8.0.4 (Michaël Zasso) #35791
  • [e0a1541260] - deps: update to cjs-module-lexer@0.4.3 (Guy Bedford) #35745
  • [894419c1f4] - deps: V8: backport 4263f8a5e8e0 (Brian 'bdougie' Douglas) #35650
  • [564aadedac] - doc,src,test: revise C++ code for linter update (Rich Trott) #35719
  • [7c8b5e5e0e] - errors: do not call resolve on URLs with schemes (bcoe) #35903
  • [1cdfaa80f8] - events: add a few tests (Benjamin Gruenbaum) #35806
  • [f08e2c0213] - events: make abort_controller event trusted (Benjamin Gruenbaum) #35811
  • [438d9debfd] - events: make eventTarget.removeAllListeners() return this (Luigi Pinca) #35805
  • [b6b7a3b86a] - http: lazy create IncomingMessage.headers (Robert Nagy) #35281
  • [86ed87b6b7] - http2: fix reinjection check (Momtchil Momtchev) #35678
  • [5833007eb0] - http2: reinject data received before http2 is attached (Momtchil Momtchev) #35678
  • [cfe61b8714] - http2: remove unsupported %.* specifier (Momtchil Momtchev) #35694
  • [d2f574b5be] - lib: let abort_controller target be EventTarget (Daijiro Wachi) #35869
  • [b1e531a70b] - lib: use primordials when calling methods of Error (Antoine du Hamel) #35837
  • [0f5a8c55c2] - module: runtime deprecate subpath folder mappings (Guy Bedford) #35747
  • [d16e2fa69a] - n-api: napi_make_callback emit async init with resource of async_context (legendecas) #32930
  • [0c17dbd201] - n-api: revert change to finalization (Michael Dawson) #35777
  • [fb7196434e] - src: remove redundant OpenSSLBuffer (James M Snell) #35663
  • [c9225789d3] - src: remove ERR prefix in WebCryptoKeyExportStatus (Daniel Bevenius) #35639
  • [4128eefcb3] - src: remove ignore GCC -Wcast-function-type for v8 (Daniel Bevenius) #35768
  • [4b8b5fee6a] - src: use MaybeLocal.ToLocal instead of IsEmpty (Daniel Bevenius) #35716
  • [01d7c46776] - Revert "src: ignore GCC -Wcast-function-type for v8.h" (Daniel Bevenius) #35758
  • [2868f52a5c] - stream: fix regression on duplex end (Momtchil Momtchev) #35941
  • [70c41a830d] - stream: remove redundant context from comments (Yash Ladha) #35728
  • [88eb6191e4] - stream: fix duplicate logic in stream destroy (Yash Ladha) #35727
  • [a41e3ebc3a] - timers: correct explanation in comment (Turner Jabbour) #35437
  • [ee15142fef] - tls: allow reading data into a static buffer (Andrey Pechkurov) #35753
  • [102d7dfe02] - zlib: test BrotliCompress throws invalid arg value (raisinten) #35830

Documentation commits

Other commits

2020-10-21, Version 15.0.1 (Current), @BethGriggs

Notable changes

  • crypto: fix regression on randomFillSync (James M Snell) #35723
  • deps: upgrade npm to 7.0.3 (Ruy Adorno) #35724
  • doc: add release key for Danielle Adams (Danielle Adams) #35545

Commits

2020-10-20, Version 15.0.0 (Current), @BethGriggs

Notable Changes

Deprecations and Removals

  • [a11788736a] - (SEMVER-MAJOR) build: remove --build-v8-with-gn configure option (Yang Guo) #27576
  • [89428c7a2d] - (SEMVER-MAJOR) build: drop support for VS2017 (Michaël Zasso) #33694
  • [c25cf34ac1] - (SEMVER-MAJOR) doc: move DEP0018 to End-of-Life (Rich Trott) #35316
  • [2002d90abd] - (SEMVER-MAJOR) fs: deprecation warning on recursive rmdir (Ian Sutherland) #35562
  • [eee522ac29] - (SEMVER-MAJOR) lib: add EventTarget-related browser globals (Anna Henningsen) #35496
  • [41796ebd30] - (SEMVER-MAJOR) net: remove long deprecated server.connections property (James M Snell) #33647
  • [a416692e93] - (SEMVER-MAJOR) repl: remove deprecated repl.memory function (Ruben Bridgewater) #33286
  • [f217b2dfb0] - (SEMVER-MAJOR) repl: remove deprecated repl.turnOffEditorMode() function (Ruben Bridgewater) #33286
  • [a1bcad8dc0] - (SEMVER-MAJOR) repl: remove deprecated repl.parseREPLKeyword() function (Ruben Bridgewater) #33286
  • [4ace010b53] - (SEMVER-MAJOR) repl: remove deprecated bufferedCommand property (Ruben Bridgewater) #33286
  • [37524307fe] - (SEMVER-MAJOR) repl: remove deprecated .rli (Ruben Bridgewater) #33286
  • [a85ce885bd] - (SEMVER-MAJOR) src: remove deprecated node debug command (James M Snell) #33648
  • [a8904e8eee] - (SEMVER-MAJOR) timers: introduce timers/promises (James M Snell) #33950
  • [1211b9a72f] - (SEMVER-MAJOR) util: change default value of maxStringLength to 10000 (unknown) #32744
  • [ca8f3ef2e5] - (SEMVER-MAJOR) wasi: drop --experimental-wasm-bigint requirement (Colin Ihrig) #35415

npm 7 - #35631

Node.js 15 comes with a new major release of npm, npm 7. npm 7 comes with many new features - including npm workspaces and a new package-lock.json format. npm 7 also includes yarn.lock file support. One of the big changes in npm 7 is that peer dependencies are now installed by default.

Throw On Unhandled Rejections - #33021

As of Node.js 15, the default mode for unhandledRejection is changed to throw (from warn). In throw mode, if an unhandledRejection hook is not set, the unhandledRejection is raised as an uncaught exception. Users that have an unhandledRejection hook should see no change in behavior, and it’s still possible to switch modes using the --unhandled-rejections=mode process flag.

QUIC - #32379

Node.js 15 comes with experimental support QUIC, which can be enabled by compiling Node.js with the --experimental-quic configuration flag. The Node.js QUIC implementation is exposed by the core net module.

V8 8.6 - #35415

The V8 JavaScript engine has been updated to V8 8.6 (V8 8.4 is the latest available in Node.js 14). Along with performance tweaks and improvements the V8 update also brings the following language features:

  • Promise.any() (from V8 8.5)
  • AggregateError (from V8 8.5)
  • String.prototype.replaceAll() (from V8 8.5)
  • Logical assignment operators &&=, ||=, and ??= (from V8 8.5)

Other Notable Changes

  • [50228cf6ff] - (SEMVER-MAJOR) assert: add assert/strict alias module (ExE Boss) #34001
  • [039cd00a9a] - (SEMVER-MAJOR) dns: add dns/promises alias (shisama) #32953
  • [54b36e401d] - (SEMVER-MAJOR) fs: reimplement read and write streams using stream.construct (Robert Nagy) #29656
  • [f5c0e282cc] - (SEMVER-MAJOR) http2: allow Host in HTTP/2 requests (Alba Mendez) #34664
  • [eee522ac29] - (SEMVER-MAJOR) lib: add EventTarget-related browser globals (Anna Henningsen) #35496
  • [a8b26d72c5] - (SEMVER-MAJOR) lib: unflag AbortController (James M Snell) #33527
  • [74ca960aac] - (SEMVER-MAJOR) lib: initial experimental AbortController implementation (James M Snell) #33527
  • [efefdd668d] - (SEMVER-MAJOR) net: autoDestroy Socket (Robert Nagy) #31806
  • [0fb91acedf] - (SEMVER-MAJOR) src: disallow JS execution inside FreeEnvironment (Anna Henningsen) #33874
  • [21782277c2] - (SEMVER-MAJOR) src: use node:moduleName as builtin module filename (Michaël Zasso) #35498
  • [fb8cc72e73] - (SEMVER-MAJOR) stream: construct (Robert Nagy) #29656
  • [705d888387] - (SEMVER-MAJOR) worker: make MessageEvent class more Web-compatible (Anna Henningsen) #35496

Semver-Major Commits

  • [50228cf6ff] - (SEMVER-MAJOR) assert: add assert/strict alias module (ExE Boss) #34001
  • [d701247165] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #35415
  • [a11788736a] - (SEMVER-MAJOR) build: remove --build-v8-with-gn configure option (Yang Guo) #27576
  • [89428c7a2d] - (SEMVER-MAJOR) build: drop support for VS2017 (Michaël Zasso) #33694
  • [dae283d96f] - (SEMVER-MAJOR) crypto: refactoring internals, add WebCrypto (James M Snell) #35093
  • [ba77dc8597] - (SEMVER-MAJOR) crypto: move node_crypto files to src/crypto (James M Snell) #35093
  • [9378070da0] - (SEMVER-MAJOR) deps: V8: cherry-pick d76abfed3512 (Michaël Zasso) #35415
  • [efee8341ad] - (SEMVER-MAJOR) deps: V8: cherry-pick 717543bbf0ef (Michaël Zasso) #35415
  • [b006fa8730] - (SEMVER-MAJOR) deps: V8: cherry-pick 6be2f6e26e8d (Michaël Zasso) #35415
  • [3c23af4cb7] - (SEMVER-MAJOR) deps: fix V8 build issue with inline methods (Jiawen Geng) #35415
  • [b803b3f48b] - (SEMVER-MAJOR) deps: fix platform-embedded-file-writer-win for ARM64 (Michaël Zasso) #35415
  • [47cb9f14e8] - (SEMVER-MAJOR) deps: update V8 postmortem metadata script (Colin Ihrig) #35415
  • [a1d639ba5d] - (SEMVER-MAJOR) deps: update V8 to 8.6.395 (Michaël Zasso) #35415
  • [3ddcad55fb] - (SEMVER-MAJOR) deps: upgrade npm to 7.0.0 (Myles Borins) #35631
  • [2e54524955] - (SEMVER-MAJOR) deps: update npm to 7.0.0-rc.3 (Myles Borins) #35474
  • [e983b1cece] - (SEMVER-MAJOR) deps: V8: cherry-pick 0d6debcc5f08 (Gus Caplan) #33600
  • [039cd00a9a] - (SEMVER-MAJOR) dns: add dns/promises alias (shisama) #32953
  • [c25cf34ac1] - (SEMVER-MAJOR) doc: move DEP0018 to End-of-Life (Rich Trott) #35316
  • [8bf37ee496] - (SEMVER-MAJOR) doc: update support macos version for 15.x (Ash Cripps) #35022
  • [2002d90abd] - (SEMVER-MAJOR) fs: deprecation warning on recursive rmdir (Ian Sutherland) #35562
  • [54b36e401d] - (SEMVER-MAJOR) fs: reimplement read and write streams using stream.construct (Robert Nagy) #29656
  • [32b641e528] - (SEMVER-MAJOR) http: fixed socket.setEncoding fatal error (iskore) #33405
  • [8a6fab02ad] - (SEMVER-MAJOR) http: emit 'error' on aborted server request (Robert Nagy) #33172
  • [d005f490a8] - (SEMVER-MAJOR) http: cleanup end argument handling (Robert Nagy) #31818
  • [f5c0e282cc] - (SEMVER-MAJOR) http2: allow Host in HTTP/2 requests (Alba Mendez) #34664
  • [1e4187fcf4] - (SEMVER-MAJOR) http2: add invalidheaders test (Pranshu Srivastava) #33161
  • [d79c330186] - (SEMVER-MAJOR) http2: refactor state code validation for the http2Stream class (rickyes) #33535
  • [df31f71f1e] - (SEMVER-MAJOR) http2: header field valid checks (Pranshu Srivastava) #33193
  • [1428db8a1f] - (SEMVER-MAJOR) lib: refactor Socket._getpeername and Socket._getsockname (himself65) #32969
  • [eee522ac29] - (SEMVER-MAJOR) lib: add EventTarget-related browser globals (Anna Henningsen) #35496
  • [c66e6471e7] - (SEMVER-MAJOR) lib: remove ERR_INVALID_OPT_VALUE and ERR_INVALID_OPT_VALUE_ENCODING (Denys Otrishko) #34682
  • [b546a2b469] - (SEMVER-MAJOR) lib: handle one of args case in ERR_MISSING_ARGS (Denys Otrishko) #34022
  • [a86a295fd7] - (SEMVER-MAJOR) lib: remove NodeError from the prototype of errors with code (Michaël Zasso) #33857
  • [a8b26d72c5] - (SEMVER-MAJOR) lib: unflag AbortController (James M Snell) #33527
  • [74ca960aac] - (SEMVER-MAJOR) lib: initial experimental AbortController implementation (James M Snell) #33527
  • [78ca61e2cf] - (SEMVER-MAJOR) net: check args in net.connect() and socket.connect() calls (Denys Otrishko) #34022
  • [41796ebd30] - (SEMVER-MAJOR) net: remove long deprecated server.connections property (James M Snell) #33647
  • [efefdd668d] - (SEMVER-MAJOR) net: autoDestroy Socket (Robert Nagy) #31806
  • [6cfba9f7f6] - (SEMVER-MAJOR) process: update v8 fast api calls usage (Maya Lekova) #35415
  • [3b10f7f933] - (SEMVER-MAJOR) process: change default --unhandled-rejections=throw (Dan Fabulich) #33021
  • [d8eef83757] - (SEMVER-MAJOR) process: use v8 fast api calls for hrtime (Gus Caplan) #33600
  • [49745cdef0] - (SEMVER-MAJOR) process: delay throwing an error using throwDeprecation (Ruben Bridgewater) #32312
  • [a416692e93] - (SEMVER-MAJOR) repl: remove deprecated repl.memory function (Ruben Bridgewater) #33286
  • [f217b2dfb0] - (SEMVER-MAJOR) repl: remove deprecated repl.turnOffEditorMode() function (Ruben Bridgewater) #33286
  • [a1bcad8dc0] - (SEMVER-MAJOR) repl: remove deprecated repl.parseREPLKeyword() function (Ruben Bridgewater) #33286
  • [4ace010b53] - (SEMVER-MAJOR) repl: remove deprecated bufferedCommand property (Ruben Bridgewater) #33286
  • [37524307fe] - (SEMVER-MAJOR) repl: remove deprecated .rli (Ruben Bridgewater) #33286
  • [b65e5aeaa7] - (SEMVER-MAJOR) src: implement NodePlatform::PostJob (Clemens Backes) #35415
  • [b1e8e0e604] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 88 (Michaël Zasso) #35415
  • [eeb6b473fd] - (SEMVER-MAJOR) src: error reporting on CPUUsage (Yash Ladha) #34762
  • [21782277c2] - (SEMVER-MAJOR) src: use node:moduleName as builtin module filename (Michaël Zasso) #35498
  • [05771279af] - (SEMVER-MAJOR) src: enable wasm trap handler on windows (Gus Caplan) #35033
  • [b7cf823410] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 86 (Michaël Zasso) #33579
  • [0fb91acedf] - (SEMVER-MAJOR) src: disallow JS execution inside FreeEnvironment (Anna Henningsen) #33874
  • [53fb2b6b41] - (SEMVER-MAJOR) src: remove _third_party_main support (Anna Henningsen) #33971
  • [a85ce885bd] - (SEMVER-MAJOR) src: remove deprecated node debug command (James M Snell) #33648
  • [ac3714637e] - (SEMVER-MAJOR) src: remove unused CancelPendingDelayedTasks (Anna Henningsen) #32859
  • [a65218f5e8] - (SEMVER-MAJOR) stream: try to wait for flush to complete before 'finish' (Robert Nagy) #34314
  • [4e3f6f355b] - (SEMVER-MAJOR) stream: cleanup and fix Readable.wrap (Robert Nagy) #34204
  • [527e2147af] - (SEMVER-MAJOR) stream: add promises version to utility functions (rickyes) #33991
  • [c7e55c6b72] - (SEMVER-MAJOR) stream: fix writable.end callback behavior (Robert Nagy) #34101
  • [fb8cc72e73] - (SEMVER-MAJOR) stream: construct (Robert Nagy) #29656
  • [4bc7025309] - (SEMVER-MAJOR) stream: write should throw on unknown encoding (Robert Nagy) #33075
  • [ea87809bb6] - (SEMVER-MAJOR) stream: fix _final and 'prefinish' timing (Robert Nagy) #32780
  • [0bd5595509] - (SEMVER-MAJOR) stream: simplify Transform stream implementation (Robert Nagy) #32763
  • [8f86986985] - (SEMVER-MAJOR) stream: use callback to properly propagate error (Robert Nagy) #29179
  • [94dd7b9f94] - (SEMVER-MAJOR) test: update tests after increasing typed array size to 4GB (Kim-Anh Tran) #35415
  • [d9e98df01b] - (SEMVER-MAJOR) test: fix tests for npm 7.0.0 (Myles Borins) #35631
  • [c87641aa97] - (SEMVER-MAJOR) test: fix test suite to work with npm 7 (Myles Borins) #35474
  • [eb9d7a437e] - (SEMVER-MAJOR) test: update WPT harness and tests (Michaël Zasso) #33770
  • [a8904e8eee] - (SEMVER-MAJOR) timers: introduce timers/promises (James M Snell) #33950
  • [c55f661551] - (SEMVER-MAJOR) tools: disable x86 safe exception handlers in V8 (Michaël Zasso) #35415
  • [80e8aec4a5] - (SEMVER-MAJOR) tools: update V8 gypfiles for 8.6 (Ujjwal Sharma) #35415
  • [faeb9607c6] - (SEMVER-MAJOR) tools: update V8 gypfiles for 8.5 (Ujjwal Sharma) #35415
  • [bb62f4ad9e] - (SEMVER-MAJOR) url: file URL path normalization (Daijiro Wachi) #35477
  • [69ef4c2375] - (SEMVER-MAJOR) url: verify domain is not empty after "ToASCII" (Michaël Zasso) #33770
  • [4831278a16] - (SEMVER-MAJOR) url: remove U+0000 case in the fragment state (Michaël Zasso) #33770
  • [0d08d5ae7c] - (SEMVER-MAJOR) url: remove gopher from special schemes (Michaël Zasso) #33325
  • [9be51ee9a1] - (SEMVER-MAJOR) url: forbid lt and gt in url host code point (Yash Ladha) #33328
  • [1211b9a72f] - (SEMVER-MAJOR) util: change default value of maxStringLength to 10000 (unknown) #32744
  • [ca8f3ef2e5] - (SEMVER-MAJOR) wasi: drop --experimental-wasm-bigint requirement (Colin Ihrig) #35415
  • [abd8cdfc4e] - (SEMVER-MAJOR) win, child_process: sanitize env variables (Bartosz Sosnowski) #35210
  • [705d888387] - (SEMVER-MAJOR) worker: make MessageEvent class more Web-compatible (Anna Henningsen) #35496
  • [7603c7e50c] - (SEMVER-MAJOR) worker: set trackUnmanagedFds to true by default (Anna Henningsen) #34394
  • [5ef5116311] - (SEMVER-MAJOR) worker: rename error code to be more accurate (Anna Henningsen) #33872

Semver-Minor Commits

  • [1d5fa88eb8] - (SEMVER-MINOR) cli: add --node-memory-debug option (Anna Henningsen) #35537
  • [095be6a01f] - (SEMVER-MINOR) crypto: add getCipherInfo method (James M Snell) #35368
  • [df1023bb22] - (SEMVER-MINOR) events: allow use of AbortController with on (James M Snell) #34912
  • [883fc779b6] - (SEMVER-MINOR) events: allow use of AbortController with once (James M Snell) #34911
  • [e876c0c308] - (SEMVER-MINOR) http2: add support for sensitive headers (Anna Henningsen) #34145
  • [6f34498148] - (SEMVER-MINOR) net: add support for resolving DNS CAA records (Danny Sonnenschein) #35466
  • [37a8179673] - (SEMVER-MINOR) net: make blocklist family case insensitive (James M Snell) #34864
  • [1f9b20b637] - (SEMVER-MINOR) net: introduce net.BlockList (James M Snell) #34625
  • [278d38f4cf] - (SEMVER-MINOR) src: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #35486
  • [2310f679a1] - (SEMVER-MINOR) src: move node_binding to modern THROW_ERR* (James M Snell) #35469
  • [744a284ccc] - (SEMVER-MINOR) stream: support async for stream impl functions (James M Snell) #34416
  • [bfbdc84738] - (SEMVER-MINOR) timers: allow promisified timeouts/immediates to be canceled (James M Snell) #33833
  • [a8971f87d3] - (SEMVER-MINOR) url: support non-special URLs (Daijiro Wachi) #34925

Semver-Patch Commits

  • [d10c59fc60] - benchmark,test: remove output from readable-async-iterator benchmark (Rich Trott) #34411
  • [8a12e9994f] - bootstrap: use file URL instead of relative url (Daijiro Wachi) #35622
  • [f8bde7ce06] - bootstrap: build fast APIs in pre-execution (Joyee Cheung) #32984
  • [b18651bcd2] - build: do not pass mode option to test-v8 command (Michaël Zasso) #35705
  • [bb2945ed6b] - build: add GitHub Action for code coverage (Benjamin Coe) #35653
  • [cfbbeea4a1] - build: use GITHUB_ENV file to set env variables (Michaël Zasso) #35638
  • [8a93b371a3] - build: do not install jq in workflows (Michaël Zasso) #35638
  • [ccbd1d5efa] - build: add quic to github action (gengjiawen) #34336
  • [f4f191bbc2] - build: define NODE_EXPERIMENTAL_QUIC in mkcodecache and node_mksnapshot (Joyee Cheung) #34454
  • [5b2c263ba8] - deps: fix typo in zlib.gyp that break arm-fpu-neon build (lucasg) #35659
  • [5b9593f727] - deps: upgrade npm to 7.0.2 (Myles Borins) #35667
  • [dabc6ddddc] - deps: upgrade npm to 7.0.0-rc.4 (Myles Borins) #35576
  • [757bac6711] - deps: update nghttp3 (James M Snell) #34752
  • [c788be2e6e] - deps: update ngtcp2 (James M Snell) #34752
  • [7816e5f7b9] - deps: fix indenting of sources in ngtcp2.gyp (James M Snell) #34033
  • [f5343d1b40] - deps: re-enable OPENSSL_NO_QUIC guards (James M Snell) #34033
  • [9de95f494e] - deps: temporary fixup for ngtcp2 to build on windows (James M Snell) #34033
  • [ec7ad1d0ec] - deps: cherry-pick akamai/openssl/commit/bf4b08ecfbb7a26ca4b0b9ecaee3b31d18d7bda9 (Tatsuhiro Tsujikawa) #34033
  • [c3d85b7637] - deps: cherry-pick akamai/openssl/commit/a5a08cb8050bb69120e833456e355f482e392456 (Benjamin Kaduk) #34033
  • [bad1a150ea] - deps: cherry-pick akamai/openssl/commit/d5a13ca6e29f3ff85c731770ab0ee2f2487bf8b3 (Benjamin Kaduk) #34033
  • [74cbfd3f36] - deps: cherry-pick akamai/openssl/commit/a6282c566d88db11300c82abc3c84a4e2e9ea568 (Benjamin Kaduk) #34033
  • [8a9763a8ea] - deps: update nghttp3 (James M Snell) #34033
  • [6b27d07779] - deps: update ngtcp2 (James M Snell) #34033
  • [a041723774] - deps: fix indentation for sources in nghttp3.gyp (Daniel Bevenius) #33942
  • [a0cbd676e7] - deps: add defines to nghttp3/ngtcp2 gyp configs (Daniel Bevenius) #33942
  • [bccb514936] - deps: maintaining ngtcp2 and nghttp3 (James M Snell) #32379
  • [834fa8f23f] - deps: add ngtcp2 and nghttp3 (James M Snell) #32379
  • [f96b981528] - deps: details for updating openssl quic support (James M Snell) #32379
  • [98c8498552] - deps: update archs files for OpenSSL-1.1.0 (James M Snell) #32379
  • [2c549e505e] - deps: add support for BoringSSL QUIC APIs (Todd Short) #32379
  • [1103b15af6] - doc: fix YAML lint error on master (Rich Trott) #35709
  • [7798e59e98] - doc: upgrade stability status of report API (Gireesh Punathil) #35654
  • [ce03a182cf] - doc: clarify experimental API elements in vm.md (Rich Trott) #35594
  • [89defff3b9] - doc: correct order of metadata for deprecation (Rich Trott) #35668
  • [ee85eb9f8a] - doc: importModuleDynamically gets Script, not Module (Simen Bekkhus) #35593
  • [9e5a27a9d3] - doc: fix EventEmitter examples (Sourav Shaw) #33513
  • [2c2c87e291] - doc: fix stability indicator in webcrypto doc (Rich Trott) #35672
  • [f59d4e05a2] - doc: add example code for process.getgroups() (Pooja D.P) #35625
  • [8a3808dc37] - doc: use kbd element in tty doc (Rich Trott) #35613
  • [4079bfd462] - doc: Remove reference to io.js (Hussaina Begum Nandyala) #35618
  • [e6d5af3c95] - doc: fix typos in quic.md (Luigi Pinca) #35444
  • [524123fbf0] - doc: update releaser in v12.18.4 changelog (Beth Griggs) #35217
  • [ccdd1bd82a] - doc: fix incorrectly marked Buffer in quic.md (Rich Trott) #35075
  • [cc754f2985] - doc: make AbortSignal text consistent in events.md (Rich Trott) #35005
  • [f9c362ff6c] - doc: revise AbortSignal text and example using events.once() (Rich Trott) #35005
  • [7aeff6b8c8] - doc: claim ABI version for Electron v12 (Shelley Vohr) #34816
  • [7a1220a1d7] - doc: fix headings in quic.md (Anna Henningsen) #34717
  • [d5c7aec3cb] - doc: use _can_ to describe actions in quic.md (Rich Trott) #34613
  • [319c275b26] - doc: use _can_ to describe actions in quic.md (Rich Trott) #34613
  • [2c30920886] - doc: use sentence-case in quic.md headers (Rich Trott) #34453
  • [8ada27510d] - doc: add missing backticks in timers.md (vsemozhetbyt) #34030
  • [862d005e60] - doc: make globals Extends usage consistent (Colin Ihrig) #33777
  • [85dbd17bde] - doc: make perf_hooks Extends usage consistent (Colin Ihrig) #33777
  • [2e49010bc8] - doc: make events Extends usage consistent (Colin Ihrig) #33777
  • [680fb8fc62] - doc: fix deprecation "End-of-Life" capitalization (Colin Ihrig) #33691
  • [458677f5ef] - errors: print original exception context (Benjamin Coe) #33491
  • [b1831fed3a] - events: simplify event target agnostic logic in on and once (Denys Otrishko) #34997
  • [7f25fe8b67] - fs: remove unused assignment (Rich Trott) #35642
  • [2c4f30deea] - fs: fix when path is buffer on fs.symlinkSync (himself65) #34540
  • [db0e991d52] - fs: remove custom Buffer pool for streams (Robert Nagy) #33981
  • [51a2df4439] - fs: document why isPerformingIO is required (Robert Nagy) #33982
  • [999e7d7b44] - gyp,build: consistent shared library location (Rod Vagg) #35635
  • [30cc54275d] - http: don't emit error after close (Robert Nagy) #33654
  • [ddff2b2b22] - lib: honor setUncaughtExceptionCaptureCallback (Gireesh Punathil) #35595
  • [a8806535d9] - lib: use Object static properties from primordials (Michaël Zasso) #35380
  • [11f1ad939f] - module: only try to enrich CJS syntax errors (Michaël Zasso) #35691
  • [aaf225a2a0] - module: add setter for module.parent (Antoine du Hamel) #35522
  • [109a296e2a] - quic: fix typo in code comment (Ikko Ashimine) #35308
  • [186230527b] - quic: fix error message on invalid connection ID (Rich Trott) #35026
  • [e5116b304f] - quic: remove unused function arguments (Rich Trott) #35010
  • [449f73e05f] - quic: remove undefined variable (Rich Trott) #35007
  • [44e6a6af67] - quic: use qlog fin flag (James M Snell) #34752
  • [2a80737278] - quic: fixups after ngtcp2/nghttp3 update (James M Snell) #34752
  • [c855c3e8ca] - quic: use net.BlockList for limiting access to a QuicSocket (James M Snell) #34741
  • [bfc35354c1] - quic: consolidate stats collecting in QuicSession (James M Snell) #34741
  • [94aa291348] - quic: clarify TODO statements (James M Snell) #34741
  • [19e712b9b2] - quic: resolve InitializeSecureContext TODO comment (James M Snell) #34741
  • [240592228b] - quic: fixup session ticket app data todo comments (James M Snell) #34741
  • [c17eaa3f3f] - quic: add natRebinding argument to docs (James M Snell) #34669
  • [442968c92a] - quic: check setSocket natRebinding argument, extend test (James M Snell) #34669
  • [10d5047a4f] - quic: fixup set_socket, fix skipped test (James M Snell) #34669
  • [344c5e4e50] - quic: limit push check to http/3 (James M Snell) #34655
  • [34165f03aa] - quic: resolve some minor TODOs (James M Snell) #34655
  • [1e6e5c3ef3] - quic: resolve minor TODO in QuicSocket (James M Snell) #34655
  • [ba5c64bf45] - quic: use AbortController with correct name/message (Anna Henningsen) #34763
  • [a7477704c4] - quic: prefer modernize-make-unique (gengjiawen) #34692
  • [5b6cd6fa1a] - quic: use the SocketAddressLRU to track validation status (James M Snell) #34618
  • [f75e69a94b] - quic: use SocketAddressLRU to track known SocketAddress info (James M Snell) #34618
  • [6b0b33cd4c] - quic: cleanup some outstanding todo items (James M Snell) #34618
  • [6e65f26b73] - quic: use QuicCallbackScope consistently for QuicSession (James M Snell) #34541
  • [d96083bad5] - quic: introduce QuicCallbackScope (James M Snell) #34541
  • [4b0275ab87] - quic: refactor clientHello (James M Snell) #34541
  • [a97b5f9c6a] - quic: use OpenSSL built-in cert and hostname validation (James M Snell) #34533
  • [7a5fbafe96] - quic: fix build for macOS (gengjiawen) #34336
  • [1f94b89309] - quic: refactor ocsp to use async function rather than event/callback (James M Snell) #34498
  • [06664298fa] - quic: remove no-longer relevant TODO statements (James M Snell) #34498
  • [2fb92f4cc6] - quic: remove extraneous unused debug property (James M Snell) #34498
  • [b06fe33de1] - quic: use async _construct for QuicStream (James M Snell) #34351
  • [8bd61d4c38] - quic: documentation updates (James M Snell) #34351
  • [086c916997] - quic: extensive refactoring of QuicStream lifecycle (James M Snell) #34351
  • [cf28f8a7dd] - quic: gitignore qlog files (James M Snell) #34351
  • [83bf0d7e8c] - quic: remove unneeded quicstream.aborted and fixup docs (James M Snell) #34351
  • [a65296db2c] - quic: remove stream pending code (James M Snell) #34351
  • [da20287e1a] - quic: simplify QuicStream construction logic (James M Snell) #34351
  • [6e30fe7a7f] - quic: convert openStream to Promise (James M Snell) #34351
  • [89453cfc08] - quic: fixup quic.md (James M Snell) #34283
  • [4523d4a813] - quic: fixup closing/draining period timing (James M Snell) #34283
  • [ed4882241c] - quic: properly pass readable/writable constructor options (James M Snell) #34283
  • [57c1129508] - quic: implement QuicSession close as promise (James M Snell) #34283
  • [8e5c5b16ab] - quic: cleanup QuicClientSession constructor (James M Snell) #34283
  • [fe4e7e4598] - quic: use promisified dns lookup (James M Snell) #34283
  • [346aeaf874] - quic: eliminate "ready"/"not ready" states for QuicSession (James M Snell) #34283
  • [6665dda9f6] - quic: implement QuicSocket Promise API, part 2 (James M Snell) #34283
  • [79c0e892dd] - quic: implement QuicSocket Promise API, part 1 (James M Snell) #34283
  • [53b12f0c7b] - quic: implement QuicEndpoint Promise API (James M Snell) #34283
  • [16b32eae3e] - quic: handle unhandled rejections on QuicSession (James M Snell) #34283
  • [e5d963e24d] - quic: fixup kEndpointClose (James M Snell) #34283
  • [9f552df5b4] - quic: fix endpointClose error handling, document (James M Snell) #34283
  • [b80108c033] - quic: restrict addEndpoint to before QuicSocket bind (James M Snell) #34283
  • [81c01bbdba] - quic: use a getter for stream options (James M Snell) #34283
  • [b8945ba2ab] - quic: clarifying code comments (James M Snell) #34283
  • [429ab1dce6] - quic: minor reduction in code duplication (James M Snell) #34283
  • [aafdc2fcad] - quic: replace ipv6Only option with 'udp6-only' type (James M Snell) #34283
  • [fbc38ee134] - quic: clear clang warning (gengjiawen) #34335
  • [c176d5fac2] - quic: set destroyed at timestamps for duration calculation (James M Snell) #34262
  • [48a349efd9] - quic: use Number instead of BigInt for more stats (James M Snell) #34262
  • [5e769b2eaf] - quic: use less specific error codes (James M Snell) #34262
  • [26493c02a2] - quic: remove no longer valid CHECK (James M Snell) #34247
  • [458d243f20] - quic: proper custom inspect for QuicStream (James M Snell) #34247
  • [0860b11655] - quic: proper custom inspect for QuicSession (James M Snell) #34247
  • [b047930d76] - quic: proper custom inspect for QuicSocket (James M Snell) #34247
  • [511f8c1138] - quic: proper custom inspect for QuicEndpoint (James M Snell) #34247
  • [fe11f6bf7c] - quic: cleanup QuicSocketFlags, used shared state struct (James M Snell) #34247
  • [d08e99de24] - quic: use getter/setter for stateless reset toggle (James M Snell) #34247
  • [f2753c7695] - quic: unref timers again (Anna Henningsen) #34247
  • [71236097d0] - quic: use Number() instead of bigint for QuicSocket stats (James M Snell) #34247
  • [94372b124a] - quic: refactor/improve/document QuicSocket listening event (James M Snell) #34247
  • [afc9390ae5] - quic: refactor/improve QuicSocket ready event handling (James M Snell) #34247
  • [e3813261b8] - quic: add tests confirming error handling for QuicSocket close event (James M Snell) #34247
  • [cc89aac5f7] - quic: refactor/improve error handling for busy event (James M Snell) #34247
  • [edc71ef008] - quic: handle errors thrown / rejections in the session event (James M Snell) #34247
  • [bcde849be9] - quic: remove unnecessary bool conversion (James M Snell) #34247
  • [c535131627] - quic: additional minor cleanups in node_quic_session.h (James M Snell) #34247
  • [0f97d6066a] - quic: use TimerWrap for idle and retransmit timers (James M Snell) #34186
  • [1b1e985478] - quic: add missing memory tracker fields (James M Snell) #34160
  • [5a87e9b0a5] - quic: cleanup timers if they haven't been already (James M Snell) #34160
  • [3837d9cf1f] - quic: fixup lint issues (James M Snell) #34160
  • [7b062ca015] - quic: refactor qlog handling (James M Snell) #34160
  • [e4d369e96e] - quic: remove onSessionDestroy callback (James M Snell) #34160
  • [3acdd6aac7] - quic: refactor QuicSession shared state to use AliasedStruct (James M Snell) #34160
  • [f9c2245fb5] - quic: refactor QuicSession close/destroy flow (James M Snell) #34160
  • [f7510ca439] - quic: additional cleanups on the c++ side (James M Snell) #34160
  • [b5bf5bb20f] - quic: refactor native object flags for better readability (James M Snell) #34160
  • [b1750a4d53] - quic: continued refactoring for quic_stream/quic_session (James M Snell) #34160
  • [31d6d9d0f7] - quic: reduce duplication of code (James M Snell) #34137
  • [b5fe31ef19] - quic: avoid using private JS fields for now (James M Snell) #34137
  • [2afc1abd05] - quic: fixup constant exports, export all protocol error codes (James M Snell) #34137
  • [b1fab88ff0] - quic: remove unused callback function (James M Snell) #34137
  • [3bae2d5073] - quic: consolidate onSessionClose and onSessionSilentClose (James M Snell) #34137
  • [def8e76999] - quic: fixup set_final_size (James M Snell) #34137
  • [d6034186d6] - quic: cleanups for QuicSocket (James M Snell) #34137
  • [73a51bb9dc] - quic: cleanups in JS API (James M Snell) #34137
  • [204f20f2d1] - quic: minor cleanups in quic_buffer (James M Snell) #34087
  • [68634d2592] - quic: remove redundant cast (gengjiawen) #34086
  • [213cac0b94] - quic: temporarily skip quic-ipv6only test (James M Snell) #34033
  • [99f7c4bb5e] - quic: possibly resolve flaky assertion failure in ipv6only test (James M Snell) #34033
  • [2a5922e483] - quic: temporarily disable packetloss tests (James M Snell) #34033
  • [86e67aaa69] - quic: updates to implement for h3-29 (James M Snell) #34033
  • [adf14e2617] - quic: fix lint error in node_quic_crypto (Daniel Bevenius) #34019
  • [9f2e00fb99] - quic: temporarily disable preferred address tests (James M Snell) #33934
  • [0e7c8bdc0c] - quic: return 0 from SSL_CTX_sess_set_new_cb callback (Anna Henningsen) #33931
  • [c7d859e756] - quic: refactor and improve ipv6Only (James M Snell) #33935
  • [1b7434dfc0] - quic: set up FunctionTemplates more cleanly (Anna Henningsen) #33968
  • [8ef86a920c] - quic: fix clang warning (gengjiawen) #33963
  • [013cd1ac6f] - quic: use Check instead of FromJust in node_quic.cc (Daniel Bevenius) #33937
  • [09330fc155] - quic: fix clang-tidy performance-faster-string-find issue (gengjiawen) #33975
  • [9743624c0b] - quic: fix typo in comments (gengjiawen) #33975
  • [88ef15812c] - quic: remove unused string include http3_application (Daniel Bevenius) #33926
  • [1bd88a3ac6] - quic: fix up node_quic_stream includes (Daniel Bevenius) #33921
  • [d7d79f2163] - quic: avoid memory fragmentation issue (James M Snell) #33912
  • [16116f5f5f] - quic: remove noop code (Robert Nagy) #33914
  • [272b46e04d] - quic: skip test-quic-preferred-address-ipv6.js when no ipv6 (James M Snell) #33919
  • [4b70f95d64] - quic: use Check instead of FromJust in QuicStream (Daniel Bevenius) #33909
  • [133a97f60d] - quic: always copy stateless reset token (Anna Henningsen) #33917
  • [14d012ef96] - quic: fix minor linting issue (James M Snell) #33913
  • [55360443ce] - quic: initial QUIC implementation (James M Snell) #32379
  • [a12a2d892f] - repl: update deprecation codes (Antoine du HAMEL) #33430
  • [2b3acc44f0] - src: large pages support in illumos/solaris systems (David Carlier) #34320
  • [84a7880749] - src: minor cleanup and simplification of crypto::Hash (James M Snell) #35651
  • [bfc906906f] - src: combine TLSWrap/SSLWrap (James M Snell) #35552
  • [9fd6122659] - src: add embedding helpers to reduce boilerplate code (Anna Henningsen) #35597
  • [f7ed5f4ae3] - src: remove toLocalChecked in crypto_context (James M Snell) #35509
  • [17d5d94921] - src: replace more toLocalCheckeds in crypto_* (James M Snell) #35509
  • [83eaaf9731] - src: remove unused AsyncWrapObject (James M Snell) #35511
  • [ee5f849fda] - src: fix compiler warning in env.cc (Anna Henningsen) #35547
  • [40364b181d] - src: add check against non-weak BaseObjects at process exit (Anna Henningsen) #35490
  • [bc0c094b74] - src: unset NODE_VERSION_IS_RELEASE from master (Antoine du Hamel) #35531
  • [fdf0a84e82] - src: move all base64.h inline methods into -inl.h header file (Anna Henningsen) #35432
  • [ff4cf817a3] - src: create helper for reading Uint32BE (Juan José Arboleda) #34944
  • [c6e1edcc28] - src: add Update(const sockaddr*) variant (James M Snell) #34752
  • [1c14810edc] - src: allow instances of net.BlockList to be created internally (James M Snell) #34741
  • [6d1f0aed52] - src: add SocketAddressLRU Utility (James M Snell) #34618
  • [feb93c4e84] - src: guard against nullptr deref in TimerWrapHandle::Stop (Anna Henningsen) #34460
  • [7a447bcd54] - src: snapshot node (Joyee Cheung) #32984
  • [c943cb4809] - src: reset zero fill toggle at pre-execution (Joyee Cheung) #32984
  • [0b8ae5f2cd] - src: snapshot loaders (Joyee Cheung) #32984
  • [7ecb285842] - src: make code cache test work with snapshots (Joyee Cheung) #32984
  • [1faf6f459f] - src: snapshot Environment upon instantiation (Joyee Cheung) #32984
  • [ef9964f4c1] - src: add an ExternalReferenceRegistry class (Joyee Cheung) #32984
  • [404302fff5] - src: split the main context initialization from Environment ctor (Joyee Cheung) #32984
  • [874460a1d1] - src: refactor TimerWrap lifetime management (Anna Henningsen) #34252
  • [e2f9dc6e5a] - src: remove user_data from TimerWrap (Anna Henningsen) #34252
  • [e19a251824] - src: replace InspectorTimer with TimerWrap utility (James M Snell) #34186
  • [d4f69002b4] - src: add TimerWrap utility (James M Snell) #34186
  • [52de4cb107] - src: minor updates to FastHrtime (Anna Henningsen) #33851
  • [4678e44bb2] - src: perform bounds checking on error source line (Anna Henningsen) #33645
  • [7232c2a160] - src: use getauxval in node_main.cc (Daniel Bevenius) #33693
  • [6be80e1893] - stream: fix legacy pipe error handling (Robert Nagy) #35257
  • [2b9003b165] - stream: don't destroy on async iterator success (Robert Nagy) #35122
  • [9c62e0e384] - stream: move to internal/streams (Matteo Collina) #35239
  • [e0d3b758a0] - stream: improve Writable.destroy performance (Robert Nagy) #35067
  • [02c4869bee] - stream: fix Duplex._construct race (Robert Nagy) #34456
  • [5aeaff6499] - stream: refactor lazyLoadPromises (rickyes) #34354
  • [a55b77d2d3] - stream: finished on closed OutgoingMessage (Robert Nagy) #34313
  • [e10e292c5e] - stream: remove unused _transformState (Robert Nagy) #33105
  • [f5c11a1a0a] - stream: don't emit finish after close (Robert Nagy) #32933
  • [089d654dd8] - test: fix addons/dlopen-ping-pong for npm 7.0.1 (Myles Borins) #35667
  • [9ce5a03148] - test: add test for listen callback runtime binding (H Adinarayana) #35657
  • [a3731309cc] - test: refactor test-https-host-headers (himself65) #32805
  • [30fb4a015d] - test: add common.mustSucceed (Tobias Nießen) #35086
  • [c143266b55] - test: add a few uncovered url tests from wpt (Daijiro Wachi) #35636
  • [6751b6dc3d] - test: check for AbortController existence (James M Snell) #35616
  • [9f2e19fa30] - test: update url test for win (Daijiro Wachi) #35622
  • [c88d845db3] - test: update wpt status for url (Daijiro Wachi) #35335
  • [589dbf1392] - test: update wpt tests for url (Daijiro Wachi) #35329
  • [46bef7b771] - test: add Actions annotation output (Mary Marchini) #34590
  • [a9c5b873ca] - test: move buffer-as-path symlink test to its own test file (Rich Trott) #34569
  • [31ba9a20bd] - test: run test-benchmark-napi on arm (Rich Trott) #34502
  • [2c4ebe0426] - test: use .then(common.mustCall()) for all async IIFEs (Anna Henningsen) #34363
  • [772fdb0cd3] - test: fix flaky test-fs-stream-construct (Rich Trott) #34203
  • [9b8d317d99] - test: fix flaky test-http2-invalidheaderfield (Rich Trott) #34173
  • [2ccf15b2bf] - test: ensure finish is emitted before destroy (Robert Nagy) #33137
  • [27f3530da3] - test: remove unnecessary eslint-disable comment (Rich Trott) #34000
  • [326a79ebb9] - test: fix typo in test-quic-client-empty-preferred-address.js (gengjiawen) #33976
  • [b0b268f5a2] - test: fix flaky fs-construct test (Robert Nagy) #33625
  • [cbe955c227] - test: add net regression test (Robert Nagy) #32794
  • [5d179cb2ec] - timers: use AbortController with correct name/message (Anna Henningsen) #34763
  • [64d22c320c] - timers: fix multipleResolves in promisified timeouts/immediates (Denys Otrishko) #33949
  • [fbe33aa52e] - tools: bump remark-lint-preset-node to 1.17.1 (Rich Trott) #35668
  • [35a6946193] - tools: update gyp-next to v0.6.2 (Michaël Zasso) #35690
  • [be80faa0c8] - tools: update gyp-next to v0.6.0 (Ujjwal Sharma) #35635
  • [2d83e743d9] - tools: update ESLint to 7.11.0 (Colin Ihrig) #35578
  • [0eca660948] - tools: update ESLint to 7.7.0 (Colin Ihrig) #34783
  • [77b68f9a29] - tools: add linting rule for async IIFEs (Anna Henningsen) #34363
  • [f04538761f] - tools: enable Node.js command line flags in node_mksnapshot (Joyee Cheung) #32984
  • [b0d4eb37c7] - tools: update ESLint to 7.4.0 (Colin Ihrig) #34205
  • [076e4ed2d1] - tools: update ESLint from 7.2.0 to 7.3.1 (Rich Trott) #34000
  • [7afe3af200] - url: fix file url reparse (Daijiro Wachi) #35671