Skip to content

Commit d20e494

Browse files
MylesBorinstargos
authored andcommitted
2020-02-11, Version 12.16.0 'Erbium' (LTS)
Notable changes: New assert APIs The `assert` module now provides experimental `assert.match()` and `assert.doesNotMatch()` methods. They will validate that the first argument is a string and matches (or does not match) the provided regular expression This is an experimental feature. Ruben Bridgewater [#30929](#30929). Advanced serialization for IPC The `child_process` and `cluster` modules now support a `serialization` option to change the serialization mechanism used for IPC. The option can have one of two values: * `'json'` (default): `JSON.stringify()` and `JSON.parse()` are used. This is how message serialization was done before. * `'advanced'`: The serialization API of the `v8` module is used. It is based on the HTML structured clone algorithm. and is able to serialize more built-in JavaScript object types, such as `BigInt`, `Map`, `Set` etc. as well as circular data structures. Anna Henningsen [#30162](#30162). CLI flags The new `--trace-exit` CLI flag makes Node.js print a stack trace whenever the Node.js environment is exited proactively (i.e. by invoking the `process.exit()` function or pressing Ctrl+C). legendecas [#30516](#30516). ___ The new `--trace-uncaught` CLI flag makes Node.js print a stack trace at the time of throwing uncaught exceptions, rather than at the creation of the `Error` object, if there is any. This option is not enabled by default because it may affect garbage collection behavior negatively. Anna Henningsen [#30025](#30025). ___ The `--disallow-code-generation-from-strings` V8 CLI flag is now whitelisted in the `NODE_OPTIONS` environment variable. Shelley Vohr [#30094](#30094). New crypto APIs For DSA and ECDSA, a new signature encoding is now supported in addition to the existing one (DER). The `verify` and `sign` methods accept a `dsaEncoding` option, which can have one of two values: * `'der'` (default): DER-encoded ASN.1 signature structure encoding `(r, s)`. * `'ieee-p1363'`: Signature format `r || s` as proposed in IEEE-P1363. Tobias Nießen [#29292](#29292). ___ A new method was added to `Hash`: `Hash.prototype.copy`. It makes it possible to clone the internal state of a `Hash` object into a new `Hash` object, allowing to compute the digest between updates. Ben Noordhuis [#29910](#29910). Dependency updates libuv was updated to 1.34.0. This includes fixes to `uv_fs_copyfile()` and `uv_interface_addresses()` and adds two new functions: `uv_sleep()` and `uv_fs_mkstemp()`. Colin Ihrig [#30783](#30783). ___ V8 was updated to 7.8.279.23. This includes performance improvements to object destructuring, RegExp match failures and WebAssembly startup time. The official release notes are available at https://v8.dev/blog/v8-release-78. Michaël Zasso [#30109](#30109). New EventEmitter APIs The new `EventEmitter.on` static method allows to async iterate over events. Matteo Collina [#27994](#27994). ___ It is now possible to monitor `'error'` events on an `EventEmitter` without consuming the emitted error by installing a listener using the symbol `EventEmitter.errorMonitor`. Gerhard Stoebich [#30932](#30932). ___ Using `async` functions with event handlers is problematic, because it can lead to an unhandled rejection in case of a thrown exception. The experimental `captureRejections` option in the `EventEmitter` constructor or the global setting change this behavior, installing a `.then(undefined, handler)` handler on the `Promise`. This handler routes the exception asynchronously to the `Symbol.for('nodejs.rejection')` method if there is one, or to the `'error'` event handler if there is none. Setting `EventEmitter.captureRejections = true` will change the default for all new instances of `EventEmitter`. This is an experimental feature. Matteo Collina [#27867](#27867). Performance Hooks are no longer experimental The `perf_hooks` module is now considered a stable API. legendecas [#31101](#31101). Introduction of experimental WebAssembly System Interface (WASI) support A new core module, `wasi`, is introduced to provide an implementation of the [WebAssembly System Interface](https://wasi.dev/) specification. WASI gives sandboxed WebAssembly applications access to the underlying operating system via a collection of POSIX-like functions. This is an experimental feature. Colin Ihrig [#30258](#30258). PR-URL: #31691
1 parent fc7b27e commit d20e494

24 files changed

+771
-66
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ release.
2828
</tr>
2929
<tr>
3030
<td valign="top">
31-
<b><a href="doc/changelogs/CHANGELOG_V12.md#12.15.0">12.15.0</a></b><br/>
31+
<b><a href="doc/changelogs/CHANGELOG_V12.md#12.16.0">12.16.0</a></b><br/>
32+
<a href="doc/changelogs/CHANGELOG_V12.md#12.15.0">12.15.0</a><br/>
3233
<a href="doc/changelogs/CHANGELOG_V12.md#12.14.1">12.14.1</a><br/>
3334
<a href="doc/changelogs/CHANGELOG_V12.md#12.14.0">12.14.0</a><br/>
3435
<a href="doc/changelogs/CHANGELOG_V12.md#12.13.1">12.13.1</a><br/>

doc/api/assert.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ parameter is an instance of an [`Error`][] then it will be thrown instead of the
427427

428428
## `assert.doesNotMatch(string, regexp[, message])`
429429
<!-- YAML
430-
added: REPLACEME
430+
added: v12.16.0
431431
-->
432432

433433
* `string` {string}
@@ -766,7 +766,7 @@ let err;
766766

767767
## `assert.match(string, regexp[, message])`
768768
<!-- YAML
769-
added: REPLACEME
769+
added: v12.16.0
770770
-->
771771

772772
* `string` {string}

doc/api/child_process.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ arbitrary command execution.**
321321
<!-- YAML
322322
added: v0.5.0
323323
changes:
324-
- version: REPLACEME
324+
- version: v12.16.0
325325
pr-url: https://github.com/nodejs/node/pull/30162
326326
description: The `serialization` option is supported now.
327327
- version: v8.0.0
@@ -392,7 +392,7 @@ The `shell` option available in [`child_process.spawn()`][] is not supported by
392392
<!-- YAML
393393
added: v0.1.90
394394
changes:
395-
- version: REPLACEME
395+
- version: v12.16.0
396396
pr-url: https://github.com/nodejs/node/pull/30162
397397
description: The `serialization` option is supported now.
398398
- version: v8.8.0
@@ -1493,7 +1493,7 @@ unavailable.
14931493

14941494
## Advanced Serialization
14951495
<!-- YAML
1496-
added: REPLACEME
1496+
added: v12.16.0
14971497
-->
14981498

14991499
Child processes support a serialization mechanism for IPC that is based on the

doc/api/cli.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ Enable experimental diagnostic report feature.
193193

194194
### `--experimental-specifier-resolution=mode`
195195
<!-- YAML
196-
added: REPLACEME
196+
added: v12.16.0
197197
-->
198198

199199
Sets the resolution algorithm for resolving ES module specifiers. Valid options
@@ -214,7 +214,7 @@ Enable experimental ES Module support in the `vm` module.
214214

215215
### `--experimental-wasi-unstable-preview1`
216216
<!-- YAML
217-
added: REPLACEME
217+
added: v12.16.0
218218
-->
219219

220220
Enable experimental WebAssembly System Interface (WASI) support.
@@ -708,7 +708,7 @@ with crypto support (default).
708708

709709
### `--tls-keylog=file`
710710
<!-- YAML
711-
added: REPLACEME
711+
added: v12.16.0
712712
-->
713713

714714
Log TLS key material to a file. The key material is in NSS `SSLKEYLOGFILE`
@@ -796,7 +796,7 @@ Enables the collection of trace event tracing information.
796796

797797
### `--trace-exit`
798798
<!-- YAML
799-
added: REPLACEME
799+
added: v12.16.0
800800
-->
801801

802802
Prints a stack trace whenever an environment is exited proactively,
@@ -820,7 +820,7 @@ connection problems.
820820

821821
### `--trace-uncaught`
822822
<!-- YAML
823-
added: REPLACEME
823+
added: v12.16.0
824824
-->
825825

826826
Print stack traces for uncaught exceptions; usually, the stack trace associated
@@ -883,7 +883,7 @@ See `SSL_CERT_DIR` and `SSL_CERT_FILE`.
883883

884884
### `--use-largepages=mode`
885885
<!-- YAML
886-
added: REPLACEME
886+
added: v12.16.0
887887
-->
888888

889889
Re-map the Node.js static code to large memory pages at startup. If supported on
@@ -1230,7 +1230,7 @@ to an empty string (`''` or `' '`) disables persistent REPL history.
12301230

12311231
### `NODE_REPL_EXTERNAL_MODULE=file`
12321232
<!-- YAML
1233-
added: REPLACEME
1233+
added: v12.16.0
12341234
-->
12351235

12361236
Path to a Node.js module which will be loaded in place of the built-in REPL.

doc/api/cluster.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,7 @@ values are `'rr'` and `'none'`.
724724
<!-- YAML
725725
added: v0.7.1
726726
changes:
727-
- version: REPLACEME
727+
- version: v12.16.0
728728
pr-url: https://github.com/nodejs/node/pull/30162
729729
description: The `serialization` option is supported now.
730730
- version: v9.5.0

doc/api/crypto.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@ console.log(hash.digest('hex'));
10431043

10441044
### `hash.copy([options])`
10451045
<!-- YAML
1046-
added: REPLACEME
1046+
added: v12.16.0
10471047
-->
10481048

10491049
* `options` {Object} [`stream.transform` options][]

doc/api/deprecations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2525,7 +2525,7 @@ an officially supported API.
25252525
### DEP0136: `http` `finished`
25262526
<!-- YAML
25272527
changes:
2528-
- version: REPLACEME
2528+
- version: v12.16.0
25292529
pr-url: https://github.com/nodejs/node/pull/28679
25302530
description: Documentation-only deprecation.
25312531
-->

doc/api/dgram.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ if (cluster.isMaster) {
125125

126126
### `socket.addSourceSpecificMembership(sourceAddress, groupAddress[, multicastInterface])`
127127
<!-- YAML
128-
added: REPLACEME
128+
added: v12.16.0
129129
-->
130130
* `sourceAddress` {string}
131131
* `groupAddress` {string}
@@ -314,7 +314,7 @@ drop membership on all valid interfaces.
314314

315315
### `socket.dropSourceSpecificMembership(sourceAddress, groupAddress[, multicastInterface])`
316316
<!-- YAML
317-
added: REPLACEME
317+
added: v12.16.0
318318
-->
319319

320320
* `sourceAddress` {string}

doc/api/errors.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1804,7 +1804,7 @@ connection.
18041804
<a id="ERR_TLS_INVALID_CONTEXT">
18051805
### ERR_TLS_INVALID_CONTEXT
18061806
<!-- YAML
1807-
added: REPLACEME
1807+
added: v12.16.0
18081808
-->
18091809

18101810
The context must be a `SecureContext`.

doc/api/events.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ recommendation is to **not use `async` functions as `'error'` event handlers**.
224224
<!-- YAML
225225
added: v0.1.26
226226
changes:
227-
- version: REPLACEME
227+
- version: v12.16.0
228228
pr-url: https://github.com/nodejs/node/pull/27867
229229
description: Added captureRejections option.
230230
-->
@@ -362,7 +362,7 @@ Its `name` property is set to `'MaxListenersExceededWarning'`.
362362

363363
### `EventEmitter.errorMonitor`
364364
<!-- YAML
365-
added: REPLACEME
365+
added: v12.16.0
366366
-->
367367

368368
This symbol shall be used to install a listener for only monitoring `'error'`
@@ -784,7 +784,7 @@ emitter.emit('log');
784784

785785
### `emitter[Symbol.for('nodejs.rejection')](err, eventName[, ...args])`
786786
<!-- YAML
787-
added: REPLACEME
787+
added: v12.16.0
788788
-->
789789

790790
> Stability: 1 - captureRejections is experimental.
@@ -866,7 +866,7 @@ run();
866866

867867
## events.captureRejections
868868
<!-- YAML
869-
added: REPLACEME
869+
added: v12.16.0
870870
-->
871871

872872
> Stability: 1 - captureRejections is experimental.
@@ -877,7 +877,7 @@ Change the default `captureRejections` option on all new `EventEmitter` objects.
877877

878878
## events.captureRejectionSymbol
879879
<!-- YAML
880-
added: REPLACEME
880+
added: v12.16.0
881881
-->
882882

883883
> Stability: 1 - captureRejections is experimental.
@@ -888,7 +888,7 @@ See how to write a custom [rejection handler][rejection].
888888

889889
## events.on(emitter, eventName)
890890
<!-- YAML
891-
added: REPLACEME
891+
added: v12.16.0
892892
-->
893893

894894
* `emitter` {EventEmitter}

0 commit comments

Comments
 (0)