Commits on Feb 7, 2013
  1. @isaacs

    2013.02.07, Version 0.9.9 (Unstable)

    * tls: port CryptoStream to streams2 (Fedor Indutny)
    
    * typed arrays: only share ArrayBuffer backing store (Ben Noordhuis)
    
    * stream: make Writable#end() accept a callback function (Nathan Rajlich)
    
    * buffer: optimize 'hex' handling (Ben Noordhuis)
    
    * dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL (Ben Noordhuis)
    
    * readline: treat bare \r as a line ending (isaacs)
    
    * readline: make \r\n emit one 'line' event (Ben Noordhuis)
    
    * cluster: support datagram sockets (Bert Belder)
    
    * stream: Correct Transform class backpressure (isaacs)
    
    * addon: Pass module object to NODE_MODULE init function (isaacs, Rod Vagg)
    
    * buffer: slow buffer copy compatibility fix (Trevor Norris)
    
    * Add bytesWritten to tls.CryptoStream (Andy Burke)
    isaacs committed Feb 7, 2013
  2. @isaacs
  3. @nikhilm @indutny

    Update http docs with http.IncomingMessage.

    http.ServerRequest and http.ClientResponse are merged into http.IncomingMessage
    which has fields for both, and acts as a Readable Stream and EventEmitter.
    
    Fixes #3851.
    nikhilm committed with indutny Jan 19, 2013
  4. @isaacs

    Merge remote-tracking branch 'ry/v0.8' into master

    Conflicts:
    	AUTHORS
    	ChangeLog
    	deps/npm/html/api/bin.html
    	deps/npm/html/api/bugs.html
    	deps/npm/html/api/commands.html
    	deps/npm/html/api/config.html
    	deps/npm/html/api/deprecate.html
    	deps/npm/html/api/docs.html
    	deps/npm/html/api/edit.html
    	deps/npm/html/api/explore.html
    	deps/npm/html/api/help-search.html
    	deps/npm/html/api/init.html
    	deps/npm/html/api/install.html
    	deps/npm/html/api/link.html
    	deps/npm/html/api/load.html
    	deps/npm/html/api/ls.html
    	deps/npm/html/api/npm.html
    	deps/npm/html/api/outdated.html
    	deps/npm/html/api/owner.html
    	deps/npm/html/api/pack.html
    	deps/npm/html/api/prefix.html
    	deps/npm/html/api/prune.html
    	deps/npm/html/api/publish.html
    	deps/npm/html/api/rebuild.html
    	deps/npm/html/api/restart.html
    	deps/npm/html/api/root.html
    	deps/npm/html/api/run-script.html
    	deps/npm/html/api/search.html
    	deps/npm/html/api/shrinkwrap.html
    	deps/npm/html/api/start.html
    	deps/npm/html/api/stop.html
    	deps/npm/html/api/submodule.html
    	deps/npm/html/api/tag.html
    	deps/npm/html/api/test.html
    	deps/npm/html/api/uninstall.html
    	deps/npm/html/api/unpublish.html
    	deps/npm/html/api/update.html
    	deps/npm/html/api/version.html
    	deps/npm/html/api/view.html
    	deps/npm/html/api/whoami.html
    	deps/npm/html/doc/README.html
    	deps/npm/html/doc/adduser.html
    	deps/npm/html/doc/bin.html
    	deps/npm/html/doc/bugs.html
    	deps/npm/html/doc/build.html
    	deps/npm/html/doc/bundle.html
    	deps/npm/html/doc/cache.html
    	deps/npm/html/doc/changelog.html
    	deps/npm/html/doc/coding-style.html
    	deps/npm/html/doc/completion.html
    	deps/npm/html/doc/config.html
    	deps/npm/html/doc/dedupe.html
    	deps/npm/html/doc/deprecate.html
    	deps/npm/html/doc/developers.html
    	deps/npm/html/doc/disputes.html
    	deps/npm/html/doc/docs.html
    	deps/npm/html/doc/edit.html
    	deps/npm/html/doc/explore.html
    	deps/npm/html/doc/faq.html
    	deps/npm/html/doc/folders.html
    	deps/npm/html/doc/global.html
    	deps/npm/html/doc/help-search.html
    	deps/npm/html/doc/help.html
    	deps/npm/html/doc/index.html
    	deps/npm/html/doc/init.html
    	deps/npm/html/doc/install.html
    	deps/npm/html/doc/json.html
    	deps/npm/html/doc/link.html
    	deps/npm/html/doc/ls.html
    	deps/npm/html/doc/npm.html
    	deps/npm/html/doc/outdated.html
    	deps/npm/html/doc/owner.html
    	deps/npm/html/doc/pack.html
    	deps/npm/html/doc/prefix.html
    	deps/npm/html/doc/prune.html
    	deps/npm/html/doc/publish.html
    	deps/npm/html/doc/rebuild.html
    	deps/npm/html/doc/registry.html
    	deps/npm/html/doc/removing-npm.html
    	deps/npm/html/doc/restart.html
    	deps/npm/html/doc/rm.html
    	deps/npm/html/doc/root.html
    	deps/npm/html/doc/run-script.html
    	deps/npm/html/doc/scripts.html
    	deps/npm/html/doc/search.html
    	deps/npm/html/doc/semver.html
    	deps/npm/html/doc/shrinkwrap.html
    	deps/npm/html/doc/star.html
    	deps/npm/html/doc/start.html
    	deps/npm/html/doc/stop.html
    	deps/npm/html/doc/submodule.html
    	deps/npm/html/doc/tag.html
    	deps/npm/html/doc/test.html
    	deps/npm/html/doc/uninstall.html
    	deps/npm/html/doc/unpublish.html
    	deps/npm/html/doc/update.html
    	deps/npm/html/doc/version.html
    	deps/npm/html/doc/view.html
    	deps/npm/html/doc/whoami.html
    	deps/npm/man/man1/global.1
    	deps/npm/man/man1/ls.1
    	deps/npm/man/man1/npm.1
    	deps/npm/man/man1/rm.1
    	deps/npm/man/man3/npm.3
    	deps/npm/node_modules/glob/glob.js
    	deps/npm/node_modules/glob/package.json
    	deps/npm/node_modules/node-gyp/package.json
    	deps/npm/node_modules/npm-registry-client/package.json
    	deps/npm/node_modules/npmconf/package.json
    	deps/npm/node_modules/read-installed/package.json
    	deps/npm/node_modules/rimraf/package.json
    	deps/npm/node_modules/rimraf/rimraf.js
    	deps/npm/package.json
    	deps/uv/src/win/error.c
    	doc/api/crypto.markdown
    	lib/zlib.js
    	src/node_version.h
    	src/node_zlib.cc
    	test/simple/test-buffer.js
    isaacs committed Feb 6, 2013
Commits on Feb 6, 2013
  1. @bnoordhuis

    typed arrays: copy non-ArrayBuffer in DataView ctor

    This is commit 01ee551, except for the DataView type this time.
    
    Make the behavior of DataView consistent with that of typed arrays:
    make a copy of the backing store.
    bnoordhuis committed Feb 6, 2013
  2. @indutny
  3. @isaacs

    blog: v0.8.19 release

    isaacs committed Feb 6, 2013
  4. @isaacs

    Now working on 0.8.20

    isaacs committed Feb 6, 2013
  5. @isaacs
  6. @isaacs

    2013.02.06, Version 0.8.19 (Stable)

    * npm: Upgrade to v1.2.10
    
    * zlib: pass object size hint to V8 (Ben Noordhuis)
    
    * zlib: reduce memory consumption, release early (Ben Noordhuis)
    
    * buffer: slow buffer copy compatibility fix (Trevor Norris)
    
    * zlib: don't assert on malformed dictionary (Ben Noordhuis)
    
    * zlib: don't assert on missing dictionary (Ben Noordhuis)
    
    * windows: better ipv6 support (Bert Belder)
    
    * windows: add error mappings related to unsupported protocols (Bert Belder)
    
    * windows: map ERROR_DIRECTORY to UV_ENOENT (Bert Belder)
    isaacs committed Feb 6, 2013
  7. @isaacs

    npm: Upgrade to v1.2.10

    isaacs committed Feb 6, 2013
  8. @indutny

    streams: both `finish` and `close` should unpipe

    Otherwise sockets that are 'finish'ed won't be unpiped and `writing to
    ended stream` error will arise.
    
    This might sound unrealistic, but it happens in net.js. When
    `socket.allowHalfOpen === false`, EOF will cause `.destroySoon()` call which
    ends the writable side of net.Socket.
    indutny committed Feb 6, 2013
  9. @bnoordhuis

    test: add cluster EADDRINUSE test

    Check that having a worker bind to a port that's already taken doesn't
    leave the master process in a confused state. Releasing the port and
    trying again should Just Work[TM].
    bnoordhuis committed Feb 6, 2013
  10. @bnoordhuis

    typed arrays: only share ArrayBuffer backing store

    Follow browser behavior, only share the backing store when it's a
    ArrayBuffer. That is:
    
      var abuf = new ArrayBuffer(32);
      var a = new Int8Array(abuf);
      var b = new Int8Array(abuf);
      a[0] = 0;
      b[0] = 1;
      assert(a[0] === b[0]);  // a and b share memory
    
    But:
    
      var a = new Int8Array(32);
      var b = new Int8Array(a);
      a[0] = 0;
      b[0] = 1;
      assert(a[0] !== b[0]);  // a and b don't share memory
    
    The typed arrays spec allows both `a[0] === b[0]` and `a[0] !=== b[0]`
    but Chrome and Firefox implement the behavior where memory is not
    shared.
    
    Copying the memory is less efficient but let's do it anyway for the
    sake of the Principle of Least Surprise.
    
    Fixes #4714.
    bnoordhuis committed Feb 5, 2013
  11. @bcantrill @indutny

    v8: loosen artificial mmap constraint

    Fixes #4010.
    bcantrill committed with indutny Sep 18, 2012
Commits on Feb 5, 2013
  1. @TooTallNate

    stream: make Writable#end() accept a callback function

    This is more backwards-compatible with stream1 streams like `fs.WriteStream`
    which would allow a callback function to be passed in as the only argument.
    
    Closes #4719.
    TooTallNate committed Feb 5, 2013
  2. @bnoordhuis

    blog: remove dangling symlink

    Fixes #4716.
    bnoordhuis committed Feb 5, 2013
  3. @bnoordhuis

    zlib: pass object size hint to V8

    Inform V8 that the zlib context object is tied to a large off-heap buffer.
    
    This makes the GC run more often (in theory) and improves the accuracy of
    --trace_external_memory.
    bnoordhuis committed Oct 30, 2012
  4. @bnoordhuis

    zlib: reduce memory consumption, release early

    In zlibBuffer(), don't wait for the garbage collector to reclaim the zlib memory
    but release it manually. Reduces memory consumption by a factor of 10 or more
    with some workloads.
    
    Test case:
    
      function f() {
        require('zlib').deflate('xxx', g);
      }
      function g() {
        setTimeout(f, 5);
      }
      f();
    
    Observe RSS memory usage with and without this commit. After 10,000 iterations,
    RSS stabilizes at ~35 MB with this commit. Without, RSS is over 300 MB and keeps
    growing.
    
    Cause: whenever the JS object heap hits the high-water mark, the V8 GC sweeps
    it clean, then tries to grow it in order to avoid more sweeps in the near
    future. Rule of thumb: the bigger the JS heap, the lazier the GC can be.
    
    A side effect of a bigger heap is that objects now live longer. This is harmless
    in general but it affects zlib context objects because those are tied to large
    buffers that live outside the JS heap, on the order of 16K per context object.
    
    Ergo, don't wait for the GC to reclaim the memory - it may take a long time.
    
    Fixes #4172.
    bnoordhuis committed Oct 30, 2012
  5. @bnoordhuis

    doc: don't suggest to reuse net.Socket objects

    Using Socket.prototype.connect() to reconnect an existing Socket object
    is not reliable. Users should just create a new Socket object.
    
    See #4698.
    bnoordhuis committed Feb 5, 2013
Commits on Feb 2, 2013
  1. @isaacs
  2. @bnoordhuis

    buffer: optimize Buffer.prototype.write(s, 'hex')

    Move the implementation to C++ land. This is similar to commit 3f65916
    but this time for the write() function and the Buffer(s, 'hex')
    constructor.
    
    Speeds up the benchmark below about 24x (2.6s vs 1:02m).
    
      var s = 'f';
      for (var i = 0; i < 26; ++i) s += s;  // 64 MB
      Buffer(s, 'hex');
    bnoordhuis committed Feb 2, 2013
Commits on Feb 1, 2013
  1. @isaacs

    debugger: Make the debugger timeout configurable

    If the NODE_DEBUGGER_TIMEOUT environment variable is set, then use
    that as the number of ms to wait for the debugger to start.
    
    This is primarily to work around a race condition that almost never
    happens in real usage with the debugger, but happens EVERY FRACKING
    TIME when the debugger tests run as part of 'make test'.
    isaacs committed Feb 1, 2013
  2. @bnoordhuis

    buffer: optimize Buffer.prototype.toString('hex')

    Move the implementation to C++ land. The old JS implementation used
    string concatenation, was dog slow and consumed copious amounts of
    memory for large buffers. Example:
    
      var buf = Buffer(0x1000000);  // 16 MB
      buf.toString('hex')           // Used 3+ GB of memory.
    
    The new implementation operates in O(n) time and space.
    
    Fixes #4700.
    bnoordhuis committed Feb 1, 2013
  3. @isaacs
  4. @bnoordhuis

    dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL

    Report the aforementioned DNS server failure codes as-is, stop c-ares
    from reporting them as ARES_ECONNREFUSED.
    
    Reported by Steve Freegard.
    bnoordhuis committed Feb 1, 2013
Commits on Jan 31, 2013
  1. @isaacs

    stream: Don't stop reading on zero-length decoded output

    Fixes regression introduced in 7e1cf84
    isaacs committed Jan 31, 2013
  2. @isaacs

    stream: Don't signal EOF on '' or Buffer(0)

    Those values, if passed to the _read() cb, will not signal an EOF.  Only
    null or undefined will mark the end of data, and trigger the end event.
    
    However, great care must be taken if you are returning an empty string
    or buffer!  There must be some other thing somewhere that will trigger
    a read() call, because there will never be a readable event fired later.
    
    This is in preparation for CryptoStreams being ported to streams2, where
    it is safe to simply stop reading, because the crypto cycle process will
    cause it to read(0) again at some future date.
    isaacs committed Jan 31, 2013
Commits on Jan 30, 2013
  1. @piscisaureus
  2. @isaacs
  3. @isaacs

    lint

    isaacs committed Jan 29, 2013
  4. @bnoordhuis

    os: rename tmpDir() to tmpdir() for consistency

    Make the casing consistent with the other os.* functions but keep
    os.tmpDir() around as an alias.
    bnoordhuis committed Jan 29, 2013
  5. @isaacs @TooTallNate

    readline: treat bare \r as a line ending

    Fixes #3305
    isaacs committed with TooTallNate Jan 29, 2013
Commits on Jan 29, 2013
  1. @bnoordhuis

    readline: make \r\n emit one 'line' event

    Make lines ending \r\n emit one 'line' event, not two (where the second
    one is an empty string).
    
    This adds a new keypress name: 'return' (as in: 'carriage return').
    
    Fixes #3305.
    bnoordhuis committed Jan 28, 2013
  2. @isaacs

    Revert "net: Avoid tickDepth warnings on small writes"

    This commit breaks simple/test-stream2-stderr-sync.  Need to figure out
    a better way, or just accept that `(function W(){stream.write(b,W)})()`
    is going to be noisy.  People should really be using the `'drain'` event
    for this use-case anyway.
    
    This reverts commit 02f7d1b.
    isaacs committed Jan 28, 2013