Major overhaul of TLS/SSL system. Previously the binding to
OpenSSL was heavily interwoven into the socket code. This binding was
reworked to present each connection as a pair of "streams" instead: a
duplex encrypted stream and a duplex cleartext stream. The encrypted
stream is piped to a raw TCP socket using the general purpose
Stream.prototype.pipe() method. Functionality was
enhanced and API simplified.
Simpler HTTP client API with connection pools.
Cheaper Buffer allocation. Node uses
Buffer objects in many places - it was noticed that they
were relatively slow to allocate and difficult to garbage collect. The
implementation changed to use pure javascript objects instead of
an ObjectWrap which improved performance.
With a good amount of experience now, some modifications to the
module loading system were made to better support package managers.
In particular, npm was forced to resort to deep symlinks and "shim"
modules to work around missing features in require(). The main
changes are:
require() calls realpath. That is,
it resolves symbolic links. This allows symlinked modules to make
relative requires.
require() now has a primitive understanding of
package.json. It looks for the main
script. This allows require() to work on package
directories directly.
A specially named directory, node_modules/, is
searched in the current directory for any modules. This will
hopefully encourage programmers to bundle modules rather than
rely on a global namespace.
A half-complete but good start a native windows build with MinGW
is underway by Bert Builder. Build instructions can be found on
the wiki.
Node upgraded to the latest version of V8, v3.1.2.
This includes much work including V8's new compilation infrastructure
and a GDB plugin on Linux.
Read the
full V8 ChangeLog.
A new built-in client for V8's debugger was added to Node. It is
still very primitive but usable for simple task. There is a small introduction video and
some documentation.
An os module was added by Brian White which exposes
a lot of basic but useful system information: os.cpus(),
os.freemem(), os.totalmem(), os.loadavg()
And, of course, many of bug fixes. See the
full
changelog.