1. Feb 08, 2013
  2. Feb 07, 2013
    • Nikhil Marathe's avatar
      Update http docs with http.IncomingMessage. · 6bcd9a4c
      Nikhil Marathe authored
      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.
      6bcd9a4c
    • isaacs's avatar
      Merge remote-tracking branch 'ry/v0.8' into master · 5cc3569f
      isaacs authored
      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
      5cc3569f
    • Ben Noordhuis's avatar
      typed arrays: copy non-ArrayBuffer in DataView ctor · 7b0770bf
      Ben Noordhuis authored
      This is commit 01ee551e, 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.
      7b0770bf
    • Fedor Indutny's avatar
      tls: port CryptoStream to streams2 · d59beb9f
      Fedor Indutny authored
      d59beb9f
    • isaacs's avatar
      blog: v0.8.19 release · 13897279
      isaacs authored
      13897279
    • isaacs's avatar
      Now working on 0.8.20 · ccf2712e
      isaacs authored
      ccf2712e
    • isaacs's avatar
      Merge branch 'v0.8.19-release' into v0.8 · 8caf6572
      isaacs authored
      8caf6572
    • isaacs's avatar
      2013.02.06, Version 0.8.19 (Stable) · 53978bdf
      isaacs authored
      * 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)
      53978bdf
    • isaacs's avatar
      npm: Upgrade to v1.2.10 · 5aef65a9
      isaacs authored
      5aef65a9
    • Fedor Indutny's avatar
      streams: both `finish` and `close` should unpipe · c024d2d8
      Fedor Indutny authored
      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.
      c024d2d8
  3. Feb 06, 2013
    • Ben Noordhuis's avatar
      test: add cluster EADDRINUSE test · b58efe77
      Ben Noordhuis authored
      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].
      b58efe77
    • Ben Noordhuis's avatar
      typed arrays: only share ArrayBuffer backing store · 01ee551e
      Ben Noordhuis authored
      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.
      01ee551e
    • Bryan Cantrill's avatar
      v8: loosen artificial mmap constraint · 202b5db4
      Bryan Cantrill authored
      Fixes #4010.
      202b5db4
    • Nathan Rajlich's avatar
      stream: make Writable#end() accept a callback function · a9c4a203
      Nathan Rajlich authored
      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.
      a9c4a203
    • Ben Noordhuis's avatar
      blog: remove dangling symlink · a86ebbe2
      Ben Noordhuis authored
      Fixes #4716.
      a86ebbe2
    • Ben Noordhuis's avatar
      zlib: pass object size hint to V8 · 6b99fd23
      Ben Noordhuis authored
      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.
      6b99fd23
    • Ben Noordhuis's avatar
      zlib: reduce memory consumption, release early · 8d146689
      Ben Noordhuis authored
      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.
      8d146689
  4. Feb 05, 2013
  5. Feb 03, 2013
  6. Feb 02, 2013
    • Ben Noordhuis's avatar
      buffer: optimize Buffer.prototype.write(s, 'hex') · cd42f561
      Ben Noordhuis authored
      Move the implementation to C++ land. This is similar to commit 3f65916f
      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');
      cd42f561
    • isaacs's avatar
      debugger: Make the debugger timeout configurable · 916aebab
      isaacs authored
      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'.
      916aebab
    • Ben Noordhuis's avatar
      buffer: optimize Buffer.prototype.toString('hex') · 3f65916f
      Ben Noordhuis authored
      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.
      3f65916f
    • isaacs's avatar
      c7c1ed01
    • Ben Noordhuis's avatar
      dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL · 6aed61f1
      Ben Noordhuis authored
      Report the aforementioned DNS server failure codes as-is, stop c-ares
      from reporting them as ARES_ECONNREFUSED.
      
      Reported by Steve Freegard.
      6aed61f1
  7. Feb 01, 2013
    • isaacs's avatar
      stream: Don't stop reading on zero-length decoded output · a6c18472
      isaacs authored
      Fixes regression introduced in 7e1cf84c
      a6c18472
    • isaacs's avatar
      stream: Don't signal EOF on '' or Buffer(0) · 7e1cf84c
      isaacs authored
      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.
      7e1cf84c
  8. Jan 31, 2013
  9. Jan 30, 2013
  10. Jan 29, 2013
    • isaacs's avatar
      Revert "net: Avoid tickDepth warnings on small writes" · bda45a8b
      isaacs authored
      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 02f7d1bf.
      bda45a8b
    • isaacs's avatar
      net: Avoid tickDepth warnings on small writes · 02f7d1bf
      isaacs authored
      Always defer the _write callback.  The optimization here was only
      relevant in some oddball edge cases that we don't actually care about.
      
      Our benchmarks confirm that just always deferring the Socket._write cb
      is perfectly fine to do, and in some cases, even slightly more
      performant.
      02f7d1bf
    • Bert Belder's avatar
      dgram: avoid EventEmitter leak warning · 6311f1c3
      Bert Belder authored
      When a datagram socket hasn't been bound yet, node will defer `send()`
      operations until binding has completed. Before this patch a `listening`
      listener would be installed every time `send` was called. This triggered
      an EventEmitter leak warning when more than 10 packets were sent in a
      tight loop. Therefore switch to using a single `listening` listener, and
      use an array to enqueue outbound packets.
      6311f1c3
    • Bert Belder's avatar
      cluster: support datagram sockets · 5e7e51c2
      Bert Belder authored
      5e7e51c2
    • Fedor Indutny's avatar
      child_process: move binding init in constructor · c13354e3
      Fedor Indutny authored
      Doing this in net.Socket constructor has much more overhead, and
      error is actually may happen before the construction of socket object.
      c13354e3
    • isaacs's avatar
      net: Initialize _connection, _handle in Socket ctor · 4c78a52a
      isaacs authored
      The better to reduce the hidden classes
      4c78a52a
    • isaacs's avatar
      http: Don't dump twice · faf78604
      isaacs authored
      faf78604