This repository has been archived by the owner. It is now read-only.
Permalink
Switch branches/tags
Commits on May 13, 2013
  1. 2013.05.13, Version 0.11.2 (Unstable)

    isaacs committed May 13, 2013
    * 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. npm: Upgrade to 1.2.21

    isaacs committed May 13, 2013
  3. cluster: use round-robin load balancing

    bnoordhuis committed Apr 23, 2013
    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. Merge branch 'v0.10'

    piscisaureus committed May 13, 2013
    Conflicts:
    	tools/test.py
  5. child_process: fix handle delivery

    bnoordhuis committed with piscisaureus May 10, 2013
    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. util: make util.log handle non strings like console.log

    gorillamania committed with bnoordhuis May 10, 2013
    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. stream_wrap: MayContainNonAscii() is deprecated

    bnoordhuis committed May 13, 2013
    V8 3.19.0 deprecates v8::String::MayContainNonAscii(). It always returns
    true so there is not much point in keeping the call site around.
  8. deps: upgrade v8 to 3.19.0

    bnoordhuis committed May 13, 2013
Commits on May 11, 2013
  1. npm: Upgrade to 1.2.20

    isaacs committed May 11, 2013
Commits on May 10, 2013
  1. test: Darwin file watcher has paths now

    isaacs committed May 10, 2013
    Even when watching subdirs.
  2. uv: Upgrade to 0.11.2

    isaacs committed May 10, 2013
Commits on May 9, 2013
  1. stream: Handle multi-corking properly

    isaacs committed May 8, 2013
    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.
  2. stream: Guarantee ordering of 'finish' event

    isaacs committed May 8, 2013
    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.
  3. test: fix pummel/test-net-many-clients.js

    tjfontaine committed May 6, 2013
    client sockets no longer emit 'connect' event inside the
    requestListener, update test-net-many-clients to reflect that
Commits on May 8, 2013
  1. src: initialize debug-related uv_async_t handles

    bajtos committed with bnoordhuis May 2, 2013
    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. debugger, cluster: each worker has new debug port

    bajtos committed with bnoordhuis May 2, 2013
    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. stream: make Readable.wrap support empty streams

    danielmoore committed with isaacs May 1, 2013
    This makes Readable.wrap behave properly when the wrapped stream ends
    before emitting any data events.
  4. stream: make Readable.wrap support objectMode

    danielmoore committed with isaacs Apr 29, 2013
    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. stream_wrap: remove unused arg from WriteBuffer

    trevnorris committed with bnoordhuis May 7, 2013
    WriteBuffer was changed in the cork/uncork implementation (60ed2c5).
    The unused argument has been removed.
Commits on May 6, 2013
  1. build: only use DESTDIR instead of PREFIX for pkg

    tjfontaine committed May 2, 2013
    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
  2. build: only use DESTDIR instead of PREFIX for pkg

    tjfontaine committed May 2, 2013
    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. doc: update options for exec and execFile

    kevinoid committed with bnoordhuis Apr 26, 2013
    The stdio and customFds options are never used by exec or execFile,
    remove them from the documentation for these functions.