0.12.18

Latest release in branch 0.12.x
Released 9 years ago (February 22, 2017)

Software Node.js
Branch 0.12.x
Status
End of life
End of bug fixes April 01, 2016
End of security fixes December 31, 2016
First official release version 0.12.0
First official release date 11 years ago (February 06, 2015)
Release notes https://github.com/nodejs/node/releases/tag/v0.12.18
Source code https://github.com/nodejs/node/tree/v0.12.18
Documentation https://nodejs.org/dist/latest-v0.12.x/docs/api/
Download https://nodejs.org/download/release/latest-v0.12.x/
Node.js 0.12.x Releases View full list

What Is New in Node.js 0.12?

CategoryChange
New Featurescluster: round-robin load balancing for worker processes
New FeaturesSynchronous child_process.exec family
New FeaturesTLS: SNI and OCSP stapling support
New FeaturesTLS: multi-key/cert pairs per server
ImprovementsV8 3.28 -- Promises, generators (partially)
ImprovementsHTTP/HTTPS: max sockets configurable
ImprovementsStreams: improved pipe reliability
SecurityOpenSSL 1.0.1r

Cluster Round-Robin Scheduling

Node.js 0.12 finally makes the cluster module actually balance load across workers. Prior to 0.12, the OS handled connection routing to worker processes, which led to uneven distribution -- some workers were overloaded while others sat idle.

With round-robin scheduling (the default on Linux), the master process distributes each incoming connection to the next worker in rotation. On Windows, the OS handles balancing. This makes multi-core utilization much more predictable.

import cluster from 'node:cluster';
import http from 'node:http';
import { cpus } from 'node:os';

if (cluster.isMaster) {
  cpus().forEach(() => cluster.fork());
} else {
  http.createServer((req, res) => res.end('ok')).listen(3000);
}

TLS Enhancements -- SNI and OCSP Stapling

Server Name Indication (SNI) lets a single TLS server host multiple virtual domains, each with its own certificate -- essential for shared hosting and multi-tenant HTTPS servers. OCSP stapling lets the server include a cached certificate revocation status in the TLS handshake, reducing latency and load on the certificate authority's OCSP responder.

These features bring Node.js's TLS stack to parity with Nginx and Apache for common HTTPS hosting scenarios.

Native Promises in V8 3.28

V8 3.28 ships a native Promise implementation (conforming to Promise/A+). This is the first version of Node.js with native promises -- previously you had to use bluebird, q, or similar libraries.

Native promises perform well but lack some of the utility methods (like .map(), .spread()) that Bluebird provides. Most teams used a mix: native promises for new code while legacy code retained Bluebird for the richer API.

FAQ

Is Node.js 0.12 an LTS release?
Node.js 0.12 predates the formal LTS program (which starts with Node.js 4). It received extended maintenance through April 2017 informally. Now fully end-of-life.

Should I use native promises from 0.12 or stick with Bluebird?
For new codebases starting on Node.js 0.12, native promises are fine. For existing code heavy on Bluebird's .map()/.all()/.props() utilities, stay on Bluebird or wrap native promises. Bluebird also has better performance on some V8 3.x versions.

How does cluster round-robin affect sticky sessions?
Round-robin does not preserve which worker handles a client's session. For stateful WebSocket connections or session-dependent routes, use an external session store (Redis) or a load balancer that supports IP hash or cookie-based affinity.

Does 0.12 support ES6 at all?
Partially, via V8 3.28. let, const, arrow functions, and classes require the --harmony flag. Native promises are the only ES6 feature available by default. Full ES6 ships in Node.js 4-6.

Is there a migration guide from 0.10 to 0.12?
The main changes are the cluster scheduler, TLS API additions, and stream behavior refinements. The Node.js project maintained API change notes at the GitHub wiki that document the delta between versions.

Releases In Branch 0.12.x

Version Release date npm version
0.12.18 9 years ago
(February 22, 2017)
2.15.11
0.12.17 9 years ago
(October 18, 2016)
2.15.1
0.12.16 9 years ago
(September 27, 2016)
2.15.1
0.12.15 9 years ago
(June 23, 2016)
2.15.1
0.12.14 9 years ago
(May 06, 2016)
2.15.1
0.12.13 10 years ago
(March 31, 2016)
2.15.0
0.12.12 10 years ago
(March 08, 2016)
2.14.9
0.12.11 10 years ago
(March 03, 2016)
2.14.9
0.12.10 10 years ago
(February 09, 2016)
2.14.9
0.12.9 10 years ago
(December 03, 2015)
2.14.9
0.12.8 10 years ago
(November 24, 2015)
2.14.9
0.12.7 10 years ago
(July 09, 2015)
2.11.3
0.12.6 10 years ago
(July 04, 2015)
2.11.2
0.12.5 10 years ago
(June 22, 2015)
2.11.2
0.12.4 10 years ago
(May 23, 2015)
2.10.1
0.12.3 10 years ago
(May 14, 2015)
2.9.1
0.12.2 11 years ago
(March 31, 2015)
2.7.4
0.12.1 11 years ago
(March 24, 2015)
2.5.1
0.12.0 11 years ago
(February 06, 2015)
2.5.1