Node v0.6.0

We are happy to announce the third stable branch of Node v0.6. We will be freezing JavaScript, C++, and binary interfaces for all v0.6 releases.

The major differences between v0.4 and v0.6 are

  • Native Windows support using I/O Completion Ports for sockets.
  • Integrated load balancing over multiple processes. docs
  • Better support for IPC between Node instances docs
  • Improved command line debugger docs
  • Built-in binding to zlib for compression docs
  • Upgrade v8 from 3.1 to 3.6

In order to support Windows we reworked much of the core architecture. There was some fear that our work would degrade performance on UNIX systems but this was not the case. Here is a Linux system we benched for demonstration:

v0.4.12 (linux) v0.6.0 (linux)
http_simple.js /bytes/1024 5461 r/s 6263 r/s
io.js read 19.75 mB/s 26.63 mB/s
io.js write 21.60 mB/s 17.40 mB/s
startup.js 74.7 ms 49.6 ms

Bigger is better in http and io benchmarks, smaller is better in startup. The http benchmark was done with 600 clients on a 10GE network served from three load generation machines.

In the last version of Node, v0.4, we could only run Node on Windows with Cygwin. Therefore we’ve gotten massive improvements by targeting the native APIs. Benchmarks on the same machine:

v0.4.12 (windows) v0.6.0 (windows)
http_simple.js /bytes/1024 3858 r/s 5823 r/s
io.js read 12.41 mB/s 26.51 mB/s
io.js write 12.61 mB/s 33.58 mB/s
startup.js 152.81 ms 52.04 ms

We consider this a good intermediate stage for the Windows port. There is still work to be done. For example, we are not yet providing users with a blessed path for building addon modules in MS Visual Studio. Work will continue in later releases.

For users upgrading code bases from v0.4 to v0.6 we’ve documented most of the issues that you will run into. Most people find the change painless. Despite the long list of changes most core APIs remain untouched.

Our release cycle will be tightened dramatically now. Expect to see a new stable branch in January. We wish to eventually have our releases in sync with Chrome and V8’s 6 week cycle.

Thank you to everyone who contributed code, tests, docs, or sent in bug reports.

Here are the changes between v0.5.12 and v0.6.0:

2011.11.04, Version 0.6.0 (stable)

  • print undefined on undefined values in REPL (Nathan Rajlich)
  • doc improvements (koichik, seebees, bnoordhuis, Maciej Małecki, Jacob Kragh)
  • support native addon loading in windows (Bert Belder)
  • rename getNetworkInterfaces() to networkInterfaces() (bnoordhuis)
  • add pending accepts knob for windows (igorzi)
  • http.request(url.parse(x)) (seebees)
  • #1929 zlib Respond to ‘resume’ events properly (isaacs)
  • stream.pipe: Remove resume and pause events
  • test fixes for windows (igorzi)
  • build system improvements (bnoordhuis)
  • #1936 tls: does not emit ‘end’ from EncryptedStream (koichik)
  • #758 tls: add address(), remoteAddress/remotePort
  • #1399 http: emit Error object after .abort() (bnoordhuis)
  • #1999 fs: make mkdir() default to 0777 permissions (bnoordhuis)
  • #2001 fix pipe error codes
  • #2002 Socket.write should reset timeout timer
  • stdout and stderr are blocking when associated with file too.
  • remote debugger support on windows (Bert Belder)
  • convenience methods for zlib (Matt Robenolt)
  • process.kill support on windows (igorzi)
  • process.uptime() support on windows (igorzi)
  • Return IPv4 addresses before IPv6 addresses from getaddrinfo
  • util.inspect improvements (Nathan Rajlich)
  • cluster module api changes
  • Downgrade V8 to 3.6.6.6

Download: http://nodejs.org/dist/v0.6.0/node-v0.6.0.tar.gz

Windows Executable: http://nodejs.org/dist/v0.6.0/node.exe

Website: http://nodejs.org/docs/v0.6.0/

Documentation: http://nodejs.org/docs/v0.6.0/api/

This entry was posted in Uncategorized. Bookmark the permalink.

30 Responses to Node v0.6.0

  1. darkie says:

    Linux writes: 17.40 mB/s
    Windows writes: 33.58 mB/s

    Are you going to fix this?

  2. Mehmet says:

    Since a lot of modules are currenty incompatible with 0.6, it would be nice to have a module compatibility list page in the wiki, (similar to what some sites do for OS releases, http://roaringapps.com/apps:table). Would you consider something like that?

  3. synkro says:

    Yay! There goes the node.js steam train! The IO write performance on Unix degraded. Any reason for that? At least the same speed than 0.4 should be possible.

  4. Kai says:

    I’m enjoying the Windows support so far. Now let’s see when I can write C++ modules for Node on Windows 🙂

    I am using Node for a desktop application, and so far it has been a great experience.

  5. Tom says:

    Thanks. Lots of interesting new features.

    The cluster API seems to be lacking though. For example, what happens when the master dies? Do workers suicide? Do workers receive a master death event, too? How is this new cluster module different from TJ’s cluster module?

    • if I have some time this weekend I’ll be whipping up a successor based on the new core module. The most important thing is that the core module provides enough to achieve similar results in user-land without being too opinionated in core. It should work out pretty good I think, I have some better ideas this time around

  6. Benoit says:

    That’s a hell of a release!

  7. Sweet! The Date’s UTC compliance and Error’s non-enumerable props threw us off at first, but all tests are passing again!

  8. This is awesome, really.

  9. Thank’s for this release, for performance, and for been cross plateforms 🙂

  10. Congratulations on another fine release!

  11. WOOW, I am sincerely impressed, Great job guys!

  12. Draco Li says:

    Node.js is awesome! Great work guys!

  13. xx says:

    does anyone know how to build a x64 version for windows?

  14. Peter says:

    Works well. Who has a C++ external module that uses Node:Buffer compiling under windows?

    I can compile C++ modules that use V8 types, but Node:Buffer does not seem to be exported?

  15. Heiko says:

    I just added NODE_EXTERN in node_buffer.h (and rebuild node.lib)

    ie from:
    class Buffer : public ObjectWrap {

    to
    class NODE_EXTERN Buffer : public ObjectWrap {

  16. tola says:

    I tried to use the v0.6 as a client for websockets, but it fails. I am still trying to isolate this issue. It works fine to serve as a websocket server but it has problems as to act like a client. Do you have any idea regarding this issue?

  17. Now thats good news 🙂 Keep up the good work !!!

  18. Gerlad says:

    Anyone have the nodejs.spec for for RedHat yet for this version?

  19. Tabugo says:

    awesome thanks

  20. Pingback: Node.js Now Runs Natively on Windows « VietHiP

  21. Valuable information. Lucky me I found your site by accident, and I am shocked why this accident didn’t happened earlier! I bookmarked it.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s