1. May 17, 2013
  2. May 16, 2013
  3. May 15, 2013
  4. May 14, 2013
    • Ben Noordhuis's avatar
      deps: upgrade c-ares to 1.10.0 · 9498fd15
      Ben Noordhuis authored
      9498fd15
    • isaacs's avatar
      Now working on 0.11.3 · 458c8bb9
      isaacs authored
      458c8bb9
    • isaacs's avatar
      Merge branch 'v0.11.2-release' · dff93008
      isaacs authored
      dff93008
    • isaacs's avatar
      2013.05.13, Version 0.11.2 (Unstable) · 5d3dc0e4
      isaacs authored
      * uv: Upgrade to 0.11.2
      
      * V8: Upgrade to 3.19.0
      
      * npm: Upgrade to 1.2.21
      
      * build: Makefile should respect configure --prefix (Timothy J Fontaine)
      
      * cluster: use round-robin load balancing (Ben Noordhuis)
      
      * debugger, cluster: each worker has new debug port (Miroslav Bajtoš)
      
      * debugger: `restart` with custom debug port (Miroslav Bajtoš)
      
      * debugger: breakpoints in scripts not loaded yet (Miroslav Bajtoš)
      
      * event: EventEmitter#setMaxListeners() returns this (Sam Roberts)
      
      * events: add EventEmitter.defaultMaxListeners (Ben Noordhuis)
      
      * install: Support $(PREFIX) install target directory prefix (Olof Johansson)
      
      * os: Include netmask in os.networkInterfaces() (Ben Kelly)
      
      * path: add path.isAbsolute(path) (Ryan Doenges)
      
      * stream: Guarantee ordering of 'finish' event (isaacs)
      
      * streams: introduce .cork/.uncork/._writev (Fedor Indutny)
      
      * vm: add support for timeout argument (Andrew Paprocki)
      5d3dc0e4
    • isaacs's avatar
      npm: Upgrade to 1.2.21 · 31e73a5c
      isaacs authored
      31e73a5c
    • Ben Noordhuis's avatar
      cluster: use round-robin load balancing · e72cd415
      Ben Noordhuis authored
      Empirical evidence suggests that OS-level load balancing (that is,
      having multiple processes listen on a socket and have the operating
      system wake up one when a connection comes in) produces skewed load
      distributions on Linux, Solaris and possibly other operating systems.
      
      The observed behavior is that a fraction of the listening processes
      receive the majority of the connections. From the perspective of the
      operating system, that somewhat makes sense: a task switch is expensive,
      to be avoided whenever possible. That's why the operating system likes
      to give preferential treatment to a few processes, because it reduces
      the number of switches.
      
      However, that rather subverts the purpose of the cluster module, which
      is to distribute the load as evenly as possible. That's why this commit
      adds (and defaults to) round-robin support, meaning that the master
      process accepts connections and distributes them to the workers in a
      round-robin fashion, effectively bypassing the operating system.
      
      Round-robin is currently disabled on Windows due to how IOCP is wired
      up. It works and you can select it manually but it probably results in
      a heavy performance hit.
      
      Fixes #4435.
      e72cd415
    • Bert Belder's avatar
      Merge branch 'v0.10' · bdc58811
      Bert Belder authored
      Conflicts:
      	tools/test.py
      bdc58811
    • Ben Noordhuis's avatar
      child_process: fix handle delivery · 21bd4567
      Ben Noordhuis authored
      Commit 9352c198 ("child_process: don't emit same handle twice") trades
      one bug for another.
      
      Before said commit, a handle was sometimes delivered with messages it
      didn't belong to.
      
      The bug fix introduced another bug that needs some explaining. On UNIX
      systems, handles are basically file descriptors that are passed around
      with the sendmsg() and recvmsg() system calls, using auxiliary data
      (SCM_RIGHTS) as the transport.
      
      node.js and libuv depend on the fact that none of the supported systems
      ever emit more than one SCM_RIGHTS message from a recvmsg() syscall.
      That assumption is something we should probably address someday for the
      sake of portability but that's a separate discussion.
      
      So, SCM_RIGHTS messages are never coalesced. SCM_RIGHTS and normal
      messages however _are_ coalesced. That is, recvmsg() might return this:
      
        recvmsg();  // { "message-with-fd", "message", "message" }
      
      The operating system implicitly breaks pending messages along
      SCM_RIGHTS boundaries. Most Unices break before such messages but Linux
      also breaks _after_ them.  When the sender looks like this:
      
        sendmsg("message");
        sendmsg("message-with-fd");
        sendmsg("message");
      
      Then on most Unices the receiver sees messages arriving like this:
      
        recvmsg();  // { "message" }
        recvmsg();  // { "message-with-fd", "message" }
      
      The bug fix in commit 9352c198 assumes this behavior. On Linux however,
      those messages can also come in like this:
      
        recvmsg();  // { "message", "message-with-fd" }
        recvmsg();  // { "message" }
      
      In other words, it's incorrect to assume that the file descriptor is
      always attached to the first message. This commit makes node wise up.
      
      Fixes #5330.
      21bd4567
  5. May 13, 2013
  6. May 11, 2013
  7. May 10, 2013
    • isaacs's avatar
      doc: s/search.npmjs.org/npmjs.org/ · 4b69bcfc
      isaacs authored
      4b69bcfc
    • isaacs's avatar
      http: Use writev instead of the hacky hot end · ec576235
      isaacs authored
      ec576235
    • isaacs's avatar
      stream: Handle multi-corking properly · a5845422
      isaacs authored
      This adds proper support for the following situation:
      
          w.cork();
          w.write(...);
          w.cork();
          w.write(...);
          w.uncork();
          w.write(...);
          w.uncork();
      
      This is relevant when you have a function (as we do in HTTP) that wants
      to use cork, but in some cases, want to have a cork/uncork *around*
      that function, without losing the benefits of writev.
      a5845422
    • isaacs's avatar
      stream: Guarantee ordering of 'finish' event · c38ce9bc
      isaacs authored
      In synchronous Writable streams (where the _write cb is called on the
      current tick), the 'finish' event (and thus the end() callback) can in
      some cases be called before all the write() callbacks are called.
      
      Use a counter, and have stream.Transform rely on the 'prefinish' event
      instead of the 'finish' event.
      
      This has zero effect on most streams, but it corrects an edge case and
      makes it perform more deterministically, which is a Good Thing.
      c38ce9bc
  8. May 09, 2013
  9. May 08, 2013