Stable Release in branch 0.10.x
0.10.48
Released 18 Oct 2016
(9 years ago)
SoftwareNode.js
Version0.10.x
Status
End of life
Initial release0.10.0
11 Mar 2013
(13 years ago)
Latest release0.10.48
18 Oct 2016
(9 years ago)
End of bug fixes01 Oct 2015
(Ended 10 years ago)
End of security fixes31 Oct 2016
(Ended 9 years ago)
Release noteshttps://github.com/nodejs/node/releases/tag/v0.10.48
Source codehttps://github.com/nodejs/node/tree/v0.10.48
Documentationhttps://nodejs.org/dist/latest-v0.10.x/docs/api/
Downloadhttps://nodejs.org/download/release/latest-v0.10.x/
Node.js 0.10.x ReleasesView 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

VersionRelease datenpm version
0.10.4818 Oct 2016
(9 years ago)
2.15.1
0.10.4727 Sep 2016
(9 years ago)
2.15.1
0.10.4623 Jun 2016
(10 years ago)
2.15.1
0.10.4506 May 2016
(10 years ago)
2.15.1
0.10.4431 Mar 2016
(10 years ago)
2.15.0
0.10.4303 Mar 2016
(10 years ago)
1.4.29
0.10.4209 Feb 2016
(10 years ago)
1.4.29
0.10.4103 Dec 2015
(10 years ago)
1.4.29
0.10.4009 Jul 2015
(11 years ago)
1.4.28
0.10.3919 Jun 2015
(11 years ago)
1.4.28
0.10.3823 Mar 2015
(11 years ago)
1.4.28
0.10.3711 Mar 2015
(11 years ago)
1.4.28
0.10.3626 Jan 2015
(11 years ago)
1.4.28
0.10.3522 Dec 2014
(11 years ago)
1.4.28
0.10.3417 Dec 2014
(11 years ago)
1.4.28
0.10.3321 Oct 2014
(11 years ago)
1.4.28
0.10.3216 Sep 2014
(11 years ago)
1.4.28
0.10.3119 Aug 2014
(12 years ago)
1.4.23
0.10.3031 Jul 2014
(12 years ago)
1.4.21
0.10.2909 Jun 2014
(12 years ago)
1.4.14
0.10.2802 May 2014
(12 years ago)
1.4.9
0.10.2701 May 2014
(12 years ago)
1.4.8
0.10.2618 Feb 2014
(12 years ago)
1.4.3
0.10.2523 Jan 2014
(12 years ago)
1.3.24
0.10.2419 Dec 2013
(12 years ago)
1.3.21
0.10.2312 Dec 2013
(12 years ago)
1.3.17
0.10.2212 Nov 2013
(12 years ago)
1.3.14
0.10.2118 Oct 2013
(12 years ago)
1.3.11
0.10.2030 Sep 2013
(12 years ago)
1.3.11
0.10.1924 Sep 2013
(12 years ago)
1.3.11
0.10.1804 Sep 2013
(13 years ago)
1.3.8
0.10.1721 Aug 2013
(13 years ago)
1.3.8
0.10.1616 Aug 2013
(13 years ago)
1.3.8
0.10.1525 Jul 2013
(13 years ago)
1.3.5
0.10.1425 Jul 2013
(13 years ago)
1.3.5
0.10.1309 Jul 2013
(13 years ago)
1.3.2
0.10.1218 Jun 2013
(13 years ago)
1.2.32
0.10.1113 Jun 2013
(13 years ago)
1.2.30
0.10.1004 Jun 2013
(13 years ago)
1.2.25
0.10.930 May 2013
(13 years ago)
1.2.24
0.10.824 May 2013
(13 years ago)
1.2.23
0.10.717 May 2013
(13 years ago)
1.2.21
0.10.614 May 2013
(13 years ago)
1.2.18
0.10.523 Apr 2013
(13 years ago)
1.2.18
0.10.411 Apr 2013
(13 years ago)
1.2.18
0.10.303 Apr 2013
(13 years ago)
1.2.17
0.10.228 Mar 2013
(13 years ago)
1.2.15
0.10.121 Mar 2013
(13 years ago)
1.2.15
0.10.011 Mar 2013
(13 years ago)
1.2.14