Skip to content
Commits on May 13, 2013
  1. @isaacs

    2013.05.13, Version 0.11.2 (Unstable)

    isaacs committed
    * 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)
  2. @isaacs

    npm: Upgrade to 1.2.21

    isaacs committed
  3. @bnoordhuis

    cluster: use round-robin load balancing

    bnoordhuis committed
    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.
  4. @piscisaureus

    Merge branch 'v0.10'

    piscisaureus committed
    Conflicts:
    	tools/test.py
  5. @bnoordhuis @piscisaureus

    child_process: fix handle delivery

    bnoordhuis committed with piscisaureus
    Commit 9352c19 ("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 9352c19 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.
  6. @gorillamania @bnoordhuis

    util: make util.log handle non strings like console.log

    gorillamania committed with bnoordhuis
    util.log will fail on input that does not support .toString(). Have it
    use console.log() instead. Includes tests for hairy data types.
    
    Fixes #5349.
  7. @bnoordhuis
  8. @bnoordhuis
  9. @bnoordhuis

    stream_wrap: MayContainNonAscii() is deprecated

    bnoordhuis committed
    V8 3.19.0 deprecates v8::String::MayContainNonAscii(). It always returns
    true so there is not much point in keeping the call site around.
  10. @bnoordhuis
  11. @bnoordhuis

    deps: upgrade v8 to 3.19.0

    bnoordhuis committed
Commits on May 11, 2013
  1. @isaacs

    npm: Upgrade to 1.2.20

    isaacs committed
Commits on May 10, 2013
  1. @isaacs

    test: Darwin file watcher has paths now

    isaacs committed
    Even when watching subdirs.
  2. @isaacs

    uv: Upgrade to 0.11.2

    isaacs committed
Commits on May 9, 2013
  1. @isaacs
  2. @isaacs
  3. @isaacs

    stream: Handle multi-corking properly

    isaacs committed
    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.
  4. @isaacs

    stream: Guarantee ordering of 'finish' event

    isaacs committed
    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.
  5. @tjfontaine

    test: fix pummel/test-net-many-clients.js

    tjfontaine committed
    client sockets no longer emit 'connect' event inside the
    requestListener, update test-net-many-clients to reflect that
  6. @robertkowalski @bnoordhuis
  7. @wanderview @tjfontaine
Commits on May 8, 2013
  1. @bajtos @bnoordhuis

    src: initialize debug-related uv_async_t handles

    bajtos committed with bnoordhuis
    uv_async_t handles for dispatching of debug messages and
    emitting NODE_DEBUG_ENABLED used to be initialized every time
    node::EnableDebug() was called, which happened every time
    user sends a SIGUSR1.
    
    Now they are initialized only once from node::Init() during
    application start.
  2. @bajtos @bnoordhuis

    debugger, cluster: each worker has new debug port

    bajtos committed with bnoordhuis
    Implement support for debugging cluster workers. Each worker process
    is assigned a new debug port in an increasing sequence.
    
    I.e. when master process uses port 5858, then worker 1 uses port 5859,
    worker 2 uses port 5860, and so on.
    
    Introduce new command-line parameter '--debug-port=' which sets debug_port
    but does not start debugger. This option works for all node processes, it
    is not specific to cluster workers.
    
    Fixes nodejs/node-v0.x-archive#5318.
  3. @danielmoore @isaacs

    stream: make Readable.wrap support empty streams

    danielmoore committed with isaacs
    This makes Readable.wrap behave properly when the wrapped stream ends
    before emitting any data events.
  4. @danielmoore @isaacs

    stream: make Readable.wrap support objectMode

    danielmoore committed with isaacs
    Added a check to see if the stream is in objectMode before deciding
    whether to include or exclude data from an old-style wrapped stream.
Commits on May 7, 2013
  1. @tjfontaine
  2. @tjfontaine
  3. @mscdex @bnoordhuis
  4. @trevnorris @bnoordhuis

    stream_wrap: remove unused arg from WriteBuffer

    trevnorris committed with bnoordhuis
    WriteBuffer was changed in the cork/uncork implementation (60ed2c5).
    The unused argument has been removed.
  5. @tjfontaine
  6. @tjfontaine
Commits on May 6, 2013
  1. @tjfontaine
  2. @tjfontaine

    build: only use DESTDIR instead of PREFIX for pkg

    tjfontaine committed
    Preserve default install prefix seen in process.config, but use DESTDIR
    for installing to deliniate 32/64 versions, avoid conflicts with PREFIX
    settings in config.mk
  3. @tjfontaine

    build: only use DESTDIR instead of PREFIX for pkg

    tjfontaine committed
    Preserve default install prefix seen in process.config, but use DESTDIR
    for installing to deliniate 32/64 versions, avoid conflicts with PREFIX
    settings in config.mk
Commits on May 3, 2013
  1. @kevinoid @bnoordhuis

    doc: update options for exec and execFile

    kevinoid committed with bnoordhuis
    The stdio and customFds options are never used by exec or execFile,
    remove them from the documentation for these functions.
Something went wrong with that request. Please try again.