Skip to content

chore(deps): update node.js to v12.16.0#3463

Merged
faustbrian merged 1 commit intodevelopfrom
renovate/node-12.x
Feb 14, 2020
Merged

chore(deps): update node.js to v12.16.0#3463
faustbrian merged 1 commit intodevelopfrom
renovate/node-12.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Feb 11, 2020

This PR contains the following updates:

Package Update Change
node minor 12.14.1 -> 12.16.0

Release Notes

nodejs/node

v12.16.0

Compare Source

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:

const assert = require('assert').strict;

assert.match('I will fail', /pass/);
// AssertionError [ERR_ASSERTION]: The input did not match the regular ...

assert.doesNotMatch('I will fail', /fail/);
// AssertionError [ERR_ASSERTION]: The input was expected to not match the ...

This is an experimental feature.

Ruben Bridgewater #​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.

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.


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.


The --disallow-code-generation-from-strings V8 CLI flag is now whitelisted in
the NODE_OPTIONS environment variable.

Shelley Vohr #​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.


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:

// Calculate a rolling hash.
const crypto = require('crypto');
const hash = crypto.createHash('sha256');

hash.update('one');
console.log(hash.copy().digest('hex'));

hash.update('two');
console.log(hash.copy().digest('hex'));

hash.update('three');
console.log(hash.copy().digest('hex'));

// Etc.

Ben Noordhuis #​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.


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.

New EventEmitter APIs

The new EventEmitter.on static method allows to async iterate over events:

const { on, EventEmitter } = require('events');

(async () => {

  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }

})();

Matteo Collina #​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:

const myEmitter = new MyEmitter();

myEmitter.on(EventEmitter.errorMonitor, (err) => {
  MyMonitoringTool.log(err);
});

myEmitter.emit('error', new Error('whoops!'));
// Still throws and crashes Node.js

Gerhard Stoebich #​30932.


Using async functions with event handlers is problematic, because it
can lead to an unhandled rejection in case of a thrown exception:

const ee = new EventEmitter();

ee.on('something', async (value) => {
  throw new Error('kaboom');
});

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.

const ee1 = new EventEmitter({ captureRejections: true });
ee1.on('something', async (value) => {
  throw new Error('kaboom');
});

ee1.on('error', console.log);

const ee2 = new EventEmitter({ captureRejections: true });
ee2.on('something', async (value) => {
  throw new Error('kaboom');
});

ee2[Symbol.for('nodejs.rejection')] = console.log;

Setting EventEmitter.captureRejections = true will change the default for all
new instances of EventEmitter.

EventEmitter.captureRejections = true;
const ee1 = new EventEmitter();
ee1.on('something', async (value) => {
  throw new Error('kaboom');
});

ee1.on('error', console.log);

This is an experimental feature.

Matteo Collina #​27867.

Performance Hooks are no longer experimental

The perf_hooks module is now considered a stable API.

legendecas #​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 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.

Commits

Renovate configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻️ Rebasing: Whenever PR becomes conflicted, or if you tick the rebase/retry checkbox below.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by WhiteSource Renovate. View repository job log here.

@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 11, 2020

Codecov Report

Merging #3463 into develop will not change coverage by %.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff            @@
##           develop    #3463   +/-   ##
========================================
  Coverage    66.16%   66.16%           
========================================
  Files          439      439           
  Lines        12458    12458           
  Branches      1708     1708           
========================================
  Hits          8243     8243           
  Misses        4181     4181           
  Partials        34       34           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 13d7f83...eb3ae66. Read the comment docs.

@faustbrian faustbrian merged commit 363c65a into develop Feb 14, 2020
@faustbrian faustbrian deleted the renovate/node-12.x branch February 14, 2020 04:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants