0.10.48

Latest release in branch 0.10.x
Released 9 years ago (October 18, 2016)

Software Node.js
Branch 0.10.x
Status
End of life
End of bug fixes October 01, 2015
End of security fixes October 31, 2016
First official release version 0.10.0
First official release date 13 years ago (March 11, 2013)
Release notes https://github.com/nodejs/node/releases/tag/v0.10.48
Source code https://github.com/nodejs/node/tree/v0.10.48
Documentation https://nodejs.org/dist/latest-v0.10.x/docs/api/
Download https://nodejs.org/download/release/latest-v0.10.x/
Node.js 0.10.x Releases View full list

What Is New in Node.js 0.10?

CategoryChange
New FeaturesStreams2 -- new stream interface with proper backpressure
New FeaturessetImmediate() -- post-I/O, pre-setTimeout scheduling
New Featuresdomains -- error isolation for async operations
Improvementsprocess.nextTick() semantics fixed -- now truly runs before I/O
ImprovementsTLS: upgraded to newer OpenSSL, significant throughput improvement
Improvementsfs.ReadStream and fs.WriteStream throughput improved
ImprovementsIdle GC removed -- more stable latency
ImprovementsJenkins CI added for all supported operating systems

Streams2 -- The Foundation of Modern Node.js Streaming

Node.js 0.10 introduces Streams2 -- a complete rework of the stream API that adds proper backpressure, a read() method for pull-based consumption, and consistent base classes for Readable, Writable, Duplex, and Transform streams.

Prior to Streams2, data events fired immediately and aggressively -- there was no way to slow down a readable stream without losing data. The pause() method was advisory at best. Streams2 fixes this by introducing a buffer and a read(n) API that lets consumers control the rate of data flow.

// Streams2 pipe with automatic backpressure
const readable = fs.createReadStream('./large-file.csv');
const writable = fs.createWriteStream('./output.csv');
readable.pipe(writable); // backpressure handled automatically

The readable-stream npm package was published alongside 0.10, allowing application code using Streams2 to run on older Node.js versions -- an early example of the "develop in core, publish to npm" approach.

process.nextTick() and setImmediate() -- Execution Order Clarity

Node.js 0.10 fixes process.nextTick() to reliably run callbacks before any I/O events -- not just "usually before I/O" as in prior versions. Callbacks scheduled with nextTick run to exhaustion before the event loop processes any I/O.

setImmediate() is added as a companion: it runs after I/O events and before setTimeout(fn, 0). The phase order is: nextTick queue -> I/O callbacks -> setImmediate -> setTimeout(0). Understanding this ordering is fundamental to writing correct async Node.js code.

// Use setImmediate for yielding within a long computation
function processLargeArray(arr, index) {
  if (index >= arr.length) return;
  process(arr[index]);
  setImmediate(() => processLargeArray(arr, index + 1));
  // yields to I/O between each item
}

Domains -- Grouping Async Error Handling

The domain module in Node.js 0.10 lets you group multiple async operations into a single error boundary. An error in any async operation within the domain routes to the domain's error handler instead of bubbling up to process.uncaughtException.

import domain from 'node:domain';
const d = domain.create();
d.on('error', (err) => {
  console.error('Caught by domain:', err.message);
  res.statusCode = 500;
  res.end('Server error');
});
d.run(() => {
  // async operations here are covered by the domain error handler
  db.query('SELECT 1', (err, result) => { /* errors caught by d */ });
});

Domains were later deprecated (Node.js 4+) as async tracking mechanisms like AsyncLocalStorage provided better solutions. But at the time, domains were the only way to catch errors across async boundaries.

TLS Performance Leap

Node.js 0.10 upgrades to a newer OpenSSL and rewrites CryptoStream to use the Streams2 interface. TLS throughput improves dramatically in benchmarks. HTTP throughput also improves for most workloads. The fs.ReadStream and fs.WriteStream improvements mean file serving gets faster as well.

FAQ

What was wrong with streams before Streams2?
The original stream API had no true backpressure mechanism. A fast readable piped to a slow writable would buffer indefinitely in memory until the process crashed. Streams2 adds a high-water mark and pauses reading when the writable buffer is full.

Can old-style streams (v1) run alongside Streams2?
Yes. Node.js 0.10 wraps old-style streams in a compatibility layer so they behave as Streams2 when piped. The readable-stream npm package also provides a forward-compatible shim.

