Notable Changes

OpenSSL-1.1.1i

OpenSSL-1.1.1i contains a fix for CVE-2020-1971: OpenSSL – EDIPARTYNAME NULL pointer de-reference (High). This is a vulnerability in OpenSSL which may be exploited through Node.js. You can read more about it in https://www.openssl.org/news/secadv/20201208.txt

Contributed by Myles Borins #36520.

Extended support for

1
AbortSignal

in child_process and stream

The following APIs now support an

1
AbortSignal

in their options object:

  • 1
    child_process.spawn()

Calling

1
.abort()

on the corresponding

1
AbortController

is similar to calling

1
.kill()

on the child process except the error passed to the callback will be an

1
AbortError

:


1
2
3
4
5
6
7
<span class="token keyword">const</span> controller <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AbortController</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> <span class="token punctuation">{</span> signal <span class="token punctuation">}</span> <span class="token operator">=</span> controller<span class="token punctuation">;</span>
<span class="token keyword">const</span> grep <span class="token operator">=</span> <span class="token function">spawn</span><span class="token punctuation">(</span><span class="token string">'grep'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'ssh'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> signal <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
grep<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'error'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">err</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
  <span class="token comment">// This will be called with err being an AbortError if the controller aborts</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
controller<span class="token punctuation">.</span><span class="token function">abort</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// stops the process</span>
  • 1
    new stream.Writable()

    and

    1
    new stream.Readable()

Calling

1
.abort()

on the corresponding

1
AbortController

will behave the same way as calling

1
.destroy(new AbortError())

on the stream:


1
2
3
4
5
6
7
8
9
10
<span class="token keyword">const</span> <span class="token punctuation">{</span> Readable <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'stream'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> controller <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AbortController</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> read <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Readable</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
  <span class="token function">read</span><span class="token punctuation">(</span><span class="token parameter">size</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token comment">// ...</span>
  <span class="token punctuation">}</span><span class="token punctuation">,</span>
  signal<span class="token operator">:</span> controller<span class="token punctuation">.</span>signal
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Later, abort the operation closing the stream</span>
controller<span class="token punctuation">.</span><span class="token function">abort</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

Contributed by Benjamin Gruenbaum #36431, #36432.

BigInt support in

1
querystring.stringify()


If

1
querystring.stringify()

is called with an object that contains

1
BigInt

values, they will now be serialized to their decimal representation instead of the empty string:


1
2
3
<span class="token keyword">const</span> querystring <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'querystring'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>querystring<span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span><span class="token punctuation">{</span> bigint<span class="token operator">:</span> <span class="token number">2n</span> <span class="token operator">**</span> <span class="token number">64n</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Prints: bigint=18446744073709551616</span>

Contributed by Darshan Sen #36499.

Additions to the C++ embedder APIs

A new

1
IsolateSettingsFlag

is available for those calling

1
SetIsolateUpForNode()

:

1
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

1
node::GetEnvironmentIsolateData()

and

1
node::GetArrayBufferAllocator()

to respectively get the current

1
IsolateData*

and, from it, the current Node.js

1
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

  • [
    1
    e449571230

    ] – (SEMVER-MINOR) child_process: add signal support to spawn (Benjamin Gruenbaum) #36432

  • [
    1
    25d7e90386

    ] – (SEMVER-MINOR) http: use

    1
    autoDestroy: true

    in incoming message (Daniele Belardi) #33035

  • [
    1
    5481be8cbd

    ] – (SEMVER-MINOR) lib: support BigInt in querystring.stringify (raisinten) #36499

  • [
    1
    036ed1fafc

    ] – (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #36441

  • [
    1
    e23309486b

    ] – (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #36447

  • [
    1
    6ecbc1dcb3

    ] – (SEMVER-MINOR) stream: support abortsignal in constructor (Benjamin Gruenbaum) #36431

Semver-patch commits

Documentation commits

Other commits

Windows 32-bit Installer: https://nodejs.org/dist/v15.5.0/node-v15.5.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v15.5.0/node-v15.5.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v15.5.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v15.5.0/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v15.5.0/node-v15.5.0.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-aix-ppc64.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v15.5.0/node-v15.5.0-linux-arm64.tar.xz
Source Code: Coming soon
Other release files: https://nodejs.org/dist/v15.5.0/
Documentation: https://nodejs.org/docs/v15.5.0/api/

SHASUMS


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

14ba6dd3629af5640cf0fde81b86ce9e17bcfdc7b25f7fe2a0a112d422c3d8cb  node-v15.5.0-aix-ppc64.tar.gz
f7b2859579d5c1c6e6935e939e78b5405f21797782b1f3c9607aecd6ad6a3ebf  node-v15.5.0-darwin-x64.tar.gz
5aa2c5475eac51757784121d69e8dbbd00a66dbcf12aa46c6da36b2e8be8e076  node-v15.5.0-darwin-x64.tar.xz
99c6088e276fe894576b378643c994eb5d80b285ef20f1a4fa91dd9dd16b6b23  node-v15.5.0-headers.tar.gz
544b2edcc7113bdb3e8d0cd468ea746f97e3baaa4019e8d2dde6ff0cadf9c243  node-v15.5.0-headers.tar.xz
0dd46103a8a6ef1b41642d17fe2b141f1e929f6a605b853a1480a37cb44bde1d  node-v15.5.0-linux-arm64.tar.gz
caf23a20ef6dbce192c954bc7c14296756153e23561b324266e0d2e5dba02527  node-v15.5.0-linux-arm64.tar.xz
1b61058752942aaf3c81ba1858a56efd81c6a5ddb749118438a561be8b486141  node-v15.5.0-linux-armv7l.tar.gz
a44cb19bb7c3c658074acc0e6346b1b98df5164a8c0d35c0e850418e6b829d91  node-v15.5.0-linux-armv7l.tar.xz
6774340f555120199f29c8229d887b67d6a376dedfcb1a01ef747b57900510b7  node-v15.5.0-linux-ppc64le.tar.gz
7394ee14097f0391652b444d73bfd9f655a86344e0524ace97496b08fd2bd513  node-v15.5.0-linux-ppc64le.tar.xz
3afc5b2fda9fc388d4f84b90fa519fc46f6a09bd4d30aa04337cfaf8cf985199  node-v15.5.0-linux-s390x.tar.gz
0fd2258e1524ccc4c23ff0da422846ca482f4dc1c722b45d3e39bf671f8f032c  node-v15.5.0-linux-s390x.tar.xz
75160c2f307fe4ee623d911b77a7acf249fa9ac46c4e4aa5f8cade6c26161ea0  node-v15.5.0-linux-x64.tar.gz
d1390db801acbbda692a3fefef861f8195374f374018f9404cabf53ab9816b93  node-v15.5.0-linux-x64.tar.xz
3741ff9384c953a7ff44a8e40c8d65c9e4e7834e39ae627486c20781b21ce87b  node-v15.5.0.pkg
a4f10a2e67dc99ed64c297be988fbe37f8a62f8fb8ff880f121f8be4e30df3d1  node-v15.5.0.tar.gz
4fbabdef2b152f524b290f277f915f929e2771188d99814b358cab19d6f5ecf3  node-v15.5.0.tar.xz
69f62ccd38be1602d8065f4bdaf18959c2b978d6378909fd925f2f2a547f9493  node-v15.5.0-win-x64.7z
19353f6403deed2be4b2c056b161d4bad724418473e49e7a1cbe76eea06421be  node-v15.5.0-win-x64.zip
65523f1291cb5f45bfdeeb2e15ee8065763c9c0112dd9fcb18151801a473c620  node-v15.5.0-win-x86.7z
36a14186556c57d943d4d61918ff7377d34609e0baed90b8a3be0e94065ca895  node-v15.5.0-win-x86.zip
8e3837f4b3ca1df94c9a7380dcdc0b623f94d0cd1d580eb4d28fef52dbb59967  node-v15.5.0-x64.msi
40d2239d59bcab4a2d8cdc1d65727c61ede2b39945f5b6343a9d2ba8acaf0960  node-v15.5.0-x86.msi
a885d5c1fab40ea83488b215cccfeb38378ab7a1353314f4c7f6447092c853f9  win-x64/node.exe
e5082525203684fd34553f9a26c12d722a1a06ffeac8def760b5fea6227d167e  win-x64/node.lib
3e865979d1fc8935a968f6908db76ed65fe1203f25c817944f11296197eaf5b5  win-x64/node_pdb.7z
a713e3b4b51c5fd7fde6c1261ccc333415534e1cba8477b9d10870fc208ceeb7  win-x64/node_pdb.zip
96d2264e54abdf0c032a14e4248504c0fee06b9a9d13fa3ee29b0b34295fce4d  win-x86/node.exe
844ed42e7cacc6443224b880400c7f884bd058e07dc44e52d871ac5ea736e979  win-x86/node.lib
9bb43401623fbd31fb09e3c23dfb69ed54d17044f9d01cdc12ce2f8f66968086  win-x86/node_pdb.7z
47131736ea4396b16e1c26a2a505cc4750421204010701f51c791df5f403ff17  win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEj8yhP+8dDC6RAI4Jdw96mlrhVgAFAl/iQawACgkQdw96mlrh
VgBbZA//Wxy29fETK8ePNA9VHIzwWjwoGO79BUWRYU8qUXHFlxAN0CkemiDvNaN9
DwMX/cXvoBKleUMaG2ek5wWhx0NLY9yM2qTD4ngClSmnwxRYbEhzd7z+HwANKrxO
PxVWh3DaaBuyBAzh93BqGUy2JssyWXPQ4t0EYftW123hT5e1YCpEDRJ7dlyRFDNY
lhEcl/tsPZUjhgYuKW6nCzcC9BqkkIgmt8/tswu4xuxP+DijQ0VEt4Lp0dp63u+w
4sfsTcXS9rF0/ZVauWHEqpFtMAjqBwYPdW6oxl/9fmFcXLhBWSM/M9P+OErc/kTR
CftL1axpwd9U/vIwWopu4SDshM8aRxojc37mAGLF7BrB2XspwWTypxvG/o3NoxM4
wS/yod1pMg0NdXfKWLFqtCqoh3vQSjcXvFFZdsNLzvP84dKbEELvLl3vr74wvmzk
9/uQ7Q3SRBUZrduPMVe7UdoT3+hvMTCq2Cr/RpvRGVHrkY5LG+Fr39mnLisD7YLf
0kO0epYHOLC3jjC5HCRp4dVyU3YJQMTl7WftAqnJ8iLIRzI4WL7wJs0OLQRKPYRL
X8At+0hXmCQVfMjIiyaluU29qAVcU/ujXsIN4kNG3+NILy6CX4IkXwzf49/yS5d5
lFFEYjiWmAC0Uq0UM9RbLV5K2NUikZL0dImQ9ePTFVc+ozh/BAQ=
=RBoq
-----END PGP SIGNATURE-----
Categories: NewsReleases

0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *