Welcome to this week’s wrap up of the week in Node and libuv covering July 12 through July 24. The purpose of this blog is to recap a subset of the non-documentation related commits to Node.js, plus give a little color and commentary to the ongoing development of Node.
Node v0.10 branch highlights
New releases: v0.10.12, v0.10.13, v0.10.14 and v0.10.15
npm upgrade to v1.3.5
npm in Node v.0.10 has been upgraded to v1.3.5.
url: Fix edge-case when protocol is non-lowercase
fs: uids and gids must be unsigned ints
src: os: use Number::New() for CPU info
You can view the complete Nodev0.10 commit history on GitHub.
Node master branch highlights
crypto: throw a helpful error message for “tls” and “crypto”
http: Proper KeepAlive behavior
Isaac changed the http.Agent in 9fc9b87 to keep HTTP client connections open when there are no pending requests (disabled by default. When enabled, the default timeout is 1 sec.) The number of connections per host is now unlimited rather than 5. Ben’s not sure he agrees with this change, but we’ll see how the community responds, eh?
timers: setImmediate process full queue each turn
Ben made setImmediate() about 1400% faster in commit fa46483. It now runs all pending immediate callbacks at the start of the new tick, rather than just one and deferring everything else to later ticks.
node: always set function name
smalloc: create separate module
smalloc is a new module that developers can use for managing memory semi-manually. This feature can be found in commit d817843 by Trevor.
buffer: return offset for end of last write
In commit 4a34c69 Trevor modified the Buffer#write*() methods so they now return the new position. This is interesting seeing that you should already know how much data you’re writing.
src, lib: deduplicate errnoException
Ben cleaned up the many incarnations of the (internal) errnoException function in commit 0161ec8.
src, lib: update after internal api change
With commit ca9eb71 by Ben, Node.js internally now returns / passes error codes directly (and as numbers) rather than stuffing them as strings in process._errno.
v8: upgrade to v8 3.20.7
Trevor updated V8 to v3.20.7 in commit 5777d7a.
lib: macro-ify type checks
src: move NODE_MODULE_VERSION to node_version.h
The NODE_MODULE_VERSION macro now lives in node_version.h as of commit 44ed42b.
tls: share tls tickets key between cluster workers
openssl: use asm for sha, md5, rmd
The SHA, MD5 and RIPEMD digest algorithms now use optimized assembly
implementations as of 508a6c2, contributed by Fedor.
streams: Don’t emit ‘end’ until read() past EOF
You can view the complete Node master commit history on GitHub.
libuv v0.10 branch highlights
unix, windows: fix uv_fs_chown() function prototype
Ben fixed the prototype of uv_fs_chown() and uv_fs_fchown() in d779eb5. This fix is related to #5890 mentioned above.
You can view the complete libuv v0.10 commit history on GitHub.
libuv master branch highlights
build: dtrace shouldn’t break out of tree builds
unix, windows: don’t read/recv if buf.len==0
build: add mingw makefile
Ben added a Makefile for MinGW users in 977e833.
unix, windows: add MAC to uv_interface_addresses()
uv_interface_addresses() now also returns the MAC address. Commit e3a657c courtesy of Brian White. You have to admire his tenaciousness – the patch went through MANY revisions. It took over a year to land. Well done!
You can view the complete libuv master commit history on GitHub.
- Ready to develop APIs in Node.js and get them connected to your data? Check out the Node.js LoopBack framework. We’ve made it easy to get started either locally or on your favorite cloud, with a simple npm install.