When should I use nextTick vs setImmediate?
Use process.nextTick() when you need to defer a callback until the current synchronous operation completes but before any I/O. Use setImmediate() when you want to yield to pending I/O before continuing. Avoid recursive nextTick() loops -- they starve I/O.

Are domains still usable in modern Node.js?
Technically yes, but they have been deprecated since Node.js 4. Use AsyncLocalStorage (stable in Node.js 16) for request-scoped context and process.on('unhandledRejection') plus promise .catch() for error handling.

Is Node.js 0.10 the first "production-ready" Node.js version?
Many practitioners consider 0.10 the first version truly suitable for high-traffic production services, due to Streams2 backpressure, the fixed nextTick semantics, and the improved TLS performance. Earlier versions (0.8 and below) were used in production but required more careful memory management.

Releases In Branch 0.10.x

Version Release date npm version
0.10.48 9 years ago
(October 18, 2016)
2.15.1
0.10.47 9 years ago
(September 27, 2016)
2.15.1
0.10.46 9 years ago
(June 23, 2016)
2.15.1
0.10.45 9 years ago
(May 06, 2016)
2.15.1
0.10.44 10 years ago
(March 31, 2016)
2.15.0
0.10.43 10 years ago
(March 03, 2016)
1.4.29
0.10.42 10 years ago
(February 09, 2016)
1.4.29
0.10.41 10 years ago
(December 03, 2015)
1.4.29
0.10.40 10 years ago
(July 09, 2015)
1.4.28
0.10.39 10 years ago
(June 19, 2015)
1.4.28
0.10.38 11 years ago
(March 23, 2015)
1.4.28
0.10.37 11 years ago
(March 11, 2015)
1.4.28
0.10.36 11 years ago
(January 26, 2015)
1.4.28
0.10.35 11 years ago
(December 22, 2014)
1.4.28
0.10.34 11 years ago
(December 17, 2014)
1.4.28
0.10.33 11 years ago
(October 21, 2014)
1.4.28
0.10.32 11 years ago
(September 16, 2014)
1.4.28
0.10.31 11 years ago
(August 19, 2014)
1.4.23
0.10.30 11 years ago
(July 31, 2014)
1.4.21
0.10.29 11 years ago
(June 09, 2014)
1.4.14
0.10.28 11 years ago
(May 02, 2014)
1.4.9
0.10.27 11 years ago
(May 01, 2014)
1.4.8
0.10.26 12 years ago
(February 18, 2014)
1.4.3
0.10.25 12 years ago
(January 23, 2014)
1.3.24
0.10.24 12 years ago
(December 19, 2013)
1.3.21
0.10.23 12 years ago
(December 12, 2013)
1.3.17
0.10.22 12 years ago
(November 12, 2013)
1.3.14
0.10.21 12 years ago
(October 18, 2013)
1.3.11
0.10.20 12 years ago
(September 30, 2013)
1.3.11
0.10.19 12 years ago
(September 24, 2013)
1.3.11
0.10.18 12 years ago
(September 04, 2013)
1.3.8
0.10.17 12 years ago
(August 21, 2013)
1.3.8
0.10.16 12 years ago
(August 16, 2013)
1.3.8
0.10.15 12 years ago
(July 25, 2013)
1.3.5
0.10.14 12 years ago
(July 25, 2013)
1.3.5
0.10.13 12 years ago
(July 09, 2013)
1.3.2
0.10.12 12 years ago
(June 18, 2013)
1.2.32
0.10.11 12 years ago
(June 13, 2013)
1.2.30
0.10.10 12 years ago
(June 04, 2013)
1.2.25
0.10.9 12 years ago
(May 30, 2013)
1.2.24
0.10.8 12 years ago
(May 24, 2013)
1.2.23
0.10.7 12 years ago
(May 17, 2013)
1.2.21
0.10.6 12 years ago
(May 14, 2013)
1.2.18
0.10.5 12 years ago
(April 23, 2013)
1.2.18
0.10.4 13 years ago
(April 11, 2013)
1.2.18
0.10.3 13 years ago
(April 03, 2013)
1.2.17
0.10.2 13 years ago
(March 28, 2013)
1.2.15
0.10.1 13 years ago
(March 21, 2013)
1.2.15
0.10.0 13 years ago
(March 11, 2013)
1.2.14