Node.js can now run on Windows without Cygwin, the performance being significantly improved both on Windows and UX systems.
Ryan Dahl, the creator of Node.js, has announced Node.js 0.6, a new stable version of the server-side JavaScript environment, the most important feature being the support of native Windows using I/O Completion Ports for sockets. Previous versions of Node.js could be used on Windows only via Cygwin, but now Cygwin builds are no longer supported. Besides Windows, Node.js is also supported on Linux, Mac OS X, webOS, and a number of UXes: Solaris, FreeBSD, and OpenBSD.
Dahl declared that porting to Windows involved major architectural changes, but most of the API has remained unchanged and the performance on Unix systems was not affected as it was initially feared. He gave some numbers as a proof:
Linux v 0.4.12 | Linux v 0.6.0 | |
---|---|---|
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 |
The only problem seem to be writes where Node.js 0.6 has poorer performance on Linux. But by not using Cygwin, Node.js is having much better results on Windows as the following data shows:
Windows v 0.4.12 | Windows v 0.6.0 | |
---|---|---|
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 |
Other major improvements in Node.js 0.6 are: Integrated load balancing for running multiple Node processes on a cluster and Built-in binding to zlib library. There is also better support for IPC between Node instances, an improved debugger, and Node is now using the V8 3.6.
The API changes are detailed on a Node’s GitHub page.
Dahl has also mentioned that they plan a faster release cycle, trying to release a new version when Google releases a new V8 version with Chrome.