---
date: '2015-02-06T22:03:56.000Z'
category: release
title: Node.js 0.12.0 (Stable)
layout: blog-post
author: The Node.js Project
---

We are excited to announce the availability of Node.js 0.12! It has been a
long process, and we want to thank contributors and all of the community who
waited patiently for this event. Node.js has such a vibrant and enthusiastic
community, and we're very lucky to have you all supporting us.

Node.js has seen many changes between v0.10 and v0.12. There is [a listing of
changes documented on the wiki](https://github.com/joyent/node/wiki/API-changes-between-v0.10-and-v0.12). Note that this release includes API updates
that may require dependency updates. Following are some highlights:

- Streams 3
  - The Streams implementation now works the way you thought it already should,
    without introducing any changes to the API. Basically this means no more
    getting stuck in "old mode", there are only streams that are flowing or not.
  - Streams now support the use of cork and uncork mechanisms to prevent
    flushing writes out to the system if an application is going to be
    performing many writes in a row. There is an implicit uncork performed when
    you end a writable stream.
- HTTP
  - `maxSockets` are no longer limited to 5. The default is now set to
    `Infinity` with the developer and the operating system given control over
    how many simultaneous connections an application can keep open to a given
    host.
  - Proper KeepAlive support means that sockets will stay open until they
    timeout at the configured time, are closed by the remote side, or the
    process exits. Developer's no longer have to make sure requests have been
    pipelined to keep the socket open, or use an alternative module to get that
    support.
  - Developers can also now explicitly `flushHeaders` to ensure time to first
    byte is low and proxied connections are held open.
- Cluster
  - Now has two modes of operation, the new default is a round robin
    distribution mechanism where the master accepts new connections and
    distributes them to your workers. If you want you can still opt back into
    the old method where your workers are responsible for acception connections.
- TLS
  - We have the new TLSWrap mechanism under the hood, this eliminates quite a
    few of the hops back and forth between JavaScript and our C++
    implementations.
  - Added APIs for asynchronous SNI callbacks, OCSP stapling, and storage
    events.
- Buffer
  - We use a more accurate mechanism for allocating memory for buffers now,
    which means you'll see less overhead and impact from holding onto to small
    slices of Buffers. This reduces the amount of memory pressure on the system,
    which means GC runs are quicker, which means Node.js is on CPU less, and
    thus lower latency for your applications.
- child_process
  - `spawnSync`/`execSync` have been added to facilitate synchronous child
    processes, warning your node process won't make forward progress while
    waiting for the child to exit, caveat emptor!
- Crypto
  - Added APIs for loading custom engines for use with compiled in OpenSSL.
  - More APIs support supplying the pass phrases.
  - Added APIs for RSA public/private key encryption/decryption.
- VM
  - The module is now based on the Contextify module, which shares values from
    the sandbox to avoid missing changes inside the execution from appearing in
    the parent context.
- Initial support for [ECMAScript Internationalization API 1.0
  (ECMA-402)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)
  - By default, Node.js 0.12.0 binaries are shipped with ECMA-402 support,
    but only for the English language. In other words, the ECMA-402 API is
    working as you would expect, but only data for the English language is
    included. You can find more info on how to include more languages [in
    the Wiki](https://github.com/joyent/node/wiki/Intl).

These are just _some_ of the changes you can find in this release of v0.12,
and it's thanks to the hard work of the community and the members of team
curating Node.js.

We are also pleased to report that this release of Node.js has tests passing
on all of our supported platforms. On the one hand, this seems obvious (what
are tests for if not to verify before you release it?!), but this is actually
the first release of Node.js that has operated under this constraint.
Requiring that all tests pass before releasing Node.js marks an important
development for the project, and is essential for building a solid path moving
forward.

We'll obviously be spending a couple weeks firefighting any immediate issues
for v0.12, but the team is excited to start pulling in the items and
discussing what the roadmap will look like next for Node.js. We want to make
sure we're scoping future versions of Node.js so we can have confidence in
knowing we're on the right path and that we're ready to release based on the
standards we have set for ourselves.

Quite a few members of the team will be attending
[NodeSummit](http://nodesummit.com) February 9th through the 11th in San
Francisco. If you're around for that event please make sure to find us and
give us feedback on what you would like to see from Node.js.

Source Code: https://nodejs.org/dist/v0.12.0/node-v0.12.0.tar.gz

Macintosh Installer (Universal): https://nodejs.org/dist/v0.12.0/node-v0.12.0.pkg

Windows Installer: https://nodejs.org/dist/v0.12.0/node-v0.12.0-x86.msi

Windows x64 Installer: https://nodejs.org/dist/v0.12.0/x64/node-v0.12.0-x64.msi

Windows x64 Files: https://nodejs.org/dist/v0.12.0/x64/

Linux 32-bit Binary: https://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x86.tar.gz

Linux 64-bit Binary: https://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz

Solaris 32-bit Binary: https://nodejs.org/dist/v0.12.0/node-v0.12.0-sunos-x86.tar.gz

Solaris 64-bit Binary: https://nodejs.org/dist/v0.12.0/node-v0.12.0-sunos-x64.tar.gz

Other release files: https://nodejs.org/dist/v0.12.0/

Website: https://nodejs.org/docs/v0.12.0/

Documentation: https://nodejs.org/docs/v0.12.0/api/

Shasums:

```
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

4f53a1dac68057d700964707adb5e54302969dab  genccode.exe
146930a2bdb88a3e12cb8d3a359e7197bbbde695  genccode.pdb
6ec82639faae028e5d9c90e123f7220e7e915187  genrb.exe
817c5b18f4cd8d2eed80815fc030a1342b4f88cd  genrb.pdb
151036790bd98204764d302f3df2ab2685db6f54  iculslocs.exe
228a3dcf968f6c552788fafc1ef84baee3e7450e  iculslocs.pdb
8665404bb5cf3e730ba633c5b8184250bae1cafd  icupkg.exe
819de4c86d0aad67cf62e5f4913910f1112ef1c9  icupkg.pdb
596eff06fefc11ef10f345ea37e7e05f72533c67  node-v0.12.0-darwin-x64.tar.gz
dddd5306a0c7e551aae8a8685b365f8c25a9d63a  node-v0.12.0-darwin-x86.tar.gz
64fb5260a4a0f914b62a80066d7955856a04703a  node-v0.12.0-linux-x64.tar.gz
765cb24d17625221ecdd8518907c265b99ce18d2  node-v0.12.0-linux-x86.tar.gz
6964fe9bd299eea2844e0dc0bb6f5cae70e1f03c  node-v0.12.0-sunos-x64.tar.gz
3988db298cfe614370481ab5abba3bd83b65570f  node-v0.12.0-sunos-x86.tar.gz
20d936afd83f819c92826afdc87815a3c96884d2  node-v0.12.0-x86.msi
8879163ab75f611abb49e250f3158c6a98e37d25  node-v0.12.0.pkg
d08810034d170c19759cb38bfc9442ab6b0ebc7a  node-v0.12.0.tar.gz
c54021b701cebc3ba713c920531ca4fdc96cf9fe  node.exe
cce4bba695a8d4953977b3bf5193a9f16b24e003  node.exp
4983bf4ef56b1af2e5e9db9e67c62250b5455016  node.lib
ffa621154420292dcdd39cc4bd91a5e08bc5f622  node.pdb
05bbc6228fb49005b2fd0858544d0dc42e6b6f0c  openssl-cli.exe
0bd5916cbadeab0f5995728142279049e6e9d866  openssl-cli.pdb
84bce5da7c5cc563d224d0d80e05a9c9fc3614b2  x64/genccode.exe
9bc57d86caba460d6b0dc864db832956cf68096c  x64/genccode.pdb
4ae96a5ec2619f9cd60e127cb4ad9e0147dcf58c  x64/genrb.exe
4ff14345e733f266ed86679e88e8461825bc0c2d  x64/genrb.pdb
4ba7525312c7e7d1d489f89af8d9b98d743d2397  x64/iculslocs.exe
1a2cebefcaee90e81be67bc079b48a37b5a7f63a  x64/iculslocs.pdb
251d768eba9543da5ae9a8d5617c9fc58069d413  x64/icupkg.exe
f4647ad8db148b89475634000e0c0cd7f8f47b04  x64/icupkg.pdb
a34650db220cb1886bb497edb72474e83a4dbe77  x64/node-v0.12.0-x64.msi
71cf52c0ff9e1457364962697fb8798925241828  x64/node.exe
dbd4614bf15b037c0ed2cb631bad0282e420c3ff  x64/node.exp
709ff6f74f10b184e09c45e893a77248455fb452  x64/node.lib
e14399d9cc5df344e6c4dd557ec2a8c62973b6d3  x64/node.pdb
a014b76f8c36768a15532ccb5e8d5e904bc4dbb0  x64/openssl-cli.exe
0827c6819bc7a2b100f14ffbe0b431e955c73b89  x64/openssl-cli.pdb
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJU1To8AAoJEFCjBR+IjGKNPIQQAJOepQMZctwstD1iiUcrKRo4
iZMgdHUe4bcBcGfkeB2X8RD4WYIoYxfL/6EF7IfjapiQc8W3Zo1IlTQqRFR1RqRz
HayhDQu5qPSE6EygT0le6eFbVsn7V1SdP+91umZ+kJVlUal0Li0ZWzSs94iFaok/
SBgV92WegQBzGwYTxHa/tN2nJ8xkSJDSaqxmiavj+5Ve2phOuKo+vxYnP9viXIT4
MsohnZyovm4BaOg/DWj8Jn5X42SVzhEiLDjZQxxku64IzjZPjflsYbuBIM8hMnb8
FwIp92Cp48qsm/l4EX8PN6FLoXo+M82kT3i4rY2XLl7MxwUv4jrh4LTTHG+pPi9X
LEu58em/xgp/IN+cobc4vs5yWKB98FQNOL+F6ketqyLQwfyr20kDuovcNqiuJX5V
SIaeU7qyykFoj2qERU0Mk1v0FgLUTjlwwH5h9IcjagV4JFywcIJiNriibz/Ta6rA
d2KzKyva3rnj4eL4Wa4F9yyLCX9j3sWCE/ZMuVb2NJnYl7RPgr3M+PEcMQVJbdUx
b1lz+Yyo+NuXUXR9j9OtXscXVrSa8Bqxtc3heXajDzWbGdU8ZPW3DhULtQcPFAth
DLolLXEcJn6QOQSC06Y+D3LZ3jJbSX0jGb6bvQLksRkPltSSI5VgHSBjlGGkyEVt
UpmTqbfBdzs1UfeGwL6N
=nSHJ
-----END PGP SIGNATURE-----
```
