Node v12.16.1 (LTS)

Notable changes

Node.js 12.16.0 included 6 regressions that are being fixed in this release

Accidental Unflagging of Self Resolving Modules:

12.16.0 included a large update to the ESM implementation. One of the new features, Self Referential Modules, was accidentally released without requiring the --experimental-modules flag. This release is being made to appropriately flag the feature.

Process Cleanup Changed Introduced WASM-Related Assertion:

A change during Node.js process cleanup led to a crash in combination with specific usage of WASM. This has been fixed by partially reverted said change. A regression test and a full fix are being worked on and will likely be included in future 12.x and 13.x releases.

Use Largepages Runtime Option Introduced Linking Failure:

A Semver-Minor change to introduce --use-largepages as a runtime option introduced a linking failure. This had been fixed in master but regressed as the fix has not yet gone out in a Current release. The feature has been reverted, but will be able to reland with a fix in a future Semver-Minor release.

Async Hooks was Causing an Exception When Handling Errors:

Changes in async hooks internals introduced a case where an internal api call could be called with undefined causing a process to crash. The change to async hooks was reverted. A regression test and fix has been proposed and the change could re-land in a future Semver-Patch release if the regression is reliably fixed.

New Enumerable Read-Only Property on EventEmitter breaks @types/extend

A new property for enumerating events was added to the EventEmitter class. This broke existing code that was using the @types/extend module for extending classses as @types/extend was attemping to write over the existing field which the new change made read-only. As this is the first property on EventEmitter that is read-only this feature could be considered Semver-Major. The new feature has been reverted but could re-land in a future Semver-Minor release if a non breaking way of applying it is found.

Exceptions in the HTTP parser were not emitting an uncaughtException

A refactoring to Node.js interanls resulted in a bug where errors in the HTTP parser were not being emitted by process.on('uncaughtException') when the async_hooks after hook exists. The fix to this bug has been included in this release.

Commits

[ 51fdd759b9 ] - async_hooks : ensure event after been emitted on runInAsyncScope (legendecas) #31784

] - : ensure event after been emitted on runInAsyncScope (legendecas) #31784 [ 7a1b0ac06f ] - Revert " build : re-introduce --use-largepages as no-op" (Myles Borins) #31782

] - " : re-introduce --use-largepages as no-op" (Myles Borins) #31782 [ a53eeca2a9 ] - Revert " build : switch realpath to pwd" (Myles Borins) #31782

] - " : switch realpath to pwd" (Myles Borins) #31782 [ 6d432994e6 ] - Revert " build : warn upon --use-largepages config option" (Myles Borins) #31782

] - " : warn upon --use-largepages config option" (Myles Borins) #31782 [ a5bc00af12 ] - Revert " events : allow monitoring error events" (Myles Borins)

] - " : allow monitoring error events" (Myles Borins) [ f0b2d875d9 ] - module : 12.x self resolve flag as experimental modules (Guy Bedford) #31757

] - : 12.x self resolve flag as experimental modules (Guy Bedford) #31757 [ 42b68a4e24 ] - src : inform callback scopes about exceptions in HTTP parser (Anna Henningsen) #31801

] - : inform callback scopes about exceptions in HTTP parser (Anna Henningsen) #31801 [ 065a32f064 ] - Revert " src : make --use-largepages a runtime option" (Myles Borins) #31782

] - " : make --use-largepages a runtime option" (Myles Borins) #31782 [ 3d5beebc62 ] - Revert " src : make large_pages node.cc include conditional" (Myles Borins) #31782

] - " : make large_pages node.cc include conditional" (Myles Borins) #31782 [ 43d02e20e0 ] - src : keep main-thread Isolate attached to platform during Dispose (Anna Henningsen) #31795

] - : keep main-thread Isolate attached to platform during Dispose (Anna Henningsen) #31795 [ 7a5954ef26 ] - src: fix -Winconsistent-missing-override warning (Colin Ihrig) #30549

Windows 32-bit Installer: https://nodejs.org/dist/v12.16.1/node-v12.16.1-x86.msi

Windows 64-bit Installer: https://nodejs.org/dist/v12.16.1/node-v12.16.1-x64.msi

Windows 32-bit Binary: https://nodejs.org/dist/v12.16.1/win-x86/node.exe

Windows 64-bit Binary: https://nodejs.org/dist/v12.16.1/win-x64/node.exe

macOS 64-bit Installer: https://nodejs.org/dist/v12.16.1/node-v12.16.1.pkg

macOS 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-darwin-x64.tar.gz

Linux 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz

Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-ppc64le.tar.xz

Linux s390x 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-s390x.tar.xz

AIX 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-aix-ppc64.tar.gz

SmartOS 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-sunos-x64.tar.xz

ARMv7 32-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-armv7l.tar.xz

ARMv8 64-bit Binary: https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-arm64.tar.xz

Source Code: https://nodejs.org/dist/v12.16.1/node-v12.16.1.tar.gz

Other release files: https://nodejs.org/dist/v12.16.1/

Documentation: https://nodejs.org/docs/v12.16.1/api/

SHASUMS