Latest in branch 9.x
9.11.2
Released 12 Jun 2018
(7 years ago)
SoftwareNode.js
Version9.x
Status
End of life
Initial release9.0.0
31 Oct 2017
(8 years ago)
Latest release9.11.2
12 Jun 2018
(7 years ago)
End of bug fixes30 Jun 2018
(Ended 7 years, 10 months ago)
End of security fixes30 Jun 2018
(Ended 7 years, 10 months ago)
Release noteshttps://github.com/nodejs/node/releases/tag/v9.11.2
Source codehttps://github.com/nodejs/node/tree/v9.11.2
Documentationhttps://nodejs.org/dist/latest-v9.x/docs/api/
Downloadhttps://nodejs.org/download/release/latest-v9.x/
Node.js 9.x ReleasesView full list

What Is New in Node.js 9?

CategoryChange
New Featureshttp2 module (experimental)
New Featuresutil.promisify() -- convert callback APIs to promises
ImprovementsV8 6.2 -- async iteration, Object rest/spread properties
ImprovementsError codes introduced across Node.js core
Improvementsassert: strict mode added (assert.strict)
Improvementscluster: worker disconnect timeout option
SecurityOpenSSL 1.0.2n

util.promisify() -- Instant Promise Wrappers for Callbacks

util.promisify() wraps any Node.js callback-style function (that follows the (err, value) convention) into a promise-returning function. This bridged the gap while the ecosystem migrated from callbacks to async/await.

import { promisify } from 'node:util';
import { readFile } from 'node:fs';

const readFileAsync = promisify(readFile);
const content = await readFileAsync('./config.json', 'utf8');

Many Node.js built-ins also expose a [util.promisify.custom] symbol for customized behavior when promisified.

HTTP/2 Module (Experimental)

Node.js 9 ships an experimental http2 module implementing the HTTP/2 protocol (RFC 7540). HTTP/2 provides multiplexing, header compression (HPACK), and server push -- all over a single TCP connection.

import http2 from 'node:http2';
const server = http2.createSecureServer({ key, cert });
server.on('stream', (stream, headers) => {
  stream.respond({ ':status': 200 });
  stream.end('Hello HTTP/2');
});

The module is experimental in v9 and stabilizes in Node.js 10. For production use, prefer v10+ or frameworks like Fastify that abstract over both HTTP/1.1 and HTTP/2.

assert.strict -- Strict Equality by Default

assert.strict provides a version of the assert module where all comparisons use strict equality (===). The legacy assert.equal() uses abstract equality (==), which causes surprising failures. Switching to assert.strict makes test assertions more predictable.

FAQ

Is Node.js 9 an LTS release?
No. Node.js 9 is a Current release that reached end-of-life in June 2018. The concurrent LTS was Node.js 8.

Can util.promisify() wrap third-party callback libraries?
Yes, as long as the callback signature is (err, result). For libraries that use non-standard callback shapes, use the [util.promisify.custom] symbol or write a manual wrapper.

Does HTTP/2 require HTTPS?
In browsers, yes -- HTTP/2 is only negotiated over TLS (h2). The Node.js http2 module also supports h2c (HTTP/2 over cleartext) using http2.createServer(), but browsers do not use this. For server-to-server communication cleartext h2c works fine.

What is Object rest/spread in V8 6.2?
const { a, ...rest } = obj and const full = { ...defaults, ...overrides } became natively available. Previously these required Babel's object rest/spread plugin.

Are error codes backward compatible?
New error codes were added across v9/v10. Existing error messages are kept for human readability but the code property is now the stable, machine-readable identifier you should check in error handling logic.

Releases In Branch 9.x

VersionRelease datenpm version
9.11.212 Jun 2018
(7 years ago)
5.6.0
9.11.105 Apr 2018
(8 years ago)
5.6.0
9.11.004 Apr 2018
(8 years ago)
5.6.0
9.10.129 Mar 2018
(8 years ago)
5.6.0
9.10.028 Mar 2018
(8 years ago)
5.6.0
9.9.021 Mar 2018
(8 years ago)
5.6.0
9.8.007 Mar 2018
(8 years ago)
5.6.0
9.7.102 Mar 2018
(8 years ago)
5.6.0
9.7.001 Mar 2018
(8 years ago)
5.6.0
9.6.123 Feb 2018
(8 years ago)
5.6.0
9.6.021 Feb 2018
(8 years ago)
5.6.0
9.5.031 Jan 2018
(8 years ago)
5.6.0
9.4.010 Jan 2018
(8 years ago)
5.6.0
9.3.012 Dec 2017
(8 years ago)
5.5.1
9.2.108 Dec 2017
(8 years ago)
5.5.1
9.2.014 Nov 2017
(8 years ago)
5.5.1
9.1.007 Nov 2017
(8 years ago)
5.5.1
9.0.031 Oct 2017
(8 years ago)
5.5.1