Permalink
Commits on May 14, 2013
  1. Test

    piscisaureus committed May 14, 2013
  2. dns: add getServers and setServers

    getServers returns an array of ips that are currently being used for
    resolution
    
    setServers takes an array of ips that are to be used for resolution,
    this will throw if there's invalid input but preserve the original
    configuration
    tjfontaine committed May 8, 2013
Commits on May 13, 2013
  1. Now working on 0.11.3

    isaacs committed May 13, 2013
  2. Merge branch 'v0.11.2-release'

    isaacs committed May 13, 2013
  3. 2013.05.13, Version 0.11.2 (Unstable)

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

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

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

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

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

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

    V8 3.19.0 deprecates v8::String::MayContainNonAscii(). It always returns
    true so there is not much point in keeping the call site around.
    bnoordhuis committed May 13, 2013
  10. 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

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

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

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

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

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

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

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

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

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

    WriteBuffer was changed in the cork/uncork implementation (60ed2c5).
    The unused argument has been removed.
    trevnorris committed with bnoordhuis May 7, 2013