nested setTimeout calls can lead to premature process exit #2515

Closed
csosborn opened this Issue Jan 11, 2012 · 25 comments

Projects

None yet

8 participants

@csosborn

Certain combinations of nested setTimeout and clearTimeout calls lead to a the node process exiting improperly. The exit is clean, with the process object emitting an "exit" event and status code of 0, but it nevertheless happens too early. Additional background is at https://groups.google.com/forum/#!topic/nodejs/w1wBjg61rQg.

Please see https://gist.github.com/1590128 for code that will reproduce this behavior.

@bnoordhuis
Member

Confirmed. Tentative fix in bnoordhuis/libuv@1c527d2.

@bnoordhuis bnoordhuis was assigned Jan 11, 2012
@dfellis
dfellis commented Jan 11, 2012

This is not a Node problem.

Change the timeouts to 20 and 50 instead of 2 and 5 and you'll see it work.

The issue is that the setTimeout function only guarantees down to 4ms intervals.

The events are happening out of the specified order and is therefore producing undefined behavior. I'd have to dig through the guts of the V8 engine to see what's happening within the queue, but my guess is that the clearInterval, since it is happening within an event itself, clears a necessary interval to continue this godforsaken loop.

@dfellis
dfellis commented Jan 11, 2012

To be a bit more helpful, for whatever it is you're trying to do, you probably want to use process.nextTick, instead.

@bnoordhuis
Member

This is not a Node problem.

No, but it is a libev/libuv issue. One symptom is that the event loop's reference count sometimes drops below zero.

@dfellis
dfellis commented Jan 11, 2012

Then this may well have exposed a bug in the library. I don't think it changes the fact that the example code could be executed out of expected order, however.

It's a problem with any setTimeout; if the callback is calculating the first 5 million digits of pi the second callback isn't going to fire until the first has finished, anyways.

@csosborn

I chose those particular timeout values to maximize the chance of the bug occurring quickly and repeatably, purely for the sake of easy debugging. When I first encountered this problem, it was with timeouts closer to 10ms and 5000ms, respectively. It happens then too, but infrequently enough that it's harder to demonstrate.

The exact timing isn't important, but if the events are happening out the specified order, then I think that's a Node bug. While I'm perfectly happy to see God forsake this loop, Node should not. I'm using it for a good purpose: I need to time out unit tests that fail to exit cleanly, but I don't want to do so using a single setTimeout because then it becomes much harder to debug the code under test. A single timeout is likely to expire and kill the test while I'm still stepping through in the debugger, whereas a five-second fuse constructed of 500 consecutive 10ms setTimeouts does not exhibit that problem. When the event loop pauses, so does the fuse.

@cowboy
cowboy commented Jan 19, 2012

I'm experiencing what I believe to be the exact same issue. At no point should this code exit, since the interval is never cleared, but it does. The setTimeout and clearTimeout should in no way impact the setInterval, but they somehow do.

Note that while I initially had both delays set to much lower values than 100, using node v0.6.7 on OS X 10.7, this much higher delay value doesn't prevent the process from exiting early. I typically see the console.log between 3-5 times before it exits.

var i = 0;
var id;
// Create a never-ending interval. This should guarantee that the node process
// never exits, since it's never cleared.
setInterval(function() {
  console.log(++i);
  // Clear timeout if one exists.
  if (id) { clearTimeout(id); }
  // Create a timeout.
  id = setTimeout(function() {}, 100);
}, 100);

output:

[cowboy@CowBook:~]
[07:07:11] $ node test.js 
1
2
3
4

[cowboy@CowBook:~]
[07:07:11] $ 
@cowboy
cowboy commented Jan 19, 2012

FWIW, I don't know if this has any bearing on the issue, but in Chromium 117892 console, the interval goes forever.

@maritz
maritz commented Jan 19, 2012

Works in v0.4.12 but seems broken since v0.6.0

@bjornstar

I just ran into the same problem, it only happens on linux for me.

I created a setInterval / setTimeout benchmark (https://gist.github.com/1668261) and it won't complete on either of my two linux boxes, but completes fine on three of my windows boxes.

Is there an ETA to this fix going in? v0.6.8 was released 5 days ago and did not include this fix. I also tried running 0.7.2-pre and it still fails.

@bnoordhuis
Member

@bjornstar: bnoordhuis/libuv@1c527d2 seems to have fixed the issue but I haven't been able to come up with a good regression test yet.

@bjornstar

@bnoordhuis: I created a test for this and submitted a pull request (#2644)

@bjornstar

Any progress on this issue? Is there a problem with the pull request?

@deitch
deitch commented Feb 15, 2012

Yep, this one tripped me up to with jsdom and zombie. I just use TJ's "n" to now run that code under

n use 0.4.10 ./app.js

but that is kind of backwards. Looking forward to the fix here.

@piscisaureus
Member

Doesn't happen in windows, so @bnoordhuis's theory that it is an libuv-unix issue seems likely.

@bjornstar

Still broken on v0.6.11, when is this fix going in? clearTimeout is unsafe on linux because it will destroy all your timers, even those created by setInterval.

@bnoordhuis bnoordhuis added a commit to joyent/libuv that referenced this issue Feb 28, 2012
@bnoordhuis bnoordhuis unix: don't rely on libev to track timer state
An obscure libev bug sometimes makes it miss state changes. Keep track of the
state ourselves.

Fixes nodejs/node-v0.x-archive#2515.
2f886c8
@bnoordhuis
Member

The fix landed in master in af7960b. I'm debating the wisdom of back-porting it to v0.6.x. Can you guys test master and report your findings?

@csosborn

I just built from master (node reports 0.7.5-pre) and the behavior doesn't appear to have changed. Both my original reproducer and cowboy's much simpler code still exit too soon, just as in the v0.6 series. Both work fine in the v0.4 series.

@bnoordhuis
Member

I just built from master (node reports 0.7.5-pre)

That's not the current master, you're a release behind. FWIW, the test cases are passing for me with bab59f3.

@csosborn
csosborn commented Mar 1, 2012

You're right, I must have failed to to pull newer commits before checking out master. I tried again with 0.7.6-pre and all appears to be well; both test programs work properly. Thank you!

My sense is that this is worth backporting, but I have no clear idea of the risks. I can work around the problem until the stable v0.8 release arrives, but I'm not sure about other people.

@bnoordhuis bnoordhuis added a commit to joyent/libuv that referenced this issue Mar 1, 2012
@bnoordhuis bnoordhuis unix: don't rely on libev to track timer state
An obscure libev bug sometimes makes it miss state changes. Keep track of the
state ourselves.

Fixes nodejs/node-v0.x-archive#2515.
44c9f63
@bnoordhuis
Member

The fix has been back-ported in 3aa2fd3, it'll be part of the next v0.6 release.

@bnoordhuis bnoordhuis closed this Mar 1, 2012
@deitch
deitch commented Mar 1, 2012

Hats off!

@bjornstar

Thanks @bnoordhuis I'll check back on this when I return from my trip.

@isaacs isaacs added a commit to isaacs/node that referenced this issue Mar 2, 2012
@isaacs isaacs 2012.03.02 Version 0.6.12 (stable)
* Upgrade V8 to 3.6.6.24

* dtrace ustack helper improvements (Dave Pacheco)

* API Documentation refactor (isaacs)

* #2827 net: fix race write() before and after connect() (koichik)

* #2554 #2567 throw if fs args for 'start' or 'end' are strings (AJ ONeal)

* punycode: Update to v1.0.0 (Mathias Bynens)

* Make a fat binary for the OS X pkg (isaacs)

* Fix hang on accessing process.stdin (isaacs)

* repl: make tab completion work on non-objects (Nathan Rajlich)

* Fix fs.watch on OS X (Ben Noordhuis)

* Fix #2515 nested setTimeouts cause premature process exit (Ben Noordhuis)

* windows: fix time conversion in stat (Igor Zinkovsky)

* windows: fs: handle EOF in read (Brandon Philips)

* windows: avoid IOCP short-circuit on non-ifs lsps (Igor Zinkovsky)

* Upgrade npm to 1.1.4 (isaacs)
  - windows fixes
  - Bundle nested bundleDependencies properly
  - install: support --save with url install targets
  - shrinkwrap: behave properly with url-installed modules
  - support installing uncompressed tars or single file modules from urls etc.
  - don't run make clean on rebuild
  - support HTTPS-over-HTTP proxy tunneling
48a2d34
@bjornstar

Confirming that this is fixed in v0.6.12, thanks Ben!

@deitch
deitch commented Mar 5, 2012

Yep, just used TJ's n to install 0.6.12, and ran tests in 0.6.10 (issue) and 0.6.12 (no problems).

Thanks, Ben!

@jcheng5 jcheng5 referenced this issue in rstudio/httpuv Aug 12, 2013
@jcheng5 jcheng5 Merge latest stable libuv
Squashed commit of the following:

commit d84acc65a7e48f41e2bc2fea38ed473e4a051d18
Merge: 47fd23f 381312e
Author: Joe Cheng <joe@rstudio.org>
Date:   Mon Aug 12 09:46:05 2013 -0700

    Merge tag 'v0.10.13'

    2013.07.26, Version 0.10.13 (Stable)

    Changes since version 0.10.12:

    * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

commit 381312e1fe6fecbabc943ccd56f0e7d114b3d064
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 25 10:31:28 2013 -0700

    2013.07.26, Version 0.10.13 (Stable)

    Changes since version 0.10.12:

    * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

commit d779eb53d506d40fbe7903da7b914a5bbd588954
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Jul 23 13:14:44 2013 +0200

    unix, windows: fix uv_fs_chown() function prototype

    Before this commit, uv_fs_chown() and uv_fs_fchown() took the uid and
    gid as signed integers which is wrong because uid_t and gid_t are
    unsigned on most all platforms and IDs that don't fit in a signed
    integer do exist.

    This is not an ABI change because the size of the uid and gid arguments
    do not change, only their sign.

    On Windows, uv_uid_t and uv_gid_t are typedef'd as unsigned char for
    reasons that are unclear. It doesn't matter: they get cast to ints when
    used as function arguments. The arguments themselves are unused.

    Partial fix for joyent/node#5890.

commit 3b4e0a216fb4093fa9f6e5d3c9039b5f1d30820b
Author: isaacs <i@izs.me>
Date:   Tue Jul 9 13:18:53 2013 -0700

    Now working on v0.10.13

commit 58a46221bba726746887a661a9f36fe9ff204209
Author: isaacs <i@izs.me>
Date:   Tue Jul 9 13:18:50 2013 -0700

    2013.07.10, Version 0.10.12 (Stable)

    Changes since version 0.10.11:

    * linux: add support for MIPS (Andrei Sedoi)

    * windows: uv_spawn shouldn't reject reparse points (Bert Belder)

    * windows: use WSAGetLastError(), not errno (Ben Noordhuis)

    * build: darwin: disable -fstrict-aliasing warnings (Ben Noordhuis)

    * build: `all` now builds static and dynamic lib (Ben Noordhuis)

    * unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) (Ben
      Noordhuis)

commit 37d0209c8911c80115bb0c58b248c7e10bb541a9
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Jul 5 12:04:43 2013 +0200

    unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK)

    Ancient versions of glibc (<= 2.3.1) don't have error-checking mutexes.

commit 88a2c7ff209935d736f02e79b3369f2e7b646bb8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 17:13:26 2013 +0200

    build: `all` now builds static and dynamic lib

    The `make all` target now builds both libuv.a and libuv.{so,dylib}
    rather than just libuv.a.

commit 5841852703c02e46d7220f1eb8d89bb8414d7cf3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:02:39 2013 +0200

    test: add 'start timer from check handle' test

    Check that a timer that is started from a check handle gets picked up
    correctly, i.e. that it influences the timeout used in the next tick
    of the event loop.

commit 488b43ecc5a79143d0697e5e49d834c86c7c9894
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:26:45 2013 +0200

    test: fix signed/unsigned compiler warning

commit a0bc4cca74be7de2a540439920c8f15d0a671b74
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:06:26 2013 +0200

    build: darwin: disable -fstrict-aliasing warnings

    gcc 4.2.1 as shipped with Xcode complains incessantly about aliasing
    warnings, which, while technically true, disregards the fact that the
    aliased types have the same layout in memory. Squelch the warnings.

commit c8c775bd9739e0c9562b925ec482a378b50f97c2
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 01:03:36 2013 +0200

    windows: use WSAGetLastError(), not errno

    setsockopt() doesn't touch errno on failure. Use WSAGetLastError()
    instead.

    This is a back-port of commit 30a8b44 from the master branch.

commit 495d1a09fb863354e5de1c6ab4547be3672ace00
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jun 19 00:14:58 2013 +0200

    windows: uv_spawn shouldn't reject reparse points

    This fixes an issue where uv_spawn would not try to run a reparse point,
    and continue to scan the PATH instead. Effectively, it was impossible to
    spawn a symlinked binary. This commit fixes that.

    Also see #748

commit 6607e702539f0affa2d1b2926d4e69a1e032c242
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Jun 18 23:50:31 2013 +0200

    test: open stdout fd in write-only mode

    Fixes #771.

commit 5096f1e0961896998c4185db866c53a8a8636fab
Author: Andrei Sedoi <bsnote@gmail.com>
Date:   Thu Jun 13 23:23:42 2013 +0300

    linux: add support for MIPS

commit 72e440d7e193123c0359fa12a7fabab15d7d9f51
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 12 21:52:05 2013 +0200

    Now working on v0.10.12

commit c3b75406a66a10222a589cb173e8f469e9665c7e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 12 21:52:01 2013 +0200

    2013.06.13, Version 0.10.11 (Stable)

    Changes since version 0.10.10:

    * unix: unconditionally stop handle on close (Ben Noordhuis)

    * freebsd: don't enable dtrace if it's not available (Brian White)

    * build: make HAVE_DTRACE=0 should disable dtrace (Timothy J. Fontaine)

    * unix: remove overzealous assert (Ben Noordhuis)

    * unix: clear UV_STREAM_SHUTTING after shutdown() (Ben Noordhuis)

    * unix: fix busy loop, write if POLLERR or POLLHUP (Ben Noordhuis)

commit 12210fe578623995d13cc5126427c1c67de4b6e0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Jun 8 03:20:29 2013 +0200

    unix: fix busy loop, write if POLLERR or POLLHUP

    This fixes a busy loop by working around a quirk with Linux kernels
    <= 2.6.32 where an EPIPE or ECONNRESET error on a file descriptor that
    is polled for EPOLLOUT but not EPOLLIN gets reported by epoll_wait() as
    just EPOLLERR|EPOLLHUP, like this:

      epoll_wait(5, {{EPOLLERR|EPOLLHUP, {u32=12, u64=12}}}, 1024, 433) = 1

    Before this commit, libuv called uv__read() which attempts to read from
    the file descriptor.  With newer kernels and on other operating systems
    that fails like this:

      read(12, "", 65536)         = -1 EPIPE (Broken pipe)

    Which tells libuv there is a connection error and it should notify the
    user of that.  On the affected Linux kernels however, the read succeeds
    with an EOF:

      read(12, "", 65536)         = 0

    Which is subsequently passed on to the user. In most cases, the user
    will close the handle and everything is fine.

    Node.js however sometimes keeps the handle open in an attempt to flush
    pending write requests.  While libuv doesn't officially support this,
    unofficially it works...

    ...except on those older kernels.  Because the kernel keeps waking up
    the event loop without setting POLLOUT and because the read calls EOF
    but don't error, libuv's I/O state machine doesn't progress.

    That's why this commit changes uv__stream_io() to also write pending
    data.  While the read() system call doesn't error, the write() system
    call will.

    Fixes joyent/node#5504.

commit 536c5f8661af4b57f8cc8be43bf482ae27a9fcd8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Jun 8 03:14:32 2013 +0200

    unix: clear UV_STREAM_SHUTTING after shutdown()

    Fix a state machine buglet where the UV_STREAM_SHUTTING flag didn't get
    cleared.

commit 3ab354367b2ff16a5ade1b585fdf7e10599084d3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Jun 7 11:28:31 2013 +0200

    unix: remove overzealous assert

    Several node.js users are hitting this assert under what appear to be
    mostly benign conditions. In other words, it's unclear whether it's
    catching real bugs or just has wrong expectations.

    An aborting process is rather disruptive so I'm removing the assert
    from the stable branch and relanding it in the master branch.

commit f84becc64ea3f4653a2ee95319dab0aeee7c4044
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jun 6 10:48:24 2013 -0700

    build: make HAVE_DTRACE=0 should disable dtrace

commit c8ffee3460a1b507bbc7f5f83e4e09e4a769db76
Author: Brian White <mscdex@mscdex.net>
Date:   Fri May 31 18:37:45 2013 -0400

    freebsd: don't enable dtrace if it's not available

commit 8e4b248ca6cf66367476624899442974d17092f0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 5 15:01:34 2013 +0200

    unix: unconditionally stop handle on close

    Make sure the handle is fully stopped by the time uv__stream_close()
    calls uv_read_stop(). Fixes the following assertion:

        Assertion failed: (!uv__io_active(&stream->io_watcher, UV__POLLOUT)
        || !ngx_queue_empty(&stream->write_completed_queue)
        || !ngx_queue_empty(&stream->write_queue)
        || stream->shutdown_req != NULL
        || stream->connect_req != NULL), function uv_read_stop,
        file ../deps/uv/src/unix/stream.c, line 1329.

    Fixes joyent/node#5622.

commit e9ae62d13a38b89fee60ed502307530bc2b8f520
Author: isaacs <i@izs.me>
Date:   Tue Jun 4 12:00:31 2013 -0700

    Now working on v0.10.11

commit 0d95a88bd35fce93863c57a460be613aea34d2c5
Author: isaacs <i@izs.me>
Date:   Tue Jun 4 12:00:29 2013 -0700

    2013.06.05, Version 0.10.10 (Stable)

    Changes since version 0.10.9:

    * include: document uv_update_time() and uv_now() (Ben Noordhuis)

    * linux: fix cpu model parsing on newer arm kernels (Ben Noordhuis)

    * linux: fix memory leak in uv_cpu_info() error path (Ben Noordhuis)

    * linux: don't ignore OOM errors in uv_cpu_info() (Ben Noordhuis)

    * unix, windows: move uv_now() to uv-common.c (Ben Noordhuis)

    * darwin: make uv_fs_sendfile() respect length param (Wynn Wilkes)

commit b9eb402fb047b9c10c9395ea555d22bc869a5901
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 30 22:54:44 2013 +0200

    include: remove lame comment from uv.h

commit b4c658c3c0e650590cc0496833fead4f29deea75
Author: Wynn Wilkes <wynnw@movenetworks.com>
Date:   Wed May 29 12:13:34 2013 -0600

    darwin: make uv_fs_sendfile() respect length param

    The darwin sendfile implementation uses the &len parameter as input
    and output. The code was sending 0 (not using the value of req->len)
    so the behavior wasn't what the caller was expecting.

    This makes sure to initialize len with req->len to ensure that the
    caller can send portions of a file (not always everything to the
    end of the file).

commit 081f7018ecc1c66a76f76c4b5cacb327820674b9
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed May 29 18:32:25 2013 +0300

    test: use c-style comments

    Fixes a compilation problem on OS X caused by the use of c++-style
    comments in test-osx-select.c.

commit e0bdb3dbc916d8311538de2b783c53e9739bf652
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 16:13:34 2013 +0200

    unix, windows: move uv_now() to uv-common.c

commit b93cf8b594b5eaf4617174e674961fd3db3fb0c6
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 01:37:36 2013 +0200

    linux: don't ignore OOM errors in uv_cpu_info()

commit 31282a97e70b24df7ebe4692967fee2a48aa2096
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 01:25:37 2013 +0200

    linux: fix memory leak in uv_cpu_info() error path

    Any memory allocated to hold CPU model strings wasn't freed on error.

commit 92c72f58bf59ee51a1680dd52b0e91a0ccae485d
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 00:24:02 2013 +0200

    linux: fix cpu model parsing on newer arm kernels

    The format of /proc/cpuinfo on ARM kernels >= 3.8 has changed. Scan for
    the string "model name" (like x86) first, "Processor" second.

    Fixes #812.

commit dfff2e9e2336ac7b89234c3f7744a73fc6560bb1
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue May 28 23:20:35 2013 +0200

    include: document uv_update_time() and uv_now()

commit 21c12b824a07be22a24547904b50ff022db11dd7
Author: isaacs <i@izs.me>
Date:   Tue May 28 12:08:49 2013 -0700

    Now working on v0.10.10

commit a195f9ace23d92345baf57582678bfc3017e6632
Author: isaacs <i@izs.me>
Date:   Tue May 28 12:08:46 2013 -0700

    2013.05.29, Version 0.10.9 (Stable)

    Changes since version 0.10.8:

    * unix: fix stream refcounting buglet (Ben Noordhuis)

    * unix: remove erroneous asserts (Ben Noordhuis)

    * unix: add uv__is_closing() macro (Ben Noordhuis)

    * unix: stop stream POLLOUT watcher on write error (Ben Noordhuis)

commit b329d51ef4ce32f34c21a016a7c311ddeb077878
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 26 23:44:55 2013 +0200

    unix: stop stream POLLOUT watcher on write error

    The node.js test suite sometimes hits the assert that was added in
    commit 4146805 that checks if there are connect, write or shutdown
    requests pending when the user calls uv_read_stop() while the stream
    is primed for writing.

    The libuv user (i.e. node.js) is supposed to close the stream on error.
    Because uv__stream_close() calls uv_read_stop(), it's possible that the
    POLLOUT watcher is still active.

commit 8e16f8e0564a7b853c2cb0f92572e7959c6cadae
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 26 23:02:17 2013 +0200

    unix: add uv__is_closing() macro

commit b38c9c1004993ca4f642629f5af1b7b09bbc6887
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat May 25 02:36:45 2013 +0200

    unix: remove erroneous asserts

    As of commit c53fe81, it's legal for write_queue_size > 0 when the
    write_queue itself is empty. Sounds illogical but it means there are
    error-state write requests in the write_completed_queue that will touch
    up the write_queue_size on the next tick of the event loop.

    Remove a few stray asserts that still checked for the old situation.

commit 636a13b8c46c52413e1da1795a952bfc738f3c55
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:16:00 2013 +0200

    unix: fix stream refcounting buglet

    Fix a buglet where uv_read_stop() would mark the handle as stopped even
    when there are in-progress write requests.

    This bug is unlikely to have affected anyone, the only case where it
    has a user-visible effect is when:

      a) the handle has been stopped for reading but not writing, and
      b) it's the last active handle in the event loop's pollset

    If both conditions are met, it's possible for the event loop to
    terminate prematurely.

    This reapplies commit 80f2f82 which was temporarily reverted in fe7b154
    because it was making a lot of node.js tests fail on OS X with the
    following assertion:

        Assertion failed: (!uv__is_active(handle)), function
        uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165.

    Expecting that the handle is inactive when the state is UV_CLOSING
    turns out to be a bad assumption: it's possible that the handle is
    executing (for example) a shutdown request when uv__finish_close()
    is called. That's okay, uv__stream_destroy() takes care of that.

    The issue wasn't specific to OS X, it was just more visible on that
    platform. (Slow) debug builds on Linux exhibited the same behavior.

commit 7d5024e7e6564c36b99af39db075b0c9d75797f9
Author: isaacs <i@izs.me>
Date:   Fri May 24 14:37:56 2013 -0700

    Now working on v0.10.9

commit 0f39be12926fe2d8766a9f025797a473003e6504
Author: isaacs <i@izs.me>
Date:   Fri May 24 14:37:53 2013 -0700

    2013.05.25, Version 0.10.8 (Stable)

    Changes since version 0.10.7:

    * windows: make uv_spawn not fail under job control (Bert Belder)

    * darwin: assume CFRunLoopStop() isn't thread-safe (Fedor Indutny)

    * win: fix UV_EALREADY incorrectly set (Bert Belder)

    * darwin: make two uv__cf_*() functions static (Ben Noordhuis)

    * darwin: task_info() cannot fail (Ben Noordhuis)

    * unix: add mapping for ENETDOWN (Ben Noordhuis)

    * unix: implicitly signal write errors to libuv user (Ben Noordhuis)

    * unix: fix assert on signal pipe overflow (Bert Belder)

    * unix: turn off POLLOUT after stream connect (Ben Noordhuis)

commit fe7b154476145ebc69ab70d3ca1d195116a00065
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri May 24 21:23:09 2013 +0200

    Revert "unix: fix stream refcounting buglet"

    This change is making 45 out of 527 node.js tests fail on OS X with the
    following assertion:

        Assertion failed: (!uv__is_active(handle)), function
        uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165.

    It's likely a manifestation of a bug elsewhere but, because there's a
    new node.js release going out tonight, I'm reverting it for now.

    This reverts commit 80f2f826bf90b84e659321c0b7fd8af419acb85e.

    Conflicts:
    	src/unix/stream.c

commit 41468050745bc135247f587eae1c38e958fd8377
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:37:36 2013 +0200

    unix: turn off POLLOUT after stream connect

    Clear the POLLOUT flag after we're done connecting. Not doing so isn't
    really harmful but it may cause the event loop to wake up more often
    than it has to.

commit 80f2f826bf90b84e659321c0b7fd8af419acb85e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:16:00 2013 +0200

    unix: fix stream refcounting buglet

    Fix a buglet where uv_read_stop() would mark the handle as stopped even
    when there are in-progress write requests.

    This bug is unlikely to have affected anyone, the only case where it
    has a user-visible effect is when:

      a) the handle has been stopped for reading but not writing, and
      b) it's the last active handle in the event loop's pollset

    If both conditions are met, it's possible for the event loop to
    terminate prematurely.

commit c5d570ddba7b3e95fdade96758df0eb2d24cf42f
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 23 14:44:45 2013 +0200

    unix: fix assert on signal pipe overflow

    An incorrect assert() statement was causing libuv to crash when writing
    to an internal signal pipe would result in EAGAIN/EWOULDBLOCK.

    This commit doesn't solve the underlying issue that the signal pipe can
    overflow.

    This should fix joyent/node#5538

commit c53fe815442559fe58f362279bdc63f5483d6fdb
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 22 16:41:52 2013 +0200

    unix: implicitly signal write errors to libuv user

    Fix an infinite loop in the example below when the stream encounters
    an EPIPE/ECONNRESET/etc. error:

        // keep writing until we start buffering
        while (stream->write_queue_size == 0) {
          uv_write_t* req = make_write_req();
          uv_buf_t buf = uv_buf_init("PING", 4);
          uv_write(req, stream, &buf, 1, write_cb);
        }

    uv_write() does not return an error code on write errors, the error is
    only reported to the callback.

    Before this commit, uv_write() left stream->write_queue_size untouched
    on error, meaning the caller had no way to find out about that error
    until the next tick of the event loop - which in the example above
    leads to an infinite loop because that next tick is indefinitely
    postponed.

    This commit works around that at the cost of some added internal
    complexity.

    Fixes joyent/node#5516.

commit 739a5b25b5704d526a46a953da8b9b8db31770d4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 20 20:04:45 2013 +0200

    unix: add mapping for ENETDOWN

commit a1cb52a3ebe13f8e26a48e194e595e95c677de30
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 20 14:35:10 2013 +0200

    darwin: task_info() cannot fail

    And if it does: assert, don't return errno. It's a mach function, it
    doesn't set errno.

commit e515d71592afe66ddecd6bf2b1409848811cf7ff
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri May 17 14:42:14 2013 +0200

    darwin: make two uv__cf_*() functions static

commit db7dc6899d9badcfb99016ba87da2a66eae86dad
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat May 18 20:45:36 2013 +0200

    win: fix UV_EALREADY incorrectly set

    UV_EALREADY itself is already a libuv error, it should be set with
    uv__set_artifical_error and not with uv__set_sys_error.

    Closes #802

commit d5fa633ef22bd40c81af85dd2ee3882cce3c91c4
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri May 17 20:31:39 2013 +0400

    darwin: assume CFRunLoopStop() isn't thread-safe

    Use signaling mechanism for loop termination, because CFRunLoopStop() is
    most likely not a thread-safe function and invoking it from other thread
    may sometimes result in a "dead-lock".

    fix #799

commit 4f61ab2058c9baffa01d9c865a376ed8d3c65820
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 16 21:29:40 2013 +0200

    windows: make uv_spawn not fail under job control

    * Fix a potential issue introduced with 415f4d3, namely that uv_spawn
      can fail when the current process is under job control. This would
      happen on Windows versions that don't support nested jobs (versions
      prior to Windows 8 / Server 2012).

    * Change the `uv__init_global_job_handle` function signature to match
      what `uv_once` expects.

    * Add a bunch of comments that clarify how we're using job control,
      and how we're dealing with job control that might be established by
      our parent process.

commit 13496e9c1ab905af0c43a3dda7bdec7dca73d1b3
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:50:22 2013 -0700

    Now working on v0.10.8

commit 028baaf0846b686a81e992cb2f2f5a9b8e841fcf
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:50:19 2013 -0700

    2013.05.15, Version 0.10.7 (Stable)

    Changes since version 0.10.6:

    * windows: kill child processes when the parent dies (Bert Belder)

commit 415f4d3e4c7ac25abf723eed3f5b40e63e045785
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:48:03 2013 -0700

    windows: kill child processes when the parent dies

    This makes Windows behave just like Unix. This does not affect
    processes that are spawned with the UV_PROCESS_DETACHED flag set.

commit 1fd10deec4de70ec3c13765948ec2726a0023c23
Author: isaacs <i@izs.me>
Date:   Tue May 14 14:40:01 2013 -0700

    Now working on v0.10.7

commit 11e6613e6260d95c8cf11bf89a2759c24649319a
Author: isaacs <i@izs.me>
Date:   Tue May 14 14:39:58 2013 -0700

    2013.05.15, Version 0.10.6 (Stable)

    Changes since version 0.10.5:

    * stream: fix osx select hack (Fedor Indutny)

    * stream: fix small nit in select hack, add test (Fedor Indutny)

    * build: link with libkvm on openbsd (Ben Noordhuis)

    * stream: use harder sync restrictions for osx-hack (Fedor Indutny)

    * unix: fix EMFILE error handling (Ben Noordhuis)

    * darwin: fix unnecessary include headers (Daisuke Murase)

    * darwin: rename darwin-getproctitle.m (Ben Noordhuis)

    * build: convert predefined $PLATFORM to lower case (Elliot Saba)

    * build: set soname in shared library (Ben Noordhuis)

    * build: make `make test` link against .a again (Ben Noordhuis)

    * darwin: fix ios build, don't require ApplicationServices (Ben
      Noordhuis)

    * build: only set soname on shared object builds (Timothy J. Fontaine)

commit 0564ee4a66956df1f3e0294e02296158e984d728
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Wed Apr 17 00:33:25 2013 +0200

    test, sunos: disable process_title test

    Disable unit test failing due to missing implementation
    of uv_(set|get)_process_title for Sun OS (SmartOS).

    Based on discussion with @tjfontaine, such implementation is difficult
    if possible at all and it won't be done anytime soon. Thus there is
    no point in keeping the failing test around.

commit 55c150abfc11ad6c23674c196ed914db0f942224
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon May 13 15:48:32 2013 -0700

    build: only set soname on shared object builds

commit f22163c233d4a9dedfe38ebb18a1a414cd25ba62
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 13 20:06:25 2013 +0200

    darwin: fix ios build, don't require ApplicationServices

commit a11d16d8f5888aee56f129ddbd54c6130a881d2c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 12 16:42:30 2013 +0200

    build: make `make test` link against .a again

    Commit 3eb6eb3 links the .so with -Wl,-soname which breaks the
    `make test` target: run-tests is linked against (for example)
    libuv.so.0.11 while the actual file name is libuv.so.

    That's relatively easy to fix by getting creative with rpaths but it's
    even easier to fix by simply linking statically.

    It also means I no longer have to remember to set LD_BIND_NOW when
    profiling the benchmarks.

commit 3eb6eb35ccf1aedbd2297c98b73df3cb81215e3a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 12 14:48:58 2013 +0200

    build: set soname in shared library

commit 96a2df80846af3769f6c0d432cae2c5963c51e2e
Author: Elliot Saba <staticfloat@gmail.com>
Date:   Sat May 11 14:48:52 2013 -0700

    build: convert predefined $PLATFORM to lower case

commit fe2a3150c0244759154c4cc472af12eca79df8a8
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Mon Apr 15 21:03:05 2013 +0200

    test: add error logging to tty unit test

commit af6e865a076af031213f9afc488c28306d6bc3d2
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Mon Apr 15 20:36:56 2013 +0200

    test: fix process_title failing on linux

    Shorten the test string from 40 to 38 characters because the title
    length is limited to 39 characters.

    Truncation of long titles was introduced intentionally by commit
    a0c1d84 (see discussion in joyent/node#5006).

commit 2c21050956206b5e7962e86f4bdbaade1a44b6ae
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Sat Apr 20 06:43:31 2013 +0200

    test: add RETURN_SKIP and RETURN_TODO macros

    Added two new flags to identify tests that are intentionally ignored
    (usually because we don't want to implement the tested functionality
    on current platform) and test serving as TODO list (usually indicating
    that the tested functionality should be implemented on current plaform
    in the near future.)

commit 9b801d551b70bd4b19e1b29fd3a257bec8051842
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 2 13:59:18 2013 +0200

    darwin: rename darwin-getproctitle.m

    Rename it to darwin-getproctitle.c, it doesn't need an Objective-C
    compiler. Fix up -Wpedantic warnings about void to function pointer
    casts and include <ApplicationServices/ApplicationServices.h> to get
    the GetCurrentProcess() function prototype.

commit 4b0fac89907380a62c7acc15303a39839f05e011
Author: Daisuke Murase <typester@cpan.org>
Date:   Thu May 2 10:06:03 2013 +0900

    darwin: fix unnecessary include headers

    This file doesn't use any Cocoa functions, CoreFoundation.h is enough here.
    This line causes compilation error on iOS environment.

commit f6fb1dfef149b09c106538bc1040b4444d6c94bb
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 2 13:15:21 2013 +0200

    ChangeLog: fix incorrect release date

commit b3ab332b340fb857c4d6bd43208aa708a6eb00bd
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 1 19:14:23 2013 +0200

    unix: fix EMFILE error handling

    On Linux, the accept() and accept4() system calls checks for EMFILE
    before checking for EAGAIN. Refine our EMFILE error handling tactic
    to deal with that. Here is what used to happen:

     1. The event loop calls accept() and sees EMFILE.

     2. Libuv switches to EMFILE error handling mode. It closes a stashed
        file descriptor and calls accept() again.

     3. The accept() system call fails with EAGAIN.

     4. Libuv reopens the stashed file descriptor (reaching RLIMIT_NOFILE
        again) and returns control to the regular event loop.

     5. The regular event loop calls accept(), sees EMFILE and jumps to
        step 2 again. Effectively an infinite loop.

    Avoid that by not calling accept() again when we've seen EAGAIN.

    Fixes joyent/node#5389.

commit 67f9b91a8b76536c47045a9edabe440fa78a42c0
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Apr 30 12:51:32 2013 +0400

    stream: use harder sync restrictions for osx-hack

    Synchronize harder to avoid excessive spins, invokations of async
    callback and sporadic assertion failures on double-call of async
    callback.

commit 4e5b8dc2efb7a5711b0741ff61b9da914b4920fc
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Apr 29 13:38:57 2013 +0200

    build: link with libkvm on openbsd

    The Makefile already did and now the gyp build does too. Fixes the
    OpenBSD build of node.js.

    Fixes joyent/node#5363.

commit ac4e7e7ff2d947297ac2995561e49c0e3efdafd9
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri Apr 26 23:43:28 2013 +0400

    stream: fix small nit in select hack, add test

commit 2400716d875a6481c13fd0b46068ab3b6afa5345
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Apr 23 22:34:43 2013 -0400

    stream: fix osx select hack

    After latest twiddling, `stream->io_watcher.fd` doesn't contain a real
    stream's file descriptior anymore. The one from `select_state` should be
    used instead.

    Zero-initialize `select_state->event` field.

commit a0cb926e2eb9979378f4b71854e8c035035cc3e8
Author: isaacs <i@izs.me>
Date:   Mon Apr 22 17:37:25 2013 -0700

    Now working on v0.10.6

commit 6595a7732c52eb4f8e57c88655f72997a8567a67
Author: isaacs <i@izs.me>
Date:   Mon Apr 22 17:37:22 2013 -0700

    2013.04.24, Version 0.10.5 (Stable)

    Changes since version 0.10.4:

    * unix: silence STATIC_ASSERT compiler warnings (Ben Noordhuis)

    * windows: make timers handle large timeouts (Miroslav Bajtoš)

    * windows: remove superfluous assert statement (Bert Belder)

    * unix: silence STATIC_ASSERT compiler warnings (Ben Noordhuis)

    * linux: don't use fopen() in uv_resident_set_memory() (Ben Noordhuis)

commit cd10637d0b3c03e28831eca2d66d8bda3216b10c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Apr 22 08:24:57 2013 +0200

    linux: don't use fopen() in uv_resident_set_memory()

    RSS is a reflection of the number of pages that a process has mapped.
    glibc implements fopen() in terms of mmap() which means that trying
    to read the number of mapped pages changes it. Switch to open().

commit 105e4dcb231f88c8e9a71cca85be9af9267022f4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Apr 22 07:46:21 2013 +0200

    unix: silence STATIC_ASSERT compiler warnings

    Fix the following two warnings:

      src/unix/core.c:74:1: warning: ISO C90 forbids array
      'static_assert_failed' whose size can't be evaluated [-Wvla]
      src/unix/core.c:76:1: warning: ISO C90 forbids array
      'static_assert_failed' whose size can't be evaluated [-Wvla]

commit a3963883b81ec2c2612511ff3fa885b2944d8457
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Apr 18 02:55:15 2013 +0200

    windows: remove superfluous assert statement

commit 09ff5100e3ecae807dd19796e08a0b756bc04ddd
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Tue Apr 16 16:29:48 2013 +0200

    windows: make timers handle large timeouts

    Fixes a bug where timers with very large timeouts run on the next tick.
    Based on a similar bug fix for unix (9b61939).

    Fixes joyent/node#5101.

commit ef85bdaffbc878b44b24f01e97f7c7e7301c6dfe
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Apr 12 19:37:52 2013 +0200

    unix: silence STATIC_ASSERT compiler warnings

    Newer versions of gcc complain about the definition of the zero element
    array. Squelch that warning by turning it into a one element array.

commit 5ed1d02cc0167704710d1dd4aafd26653eaf810f
Author: isaacs <i@izs.me>
Date:   Thu Apr 11 09:00:10 2013 -0700

    Now working on v0.10.5

commit 85827e26403ac6dfa331af8ec9916ea7e27bd833
Author: isaacs <i@izs.me>
Date:   Thu Apr 11 09:00:06 2013 -0700

    2013.04.12, Version 0.10.4 (Stable)

    Changes since version 0.10.3:

    * include: update uv_backend_fd() documentation (Ben Noordhuis)

    * unix: include uv.h in src/version.c (Ben Noordhuis)

    * unix: don't write more than IOV_MAX iovecs (Fedor Indutny)

    * mingw-w64: don't call _set_invalid_parameter_handler (Nils Maier)

    * build: gyp disable thin archives (Timothy J. Fontaine)

    * sunos: re-export entire library when static (Timothy J. Fontaine)

    * unix: dtrace probes for tick-start and tick-stop (Timothy J. Fontaine)

    * windows: fix memory leak in fs__sendfile (Shannen Saez)

    * windows: remove double initialization in uv_tty_init (Shannen Saez)

    * build: fix dtrace-enabled out of tree build (Ben Noordhuis)

    * build: squelch -Wdollar-in-identifier-extension warnings (Ben
      Noordhuis)

    * inet: snprintf returns int, not size_t (Brian White)

    * win: refactor uv_cpu_info (Bert Belder)

    * build: add support for Visual Studio 2012 (Nicholas Vavilov)

    * build: -Wno-dollar-in-identifier-extension is clang only (Ben
      Noordhuis)

commit 0ff06b4ac38a3d53c32e52b2c649dd2d4b3d2b0c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Apr 10 23:40:55 2013 +0200

    build: -Wno-dollar-in-identifier-extension is clang only

    Add a compiler check because turning on the option unconditionally
    breaks the build when CC=gcc.

    This should also fix the build on versions of OS X that predate Apple's
    switch to clang (10.6 and older.)

commit 633d33a92a4004938b8a88f661571c3fc93085db
Author: mscdex <mscdex@mscdex.net>
Date:   Wed Apr 10 11:36:13 2013 -0400

    cygwin: remove unused variable

commit bc5fa794b96049e39e7fc1192137db36e1dc4dc8
Author: Nicholas Vavilov <vvnicholas@gmail.com>
Date:   Tue Feb 26 15:01:48 2013 +0200

    build: add support for Visual Studio 2012

    Closes #722

commit a9bce29f0c98187fcf09d1ba9dcd4eb5548fb30e
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Apr 10 16:02:24 2013 +0200

    win: refactor uv_cpu_info

    Fixes a couple of error handling issues:

    * Don't free an uninitialized pointer when allocating memory for
      `cpu_infos` fails.
    * Don't return a bogus error value when NtQuerySystemInformation fails.
      That function returns an NTSTATUS code instead of setting the last
      error.
    * Don't clobber out parameters when an error happens.

commit 9021dbcd8d1dc3b1c6cca82f46d5e774088d4ae6
Author: Brian White <mscdex@mscdex.net>
Date:   Wed Apr 10 14:31:50 2013 +0200

    inet: snprintf returns int, not size_t

commit 4d4f1496d9b600dfd3e4c4f0040d7b4a0d41043c
Author: Brian White <mscdex@mscdex.net>
Date:   Wed Apr 10 14:29:29 2013 +0200

    windows, unix: remove dead code

commit 8ea49c12235fc22bfe9d192224507c5a1183ee98
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Apr 10 14:31:28 2013 +0200

    build: squelch -Wdollar-in-identifier-extension warnings

    The dtrace probes contain dollar signs. We know, llvm-gcc, and we don't
    care. Suppress the warnings.

commit bad707db3f499decd864907809cb5d9b423d1d98
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Apr 10 14:21:38 2013 +0200

    gitigore: ignore auto-generated uv-dtrace.h header

commit be5b16aabd1d1996ca666a48b933a79e3d37b340
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Apr 10 14:19:14 2013 +0200

    build: fix dtrace-enabled out of tree build

commit 603915dd0081ec2f34d612291a1aeb909f6f2b76
Author: Shannen Saez <shannenlaptop@gmail.com>
Date:   Wed Apr 10 14:16:39 2013 +0200

    windows: remove double initialization in uv_tty_init

commit 7570a35b70a33258e4c36e080e900f30c3213697
Author: Shannen Saez <shannenlaptop@gmail.com>
Date:   Wed Apr 10 14:15:13 2013 +0200

    windows: fix memory leak in fs__sendfile

commit e1ffc6c0eed94a328e8435bc215820a4701ee8b5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon Apr 8 16:17:01 2013 -0700

    unix: dtrace probes for tick-start and tick-stop

commit 0da533e84f0a4f32d200bf9568548bce1e5e315a
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon Apr 8 16:31:35 2013 -0700

    sunos: re-export entire library when static

    This is useful to make sure linker doesn't strip things like dtrace

commit e294975bb4e01efac13a134b3282193e543c68c7
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon Apr 8 16:30:27 2013 -0700

    build: gyp disable thin archives

    Thin archives aren't available on all platforms, notably smartos

commit 5676924c5bd7a6e59ec0abb958c31a98b667ea87
Author: Nils Maier <maierman@web.de>
Date:   Wed Apr 10 14:00:37 2013 +0200

    mingw-w64: don't call _set_invalid_parameter_handler

    Check the __MSVCRT_VERSION__, as mingw-w64 always defines
    _WRITE_ABORT_MSG.

    Closes #774

commit 895e77639ee9aa3bc17b4bc9d675d63d7940c396
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Apr 8 17:10:39 2013 +0400

    unix: don't write more than IOV_MAX iovecs

    Write no more than `IOV_MAX` chunks with `writev()` at
    once, otherwise `writev()` returns EINVAL.

commit f1215b791811e5c860152ecde038f35537dab57f
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Apr 4 03:02:06 2013 +0200

    unix: include uv.h in src/version.c

    Include uv.h so the compiler sees the right visibility attribute for
    uv_version() and uv_version_string().

    GYP builds compile with -fvisibility=hidden. Before this commit, the
    symbols were not visible in libuv.so.

    Fixes joyent/node#5213.

commit ec24bfac194419fae2b66aa2bb0d8d9d2cb4547a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Mar 31 20:02:24 2013 +0200

    include: update uv_backend_fd() documentation

    uv_run_once() is no more, replace with uv_run(UV_RUN_NOWAIT).

    Fixes #759.

commit 9e90cdeae72b0b55becddfef1d441aeeb588e083
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Mar 28 19:59:51 2013 +0100

    Now working on v0.10.4

commit 31ebe23973dd98fd8a24c042b606f37a794e99d0
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Mar 28 19:56:36 2013 +0100

    2013.02.04, Version 0.10.3 (Stable)

    Changes since version 0.10.2:

    * include: remove extraneous const from uv_version() (Ben Noordhuis)

    * doc: update README, replace `OS` by `PLATFORM` (Ben Noordhuis)

    * build: simplify .buildstamp rule (Ben Noordhuis)

    * build: disable -Wstrict-aliasing on darwin (Ben Noordhuis)

    * darwin: don't select(&exceptfds) in fallback path (Ben Noordhuis)

    * unix: don't clear flags after closing UDP handle (Saúl Ibarra
      Corretgé)

commit a9a23dc28ec73912dfaae4fc2a8d815e20578695
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Thu Mar 28 15:50:42 2013 +0100

    unix: don't clear flags after closing UDP handle

commit 75141493ba44addf7e089308e9692357f958ceda
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 28 00:12:24 2013 +0100

    darwin: don't select(&exceptfds) in fallback path

    The exceptfds set is for polling OOB data, not errors.

    Fixes joyent/node#5155.

commit fe136cedb9f5d627e5b21934a48c97ff62f4c50e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 28 00:10:44 2013 +0100

    build: disable -Wstrict-aliasing on darwin

    The antiquated gcc/clang that ships with Xcode emits waaaay too many
    false positives.

commit 0fb9b22ce6263d2996421c1261d39c6bb3255cb5
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Mar 26 15:16:24 2013 +0100

    build: simplify .buildstamp rule

commit bd20b371700e6354d8d0ec3a102048946724f053
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Mar 26 14:49:29 2013 +0100

    doc: update README, s/OS/PLATFORM/

    Commit a9740c9 changed the name of the OS var to PLATFORM but forgot to
    update the README.

commit 3f6122b3f7e58109ff82bb217ff4db3bb310a98b
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Mar 26 14:45:53 2013 +0100

    include: remove extraneous const from uv_version()

    Fixes the following warning:

      include/uv.h:236:30: warning: type qualifiers ignored on function
      return type [-Wignored-qualifiers]
       UV_EXTERN const unsigned int uv_version(void);

commit d5f8c1a4d3dcfc42b15c75a53427763233bd2110
Author: Bert Belder <bertbelder@gmail.com>
Date:   Mon Mar 25 15:38:41 2013 +0100

    Now working on v0.10.3

commit 0f36a00568f3e7608f97f6c6cdb081f4800a50c9
Author: Bert Belder <bertbelder@gmail.com>
Date:   Mon Mar 25 15:32:44 2013 +0100

    2013.03.25, Version 0.10.2 (Stable)

    This is the first officially versioned release of libuv. Starting now
    libuv will make releases independently of Node.js.

    Changes since Node.js v0.10.0:

    * test: add tap output for windows (Timothy J. Fontaine)

    * unix: fix uv_tcp_simultaneous_accepts() logic (Ben Noordhuis)

    * include: bump UV_VERSION_MINOR (Ben Noordhuis)

    * unix: improve uv_guess_handle() implementation (Ben Noordhuis)

    * stream: run try_select only for pipes and ttys (Fedor Indutny)

    Changes since Node.js v0.10.1:

    * build: rename OS to PLATFORM (Ben Noordhuis)

    * unix: make uv_timer_init() initialize repeat (Brian Mazza)

    * unix: make timers handle large timeouts (Ben Noordhuis)

    * build: add OBJC makefile var (Ben Noordhuis)

    * Add `uv_version()` and `uv_version_string()` APIs (Bert Belder)

commit eeeb07934b0b284dd742326b564d59adcc5b0069
Author: Bert Belder <bertbelder@gmail.com>
Date:   Mon Mar 25 15:09:58 2013 +0100

    Update AUTHORS and .mailmap

commit c7b1c53ef1afe7c0fef0822d72b0783368b626de
Author: Bert Belder <bertbelder@gmail.com>
Date:   Mon Mar 25 15:33:59 2013 +0100

    Prepare for making releases, add uv_version/uv_version_string API

commit 1487d5aea71ef20875f39ef66f0f8be46a8b3baf
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Mar 23 23:16:53 2013 +0100

    build: add OBJC makefile var

    Overrides the Objective-C compiler that is used. Defaults to $(CC).

commit 9b619396d93182be26287f261ac654611aa99d95
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 21 14:47:38 2013 +0100

    unix: make timers handle large timeouts

    This commit fixes two closely related integer overflow bugs:

    * Timers with a timeout > INT_MAX cause uv__next_timeout() to return
      a negative value.

    * Timers with very large timeouts (close or equal to ULLONG_MAX) run on
      the next tick.

    In both cases, clamp the values to prevent the overflow from happening.

    Fixes joyent/node#5101.

commit 77cb29a723b1bda2cd4f938031d352e46bd25fed
Author: Brian Mazza <louseman@gmail.com>
Date:   Mon Mar 4 22:17:50 2013 -0600

    unix: make uv_timer_init() initialize repeat

    uv_timer_get_repeat() should return 0 for timers that haven't been
    started.

commit a9740c9bc432fe0b416c4c765a6011ddc2df966f
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Mar 17 00:12:42 2013 +0100

    build: rename OS to PLATFORM

    Rename the OS make variable to PLATFORM, it conflicts with the OS env
    var. That is, running `make` when the OS env var is set, may cause
    spurious build breakage.

    Fixes #737.

commit b45a74fab3745b695aa43d8e20d2c32b10843d5c
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri Mar 15 21:54:45 2013 +0400

    stream: run try_select only for pipes and ttys

    Its not necesary for TCP and other streams, since fd is always working
    with kqueue there.

commit 7b66ea18ff47ab47aaf1ca20bc7f544a76b0e8df
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 14 13:36:05 2013 +0100

    unix: improve uv_guess_handle() implementation

    Make it understand FIFOs, character devices and sockets.

commit 9f714a1d25d4e99dfcf4985656b070431431523b
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 14 12:49:00 2013 +0100

    include: bump UV_VERSION_MINOR

    Fixes #740.

commit 905d56c1405b044b3e54e75a9fd22979d9186f3e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Mar 12 01:02:28 2013 +0100

    unix: fix uv_tcp_simultaneous_accepts() logic

    Inverts the meaning of the 'enable' argument. Before, it actually set
    the UV_TCP_SINGLE_ACCEPT flag when enable=1. Now it clears it, which is
    what uv-win does and what you would expect it to do.

commit 47fd23ffc8a175e3363960573f8e45d845569f55
Merge: 1ef1344 5462dab
Author: Joe Cheng <joe@rstudio.com>
Date:   Mon Mar 11 10:20:57 2013 -0700

    Merge tag 'node-v0.10.0'

    Node v0.10.0

commit 2f84a57566027a66f0f876b31f4524bde41ca91a
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Mar 5 11:32:54 2013 -0800

    test: add tap output for windows

commit 5462dab8890c414154690d8a45b1384301b27436
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat Mar 9 20:19:28 2013 +0100

    win/tcp: don't enable iocp sync bypass when iocp emulation is used

    When iocp sync bypass is in use libuv doesn't expect the system to
    generate events when an i/o operation completes synchronously. However
    when iocp emulation is enabled an event will always be generated because
    SetFileCompletionNotificationModes() doesn't stop OVERLAPPED.hEvent from
    becoming signaled.

    This should fix joyent/node#4959.

commit f59dc221e6343a290c7c349bb1875029bedb0a9a
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat Mar 9 18:24:59 2013 +0100

    win: fix potential HANDLE corruption due to incorrect cast

    Closes #738.

commit b68ee4049688494026c0f2a703a2d09aeff18438
Author: isaacs <i@izs.me>
Date:   Thu Mar 7 15:59:21 2013 -0800

    win: Map ERROR_INVALID_FUNCTION to EISDIR

    This error is raised when calling read() or write() on a directory.

    A bit of googling turns up some cases where this error can be raised
    that are not properly mapped to EISDIR, but are also cases that libuv
    doesn't really care about, like the Password Manager API,
    GetFirmwareEnvironmentVariable, or CreateTapePartition.

    If libuv ever needs to handle these cases, then I suppose that the
    ERROR_INVALID_FUNCTION->EISDIR mapping could be done directly in the
    fs read() and write() functions, but doing so at this point seems
    premature, as it makes the error code mapping a bit more messy.

    Fixes joyent/node#4951

commit 8fbe43379de4b8958c45e47b54d296ff1bef79e4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 7 01:54:04 2013 +0100

    unix: please valgrind, free memory in threadpool.c

commit dac5a758f8161b5e7aa42fea12582025a9b4e150
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 7 00:28:15 2013 +0100

    unix: replace volatile cast with ACCESS_ONCE macro

commit e0df7b687339fc035ef0148e161d77f01dcc2d9a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 7 00:15:48 2013 +0100

    unix: fix strict aliasing warning in udp.c

commit b6a50c7295c8dc27c697a164f5bb3b594d025209
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Mar 7 00:17:19 2013 +0100

    unix: add uv_buf_t static asserts to core.c

    Verify that our uv_buf_t type is ABI-compatible with struct iovec.

commit ef9b0655328baf623a9e1951b2e261ba70a3ded3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Mar 6 23:59:48 2013 +0100

    unix: add STATIC_ASSERT macro

commit ee9899e28b3f5ac4e3b42de8173f9237db7e1f06
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Mar 6 23:43:25 2013 +0100

    unix: fix strict aliasing warnings, macro-ify functions

    Replace a few internal functions in uv-common.h with macros to avoid
    strict aliasing warnings with older versions of gcc.

    It's not smart enough to figure out that e.g. a uv_tcp_t is an instance
    of uv_handle_t with similar alignment requirements and therefore no
    aliasing happens. More recent versions of gcc don't suffer from this.

    I'm not normally in the habit of catering to compiler defects but the
    aliasing warnings drown out legitimate warnings, hence the change.

commit 1e97b4567e1717bf17316230eff6e1a7350b8034
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Mar 6 23:14:37 2013 +0100

    unix: honor UV_THREADPOOL_SIZE environment var

    Make the size of the thread pool configurable through an environment
    variable. For sanity reasons, the size is clamped to the range 1-128.

commit f89125e0e631f6b87b3a65970d88111825d7dc59
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue Mar 5 20:31:52 2013 +0100

    win/tty: fix typo in color attributes enumeration

commit 4abad2381e126ad7a9eb18342172e495bf6e681d
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue Mar 5 20:05:36 2013 +0100

    win/tty: don't touch insert mode or quick edit mode

    Hopefully this fixes joyent/node#4809.

commit 8a99762c0e8e7fe6fe65133a7a8faafb73641c67
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue Mar 5 20:03:40 2013 +0100

    win/tty: fix case where uv_read_start incorrectly reports failure

    In very rare circumstances a uv_read_start() call on a uv_tty_t handle
    in raw mode would return -1 but there was no actual failure. This patch
    fixes that.

commit 1ef1344e9c94672757fbf83b1e78e09bba6ec24f
Merge: ec9708f 2a8d2a5
Author: Joe Cheng <joe@rstudio.com>
Date:   Tue Mar 5 10:21:58 2013 -0800

    Merge tag 'node-v0.9.11' into HEAD

commit 0b26af376a8d788adf00ed4cb60aba4da2f046c1
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Mar 5 15:57:38 2013 +0100

    unix: handle POLLERR and POLLHUP in uv__stream_io

    Fixes a busy loop when the file descriptor emits POLLHUP but not POLLIN
    or POLLOUT, e.g. when polling the read end of a pipe and the write end
    is closed.

    Fixes joyent/node#4923.

commit ea0796f3bf242fdc173751a23df8c1c70a09dcdb
Author: Bert Belder <bertbelder@gmail.com>
Date:   Mon Mar 4 20:22:25 2013 +0100

    windows: link with advapi32 and shell32 libraries

    Older versions of GYP would set up the Visual Studio project to link
    with these libraries by default, but this was changed in r1584 (see
    https://codereview.chromium.org/12256017).

    Closes #728

commit 7e59f9bb5389268fb554d435333325920d7783ba
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Mar 2 01:44:31 2013 +0100

    linux: make uv_cpu_info() handle absent procfs

    Return an error when reading from /proc files fails because the procfs
    isn't mounted.

commit 2a8d2a5b73878e00823c59b29bf887b8b4b11743
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Mar 1 01:57:45 2013 +0100

    darwin: fix spurious uv_write2() segfault

    We abuse uv_write2() to send over UDP handles to child processes.
    Don't call uv__stream_fd() on those handles, it's a macro that on OS X
    evaluates to a function that operates on a uv_stream_t with a couple of
    OS X specific fields. On other Unices it does (handle)->io_watcher.fd,
    which works but only by accident.

    Fixes joyent/node#4870.

commit 0ad46bdb56959aee089aa261b15bed7af177de5f
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Thu Feb 28 14:29:20 2013 +0100

    build, windows: return an error code on failure

commit 49d2ae33ef4f871496e042ed83cf5a7c65b97857
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Feb 27 13:39:10 2013 -0800

    test: fix tap output even when ok but have output

commit 1821bba40898ec074b284dc457e46cc1e4f65e33
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 27 22:19:20 2013 +0100

    test: fix tap output check

    Only report as an error when status != 0.

    Stops the platform_output test from being reported as having failed
    on Jenkins.

commit cdf69dbed62855140e8c3c259b172af7078821a2
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 27 22:08:58 2013 +0100

    build: add distclean target to out-of-tree builds

commit dd2002520797921c5e2f8b060aa412beb41aa09e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 27 22:06:43 2013 +0100

    build: make clean target remove all build artifacts

commit 78dcaa5cac4a53d7854005576f07dc536575cee0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 27 21:46:46 2013 +0100

    darwin: fix read from uninitialized struct kevent

    In the OS X fallback code, don't read from the struct when the kevent()
    syscall times out.

commit 7c3b9e5a121db6c0e8f193750afd1b272994eeab
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 27 21:40:03 2013 +0100

    unix: make stream.c internal functions static

commit a924f79023b57d947c9aee2d3bafe8f0cc95520b
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Feb 24 17:14:16 2013 +0100

    test: remove 'is root?' check

    I debug tests regularly as root (because dtrace and dtruss require the
    additional privileges). The 'is root?' check gets in the way more often
    than it prevents me from doing something silly. Remove it.

commit 85124d7eb5d9455316c46eb36140cdb80154409a
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Wed Feb 27 13:38:14 2013 +0100

    build, windows: allow override of python executable

    Fixes #723.

commit a0c1d84c144da61a777e9d6554b9e832e3dd8d1d
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Feb 26 19:14:40 2013 +0100

    linux, darwin: don't touch environ in uv_setup_args

    Don't overwrite the environment. On OS X, the entries in the environ
    table are not necessarily adjacent. It's arguably also safer for setuid
    binaries.

    Fixes joyent/node#4847.

commit c5101ae9b504dc8c0ccf90a6bda6f3a1a2f9cd0b
Author: Andrius Bentkus <andrius.bentkus@gmail.com>
Date:   Fri Feb 15 04:27:32 2013 +0100

    unix, windows: add common uv_udp_* error checking

commit ae2b30a48f5cf0cda91c395a5af20cfa7769d5dc
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Tue Feb 26 11:17:49 2013 +0100

    windows: initialize stop_flag explicitly

    The default loop lives in the bss section so it's zeroed on startup
    but loops created with uv_loop_new() live on the heap and contain
    random garbage. Initialize the stop_flag explicitly to avoid spurious
    bugs.

commit ec9708feb100910093338ae0c70863e854b8393b
Merge: 71428e3 72bbf5d
Author: Joe Cheng <joe@rstudio.org>
Date:   Mon Feb 25 14:24:44 2013 -0800

    Merge remote-tracking branch 'upstream/master'

commit 72bbf5d702475e7f42ce551857b1e0ab2e8ddff5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon Feb 25 09:43:34 2013 -0800

    test: don't rewind_cursor when using tap_output

commit 4b957482ba1ba12e40933ef1815ee6a098450280
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Mon Feb 25 17:20:34 2013 +0100

    windows: fix uv_stop in ONCE and NOWAIT modes

    Same as the fix in 492efb9 but this time for uv-win.

commit 492efb95ffc5b33a179cfaeb8215dc52111fb4d6
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Feb 25 16:40:58 2013 +0100

    unix: make uv_stop work when embedded

    * Make uv_stop() work when libuv is embedded in another event loop.

    * Fix a small bug where loop->stop_flag was not reset when mode ==
      UV_RUN_ONCE or UV_RUN_NOWAIT. The next call to uv_run() would return
      immediately without doing any work.

commit bb3d1e24da288db876dcbfa4e983c9ceeb583890
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Wed Jan 16 09:36:20 2013 +0100

    unix, windows: add uv_stop, stop running event loop

commit 79880121cecb622226663d65e5e0145799a57f50
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Wed Jan 16 09:24:28 2013 +0100

    windows: align uv_run code with unix

commit ce1a266c05f8aa6e1e0072558eac287fe70cf962
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Mon Feb 25 11:27:40 2013 +0100

    build: fix misleading vcbuild.bat error message

commit 6ba6f4b4d651c1e3aff6946ef3c7a2f1b2c5d6d8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Feb 25 03:43:01 2013 +0100

    build: turn on strict aliasing in release builds

commit 39c8a90a91211d047fa3c267814e17d5c10cc83c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Feb 25 03:22:10 2013 +0100

    unix: set errno in sendfile emulation

    The sendfile emulation in src/unix/fs.c polls the file descriptor for
    write readiness. If POLLERR or POLLHUP is set, it bails out but doesn't
    set errno (hence it doesn't report a useful error code). Rectify that.

    Fixes #620.

commit b04fc33ef748293498023f3cf2dc987e8c1ffdd4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Feb 25 02:25:49 2013 +0100

    linux: use eventfds for async handles

    Use eventfds to drive async handles, fall back to regular pipes on older
    kernels (pre-2.6.22).

    Gives a nice boost on the async handle benchmarks. Before:

      12,516,113 async events in 5.0 seconds (2,503,222/s, 1,048,576 unique
      async1: 11.95 sec (83,701/sec)
      async2: 11.65 sec (85,862/sec)
      async4: 5.20 sec (192,154/sec)
      async8: 9.97 sec (100,315/sec)
      async_pummel_1: 1,000,000 callbacks in 2.56 seconds (389,919/sec)
      async_pummel_2: 1,000,000 callbacks in 2.65 seconds (377,205/sec)
      async_pummel_4: 1,000,000 callbacks in 2.18 seconds (457,704/sec)
      async_pummel_8: 1,000,000 callbacks in 4.19 seconds (238,632/sec)

    After:

      16,168,081 async events in 5.0 seconds (3,233,616/s, 1,048,576 unique
      async1: 11.08 sec (90,213/sec)
      async2: 10.17 sec (98,297/sec)
      async4: 4.81 sec (207,789/sec)
      async8: 8.98 sec (111,419/sec)
      async_pummel_1: 1,000,000 callbacks in 1.16 seconds (863,296/sec)
      async_pummel_2: 1,000,000 callbacks in 1.45 seconds (691,459/sec)
      async_pummel_4: 1,000,000 callbacks in 0.66 seconds (1,514,770/sec)
      async_pummel_8: 1,000,000 callbacks in 1.42 seconds (704,549/sec)

    That's a speedup from anywhere between 10% to 330%.

commit 92151658eb46956b70a8976e577258486bd9071f
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Feb 25 01:32:19 2013 +0100

    unix: abstract away async pipe infrastructure

    This commit lays the groundwork for the switch to eventfds on Linux.

commit e89aced8d6ca9e5fcb3d5e6159db0322beef4234
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Feb 24 03:50:31 2013 +0100

    darwin: implement uv_set_process_title, part 2

    Make changes to the process title visible to tools like `ps`.

    The argv clobber technique is reasonably portable across Unices;
    the common code has been moved into src/unix/proctitle.c and is used
    on Linux and OS X. Other platforms will probably follow in the future.

commit 14eb8b03919db9004503691c63c937fef9c405b1
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Feb 24 02:26:28 2013 +0100

    darwin: implement uv_set_process_title, part 1

    Apply undocumented Carbon magic to change the process title in a way
    that's visible in the Activity Monitor.

commit 0761fb51b2579cfec7051011a453b5203a9d8ef8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Feb 24 02:24:09 2013 +0100

    build: support 64 bits darwin builds

    Before this commit, gyp built 32 bits versions of libuv exclusively.

    Enable with:

      $ ./gyp_uv -Dtarget_arch=x64

commit bfe269b8a0ebe89b6b0695bdfb727dbf9ac273d5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Feb 21 11:46:59 2013 -0800

    test: add tap output

    Given UV_TAP_OUTPUT being set, test result output should use TAP formatting

commit 71428e37d88a070804b217122e89d2932fa5daa4
Merge: edee5cd c98083e
Author: Joe Cheng <joe@rstudio.org>
Date:   Fri Feb 22 14:01:55 2013 -0800

    Merge remote-tracking branch 'upstream/master' into HEAD

commit c98083ef26209a1669f26aa7bbf48b2fc9402b47
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Feb 22 17:02:04 2013 +0100

    unix: short-circuit on no-op io watcher changes

    Don't add the io watcher to the watcher queue if the requested change
    is effectively a no-op, that is, when the event mask doesn't change.

    The exception here is sunos because the event ports backend requires
    that watched file descriptors are re-added on every turn of the event
    loop.

    This commit is a micro-optimization, it does not change the event
    loop's observable behavior in any way.

commit da0b84d4e8408a6f92147d8127b01b3274215444
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Feb 22 14:39:39 2013 +0100

    unix: auto-unref spawn handle on process exit

    Consistent, for better or worse, with uv-win.

    Fixes #718.

commit edee5cd40471489d7420dfc7407f71355f520002
Author: Joe Cheng <joe@rstudio.org>
Date:   Thu Feb 21 14:52:50 2013 -0800

    Another fix for RTools toolchain

commit 3348cd74075bf593ab8484d9ad915699d4b9c9fc
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Feb 21 23:11:40 2013 +0100

    unix: handle EINPROGRESS for unix sockets

    Before this commit, it was assumed that connect() on UNIX sockets never
    returns EINPROGRESS. It turned out to be a bad assumption: Dave Pacheco
    reports sporadic hangups on SmartOS because of that.

    It's not clear to me _why_ the Illumos kernel returns that error but
    that's inconsequential: whatever the cause, libuv needs to handle it
    and now it does.

    Fixes joyent/node#4785.

commit 1d64c8284d373da9dc8652d71cd9a3f904915739
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Feb 21 10:29:16 2013 +0100

    unix: use uv__set_artificial_error in uv_write2

    * Use uv__set_artificial_error(), slightly more efficient than
      uv__set_sys_error().

    * Return UV_EINVAL instead of UV_EOPNOTSUPP.

    * Fix up style.

commit 9a8db3c0cb97520ffec57c42d60f1f329ecc9471
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Thu Feb 21 10:01:27 2013 +0100

    unix: reduce line count, return uv__set_sys_error

commit 3f47a2da5c5b7f13d227fc99b760cc6a949f152a
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Thu Feb 21 09:56:33 2013 +0100

    unix: fail early on bad send_handle in uv_write2

    Return UV_EBADF if send_handle doesn't have a valid fd.

commit 26fa6f8031d35513857525197c8ec85e596d3fa7
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 20 21:05:38 2013 +0100

    linux: fix abort() on epoll_ctl() race condition

    Don't check the return value of epoll_ctl(EPOLL_CTL_DEL). When the
    file descriptor is closed, we're potentially racing with another
    thread and that means the errno is not a reliable indicator of
    the actual error.

    The other event mechanisms (kqueue, event ports) are not affected
    because:

    * kqueue returns either EBADF or ENOENT. Both are handled by libuv.
    * event ports rearms all file descriptors on each call to port_getn().

    Fixes joyent/node#4558.

commit fd24a69c52b2b69dc89109d5acc624938832c0f5
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 20 19:50:35 2013 +0100

    build: fix shared-after-static build

    Executing `make libuv.so` after `make libuv.a` failed because the
    libuv.a target compiled the files in src/ without -fPIC.

    Make the libuv.so target depend on files with a different suffix to
    keep them separated.

commit 7048a80613bb63066b0af15322e6bafa3f418c01
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 20 17:11:50 2013 +0100

    doc: document _LARGEFILE_SOURCE + _FILE_OFFSET_BITS

commit 30f628834782c1639b3a794212e8f6a4fb5a027a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 20 17:01:00 2013 +0100

    unix, windows: make uv_timer_get_repeat() const correct

commit 0cb9fbfe184e76ce8de6fe80556b9d74116b6c22
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 20 16:58:36 2013 +0100

    unix, windows: change timer intervals to uint64_t

commit d6bfedb8629d18a84c1e67d7073de56dabd540b8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 20 16:42:15 2013 +0100

    unix, windows: make uv_now() return uint64_t

    Using int64_t doesn't make sense here because the return value is never
    negative.

commit 6bf1a56e9d60737ef26509d9e304c03e008972d4
Author: Andrius Bentkus <andrius.bentkus@gmail.com>
Date:   Fri Feb 15 10:12:44 2013 +0100

    Return the errorcode provided by uv_set_artificial_error.

    This reduces the line count.

commit 7480974efeec4fe6795cfe6b3bd9e30777b2925f
Author: Andrius Bentkus <andrius.bentkus@gmail.com>
Date:   Fri Feb 15 05:26:08 2013 +0100

    Adhere to the naming conventions in uv_timer_* functions.

    In the src/*/timer.c code the first argument is called handle, not timer.
    We should be consistent in the interface definition file.

commit b6f72e54c46f2c5404b5c0ee79f9d4751e716dbe
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Feb 12 16:18:33 2013 +0100

    linux: fix O_CLOEXEC/O_NONBLOCK defines

commit da71649991029bcfabc429b26685bf17bb3d48d1
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Feb 10 17:30:18 2013 +0100

    unix, windows: make uv_fs_t.statbuf public

    Make the statbuf field public. This means you no longer have to use
    req->ptr - though that still works and will continue to work for the
    foreseeable future.

    Fixes #704.

commit fadfeaf6ecd4afce6e2781c74e5c7a4289eb524b
Author: Shigeki Ohtsu <ohtsu@iij.ad.jp>
Date:   Thu Feb 7 13:59:17 2013 +0900

    unix,windows: fix timer order in case of same timeout

    Compare start_id of timer handles when they have the same timeout.
    start_id is allocated with loop->timer_counter in uv_timer_start.

commit c15d4a7c6250a44fdfa0c6efab3ebcad359abc7d
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri Feb 8 14:48:52 2013 +0400

    stream: use kevent() information before accept()

    Limit number of syscalls by using backlog length information provided by
    kevent().

commit da33bba7c04e0873b457a9a4290bed2adf620154
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Feb 6 23:24:49 2013 +0100

    darwin: make uv_cond_timedwait() clock skew safe

    Use pthread_c…
16d7694
@jcheng5 jcheng5 referenced this issue in rstudio/httpuv Jul 24, 2014
@jcheng5 jcheng5 Update libuv to v0.10.27
Squashed commit of the following:

commit 27bce72beb75e7ef3d2910c7e3a339e5a3299a43
Merge: d84acc6 6e24ce2
Author: Joe Cheng <joe@rstudio.org>
Date:   Thu Jul 24 09:50:12 2014 -0700

    Merge tag 'v0.10.27'

    2014.05.02, Version 0.10.27 (Stable)

    Changes since version 0.10.26:

    * windows: fix console signal handler refcount (Saúl Ibarra Corretgé)

    * win: always leave crit section in get_proc_title (Fedor Indutny)

commit 6e24ce23b1e7576059f85a608eca13b766458a01
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu May 1 09:23:46 2014 -0700

    2014.05.02, Version 0.10.27 (Stable)

    Changes since version 0.10.26:

    * windows: fix console signal handler refcount (Saúl Ibarra Corretgé)

    * win: always leave crit section in get_proc_title (Fedor Indutny)

commit 4a67d8cc0e00d0c7341ae62c2f73d59811c82c85
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon Apr 14 10:07:33 2014 -0700

    build: add vc-set-2012 label

commit ffb49220cf83d251fb7681a28992dc29fdadc9c7
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 14 13:42:14 2014 +0400

    win: always leave crit section in get_proc_title

    fix #1235

commit 23d130b2095f0e430683f2db40bf7f16ee8744cd
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 14 15:13:20 2014 +0400

    Revert "inet: allow scope in `uv_inet_pton` ip6 check"

    This reverts commit d30e3ab65acf7b77945658d3e6127ca6af6eec6, because it
    is a new feature!

commit d30e3ab65acf7b77945658d3e6127ca6af6eec6d
Author: Fedor Indutny <fedor@indutny.com>
Date:   Sun Apr 13 15:53:11 2014 +0400

    inet: allow scope in `uv_inet_pton` ip6 check

    Note that isn't actually parsing it, since the output value is a
    `struct in6_addr`.

    see https://github.com/joyent/node/issues/7395

commit b9d5396a4082b101051ece4f6e3c15a4d5bd7a98
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Sat Apr 12 10:09:40 2014 +0200

    windows: fix console signal handler refcount

    Backport of 0c726e7 from master

commit 6855205ba5c46023cdc2ea53c960bc903f9b0b7a
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 7 15:28:59 2014 +0400

    Now working on v0.10.27

    Signed-off-by: Fedor Indutny <fedor@indutny.com>

commit d864907611c25ec986c5e77d4d6d6dee88f26926
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 7 15:26:13 2014 +0400

    2014.04.07, Version 0.10.26 (Stable)

    Changes since version 0.10.25:

    * process: don't close stdio fds during spawn (Tonis Tiigi)

    * build, windows: do not fail on Windows SDK Prompt (Marc Schlaich)

    * build, windows: fix x64 configuration issue (Marc Schlaich)

    * win: fix buffer leak on error in pipe.c (Fedor Indutny)

    * kqueue: invalidate fd in uv_fs_event_t (Fedor Indutny)

    * linux: always deregister closing fds from epoll (Geoffry Song)

    * error: add ENXIO for O_NONBLOCK FIFO open() (Fedor Indutny)

    Signed-off-by: Fedor Indutny <fedor@indutny.com>

commit 295882ed3238d6bfda61f5a91e1b43eb210fc485
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Mar 18 14:32:14 2014 +0400

    error: add EMLINK mapping

    fix joyent/node#7307

commit fd77a5d6c6466f8c9d7ea6221b946599320702bb
Author: Tonis Tiigi <tonistiigi@gmail.com>
Date:   Sun Mar 23 12:48:06 2014 +0200

    process: don't close stdio fds during spawn

    This is needed when closed stdio fd is reused for uv_spawn pipe.
    Fixes #1211

commit cd6db8bbefb11a780977052f1a561920d6d60bbe
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Tue Feb 11 13:57:01 2014 +0100

    build, windows: do not fail on Windows SDK Prompt

    Backported from master 2f6d4b4

commit aa2fbb364a2fdd5c90cb9e4ca938787b249ae809
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Tue Feb 11 14:01:24 2014 +0100

    build, windows: fixed x64 configuration issue

    Backported from master 8010bf9

commit 4ac8c424ea36b069c76e91fde3eb2f42e0e292f9
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Thu Mar 13 00:48:55 2014 +0400

    win: fix buffer leak on error in pipe.c

commit 9b38c01b540b60408f8eb1d9c288656405e25f7e
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Mar 11 01:44:44 2014 +0400

    kqueue: invalidate fd in uv_fs_event_t

    Invalidate file descriptor when closing `uv_fs_event_t` handle. Note
    that `uv__io_stop` is just removing `fd` from `loop->watchers` and not
    actually invalidating all consequent events in a `kevent()` results.

    fix joyent/node#1101

commit 84f305915fd45c1e55d261db565b3ddfdbc9d4ce
Author: Geoffry Song <goffrie@gmail.com>
Date:   Wed Feb 5 18:36:24 2014 -0500

    linux: always deregister closing fds from epoll

    If the same file description is open in two different processes, then
    closing the file descriptor is not sufficient to deregister it from the
    epoll instance (as described in epoll(7)), resulting in spurious events
    that cause the event loop to spin repeatedly. So always explicitly
    deregister it.

    Fixes #1099.

    Conflicts:
    	test/test-spawn.c

commit 4f72f2145b902fcfefee8fa90419c9bf28d74bc2
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Thu Mar 6 20:26:11 2014 +0400

    error: add ENXIO for O_NONBLOCK FIFO open()

    When opening FIFO with `O_NONBLOCK` flag, `ENXIO` could be returned if
    the readable side hasn't yet opened this FIFO.

commit c0c9480e02ec36e9b792a12e2f8a162f2bbcab68
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Feb 26 14:08:19 2014 +0400

    process: remove debug perror() prints

    fix #1128

commit 6f98f4efd112b21414ed92a048cda9f6f5978eb7
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Tue Feb 25 10:48:26 2014 +0100

    unix, windows: map ERANGE errno

    This is a backport of 2f58bb6 from the master branch

commit 10f9120d78fa6351367e52e7fd5f3e8527d54f73
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Mon Feb 24 12:57:28 2014 +0100

    errno: map EFBIG, ENOPROTOOPT and ETXTBSY

    This is a backport of:
    https://github.com/joyent/libuv/commit/107be2bed38afa6279aa53b13b946eb60c204969
    https://github.com/joyent/libuv/commit/4a023fc0786780d254e1e4a34a983c36f59d99bf
    https://github.com/joyent/libuv/commit/aaaefe32cadcfb26d07d625d17d7a2b8cafb4f2d

commit 714bec14f601fdf0ff4394f7eeb596935f19ca2e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Feb 18 13:01:54 2014 -0800

    Now working on v0.10.26

commit d778dc588507588b12b9f9d2905078db542ed751
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Feb 18 13:01:51 2014 -0800

    2014.02.19, Version 0.10.25 (Stable)

    Changes since version 0.10.24:

    * stream: start thread after assignments (Oguz Bastemur)

    * unix: correct error when calling uv_shutdown twice (Saúl Ibarra
      Corretgé)

    * windows: freeze in uv_tcp_endgame (Alexis Campailla)

    * sunos: handle rearm errors (Fedor Indutny)

commit 703a9e601e976b74ce459e4db9e23fca107d3f4b
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Jan 20 19:12:47 2014 +0400

    sunos: handle rearm errors

    fix #1078

commit 4f913b669adc1765829ce57b8a022394e363a757
Author: Alexis Campailla <alexis@janeasystems.com>
Date:   Tue Feb 18 09:50:49 2014 -0800

    windows: freeze in uv_tcp_endgame

    The event_handle field of unused accept requests was not being
    initialized properly. As a result, uv_tcp_endgame would try to close
    an invalid handle and this could lead to unexpected behavior.

    This fixes node.js test test-cluster-disconnect.js on Windows.

commit 6e2021ca111a44449932792e0cb578e63705c2a2
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Sat Feb 15 16:49:01 2014 +0100

    unix: correct error when calling uv_shutdown twice

    This is a backport of a284b90 for v0.10 branch

commit a6ff04d2c48be408cdcd76e5d78f4dc0a8fb9312
Author: Oguz Bastemur <obastemur@gmail.com>
Date:   Fri Jan 31 12:02:37 2014 +0100

    stream: start thread after assignments

    Changed the order of the member assignments since the thread
    may start before the parameters are assigned. This especially
    happens when the osx scheduler is very busy.

commit 79ffe2fb9537a8b9f1db7a2f27a7cd5c3bfb3707
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Jan 29 09:41:41 2014 -0800

    Now working on v0.10.25

commit aecd296b6bce9b40f06a61c5c94e43d45ac7308a
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Jan 29 09:41:36 2014 -0800

    2014.01.30, Version 0.10.24 (Stable)

    Changes since version 0.10.23:

    * linux: move sscanf() out of the assert() (Trevor Norris)

    * linux: fix C99/C++ comment (Fedor Indutny)

commit 3e2446d18db6ba2c16fa71530565a904aaca1fd2
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Jan 29 17:01:35 2014 +0400

    linux: fix C99/C++ comment

commit 7c8ff3bc2578bbba09ef3f460b8d0f1c16bcd03e
Author: Trevor Norris <trev.norris@gmail.com>
Date:   Wed Jan 22 12:16:06 2014 -0800

    linux: move sscanf() out of the assert()

    If asserts are turned off then the sscanf() wouldn't have run, being
    placed directly in the assert() itself.

commit b8b6588dbe800df727c5f17b762c9cfe5dcd86be
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jan 22 20:30:26 2014 +0100

    Now working on v0.10.24

commit dbd218e699fec8be311d85e4788be9e28ae884f8
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jan 22 20:30:14 2014 +0100

    2014.01.23, Version 0.10.23 (Stable)

    Changes since version 0.10.22:

    * linux: relax assumption on /proc/stat parsing (Luca Bruno)

    * openbsd: fix obvious bug in uv_cpu_info (Fedor Indutny)

    * process: close stdio after dup2'ing it (Fedor Indutny)

commit e403a2c486f46c0f5eda8814ff13d4ed4521e5a6
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Jan 20 19:30:08 2014 +0400

    process: close stdio after dup2'ing it

    Thus allow passing the same file descriptor as the source of multiple
    stdios.

    Committed with the help and code parts from:

      * Sam Roberts <sam@strongloop.com>

    fix #1074

commit 8bc29b6f5fff71c69987c44e3cfbb3b79b882398
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Jan 21 15:05:39 2014 +0400

    openbsd: fix obvious bug in uv_cpu_info

    `int which[]` should not be static here, as the function itself is
    changing it

    fix joyent/node#6878

commit 993151bc409c273409dbbaaac192091c864f3823
Author: Luca Bruno <lucab@debian.org>
Date:   Mon Jan 20 13:56:26 2014 +0100

    linux: relax assumption on /proc/stat parsing

    CPU entries in /proc/stat are not guaranteed to be monotonically
    increasing, asserting on this assumption can break in cases such
    as the UltraSparc II machine shown in #1080.

    Signed-off-by: Luca Bruno <lucab@debian.org>

commit 97eda7fd6226be651216ec19ba6146807186bd36
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Jan 7 14:03:18 2014 -0800

    Now working on v0.10.23

commit f526c90eeff271d9323a9107b9a64a4671fd3103
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Jan 7 14:03:15 2014 -0800

    2014.01.08, Version 0.10.22 (Stable)

    Changes since version 0.10.21:

    * windows: avoid assertion failure when pipe server is closed (Bert
      Belder)

commit f6422af80ab54eddf5f1344bec7ddab9ab240924
Author: Alex Crichton <alex@alexcrichton.com>
Date:   Sat Dec 21 20:12:35 2013 -0800

    osx: Fix a possible segfault in uv__io_poll

    In our build infrastructure, I've seen a lot of segfaults recently that
    were all only happening on OSX. Upon inspecting the coredumps, it
    appearded that all segfaults happened at the same instruction, and upon
    translating the assembly back to the source, I found that an array could
    be indexed with a -1 index before the index was checked to be not -1.

    As concrete evidence, here is the situation that I found caused the
    segfault.  The instruction in question along with the relevant register
    values was:

        mov    (%r8,%r15,8),%r12

        r8  = 0x7fb0ba800000
        r15 = 0xffffffffffffffff

        r8 + r15 * 8 == 0x7fb0ba7ffff8

    It appears that the base of loop->watchers was page aligned, and by
    going back one word I guess that the page wasn't mapped, causing our
    segfaults.

commit 16c4b21e4dad4624a5a4c23f8e1cff6da0b1ba1c
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat Dec 21 11:32:22 2013 +0100

    test: make test-pipe-server-close pass on linux

    When a server and a client are both part of the same event loop, and
    the client connects to the server, the order in which the connect
    callback and the connection callback are called is unspecified.
    Apparently on linux the connection callback sometimes happens first,
    which is not a bug, and should not make this test fail.

commit c66340d59b8b35399831fb1c3a12c1efdbd91a53
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Dec 20 19:40:02 2013 -0800

    test: add pipe-server-close test

    Add a regression test for the pipe server close issue on Windows, which
    was reported in joyent/node#6749 and fixed in 7b16a3f.

commit 562d7a49ac206dab2a830aad612d995a8c6fbd97
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Dec 20 19:38:37 2013 -0800

    code style: strip trailing whitespace

commit 7b16a3f5083ef742384e7511914764c56778da8e
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Dec 20 17:33:31 2013 -0800

    windows: avoid assertion failure when pipe server is closed

    When a pipe server is closed, all pending accept requests and their
    associated HANDLEs are closed to force windows to cancel the
    ConnectNamedPipe IRP. The returned request has the `pipeHandle` field
    set to INVALID_HANDLE_VALUE, which trips an assert in
    uv_pipe_process_accept_req. This patch fixes that.

commit 9d60214b3aa837e3930e078983245f1e73cfbb39
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 18 15:37:33 2013 -0800

    Now working on v0.10.22

commit 375ebce068555f0ca8151b562edb5f1b263022db
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 18 15:37:25 2013 -0800

    2013.12.19, Version 0.10.21 (Stable)

    Changes since version 0.10.20:

    * unix: fix a possible memory leak in uv_fs_readdir (Alex Crichton)

commit 7c6bddbe2a697344f441574d61a74a8034d86109
Author: Alex Crichton <alex@alexcrichton.com>
Date:   Tue Dec 17 13:03:52 2013 -0800

    unix: fix a possible memory leak in uv_fs_readdir

    Some scandir implementations allocate the dirent struct even if the
    directory is empty, so if `scandir` returns 0 there may still be memory
    that needs to get deallocated. I have altered uv__fs_readdir to go to
    the "deallocation exit area" when 0 files are found in the directory
    and continue to return early on a return value of -1.

    I went to add a test for this functionality, but it appears that one
    already exists (reading an empty directory), so I imagine that the
    valgrind builds must only be happening on linux instead of OSX as well?
    I have confirmed manually that a program without this fix will
    infinitely leak memory, and with this fix the memory usage stays
    constant.

commit f3d311edc447cfe0a95c6ca7cbe8301588f180c5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 11 20:22:00 2013 -0800

    Now working on v0.10.21

commit 04141464dd0fba90ace9aa6f7003ce139b888a40
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 11 20:21:57 2013 -0800

    2013.12.13, Version 0.10.20 (Stable)

    Changes since version 0.10.19:

    * linux: fix up SO_REUSEPORT back-port (Ben Noordhuis)

    * fs-event: fix invalid memory access (huxingyi)

commit da323447308280c736ac44946fce752a5dca8243
Author: huxingyi <huxingyi@msn.com>
Date:   Thu Oct 24 16:10:44 2013 +0800

    fs-event: fix invalid memory access

    file_info->FileName is not null terminated.

commit 47d98b64c45db8335bf7e065351e385cae32323d
Author: Alex Gaynor <alex.gaynor@gmail.com>
Date:   Fri Nov 29 11:07:43 2013 -0600

    doc: Removed use of gendered pronouns

commit 7bb7371fc5ad7cdabcf997e5002d5fe8f5e47abd
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Nov 27 17:28:02 2013 +0100

    build: make `./gyp_uv.py -f eclipse` work

    The eclipse backend (like the ninja backend) does not support the
    --generator_output switch.

commit 74457d08ba6408d1ce5ff965b113f237c0cf6e51
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Nov 25 16:09:55 2013 +0100

    linux: fix up SO_REUSEPORT back-port

    Commit 3d2c820 back-ports a patch from the master branch that disables
    the use of SO_REUSEPORT on Linux for reasons mentioned in the commit
    log.

    Unfortunately, the back-port was incomplete; another setsockopt() call
    site in src/unix/udp.c was overlooked.  This commit rectifies that.

    Hat tip to Luca Bruno for helping troubleshoot the issue.

commit c3e05bafa5486120117994d11f38172d3752127d
Author: Marc Schlaich <marc.schlaich@gmail.com>
Date:   Mon Nov 25 16:19:42 2013 +0100

    gitignore: ignore *.pyc files

    The gyp build on Windows produces a *.pyc file as of commit 991409e.

commit a43537eeada0aa95a0df02da23e9169b981654ba
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Nov 25 12:58:17 2013 +0100

    test: back-port EMFILE test from master branch

    Back-port the test from commit 27795cf from the master branch ("unix:
    fix accept() EMFILE error handling").

commit 026241ca67717679a7f79d92c4fe1d77f223318c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Nov 13 12:20:07 2013 +0100

    unix: unbreak bsd build after bbccafb

    Unbreak the build on the BSDs after commit bbccafb.  Move the new
    uv__platform_invalidate_fd() function from src/unix/darwin.c to
    src/unix/kqueue.c.

commit 1578a5a371326bd1edabfa146c77d41d4e20928e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Nov 12 10:54:29 2013 -0800

    Now working on v0.10.20

commit 33959f7524090b8d2c6c41e2400ca77e31755059
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Nov 12 10:54:25 2013 -0800

    2013.11.13, Version 0.10.19 (Stable)

    Changes since version 0.10.18:

    * darwin: avoid calling GetCurrentProcess (Fedor Indutny)

    * unix: update events from pevents between polls (Fedor Indutny)

    * fsevents: support japaneese characters in path (Chris Bank)

    * linux: don't turn on SO_REUSEPORT socket option (Ben Noordhuis)

    * build: fix windows smp build with gyp (Geert Jansen)

    * linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT (Ben Noordhuis)

    * unix: fix reopened fd bug (Fedor Indutny)

    * core: fix fake watcher list and count preservation (Fedor Indutny)

commit f50ccd52388ffbcbbf0cd21ef7d6562300ef7ebb
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Nov 12 15:24:33 2013 +0400

    core: fix fake watcher list and count preservation

    Fake watcher list and count should be preserved only if
    `loop->watchers` was already allocated.

commit bbccafbe704090e294481d95f73862bc83f33026
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri Oct 25 12:56:37 2013 +0400

    unix: fix reopened fd bug

    When fd is closed and new one (with the same number) is opened inside
    kqueue/epoll/port loop's callback - stale events might invoke callbacks
    on wrong watchers.

    Check if watcher was changed after invocation and invalidate all events
    with the same fd.

    fix #826

commit 0c76cdb98ffa9a43f169e24b59a3df95f18803f3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Nov 8 05:10:44 2013 +0100

    linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT

    Work around an epoll quirk where it sometimes reports just the EPOLLERR
    or EPOLLHUP event.  In order to force the event loop to move forward,
    we merge in the read/write events that the watcher is interested in;
    uv__read() and uv__write() will then deal with the error or hangup in
    the usual fashion.

    Fixes #982.

    This is a back-port of commit 24bfef2 from the master branch.

commit 991409e461e3973f006bf951b3e7513578a41be2
Author: Geert Jansen <geertj@gmail.com>
Date:   Tue Nov 5 08:43:40 2013 +0100

    build: fix windows smp build with gyp

    Gyp will try a parallel build if it detect the system has >1 processor.
    This functionality depends on the Python "multiprocessing" package. The
    multiprocessing package on Windows requires that the top-level module is
    importable as a module, see:

      http://docs.python.org/2/library/multiprocessing.html#windows

    This fixes issue #984.

    This is a back-port of commit 2445467 from the master branch.

commit 3d2c820a4efe3954a77b539bb56e7398263069d3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Oct 30 09:36:47 2013 +0100

    linux: don't turn on SO_REUSEPORT socket option

    On the BSDs, SO_REUSEPORT is pretty much SO_REUSEADDR with some special
    casing for IP multicast.  When two processes (that don't do multicast)
    bind to the same address, only the last one receives traffic.  It allows
    one to "steal" the bound address from another process.  (Both processes
    have to enable SO_REUSEPORT though, so it only works in a cooperative
    setting.)

    On Linux however, it enables port sharing, not stealing - both processes
    receive a share of the traffic.  This is a desirable trait but pre-3.9
    kernels don't support the socket option and a libuv program therefore
    behaves differently with older kernels or on another platform.

    This is a back-port of commit 9d60f1e from the master branch.

    Fixes joyent/node#6454.

commit 3780e128230618bc3bddc9b3942ee149fadf4ca2
Author: Chris Bank <cbank@adobe.com>
Date:   Sat Nov 2 05:00:50 2013 +0400

    fsevents: support japaneese characters in path

commit f9960184fd86d43470dc70dcedac32899e532757
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Oct 30 21:43:23 2013 +0400

    test: add regression test for 29fdb3471

commit 29fdb3471ba993a4d129278129ec04e720890063
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Sat Oct 26 01:06:12 2013 +0400

    unix: update events from pevents between polls

    Watchers could be stopped between two `kevent()`/`epoll_wait()` calls
    (which may happen in the same loop in `uv__io_poll()`), in such cases
    `watcher->events` could be stale and won't be updated to
    `watcher->pevents`.

    Try to use and rely on `watcher->pevents` instead of blindly expecting
    `watcher->events` to be always correct.

commit 08e0e63f3adecafeacaf09f519587c381c6e2ef2
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Oct 28 20:51:50 2013 +0400

    darwin: avoid calling GetCurrentProcess

    Use some black-magic from Apple to change process name without getting
    a "Not responding" tag from Activity Manager.

    fix #966

commit 939560b6dbbb52252a3d510731431c7c9e03750c
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Fri Oct 18 13:17:52 2013 -0700

    Now working on v0.10.19

commit 9ec52963b585e822e87bdc5de28d6143aff0d2e5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Fri Oct 18 13:17:48 2013 -0700

    2013.10.19, Version 0.10.18 (Stable)

    Changes since version 0.10.17:

    * unix: fix uv_spawn() NULL pointer deref on ENOMEM (Ben Noordhuis)

    * unix: don't close inherited fds on uv_spawn() fail (Ben Noordhuis)

    * unix: revert recent FSEvent changes (Ben Noordhuis)

    * unix: fix non-synchronized access in signal.c (Ben Noordhuis)

commit 1800efc13806440867b92758d01f0ce97e239e36
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Oct 18 17:10:03 2013 +0200

    unix: fix non-synchronized access in signal.c

    Check the return value of uv__signal_lock(); don't mutate the signal
    watcher tree in the signal handler if we failed to acquire the lock.

commit 38df93cfed1921b4682179c04c298be1b69e6841
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Oct 5 18:15:02 2013 +0200

    unix: revert recent FSEvent changes

    This commit reverts the following commits:

        983fa68 darwin: fix 10.6 build error in fsevents.c
        684e212 fsevents: use shared FSEventStream
        ea4cb77 fsevents: FSEvents is most likely not thread-safe
        9bae606 darwin: create fsevents thread on demand

    Several people have reported stability issues on OS X 10.8 and bus
    errors on the 10.9 developer preview.

    See also joyent/node#6296 and joyent/node#6251.

commit 11d80117936bea8da25d28bcf5402615dd3ead05
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Oct 2 11:17:18 2013 +0200

    unix: don't close inherited fds on uv_spawn() fail

    The cleanup-after-error code path in uv_spawn() was closing file
    descriptors indiscriminately.  Only close file descriptors that we
    created ourselves, not the ones that are passed in by the user.

    Fixes joyent/node#6297.

commit fc3a21f943d5c91cd27fd7df9a973546101fef22
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Oct 2 10:53:53 2013 +0200

    unix: fix uv_spawn() NULL pointer deref on ENOMEM

    In the cleanup-after-error section of uv_spawn(), check that the pointer
    is non-NULL - we might end up in said section due to a malloc() failure.

commit 8c9cbee1b1fb19786405bdd92af5edfdab4cdbbe
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Sep 28 20:50:45 2013 +0200

    Revert "unix: set O_NONBLOCK in uv_pipe_open()"

    It turns out that node.js relies on the blocking behavior of pipes in
    some cases, notably when forking worker processes.  Reopens #941.

    This reverts commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba.

commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Sep 28 10:29:53 2013 +0200

    unix: set O_NONBLOCK in uv_pipe_open()

    Don't rely on the caller to set the O_NONBLOCK flag on the file
    descriptor.

    Prevents sporadic stalls when the file descriptor is in blocking mode
    and exactly as many bytes are read as there are available; in that case,
    libuv will try to read again and block.  Node.js was guilty of this.

    Fixes #941.

commit e9df7cbcbbcf8972aaf4ae64174a37c46dd62eb2
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Sep 24 13:40:44 2013 -0700

    Now working on v0.10.18

commit 9670e0a93540c2f0d86c84a375f2303383c11e7e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Sep 24 13:40:40 2013 -0700

    2013.09.25, Version 0.10.17 (Stable)

    Changes since version 0.10.16:

    * build: remove GCC_WARN_ABOUT_MISSING_NEWLINE (Ben Noordhuis)

    * darwin: fix 10.6 build error in fsevents.c (Ben Noordhuis)

commit 983fa68e9f8bdf77a94fc46526a798a350ec39ec
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Aug 28 11:55:27 2013 +0200

    darwin: fix 10.6 build error in fsevents.c

    Work around an 'initializer element is not constant' build error in
    src/unix/fsevents.c by turning the const int flags into #defines.

    Only an issue on OS X 10.6 due to the old compiler it uses.

    Fixes #908.

    This is a back-port of commit 82f2472 from the master branch.

commit 712835a6733b578d6e8c1bccdfa7febc6454d3b8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Sep 5 21:32:41 2013 +0200

    build: remove GCC_WARN_ABOUT_MISSING_NEWLINE

    Not compatible with non-Apple gcc builds.  Fixes the following build
    error:

        gcc-4.8: error: unrecognized command line option '-Wnewline-eof'

commit 7e5c63c88da5b88f39ea1ec3d6b049438da91bde
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 16:45:51 2013 +0200

    Now working on v0.10.17

commit 2bce230d81f4853a23662cbeb26fe98010b1084b
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 16:45:45 2013 +0200

    2013.09.06, Version 0.10.16 (Stable)

    Changes since version 0.10.15:

    * windows: make uv_shutdown() for write-only pipes work (Bert Belder)

    * windows: make uv_fs_open() report EINVAL when invalid arguments are
      passed (Bert Belder)

    * windows: make uv_fs_open() report _open_osfhandle() failure correctly
      (Bert Belder)

    * windows: make uv_fs_chmod() report errors correctly (Bert Belder)

    * windows: wrap multi-statement macros in do..while block (Bert Belder)

commit faf2c5932c89a714fcd6b9668a9b78a986d20701
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 08:50:04 2013 +0200

    windows/fs: handle _open_osfhandle() failure correctly

    Until now we assumed that _open_osfhandle() would set _doserrno on
    failure. This assumption was very wrong in one obvious case, namely when
    the CRT file descriptor table would fill up. In that case errno is set
    to EMFILE, but GetLastError() returns zero - which makes sense because
    it's not a win32 error but rather a CRT problem.

commit 812717d0dda831594f91126272b7f5b3e323e184
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 08:46:16 2013 +0200

    windows/fs: make uv_fs_open() report EINVAL correctly

    Before, when the user passed an invalid paramter to uv_fs_open, libuv
    would detect this and call SET_REQ_RESULT to set the result value to -1.
    SET_REQ_RESULT then stored whatever error code was returned by
    GetLastError(), which would have no relationship to the actual problem,
    and might as well be zero.

commit 39bef32906573a0dd645cd12c510693dbabf76cf
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 08:38:07 2013 +0200

    windows/fs: wrap multi-statement macros in do..while block

commit 61b20e8d469eb82292ef4ca885d824f429fe4b2a
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Aug 29 15:04:27 2013 +0200

    windows: make uv_shutdown() for write-only pipes work

    A couple of issues prevented uv_shutdown() from working correctly with
    write-only pipes.

      * The pipe handle wasn't opened with the right permissions, so an
        attempt to probe the state of the write buffer would fail with
        ERROR_ACCESS_DENIED.

      * The pipe flags for child process stdio pipes were always set to
        UV_HANDLE_READABLE and UV_HANDLE_WRITABLE, even in cases where it
        was actually half-duplex.

      * There was no code path that lead to closing the pipe handle if the
        pipe was write-only.

commit 851a6624161219c0a18be8b5c9fc4e55d24f53c4
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat Aug 24 15:40:53 2013 +0200

    windows: make uv_fs_chmod() report errors correctly

    Before this patch libuv would attempt to use GetLastError() to retrieve
    the cause of NtQueryInformationFile failure, but that's not how it
    should be done.

commit c8b6895eaffa26c66d2af2b573687ca7d061f26a
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Aug 23 18:57:14 2013 +0200

    Now working on v0.10.16

commit 221078a8fdd9b853c6b557b3d9a5dd744b4fdd6b
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Aug 23 18:57:10 2013 +0200

    2013.08.24, Version 0.10.15 (Stable)

    Changes since version 0.10.14:

    * fsevents: create FSEvents thread on demand (Ben Noordhuis)

    * fsevents: use a single thread for interacting with FSEvents, because
      it's not thread-safe. (Fedor Indutny)

    * fsevents: share FSEventStream between multiple FS watchers, which
      removes a limit on the maximum number of file watchers that can be
      created on OS X. (Fedor Indutny)

commit 684e2124e7cbe8f94daeba730e83cbf88963430f
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Aug 21 01:43:09 2013 +0400

    fsevents: use shared FSEventStream

    It seems that number of simultaneously opened FSEventStreams is
    limited on OSX (i.e. you can have only fixed number of them on
    one running system), getting past through this limit will cause
    `FSEventStreamCreate` to return false and write following message
    to stderr:

        (CarbonCore.framework) FSEventStreamStart: register_with_server:
        ERROR: f2d_register_rpc() => (null) (-21)

    To prevent this, we must use only one shared FSEventStream with a
    paths for all uv_fsevent_t handles, and then filter out events for
    each handle using this paths again.

    See https://github.com/joyent/node/issues/5463

    Conflicts:
    	include/uv-private/uv-darwin.h
    	src/unix/fsevents.c

commit ea4cb77814eeaa7629b29d53ad6a2b8bc4b19046
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Aug 14 17:14:35 2013 +0400

    fsevents: FSEvents is most likely not thread-safe

    Perform all operation with FSEventStream in the same thread, where it'll
    be used.

    Conflicts:
    	src/unix/fsevents.c

commit 9bae606d413327187828155b61babcd52b2d2517
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Aug 13 02:02:12 2013 +0200

    darwin: create fsevents thread on demand

    * Move CF run loop code to fsevents.c.

    * Create the fsevents thread on demand rather than at startup.

    * Remove use of ACCESS_ONCE. All accesses to loop->cf_loop are
      protected by full memory barriers so no reordering can take place.

    Fixes #872.

    Conflicts:
    	src/unix/darwin.c

commit 24a42a406ae00c2e8060b9f9397365684669db6b
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Aug 21 14:41:26 2013 -0700

    Now working on v0.10.15

commit 15d64132151c18b26346afa892444b95e2addad0
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Aug 21 14:41:23 2013 -0700

    2013.08.22, Version 0.10.14 (Stable)

    Changes since version 0.10.13:

    * unix: retry waitpid() on EINTR (Ben Noordhuis)

commit b2ac4d3bf41bafc1c327b9fa929eee37f05492e8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Aug 18 17:25:05 2013 +0200

    unix: retry waitpid() on EINTR

    Before this commit, libuv would abort() if waitpid() failed with EINTR.

    It's unlikely that anyone actually hit this error condition: the major
    UNIX platforms - with the possible exception of Solaris - don't return
    EINTR when the WNOHANG flag is specified, as libuv does.

    However, POSIX allows for an implementation to do whatever here: unless
    explicitly forbidden, it's allowed and POSIX doesn't restrict
    implementers in this particular area.

    Let's opt for robustness and handle EINTR.

commit d84acc65a7e48f41e2bc2fea38ed473e4a051d18
Merge: 47fd23f 381312e
Author: Joe Cheng <joe@rstudio.org>
Date:   Mon Aug 12 09:46:05 2013 -0700

    Merge tag 'v0.10.13'

    2013.07.26, Version 0.10.13 (Stable)

    Changes since version 0.10.12:

    * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

commit 2744e1e009fce04e883f7641009b4bbb4c78a8f0
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 25 10:34:41 2013 -0700

    Now working on v0.10.14

commit 381312e1fe6fecbabc943ccd56f0e7d114b3d064
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 25 10:31:28 2013 -0700

    2013.07.26, Version 0.10.13 (Stable)

    Changes since version 0.10.12:

    * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

commit d779eb53d506d40fbe7903da7b914a5bbd588954
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Jul 23 13:14:44 2013 +0200

    unix, windows: fix uv_fs_chown() function prototype

    Before this commit, uv_fs_chown() and uv_fs_fchown() took the uid and
    gid as signed integers which is wrong because uid_t and gid_t are
    unsigned on most all platforms and IDs that don't fit in a signed
    integer do exist.

    This is not an ABI change because the size of the uid and gid arguments
    do not change, only their sign.

    On Windows, uv_uid_t and uv_gid_t are typedef'd as unsigned char for
    reasons that are unclear. It doesn't matter: they get cast to ints when
    used as function arguments. The arguments themselves are unused.

    Partial fix for joyent/node#5890.

commit 3b4e0a216fb4093fa9f6e5d3c9039b5f1d30820b
Author: isaacs <i@izs.me>
Date:   Tue Jul 9 13:18:53 2013 -0700

    Now working on v0.10.13

commit 58a46221bba726746887a661a9f36fe9ff204209
Author: isaacs <i@izs.me>
Date:   Tue Jul 9 13:18:50 2013 -0700

    2013.07.10, Version 0.10.12 (Stable)

    Changes since version 0.10.11:

    * linux: add support for MIPS (Andrei Sedoi)

    * windows: uv_spawn shouldn't reject reparse points (Bert Belder)

    * windows: use WSAGetLastError(), not errno (Ben Noordhuis)

    * build: darwin: disable -fstrict-aliasing warnings (Ben Noordhuis)

    * build: `all` now builds static and dynamic lib (Ben Noordhuis)

    * unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) (Ben
      Noordhuis)

commit 37d0209c8911c80115bb0c58b248c7e10bb541a9
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Jul 5 12:04:43 2013 +0200

    unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK)

    Ancient versions of glibc (<= 2.3.1) don't have error-checking mutexes.

commit 88a2c7ff209935d736f02e79b3369f2e7b646bb8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 17:13:26 2013 +0200

    build: `all` now builds static and dynamic lib

    The `make all` target now builds both libuv.a and libuv.{so,dylib}
    rather than just libuv.a.

commit 5841852703c02e46d7220f1eb8d89bb8414d7cf3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:02:39 2013 +0200

    test: add 'start timer from check handle' test

    Check that a timer that is started from a check handle gets picked up
    correctly, i.e. that it influences the timeout used in the next tick
    of the event loop.

commit 488b43ecc5a79143d0697e5e49d834c86c7c9894
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:26:45 2013 +0200

    test: fix signed/unsigned compiler warning

commit a0bc4cca74be7de2a540439920c8f15d0a671b74
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:06:26 2013 +0200

    build: darwin: disable -fstrict-aliasing warnings

    gcc 4.2.1 as shipped with Xcode complains incessantly about aliasing
    warnings, which, while technically true, disregards the fact that the
    aliased types have the same layout in memory. Squelch the warnings.

commit c8c775bd9739e0c9562b925ec482a378b50f97c2
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 01:03:36 2013 +0200

    windows: use WSAGetLastError(), not errno

    setsockopt() doesn't touch errno on failure. Use WSAGetLastError()
    instead.

    This is a back-port of commit 30a8b44 from the master branch.

commit 495d1a09fb863354e5de1c6ab4547be3672ace00
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jun 19 00:14:58 2013 +0200

    windows: uv_spawn shouldn't reject reparse points

    This fixes an issue where uv_spawn would not try to run a reparse point,
    and continue to scan the PATH instead. Effectively, it was impossible to
    spawn a symlinked binary. This commit fixes that.

    Also see #748

commit 6607e702539f0affa2d1b2926d4e69a1e032c242
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Jun 18 23:50:31 2013 +0200

    test: open stdout fd in write-only mode

    Fixes #771.

commit 5096f1e0961896998c4185db866c53a8a8636fab
Author: Andrei Sedoi <bsnote@gmail.com>
Date:   Thu Jun 13 23:23:42 2013 +0300

    linux: add support for MIPS

commit 72e440d7e193123c0359fa12a7fabab15d7d9f51
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 12 21:52:05 2013 +0200

    Now working on v0.10.12

commit c3b75406a66a10222a589cb173e8f469e9665c7e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 12 21:52:01 2013 +0200

    2013.06.13, Version 0.10.11 (Stable)

    Changes since version 0.10.10:

    * unix: unconditionally stop handle on close (Ben Noordhuis)

    * freebsd: don't enable dtrace if it's not available (Brian White)

    * build: make HAVE_DTRACE=0 should disable dtrace (Timothy J. Fontaine)

    * unix: remove overzealous assert (Ben Noordhuis)

    * unix: clear UV_STREAM_SHUTTING after shutdown() (Ben Noordhuis)

    * unix: fix busy loop, write if POLLERR or POLLHUP (Ben Noordhuis)

commit 12210fe578623995d13cc5126427c1c67de4b6e0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Jun 8 03:20:29 2013 +0200

    unix: fix busy loop, write if POLLERR or POLLHUP

    This fixes a busy loop by working around a quirk with Linux kernels
    <= 2.6.32 where an EPIPE or ECONNRESET error on a file descriptor that
    is polled for EPOLLOUT but not EPOLLIN gets reported by epoll_wait() as
    just EPOLLERR|EPOLLHUP, like this:

      epoll_wait(5, {{EPOLLERR|EPOLLHUP, {u32=12, u64=12}}}, 1024, 433) = 1

    Before this commit, libuv called uv__read() which attempts to read from
    the file descriptor.  With newer kernels and on other operating systems
    that fails like this:

      read(12, "", 65536)         = -1 EPIPE (Broken pipe)

    Which tells libuv there is a connection error and it should notify the
    user of that.  On the affected Linux kernels however, the read succeeds
    with an EOF:

      read(12, "", 65536)         = 0

    Which is subsequently passed on to the user. In most cases, the user
    will close the handle and everything is fine.

    Node.js however sometimes keeps the handle open in an attempt to flush
    pending write requests.  While libuv doesn't officially support this,
    unofficially it works...

    ...except on those older kernels.  Because the kernel keeps waking up
    the event loop without setting POLLOUT and because the read calls EOF
    but don't error, libuv's I/O state machine doesn't progress.

    That's why this commit changes uv__stream_io() to also write pending
    data.  While the read() system call doesn't error, the write() system
    call will.

    Fixes joyent/node#5504.

commit 536c5f8661af4b57f8cc8be43bf482ae27a9fcd8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Jun 8 03:14:32 2013 +0200

    unix: clear UV_STREAM_SHUTTING after shutdown()

    Fix a state machine buglet where the UV_STREAM_SHUTTING flag didn't get
    cleared.

commit 3ab354367b2ff16a5ade1b585fdf7e10599084d3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Jun 7 11:28:31 2013 +0200

    unix: remove overzealous assert

    Several node.js users are hitting this assert under what appear to be
    mostly benign conditions. In other words, it's unclear whether it's
    catching real bugs or just has wrong expectations.

    An aborting process is rather disruptive so I'm removing the assert
    from the stable branch and relanding it in the master branch.

commit f84becc64ea3f4653a2ee95319dab0aeee7c4044
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jun 6 10:48:24 2013 -0700

    build: make HAVE_DTRACE=0 should disable dtrace

commit c8ffee3460a1b507bbc7f5f83e4e09e4a769db76
Author: Brian White <mscdex@mscdex.net>
Date:   Fri May 31 18:37:45 2013 -0400

    freebsd: don't enable dtrace if it's not available

commit 8e4b248ca6cf66367476624899442974d17092f0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 5 15:01:34 2013 +0200

    unix: unconditionally stop handle on close

    Make sure the handle is fully stopped by the time uv__stream_close()
    calls uv_read_stop(). Fixes the following assertion:

        Assertion failed: (!uv__io_active(&stream->io_watcher, UV__POLLOUT)
        || !ngx_queue_empty(&stream->write_completed_queue)
        || !ngx_queue_empty(&stream->write_queue)
        || stream->shutdown_req != NULL
        || stream->connect_req != NULL), function uv_read_stop,
        file ../deps/uv/src/unix/stream.c, line 1329.

    Fixes joyent/node#5622.

commit e9ae62d13a38b89fee60ed502307530bc2b8f520
Author: isaacs <i@izs.me>
Date:   Tue Jun 4 12:00:31 2013 -0700

    Now working on v0.10.11

commit 0d95a88bd35fce93863c57a460be613aea34d2c5
Author: isaacs <i@izs.me>
Date:   Tue Jun 4 12:00:29 2013 -0700

    2013.06.05, Version 0.10.10 (Stable)

    Changes since version 0.10.9:

    * include: document uv_update_time() and uv_now() (Ben Noordhuis)

    * linux: fix cpu model parsing on newer arm kernels (Ben Noordhuis)

    * linux: fix memory leak in uv_cpu_info() error path (Ben Noordhuis)

    * linux: don't ignore OOM errors in uv_cpu_info() (Ben Noordhuis)

    * unix, windows: move uv_now() to uv-common.c (Ben Noordhuis)

    * darwin: make uv_fs_sendfile() respect length param (Wynn Wilkes)

commit b9eb402fb047b9c10c9395ea555d22bc869a5901
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 30 22:54:44 2013 +0200

    include: remove lame comment from uv.h

commit b4c658c3c0e650590cc0496833fead4f29deea75
Author: Wynn Wilkes <wynnw@movenetworks.com>
Date:   Wed May 29 12:13:34 2013 -0600

    darwin: make uv_fs_sendfile() respect length param

    The darwin sendfile implementation uses the &len parameter as input
    and output. The code was sending 0 (not using the value of req->len)
    so the behavior wasn't what the caller was expecting.

    This makes sure to initialize len with req->len to ensure that the
    caller can send portions of a file (not always everything to the
    end of the file).

commit 081f7018ecc1c66a76f76c4b5cacb327820674b9
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed May 29 18:32:25 2013 +0300

    test: use c-style comments

    Fixes a compilation problem on OS X caused by the use of c++-style
    comments in test-osx-select.c.

commit e0bdb3dbc916d8311538de2b783c53e9739bf652
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 16:13:34 2013 +0200

    unix, windows: move uv_now() to uv-common.c

commit b93cf8b594b5eaf4617174e674961fd3db3fb0c6
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 01:37:36 2013 +0200

    linux: don't ignore OOM errors in uv_cpu_info()

commit 31282a97e70b24df7ebe4692967fee2a48aa2096
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 01:25:37 2013 +0200

    linux: fix memory leak in uv_cpu_info() error path

    Any memory allocated to hold CPU model strings wasn't freed on error.

commit 92c72f58bf59ee51a1680dd52b0e91a0ccae485d
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 00:24:02 2013 +0200

    linux: fix cpu model parsing on newer arm kernels

    The format of /proc/cpuinfo on ARM kernels >= 3.8 has changed. Scan for
    the string "model name" (like x86) first, "Processor" second.

    Fixes #812.

commit dfff2e9e2336ac7b89234c3f7744a73fc6560bb1
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue May 28 23:20:35 2013 +0200

    include: document uv_update_time() and uv_now()

commit 21c12b824a07be22a24547904b50ff022db11dd7
Author: isaacs <i@izs.me>
Date:   Tue May 28 12:08:49 2013 -0700

    Now working on v0.10.10

commit a195f9ace23d92345baf57582678bfc3017e6632
Author: isaacs <i@izs.me>
Date:   Tue May 28 12:08:46 2013 -0700

    2013.05.29, Version 0.10.9 (Stable)

    Changes since version 0.10.8:

    * unix: fix stream refcounting buglet (Ben Noordhuis)

    * unix: remove erroneous asserts (Ben Noordhuis)

    * unix: add uv__is_closing() macro (Ben Noordhuis)

    * unix: stop stream POLLOUT watcher on write error (Ben Noordhuis)

commit b329d51ef4ce32f34c21a016a7c311ddeb077878
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 26 23:44:55 2013 +0200

    unix: stop stream POLLOUT watcher on write error

    The node.js test suite sometimes hits the assert that was added in
    commit 4146805 that checks if there are connect, write or shutdown
    requests pending when the user calls uv_read_stop() while the stream
    is primed for writing.

    The libuv user (i.e. node.js) is supposed to close the stream on error.
    Because uv__stream_close() calls uv_read_stop(), it's possible that the
    POLLOUT watcher is still active.

commit 8e16f8e0564a7b853c2cb0f92572e7959c6cadae
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 26 23:02:17 2013 +0200

    unix: add uv__is_closing() macro

commit b38c9c1004993ca4f642629f5af1b7b09bbc6887
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat May 25 02:36:45 2013 +0200

    unix: remove erroneous asserts

    As of commit c53fe81, it's legal for write_queue_size > 0 when the
    write_queue itself is empty. Sounds illogical but it means there are
    error-state write requests in the write_completed_queue that will touch
    up the write_queue_size on the next tick of the event loop.

    Remove a few stray asserts that still checked for the old situation.

commit 636a13b8c46c52413e1da1795a952bfc738f3c55
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:16:00 2013 +0200

    unix: fix stream refcounting buglet

    Fix a buglet where uv_read_stop() would mark the handle as stopped even
    when there are in-progress write requests.

    This bug is unlikely to have affected anyone, the only case where it
    has a user-visible effect is when:

      a) the handle has been stopped for reading but not writing, and
      b) it's the last active handle in the event loop's pollset

    If both conditions are met, it's possible for the event loop to
    terminate prematurely.

    This reapplies commit 80f2f82 which was temporarily reverted in fe7b154
    because it was making a lot of node.js tests fail on OS X with the
    following assertion:

        Assertion failed: (!uv__is_active(handle)), function
        uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165.

    Expecting that the handle is inactive when the state is UV_CLOSING
    turns out to be a bad assumption: it's possible that the handle is
    executing (for example) a shutdown request when uv__finish_close()
    is called. That's okay, uv__stream_destroy() takes care of that.

    The issue wasn't specific to OS X, it was just more visible on that
    platform. (Slow) debug builds on Linux exhibited the same behavior.

commit 7d5024e7e6564c36b99af39db075b0c9d75797f9
Author: isaacs <i@izs.me>
Date:   Fri May 24 14:37:56 2013 -0700

    Now working on v0.10.9

commit 0f39be12926fe2d8766a9f025797a473003e6504
Author: isaacs <i@izs.me>
Date:   Fri May 24 14:37:53 2013 -0700

    2013.05.25, Version 0.10.8 (Stable)

    Changes since version 0.10.7:

    * windows: make uv_spawn not fail under job control (Bert Belder)

    * darwin: assume CFRunLoopStop() isn't thread-safe (Fedor Indutny)

    * win: fix UV_EALREADY incorrectly set (Bert Belder)

    * darwin: make two uv__cf_*() functions static (Ben Noordhuis)

    * darwin: task_info() cannot fail (Ben Noordhuis)

    * unix: add mapping for ENETDOWN (Ben Noordhuis)

    * unix: implicitly signal write errors to libuv user (Ben Noordhuis)

    * unix: fix assert on signal pipe overflow (Bert Belder)

    * unix: turn off POLLOUT after stream connect (Ben Noordhuis)

commit fe7b154476145ebc69ab70d3ca1d195116a00065
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri May 24 21:23:09 2013 +0200

    Revert "unix: fix stream refcounting buglet"

    This change is making 45 out of 527 node.js tests fail on OS X with the
    following assertion:

        Assertion failed: (!uv__is_active(handle)), function
        uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165.

    It's likely a manifestation of a bug elsewhere but, because there's a
    new node.js release going out tonight, I'm reverting it for now.

    This reverts commit 80f2f826bf90b84e659321c0b7fd8af419acb85e.

    Conflicts:
    	src/unix/stream.c

commit 41468050745bc135247f587eae1c38e958fd8377
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:37:36 2013 +0200

    unix: turn off POLLOUT after stream connect

    Clear the POLLOUT flag after we're done connecting. Not doing so isn't
    really harmful but it may cause the event loop to wake up more often
    than it has to.

commit 80f2f826bf90b84e659321c0b7fd8af419acb85e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:16:00 2013 +0200

    unix: fix stream refcounting buglet

    Fix a buglet where uv_read_stop() would mark the handle as stopped even
    when there are in-progress write requests.

    This bug is unlikely to have affected anyone, the only case where it
    has a user-visible effect is when:

      a) the handle has been stopped for reading but not writing, and
      b) it's the last active handle in the event loop's pollset

    If both conditions are met, it's possible for the event loop to
    terminate prematurely.

commit c5d570ddba7b3e95fdade96758df0eb2d24cf42f
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 23 14:44:45 2013 +0200

    unix: fix assert on signal pipe overflow

    An incorrect assert() statement was causing libuv to crash when writing
    to an internal signal pipe would result in EAGAIN/EWOULDBLOCK.

    This commit doesn't solve the underlying issue that the signal pipe can
    overflow.

    This should fix joyent/node#5538

commit c53fe815442559fe58f362279bdc63f5483d6fdb
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 22 16:41:52 2013 +0200

    unix: implicitly signal write errors to libuv user

    Fix an infinite loop in the example below when the stream encounters
    an EPIPE/ECONNRESET/etc. error:

        // keep writing until we start buffering
        while (stream->write_queue_size == 0) {
          uv_write_t* req = make_write_req();
          uv_buf_t buf = uv_buf_init("PING", 4);
          uv_write(req, stream, &buf, 1, write_cb);
        }

    uv_write() does not return an error code on write errors, the error is
    only reported to the callback.

    Before this commit, uv_write() left stream->write_queue_size untouched
    on error, meaning the caller had no way to find out about that error
    until the next tick of the event loop - which in the example above
    leads to an infinite loop because that next tick is indefinitely
    postponed.

    This commit works around that at the cost of some added internal
    complexity.

    Fixes joyent/node#5516.

commit 739a5b25b5704d526a46a953da8b9b8db31770d4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 20 20:04:45 2013 +0200

    unix: add mapping for ENETDOWN

commit a1cb52a3ebe13f8e26a48e194e595e95c677de30
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 20 14:35:10 2013 +0200

    darwin: task_info() cannot fail

    And if it does: assert, don't return errno. It's a mach function, it
    doesn't set errno.

commit e515d71592afe66ddecd6bf2b1409848811cf7ff
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri May 17 14:42:14 2013 +0200

    darwin: make two uv__cf_*() functions static

commit db7dc6899d9badcfb99016ba87da2a66eae86dad
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat May 18 20:45:36 2013 +0200

    win: fix UV_EALREADY incorrectly set

    UV_EALREADY itself is already a libuv error, it should be set with
    uv__set_artifical_error and not with uv__set_sys_error.

    Closes #802

commit d5fa633ef22bd40c81af85dd2ee3882cce3c91c4
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri May 17 20:31:39 2013 +0400

    darwin: assume CFRunLoopStop() isn't thread-safe

    Use signaling mechanism for loop termination, because CFRunLoopStop() is
    most likely not a thread-safe function and invoking it from other thread
    may sometimes result in a "dead-lock".

    fix #799

commit 4f61ab2058c9baffa01d9c865a376ed8d3c65820
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 16 21:29:40 2013 +0200

    windows: make uv_spawn not fail under job control

    * Fix a potential issue introduced with 415f4d3, namely that uv_spawn
      can fail when the current process is under job control. This would
      happen on Windows versions that don't support nested jobs (versions
      prior to Windows 8 / Server 2012).

    * Change the `uv__init_global_job_handle` function signature to match
      what `uv_once` expects.

    * Add a bunch of comments that clarify how we're using job control,
      and how we're dealing with job control that might be established by
      our parent process.

commit 13496e9c1ab905af0c43a3dda7bdec7dca73d1b3
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:50:22 2013 -0700

    Now working on v0.10.8

commit 028baaf0846b686a81e992cb2f2f5a9b8e841fcf
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:50:19 2013 -0700

    2013.05.15, Version 0.10.7 (Stable)

    Changes since version 0.10.6:

    * windows: kill child processes when the parent dies (Bert Belder)

commit 415f4d3e4c7ac25abf723eed3f5b40e63e045785
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:48:03 2013 -0700

    windows: kill child processes when the parent dies

    This makes Windows behave just like Unix. This does not affect
    processes that are spawned with the UV_PROCESS_DETACHED flag set.

commit 1fd10deec4de70ec3c13765948ec2726a0023c23
Author: isaacs <i@izs.me>
Date:   Tue May 14 14:40:01 2013 -0700

    Now working on v0.10.7

commit 11e6613e6260d95c8cf11bf89a2759c24649319a
Author: isaacs <i@izs.me>
Date:   Tue May 14 14:39:58 2013 -0700

    2013.05.15, Version 0.10.6 (Stable)

    Changes since version 0.10.5:

    * stream: fix osx select hack (Fedor Indutny)

    * stream: fix small nit in select hack, add test (Fedor Indutny)

    * build: link with libkvm on openbsd (Ben Noordhuis)

    * stream: use harder sync restrictions for osx-hack (Fedor Indutny)

    * unix: fix EMFILE error handling (Ben Noordhuis)

    * darwin: fix unnecessary include headers (Daisuke Murase)

    * darwin: rename darwin-getproctitle.m (Ben Noordhuis)

    * build: convert predefined $PLATFORM to lower case (Elliot Saba)

    * build: set soname in shared library (Ben Noordhuis)

    * build: make `make test` link against .a again (Ben Noordhuis)

    * darwin: fix ios build, don't require ApplicationServices (Ben
      Noordhuis)

    * build: only set soname on shared object builds (Timothy J. Fontaine)

commit 0564ee4a66956df1f3e0294e02296158e984d728
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Wed Apr 17 00:33:25 2013 +0200

    test, sunos: disable process_title test

    Disable unit test failing due to missing implementation
    of uv_(set|get)_process_title for Sun OS (SmartOS).

    Based on discussion with @tjfontaine, such implementation is difficult
    if possible at all and it won't be done anytime soon. Thus there is
    no point in keeping the failing test around.

commit 55c150abfc11ad6c23674c196ed914db0f942224
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon May 13 15:48:32 2013 -0700

    build: only set soname on shared object builds

commit f22163c233d4a9dedfe38ebb18a1a414cd25ba62
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 13 20:06:25 2013 +0200

    darwin: fix ios build, don't require ApplicationServices

commit a11d16d8f5888aee56f129ddbd54c6130a881d2c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 12 16:42:30 2013 +0200

    build: make `make test` link against .a again

    Commit 3eb6eb3 links the .so with -Wl,-soname which breaks the
    `make test` target: run-tests is linked against (for example)
    libuv.so.0.11 while the actual file name is libuv.so.

    That's relatively easy to fix by getting creative with rpaths but it's
    even easier to fix by simply linking statically.

    It also means I no longer have to remember to set LD_BIND_NOW when
    profiling the benchmarks.

commit 3eb6eb35ccf1aedbd2297c98b73df3cb81215e3a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 12 14:48:58 2013 +0200

    build: set soname in shared library

commit 96a2df80846af3769f6c0d432cae2c5963c51e2e
Author: Elliot Saba <staticfloat@gmail.com>
Date:   Sat May 11 14:48:52 2013 -0700

    build: convert predefined $PLATFORM to lower case

commit fe2a3150c0244759154c4cc472af12eca79df8a8
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Mon Apr 15 21:03:05 2013 +0200

    test: add error logging to tty unit test

commit af6e865a076af031213f9afc488c28306d6bc3d2
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Mon Apr 15 20:36:56 2013 +0200

    test: fix process_title failing on linux

    Shorten the test string from 40 to 38 characters because the title
    length is limited to 39 characters.

    Truncation of long titles was introduced intentionally by commit
    a0c1d84 (see discussion in joyent/node#5006).

commit 2c21050956206b5e7962e86f4bdbaade1a44b6ae
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Sat Apr 20 06:43:31 2013 +0200

    test: add RETURN_SKIP and RETURN_TODO macros

    Added two new flags to identify tests that are intentionally ignored
    (usually because we don't want to implement the tested functionality
    on current platform) and test serving as TODO list (usually indicating
    that the tested functionality should be implemented on current plaform
    in the near future.)

commit 9b801d551b70bd4b19e1b29fd3a257bec8051842
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 2 13:59:18 2013 +0200

    darwin: rename darwin-getproctitle.m

    Rename it to darwin-getproctitle.c, it doesn't need an Objective-C
    compiler. Fix up -Wpedantic warnings about void to function pointer
    casts and include <ApplicationServices/ApplicationServices.h> to get
    the GetCurrentProcess() function prototype.

commit 4b0fac89907380a62c7acc15303a39839f05e011
Author: Daisuke Murase <typester@cpan.org>
Date:   Thu May 2 10:06:03 2013 +0900

    darwin: fix unnecessary include headers

    This file doesn't use any Cocoa functions, CoreFoundation.h is enough here.
    This line causes compilation error on iOS environment.

commit f6fb1dfef149b09c106538bc1040b4444d6c94bb
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 2 13:15:21 2013 +0200

    ChangeLog: fix incorrect release date

commit b3ab332b340fb857c4d6bd43208aa708a6eb00bd
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 1 19:14:23 2013 +0200

    unix: fix EMFILE error handling

    On Linux, the accept() and accept4() system calls checks for EMFILE
    before checking for EAGAIN. Refine our EMFILE error handling tactic
    to deal with that. Here is what used to happen:

     1. The event loop calls accept() and sees EMFILE.

     2. Libuv switches to EMFILE error handling mode. It closes a stashed
        file descriptor and calls accept() again.

     3. The accept() system call fails with EAGAIN.

     4. Libuv reopens the stashed file descriptor (reaching RLIMIT_NOFILE
        again) and returns control to the regular event loop.

     5. The regular event loop calls accept(), sees EMFILE and jumps to
        step 2 again. Effectively an infinite loop.

    Avoid that by not calling accept() again when we've seen EAGAIN.

    Fixes joyent/node#5389.

commit 67f9b91a8b76536c47045a9edabe440fa78a42c0
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Apr 30 12:51:32 2013 +0400

    stream: use harder sync restrictions for osx-hack

    Synchronize harder to avoid excessive spins, invokations of async
    callback and sporadic assertion failures on double-call of async
    callback.

commit 4e5b8dc2efb7a5711b0741ff61b9da914b4920fc
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Apr 29 13:38:57 2013 +0200

    build: link with libkvm on openbsd

    The Makefile already did and now the gyp build does too. Fixes the
    OpenBSD build of node.js.

    Fixes joyent/node#5363.

commit ac4e7e7ff2d947297ac2995561e49c0e3efdafd9
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri Apr 26 23:43:28 2013 +0400

    stream: fix small nit in select hack, add test

commit 2400716d875a6481c13fd0b46068ab3b6afa5345
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Apr 23 22:34:43 2013 -0400

    stream: fix osx select hack

    After latest twiddling, `stream->io_watcher.fd` doesn't contain a real
    stream's file descriptior anymore. The one from `select_state` should be
    used instead.

    Zero-initialize `select_state->event` field.

commit a0cb926e2eb9979378f4b71854e8c035035cc3e8
Author: isaacs <i@izs.me>
Date:   Mon Apr 22 17:37:25 2013 -0700

    Now working on v0.10.6

commit 6595a7732c52eb4f8e57c88655f72997a8567a67
Author: isaacs <i@izs.me>
Date:   Mon Apr 22 17:37:22 2013 -0700

    2013.04.24, Version 0.10.5 (Stable)

    Changes since version 0.10.4:

    * unix: silence STATIC_ASSERT compiler warnings (Ben Noordhuis)

    * windows: make timers handle large timeouts (Miroslav Bajtoš)

    * windows: remove superfluous assert statement (Bert Belder)

    * unix: silence STATIC_ASSERT compiler warnings (Ben Noordhuis)

    * linux: don't use fopen() in uv_resident_set_memory() (Ben Noordhuis)

commit cd10637d0b3c03e28831eca2d66d8bda3216b10c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Apr 22 08:24:57 2013 +0200

    linux: don't use fopen() in uv_resident_set_memory()

    RSS is a reflection of the number of pages that a process has mapped.
    glibc implements fopen() in terms of mmap() which means that trying
    to read the number of mapped pages changes it. Switch to open().

commit 105e4dcb231f88c8e9a71cca85be9af9267022f4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Apr 22 07:46:21 2013 +0200

    unix: silence STATIC_ASSERT compiler warnings

    Fix the following two warnings:

      src/unix/core.c:74:1: warning: ISO C90 forbids array
      'static_assert_failed' whose size can't be evaluated [-Wvla]
      src/unix/core.c:76:1: warning: ISO C90 forbids array
      'static_assert_failed' whose size can't be evaluated [-Wvla]

commit a3963883b81ec2c2612511ff3fa885b2944d8457
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Apr 18 02:55:15 2013 +0200

    windows: remove superfluous assert statement

commit 09ff5100e3ecae807dd19796e08a0b756bc04ddd
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Tue Apr 16 16:29:48 2013 +0200

    windows: make timers handle large timeouts

    Fixes a bug where timers with very large ti…
146e5e5
@jcheng5 jcheng5 referenced this issue in rstudio/httpuv Oct 22, 2014
@jcheng5 jcheng5 Update libuv to v0.10.29
Squashed commit of the following:

commit 2416581b599d8452d81bac1ae0eab02f34f50136
Merge: 27bce72 2d72854
Author: Joe Cheng <joe@rstudio.org>
Date:   Wed Oct 22 10:35:49 2014 -0700

    Merge tag 'v0.10.29'

    2014.10.21, Version 0.10.29 (Stable)

    Changes since version 0.10.28:

    * darwin: allocate enough space for select() hack (Fedor Indutny)

    * linux: try epoll_pwait if epoll_wait is missing (Michael Hudson-Doyle)

    * windows: map ERROR_INVALID_DRIVE to UV_ENOENT (Saúl Ibarra Corretgé)

commit 2d728542d3790183417f8f122a110693cd85db14
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Tue Oct 21 01:01:03 2014 +0200

    2014.10.21, Version 0.10.29 (Stable)

    Changes since version 0.10.28:

    * darwin: allocate enough space for select() hack (Fedor Indutny)

    * linux: try epoll_pwait if epoll_wait is missing (Michael Hudson-Doyle)

    * windows: map ERROR_INVALID_DRIVE to UV_ENOENT (Saúl Ibarra Corretgé)

commit 5e507159c93e2f3f2102552dc56ae8530aec6e49
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Sun Jul 6 21:00:59 2014 +0200

    windows: map ERROR_INVALID_DRIVE to UV_ENOENT

    Backport c44f264641bd60bdc53b6e3f2e56d82ba43011d8 for v0.10 branch.

commit ef7b783d8d581f49a68f32f426c18b0fff9c78e3
Author: Michael Hudson-Doyle <michael.hudson@linaro.org>
Date:   Mon Sep 15 21:27:05 2014 +1200

    linux: try epoll_pwait if epoll_wait is missing

    It seems that epoll_wait is implemented in glibc in terms of epoll_pwait and
    new architectures (like arm64) do not implement the epoll_wait syscall at all.
    So if epoll_wait errors with ENOSYS, just call epoll_pwait.

    This is a backport of 861de3d71d40bdd22712f0079cd38f41be75010d for v0.10
    branch.

commit c60d6af011646ed40be93fdf1d83ed2d6d7cc786
Author: Fedor Indutny <fedor@indutny.com>
Date:   Sun Sep 7 23:56:15 2014 +0100

    darwin: allocate enough space for select() hack

    `fd_set`s are way too small for `select()` hack when stream's fd is
    bigger than 1023. Make `fd_set`s a part of `uv__stream_select_t`
    structure.

    fix #1461

    Conflicts:
    	src/unix/stream.c

commit 71b71289871e31b83a60ad9e278c511b8f2a4a95
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 31 09:29:01 2014 -0700

    Now working on v0.10.29

commit 9c14b616f5fb84bfd7d45707bab4bbb85894443e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 31 09:28:58 2014 -0700

    2014.07.32, Version 0.10.28 (Stable)

    Changes since version 0.10.27:

    * windows: fix handling closed socket while poll handle is closing (Saúl
      Ibarra Corretgé)

    * unix: return system error on EAI_SYSTEM (Saúl Ibarra Corretgé)

    * unix: fix bogus structure field name (Saúl Ibarra Corretgé)

    * darwin: invoke `mach_timebase_info` only once (Fedor Indutny)

commit 27bce72beb75e7ef3d2910c7e3a339e5a3299a43
Merge: d84acc6 6e24ce2
Author: Joe Cheng <joe@rstudio.org>
Date:   Thu Jul 24 09:50:12 2014 -0700

    Merge tag 'v0.10.27'

    2014.05.02, Version 0.10.27 (Stable)

    Changes since version 0.10.26:

    * windows: fix console signal handler refcount (Saúl Ibarra Corretgé)

    * win: always leave crit section in get_proc_title (Fedor Indutny)

commit 211bf4ec37a73dea06d15233ffa747e9387b8947
Author: Fedor Indutny <fedor@indutny.com>
Date:   Thu Jun 19 11:27:24 2014 -0400

    darwin: invoke `mach_timebase_info` only once

    According to @aktau, the call to `mach_timebase_info` costs 90% of the
    total execution time of `uv_hrtime()`. The result of the call is static
    on all existing platforms, so there is no need in invoking it multiple
    times.

    Signed-off-by: Fedor Indutny <fedor@indutny.com>

commit 58f87691a4077013dc032cd523ab8b0d4595a9e6
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Thu Jun 19 09:12:52 2014 +0200

    unix: fix bogus structure field name

commit dd893814ad37d9fc051c9c2db0ca21d45d7b65e3
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Wed Jun 18 01:18:55 2014 +0200

    unix: return system error on EAI_SYSTEM

commit 12bb46c095032b5106ffbd6feb1931917dcdd9d9
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Mon May 12 16:48:52 2014 +0200

    windows: fix handling closed socket while poll handle is closing

    fixes #1278

    (backport from master for v0.10 branch)

commit c38e97ee4deee7480ab60dc540f374cb472e02d8
Author: Fedor Indutny <fedor@indutny.com>
Date:   Fri Apr 11 03:42:06 2014 +0400

    test: fix EPIPE race in spawn_closed_process_io

    The just created stdin should not be closed by a child process before
    writing to it, otherwise EPIPE happens.

commit 6e24ce23b1e7576059f85a608eca13b766458a01
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu May 1 09:23:46 2014 -0700

    2014.05.02, Version 0.10.27 (Stable)

    Changes since version 0.10.26:

    * windows: fix console signal handler refcount (Saúl Ibarra Corretgé)

    * win: always leave crit section in get_proc_title (Fedor Indutny)

commit 4f8d4a0135ef4a3ba4b97a2138f9fd07acebb938
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu May 1 09:23:46 2014 -0700

    Now working on v0.10.28

commit 4a67d8cc0e00d0c7341ae62c2f73d59811c82c85
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon Apr 14 10:07:33 2014 -0700

    build: add vc-set-2012 label

commit ffb49220cf83d251fb7681a28992dc29fdadc9c7
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 14 13:42:14 2014 +0400

    win: always leave crit section in get_proc_title

    fix #1235

commit 23d130b2095f0e430683f2db40bf7f16ee8744cd
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 14 15:13:20 2014 +0400

    Revert "inet: allow scope in `uv_inet_pton` ip6 check"

    This reverts commit d30e3ab65acf7b77945658d3e6127ca6af6eec6, because it
    is a new feature!

commit d30e3ab65acf7b77945658d3e6127ca6af6eec6d
Author: Fedor Indutny <fedor@indutny.com>
Date:   Sun Apr 13 15:53:11 2014 +0400

    inet: allow scope in `uv_inet_pton` ip6 check

    Note that isn't actually parsing it, since the output value is a
    `struct in6_addr`.

    see https://github.com/joyent/node/issues/7395

commit b9d5396a4082b101051ece4f6e3c15a4d5bd7a98
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Sat Apr 12 10:09:40 2014 +0200

    windows: fix console signal handler refcount

    Backport of 0c726e7 from master

commit 6855205ba5c46023cdc2ea53c960bc903f9b0b7a
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 7 15:28:59 2014 +0400

    Now working on v0.10.27

    Signed-off-by: Fedor Indutny <fedor@indutny.com>

commit d864907611c25ec986c5e77d4d6d6dee88f26926
Author: Fedor Indutny <fedor@indutny.com>
Date:   Mon Apr 7 15:26:13 2014 +0400

    2014.04.07, Version 0.10.26 (Stable)

    Changes since version 0.10.25:

    * process: don't close stdio fds during spawn (Tonis Tiigi)

    * build, windows: do not fail on Windows SDK Prompt (Marc Schlaich)

    * build, windows: fix x64 configuration issue (Marc Schlaich)

    * win: fix buffer leak on error in pipe.c (Fedor Indutny)

    * kqueue: invalidate fd in uv_fs_event_t (Fedor Indutny)

    * linux: always deregister closing fds from epoll (Geoffry Song)

    * error: add ENXIO for O_NONBLOCK FIFO open() (Fedor Indutny)

    Signed-off-by: Fedor Indutny <fedor@indutny.com>

commit 295882ed3238d6bfda61f5a91e1b43eb210fc485
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Mar 18 14:32:14 2014 +0400

    error: add EMLINK mapping

    fix joyent/node#7307

commit fd77a5d6c6466f8c9d7ea6221b946599320702bb
Author: Tonis Tiigi <tonistiigi@gmail.com>
Date:   Sun Mar 23 12:48:06 2014 +0200

    process: don't close stdio fds during spawn

    This is needed when closed stdio fd is reused for uv_spawn pipe.
    Fixes #1211

commit cd6db8bbefb11a780977052f1a561920d6d60bbe
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Tue Feb 11 13:57:01 2014 +0100

    build, windows: do not fail on Windows SDK Prompt

    Backported from master 2f6d4b4

commit aa2fbb364a2fdd5c90cb9e4ca938787b249ae809
Author: Marc Schlaich <marc.schlaich@googlemail.com>
Date:   Tue Feb 11 14:01:24 2014 +0100

    build, windows: fixed x64 configuration issue

    Backported from master 8010bf9

commit 4ac8c424ea36b069c76e91fde3eb2f42e0e292f9
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Thu Mar 13 00:48:55 2014 +0400

    win: fix buffer leak on error in pipe.c

commit 9b38c01b540b60408f8eb1d9c288656405e25f7e
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Mar 11 01:44:44 2014 +0400

    kqueue: invalidate fd in uv_fs_event_t

    Invalidate file descriptor when closing `uv_fs_event_t` handle. Note
    that `uv__io_stop` is just removing `fd` from `loop->watchers` and not
    actually invalidating all consequent events in a `kevent()` results.

    fix joyent/node#1101

commit 84f305915fd45c1e55d261db565b3ddfdbc9d4ce
Author: Geoffry Song <goffrie@gmail.com>
Date:   Wed Feb 5 18:36:24 2014 -0500

    linux: always deregister closing fds from epoll

    If the same file description is open in two different processes, then
    closing the file descriptor is not sufficient to deregister it from the
    epoll instance (as described in epoll(7)), resulting in spurious events
    that cause the event loop to spin repeatedly. So always explicitly
    deregister it.

    Fixes #1099.

    Conflicts:
    	test/test-spawn.c

commit 4f72f2145b902fcfefee8fa90419c9bf28d74bc2
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Thu Mar 6 20:26:11 2014 +0400

    error: add ENXIO for O_NONBLOCK FIFO open()

    When opening FIFO with `O_NONBLOCK` flag, `ENXIO` could be returned if
    the readable side hasn't yet opened this FIFO.

commit c0c9480e02ec36e9b792a12e2f8a162f2bbcab68
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Feb 26 14:08:19 2014 +0400

    process: remove debug perror() prints

    fix #1128

commit 6f98f4efd112b21414ed92a048cda9f6f5978eb7
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Tue Feb 25 10:48:26 2014 +0100

    unix, windows: map ERANGE errno

    This is a backport of 2f58bb6 from the master branch

commit 10f9120d78fa6351367e52e7fd5f3e8527d54f73
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Mon Feb 24 12:57:28 2014 +0100

    errno: map EFBIG, ENOPROTOOPT and ETXTBSY

    This is a backport of:
    https://github.com/joyent/libuv/commit/107be2bed38afa6279aa53b13b946eb60c204969
    https://github.com/joyent/libuv/commit/4a023fc0786780d254e1e4a34a983c36f59d99bf
    https://github.com/joyent/libuv/commit/aaaefe32cadcfb26d07d625d17d7a2b8cafb4f2d

commit 714bec14f601fdf0ff4394f7eeb596935f19ca2e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Feb 18 13:01:54 2014 -0800

    Now working on v0.10.26

commit d778dc588507588b12b9f9d2905078db542ed751
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Feb 18 13:01:51 2014 -0800

    2014.02.19, Version 0.10.25 (Stable)

    Changes since version 0.10.24:

    * stream: start thread after assignments (Oguz Bastemur)

    * unix: correct error when calling uv_shutdown twice (Saúl Ibarra
      Corretgé)

    * windows: freeze in uv_tcp_endgame (Alexis Campailla)

    * sunos: handle rearm errors (Fedor Indutny)

commit 703a9e601e976b74ce459e4db9e23fca107d3f4b
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Jan 20 19:12:47 2014 +0400

    sunos: handle rearm errors

    fix #1078

commit 4f913b669adc1765829ce57b8a022394e363a757
Author: Alexis Campailla <alexis@janeasystems.com>
Date:   Tue Feb 18 09:50:49 2014 -0800

    windows: freeze in uv_tcp_endgame

    The event_handle field of unused accept requests was not being
    initialized properly. As a result, uv_tcp_endgame would try to close
    an invalid handle and this could lead to unexpected behavior.

    This fixes node.js test test-cluster-disconnect.js on Windows.

commit 6e2021ca111a44449932792e0cb578e63705c2a2
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Sat Feb 15 16:49:01 2014 +0100

    unix: correct error when calling uv_shutdown twice

    This is a backport of a284b90 for v0.10 branch

commit a6ff04d2c48be408cdcd76e5d78f4dc0a8fb9312
Author: Oguz Bastemur <obastemur@gmail.com>
Date:   Fri Jan 31 12:02:37 2014 +0100

    stream: start thread after assignments

    Changed the order of the member assignments since the thread
    may start before the parameters are assigned. This especially
    happens when the osx scheduler is very busy.

commit 79ffe2fb9537a8b9f1db7a2f27a7cd5c3bfb3707
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Jan 29 09:41:41 2014 -0800

    Now working on v0.10.25

commit aecd296b6bce9b40f06a61c5c94e43d45ac7308a
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Jan 29 09:41:36 2014 -0800

    2014.01.30, Version 0.10.24 (Stable)

    Changes since version 0.10.23:

    * linux: move sscanf() out of the assert() (Trevor Norris)

    * linux: fix C99/C++ comment (Fedor Indutny)

commit 3e2446d18db6ba2c16fa71530565a904aaca1fd2
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Jan 29 17:01:35 2014 +0400

    linux: fix C99/C++ comment

commit 7c8ff3bc2578bbba09ef3f460b8d0f1c16bcd03e
Author: Trevor Norris <trev.norris@gmail.com>
Date:   Wed Jan 22 12:16:06 2014 -0800

    linux: move sscanf() out of the assert()

    If asserts are turned off then the sscanf() wouldn't have run, being
    placed directly in the assert() itself.

commit b8b6588dbe800df727c5f17b762c9cfe5dcd86be
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jan 22 20:30:26 2014 +0100

    Now working on v0.10.24

commit dbd218e699fec8be311d85e4788be9e28ae884f8
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jan 22 20:30:14 2014 +0100

    2014.01.23, Version 0.10.23 (Stable)

    Changes since version 0.10.22:

    * linux: relax assumption on /proc/stat parsing (Luca Bruno)

    * openbsd: fix obvious bug in uv_cpu_info (Fedor Indutny)

    * process: close stdio after dup2'ing it (Fedor Indutny)

commit e403a2c486f46c0f5eda8814ff13d4ed4521e5a6
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Jan 20 19:30:08 2014 +0400

    process: close stdio after dup2'ing it

    Thus allow passing the same file descriptor as the source of multiple
    stdios.

    Committed with the help and code parts from:

      * Sam Roberts <sam@strongloop.com>

    fix #1074

commit 8bc29b6f5fff71c69987c44e3cfbb3b79b882398
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Jan 21 15:05:39 2014 +0400

    openbsd: fix obvious bug in uv_cpu_info

    `int which[]` should not be static here, as the function itself is
    changing it

    fix joyent/node#6878

commit 993151bc409c273409dbbaaac192091c864f3823
Author: Luca Bruno <lucab@debian.org>
Date:   Mon Jan 20 13:56:26 2014 +0100

    linux: relax assumption on /proc/stat parsing

    CPU entries in /proc/stat are not guaranteed to be monotonically
    increasing, asserting on this assumption can break in cases such
    as the UltraSparc II machine shown in #1080.

    Signed-off-by: Luca Bruno <lucab@debian.org>

commit 97eda7fd6226be651216ec19ba6146807186bd36
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Jan 7 14:03:18 2014 -0800

    Now working on v0.10.23

commit f526c90eeff271d9323a9107b9a64a4671fd3103
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Jan 7 14:03:15 2014 -0800

    2014.01.08, Version 0.10.22 (Stable)

    Changes since version 0.10.21:

    * windows: avoid assertion failure when pipe server is closed (Bert
      Belder)

commit f6422af80ab54eddf5f1344bec7ddab9ab240924
Author: Alex Crichton <alex@alexcrichton.com>
Date:   Sat Dec 21 20:12:35 2013 -0800

    osx: Fix a possible segfault in uv__io_poll

    In our build infrastructure, I've seen a lot of segfaults recently that
    were all only happening on OSX. Upon inspecting the coredumps, it
    appearded that all segfaults happened at the same instruction, and upon
    translating the assembly back to the source, I found that an array could
    be indexed with a -1 index before the index was checked to be not -1.

    As concrete evidence, here is the situation that I found caused the
    segfault.  The instruction in question along with the relevant register
    values was:

        mov    (%r8,%r15,8),%r12

        r8  = 0x7fb0ba800000
        r15 = 0xffffffffffffffff

        r8 + r15 * 8 == 0x7fb0ba7ffff8

    It appears that the base of loop->watchers was page aligned, and by
    going back one word I guess that the page wasn't mapped, causing our
    segfaults.

commit 16c4b21e4dad4624a5a4c23f8e1cff6da0b1ba1c
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat Dec 21 11:32:22 2013 +0100

    test: make test-pipe-server-close pass on linux

    When a server and a client are both part of the same event loop, and
    the client connects to the server, the order in which the connect
    callback and the connection callback are called is unspecified.
    Apparently on linux the connection callback sometimes happens first,
    which is not a bug, and should not make this test fail.

commit c66340d59b8b35399831fb1c3a12c1efdbd91a53
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Dec 20 19:40:02 2013 -0800

    test: add pipe-server-close test

    Add a regression test for the pipe server close issue on Windows, which
    was reported in joyent/node#6749 and fixed in 7b16a3f.

commit 562d7a49ac206dab2a830aad612d995a8c6fbd97
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Dec 20 19:38:37 2013 -0800

    code style: strip trailing whitespace

commit 7b16a3f5083ef742384e7511914764c56778da8e
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Dec 20 17:33:31 2013 -0800

    windows: avoid assertion failure when pipe server is closed

    When a pipe server is closed, all pending accept requests and their
    associated HANDLEs are closed to force windows to cancel the
    ConnectNamedPipe IRP. The returned request has the `pipeHandle` field
    set to INVALID_HANDLE_VALUE, which trips an assert in
    uv_pipe_process_accept_req. This patch fixes that.

commit 9d60214b3aa837e3930e078983245f1e73cfbb39
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 18 15:37:33 2013 -0800

    Now working on v0.10.22

commit 375ebce068555f0ca8151b562edb5f1b263022db
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 18 15:37:25 2013 -0800

    2013.12.19, Version 0.10.21 (Stable)

    Changes since version 0.10.20:

    * unix: fix a possible memory leak in uv_fs_readdir (Alex Crichton)

commit 7c6bddbe2a697344f441574d61a74a8034d86109
Author: Alex Crichton <alex@alexcrichton.com>
Date:   Tue Dec 17 13:03:52 2013 -0800

    unix: fix a possible memory leak in uv_fs_readdir

    Some scandir implementations allocate the dirent struct even if the
    directory is empty, so if `scandir` returns 0 there may still be memory
    that needs to get deallocated. I have altered uv__fs_readdir to go to
    the "deallocation exit area" when 0 files are found in the directory
    and continue to return early on a return value of -1.

    I went to add a test for this functionality, but it appears that one
    already exists (reading an empty directory), so I imagine that the
    valgrind builds must only be happening on linux instead of OSX as well?
    I have confirmed manually that a program without this fix will
    infinitely leak memory, and with this fix the memory usage stays
    constant.

commit f3d311edc447cfe0a95c6ca7cbe8301588f180c5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 11 20:22:00 2013 -0800

    Now working on v0.10.21

commit 04141464dd0fba90ace9aa6f7003ce139b888a40
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Dec 11 20:21:57 2013 -0800

    2013.12.13, Version 0.10.20 (Stable)

    Changes since version 0.10.19:

    * linux: fix up SO_REUSEPORT back-port (Ben Noordhuis)

    * fs-event: fix invalid memory access (huxingyi)

commit da323447308280c736ac44946fce752a5dca8243
Author: huxingyi <huxingyi@msn.com>
Date:   Thu Oct 24 16:10:44 2013 +0800

    fs-event: fix invalid memory access

    file_info->FileName is not null terminated.

commit 47d98b64c45db8335bf7e065351e385cae32323d
Author: Alex Gaynor <alex.gaynor@gmail.com>
Date:   Fri Nov 29 11:07:43 2013 -0600

    doc: Removed use of gendered pronouns

commit 7bb7371fc5ad7cdabcf997e5002d5fe8f5e47abd
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Nov 27 17:28:02 2013 +0100

    build: make `./gyp_uv.py -f eclipse` work

    The eclipse backend (like the ninja backend) does not support the
    --generator_output switch.

commit 74457d08ba6408d1ce5ff965b113f237c0cf6e51
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Nov 25 16:09:55 2013 +0100

    linux: fix up SO_REUSEPORT back-port

    Commit 3d2c820 back-ports a patch from the master branch that disables
    the use of SO_REUSEPORT on Linux for reasons mentioned in the commit
    log.

    Unfortunately, the back-port was incomplete; another setsockopt() call
    site in src/unix/udp.c was overlooked.  This commit rectifies that.

    Hat tip to Luca Bruno for helping troubleshoot the issue.

commit c3e05bafa5486120117994d11f38172d3752127d
Author: Marc Schlaich <marc.schlaich@gmail.com>
Date:   Mon Nov 25 16:19:42 2013 +0100

    gitignore: ignore *.pyc files

    The gyp build on Windows produces a *.pyc file as of commit 991409e.

commit a43537eeada0aa95a0df02da23e9169b981654ba
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon Nov 25 12:58:17 2013 +0100

    test: back-port EMFILE test from master branch

    Back-port the test from commit 27795cf from the master branch ("unix:
    fix accept() EMFILE error handling").

commit 026241ca67717679a7f79d92c4fe1d77f223318c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Nov 13 12:20:07 2013 +0100

    unix: unbreak bsd build after bbccafb

    Unbreak the build on the BSDs after commit bbccafb.  Move the new
    uv__platform_invalidate_fd() function from src/unix/darwin.c to
    src/unix/kqueue.c.

commit 1578a5a371326bd1edabfa146c77d41d4e20928e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Nov 12 10:54:29 2013 -0800

    Now working on v0.10.20

commit 33959f7524090b8d2c6c41e2400ca77e31755059
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Nov 12 10:54:25 2013 -0800

    2013.11.13, Version 0.10.19 (Stable)

    Changes since version 0.10.18:

    * darwin: avoid calling GetCurrentProcess (Fedor Indutny)

    * unix: update events from pevents between polls (Fedor Indutny)

    * fsevents: support japaneese characters in path (Chris Bank)

    * linux: don't turn on SO_REUSEPORT socket option (Ben Noordhuis)

    * build: fix windows smp build with gyp (Geert Jansen)

    * linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT (Ben Noordhuis)

    * unix: fix reopened fd bug (Fedor Indutny)

    * core: fix fake watcher list and count preservation (Fedor Indutny)

commit f50ccd52388ffbcbbf0cd21ef7d6562300ef7ebb
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Tue Nov 12 15:24:33 2013 +0400

    core: fix fake watcher list and count preservation

    Fake watcher list and count should be preserved only if
    `loop->watchers` was already allocated.

commit bbccafbe704090e294481d95f73862bc83f33026
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri Oct 25 12:56:37 2013 +0400

    unix: fix reopened fd bug

    When fd is closed and new one (with the same number) is opened inside
    kqueue/epoll/port loop's callback - stale events might invoke callbacks
    on wrong watchers.

    Check if watcher was changed after invocation and invalidate all events
    with the same fd.

    fix #826

commit 0c76cdb98ffa9a43f169e24b59a3df95f18803f3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Nov 8 05:10:44 2013 +0100

    linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT

    Work around an epoll quirk where it sometimes reports just the EPOLLERR
    or EPOLLHUP event.  In order to force the event loop to move forward,
    we merge in the read/write events that the watcher is interested in;
    uv__read() and uv__write() will then deal with the error or hangup in
    the usual fashion.

    Fixes #982.

    This is a back-port of commit 24bfef2 from the master branch.

commit 991409e461e3973f006bf951b3e7513578a41be2
Author: Geert Jansen <geertj@gmail.com>
Date:   Tue Nov 5 08:43:40 2013 +0100

    build: fix windows smp build with gyp

    Gyp will try a parallel build if it detect the system has >1 processor.
    This functionality depends on the Python "multiprocessing" package. The
    multiprocessing package on Windows requires that the top-level module is
    importable as a module, see:

      http://docs.python.org/2/library/multiprocessing.html#windows

    This fixes issue #984.

    This is a back-port of commit 2445467 from the master branch.

commit 3d2c820a4efe3954a77b539bb56e7398263069d3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Oct 30 09:36:47 2013 +0100

    linux: don't turn on SO_REUSEPORT socket option

    On the BSDs, SO_REUSEPORT is pretty much SO_REUSEADDR with some special
    casing for IP multicast.  When two processes (that don't do multicast)
    bind to the same address, only the last one receives traffic.  It allows
    one to "steal" the bound address from another process.  (Both processes
    have to enable SO_REUSEPORT though, so it only works in a cooperative
    setting.)

    On Linux however, it enables port sharing, not stealing - both processes
    receive a share of the traffic.  This is a desirable trait but pre-3.9
    kernels don't support the socket option and a libuv program therefore
    behaves differently with older kernels or on another platform.

    This is a back-port of commit 9d60f1e from the master branch.

    Fixes joyent/node#6454.

commit 3780e128230618bc3bddc9b3942ee149fadf4ca2
Author: Chris Bank <cbank@adobe.com>
Date:   Sat Nov 2 05:00:50 2013 +0400

    fsevents: support japaneese characters in path

commit f9960184fd86d43470dc70dcedac32899e532757
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Oct 30 21:43:23 2013 +0400

    test: add regression test for 29fdb3471

commit 29fdb3471ba993a4d129278129ec04e720890063
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Sat Oct 26 01:06:12 2013 +0400

    unix: update events from pevents between polls

    Watchers could be stopped between two `kevent()`/`epoll_wait()` calls
    (which may happen in the same loop in `uv__io_poll()`), in such cases
    `watcher->events` could be stale and won't be updated to
    `watcher->pevents`.

    Try to use and rely on `watcher->pevents` instead of blindly expecting
    `watcher->events` to be always correct.

commit 08e0e63f3adecafeacaf09f519587c381c6e2ef2
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Oct 28 20:51:50 2013 +0400

    darwin: avoid calling GetCurrentProcess

    Use some black-magic from Apple to change process name without getting
    a "Not responding" tag from Activity Manager.

    fix #966

commit 939560b6dbbb52252a3d510731431c7c9e03750c
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Fri Oct 18 13:17:52 2013 -0700

    Now working on v0.10.19

commit 9ec52963b585e822e87bdc5de28d6143aff0d2e5
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Fri Oct 18 13:17:48 2013 -0700

    2013.10.19, Version 0.10.18 (Stable)

    Changes since version 0.10.17:

    * unix: fix uv_spawn() NULL pointer deref on ENOMEM (Ben Noordhuis)

    * unix: don't close inherited fds on uv_spawn() fail (Ben Noordhuis)

    * unix: revert recent FSEvent changes (Ben Noordhuis)

    * unix: fix non-synchronized access in signal.c (Ben Noordhuis)

commit 1800efc13806440867b92758d01f0ce97e239e36
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Oct 18 17:10:03 2013 +0200

    unix: fix non-synchronized access in signal.c

    Check the return value of uv__signal_lock(); don't mutate the signal
    watcher tree in the signal handler if we failed to acquire the lock.

commit 38df93cfed1921b4682179c04c298be1b69e6841
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Oct 5 18:15:02 2013 +0200

    unix: revert recent FSEvent changes

    This commit reverts the following commits:

        983fa68 darwin: fix 10.6 build error in fsevents.c
        684e212 fsevents: use shared FSEventStream
        ea4cb77 fsevents: FSEvents is most likely not thread-safe
        9bae606 darwin: create fsevents thread on demand

    Several people have reported stability issues on OS X 10.8 and bus
    errors on the 10.9 developer preview.

    See also joyent/node#6296 and joyent/node#6251.

commit 11d80117936bea8da25d28bcf5402615dd3ead05
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Oct 2 11:17:18 2013 +0200

    unix: don't close inherited fds on uv_spawn() fail

    The cleanup-after-error code path in uv_spawn() was closing file
    descriptors indiscriminately.  Only close file descriptors that we
    created ourselves, not the ones that are passed in by the user.

    Fixes joyent/node#6297.

commit fc3a21f943d5c91cd27fd7df9a973546101fef22
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Oct 2 10:53:53 2013 +0200

    unix: fix uv_spawn() NULL pointer deref on ENOMEM

    In the cleanup-after-error section of uv_spawn(), check that the pointer
    is non-NULL - we might end up in said section due to a malloc() failure.

commit 8c9cbee1b1fb19786405bdd92af5edfdab4cdbbe
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Sep 28 20:50:45 2013 +0200

    Revert "unix: set O_NONBLOCK in uv_pipe_open()"

    It turns out that node.js relies on the blocking behavior of pipes in
    some cases, notably when forking worker processes.  Reopens #941.

    This reverts commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba.

commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Sep 28 10:29:53 2013 +0200

    unix: set O_NONBLOCK in uv_pipe_open()

    Don't rely on the caller to set the O_NONBLOCK flag on the file
    descriptor.

    Prevents sporadic stalls when the file descriptor is in blocking mode
    and exactly as many bytes are read as there are available; in that case,
    libuv will try to read again and block.  Node.js was guilty of this.

    Fixes #941.

commit e9df7cbcbbcf8972aaf4ae64174a37c46dd62eb2
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Sep 24 13:40:44 2013 -0700

    Now working on v0.10.18

commit 9670e0a93540c2f0d86c84a375f2303383c11e7e
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Tue Sep 24 13:40:40 2013 -0700

    2013.09.25, Version 0.10.17 (Stable)

    Changes since version 0.10.16:

    * build: remove GCC_WARN_ABOUT_MISSING_NEWLINE (Ben Noordhuis)

    * darwin: fix 10.6 build error in fsevents.c (Ben Noordhuis)

commit 983fa68e9f8bdf77a94fc46526a798a350ec39ec
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Aug 28 11:55:27 2013 +0200

    darwin: fix 10.6 build error in fsevents.c

    Work around an 'initializer element is not constant' build error in
    src/unix/fsevents.c by turning the const int flags into #defines.

    Only an issue on OS X 10.6 due to the old compiler it uses.

    Fixes #908.

    This is a back-port of commit 82f2472 from the master branch.

commit 712835a6733b578d6e8c1bccdfa7febc6454d3b8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu Sep 5 21:32:41 2013 +0200

    build: remove GCC_WARN_ABOUT_MISSING_NEWLINE

    Not compatible with non-Apple gcc builds.  Fixes the following build
    error:

        gcc-4.8: error: unrecognized command line option '-Wnewline-eof'

commit 7e5c63c88da5b88f39ea1ec3d6b049438da91bde
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 16:45:51 2013 +0200

    Now working on v0.10.17

commit 2bce230d81f4853a23662cbeb26fe98010b1084b
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 16:45:45 2013 +0200

    2013.09.06, Version 0.10.16 (Stable)

    Changes since version 0.10.15:

    * windows: make uv_shutdown() for write-only pipes work (Bert Belder)

    * windows: make uv_fs_open() report EINVAL when invalid arguments are
      passed (Bert Belder)

    * windows: make uv_fs_open() report _open_osfhandle() failure correctly
      (Bert Belder)

    * windows: make uv_fs_chmod() report errors correctly (Bert Belder)

    * windows: wrap multi-statement macros in do..while block (Bert Belder)

commit faf2c5932c89a714fcd6b9668a9b78a986d20701
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 08:50:04 2013 +0200

    windows/fs: handle _open_osfhandle() failure correctly

    Until now we assumed that _open_osfhandle() would set _doserrno on
    failure. This assumption was very wrong in one obvious case, namely when
    the CRT file descriptor table would fill up. In that case errno is set
    to EMFILE, but GetLastError() returns zero - which makes sense because
    it's not a win32 error but rather a CRT problem.

commit 812717d0dda831594f91126272b7f5b3e323e184
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 08:46:16 2013 +0200

    windows/fs: make uv_fs_open() report EINVAL correctly

    Before, when the user passed an invalid paramter to uv_fs_open, libuv
    would detect this and call SET_REQ_RESULT to set the result value to -1.
    SET_REQ_RESULT then stored whatever error code was returned by
    GetLastError(), which would have no relationship to the actual problem,
    and might as well be zero.

commit 39bef32906573a0dd645cd12c510693dbabf76cf
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Sep 5 08:38:07 2013 +0200

    windows/fs: wrap multi-statement macros in do..while block

commit 61b20e8d469eb82292ef4ca885d824f429fe4b2a
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu Aug 29 15:04:27 2013 +0200

    windows: make uv_shutdown() for write-only pipes work

    A couple of issues prevented uv_shutdown() from working correctly with
    write-only pipes.

      * The pipe handle wasn't opened with the right permissions, so an
        attempt to probe the state of the write buffer would fail with
        ERROR_ACCESS_DENIED.

      * The pipe flags for child process stdio pipes were always set to
        UV_HANDLE_READABLE and UV_HANDLE_WRITABLE, even in cases where it
        was actually half-duplex.

      * There was no code path that lead to closing the pipe handle if the
        pipe was write-only.

commit 851a6624161219c0a18be8b5c9fc4e55d24f53c4
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat Aug 24 15:40:53 2013 +0200

    windows: make uv_fs_chmod() report errors correctly

    Before this patch libuv would attempt to use GetLastError() to retrieve
    the cause of NtQueryInformationFile failure, but that's not how it
    should be done.

commit c8b6895eaffa26c66d2af2b573687ca7d061f26a
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Aug 23 18:57:14 2013 +0200

    Now working on v0.10.16

commit 221078a8fdd9b853c6b557b3d9a5dd744b4fdd6b
Author: Bert Belder <bertbelder@gmail.com>
Date:   Fri Aug 23 18:57:10 2013 +0200

    2013.08.24, Version 0.10.15 (Stable)

    Changes since version 0.10.14:

    * fsevents: create FSEvents thread on demand (Ben Noordhuis)

    * fsevents: use a single thread for interacting with FSEvents, because
      it's not thread-safe. (Fedor Indutny)

    * fsevents: share FSEventStream between multiple FS watchers, which
      removes a limit on the maximum number of file watchers that can be
      created on OS X. (Fedor Indutny)

commit 684e2124e7cbe8f94daeba730e83cbf88963430f
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Aug 21 01:43:09 2013 +0400

    fsevents: use shared FSEventStream

    It seems that number of simultaneously opened FSEventStreams is
    limited on OSX (i.e. you can have only fixed number of them on
    one running system), getting past through this limit will cause
    `FSEventStreamCreate` to return false and write following message
    to stderr:

        (CarbonCore.framework) FSEventStreamStart: register_with_server:
        ERROR: f2d_register_rpc() => (null) (-21)

    To prevent this, we must use only one shared FSEventStream with a
    paths for all uv_fsevent_t handles, and then filter out events for
    each handle using this paths again.

    See https://github.com/joyent/node/issues/5463

    Conflicts:
    	include/uv-private/uv-darwin.h
    	src/unix/fsevents.c

commit ea4cb77814eeaa7629b29d53ad6a2b8bc4b19046
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Wed Aug 14 17:14:35 2013 +0400

    fsevents: FSEvents is most likely not thread-safe

    Perform all operation with FSEventStream in the same thread, where it'll
    be used.

    Conflicts:
    	src/unix/fsevents.c

commit 9bae606d413327187828155b61babcd52b2d2517
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Aug 13 02:02:12 2013 +0200

    darwin: create fsevents thread on demand

    * Move CF run loop code to fsevents.c.

    * Create the fsevents thread on demand rather than at startup.

    * Remove use of ACCESS_ONCE. All accesses to loop->cf_loop are
      protected by full memory barriers so no reordering can take place.

    Fixes #872.

    Conflicts:
    	src/unix/darwin.c

commit 24a42a406ae00c2e8060b9f9397365684669db6b
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Aug 21 14:41:26 2013 -0700

    Now working on v0.10.15

commit 15d64132151c18b26346afa892444b95e2addad0
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Wed Aug 21 14:41:23 2013 -0700

    2013.08.22, Version 0.10.14 (Stable)

    Changes since version 0.10.13:

    * unix: retry waitpid() on EINTR (Ben Noordhuis)

commit b2ac4d3bf41bafc1c327b9fa929eee37f05492e8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun Aug 18 17:25:05 2013 +0200

    unix: retry waitpid() on EINTR

    Before this commit, libuv would abort() if waitpid() failed with EINTR.

    It's unlikely that anyone actually hit this error condition: the major
    UNIX platforms - with the possible exception of Solaris - don't return
    EINTR when the WNOHANG flag is specified, as libuv does.

    However, POSIX allows for an implementation to do whatever here: unless
    explicitly forbidden, it's allowed and POSIX doesn't restrict
    implementers in this particular area.

    Let's opt for robustness and handle EINTR.

commit d84acc65a7e48f41e2bc2fea38ed473e4a051d18
Merge: 47fd23f 381312e
Author: Joe Cheng <joe@rstudio.org>
Date:   Mon Aug 12 09:46:05 2013 -0700

    Merge tag 'v0.10.13'

    2013.07.26, Version 0.10.13 (Stable)

    Changes since version 0.10.12:

    * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

commit 2744e1e009fce04e883f7641009b4bbb4c78a8f0
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 25 10:34:41 2013 -0700

    Now working on v0.10.14

commit 381312e1fe6fecbabc943ccd56f0e7d114b3d064
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jul 25 10:31:28 2013 -0700

    2013.07.26, Version 0.10.13 (Stable)

    Changes since version 0.10.12:

    * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

commit d779eb53d506d40fbe7903da7b914a5bbd588954
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Jul 23 13:14:44 2013 +0200

    unix, windows: fix uv_fs_chown() function prototype

    Before this commit, uv_fs_chown() and uv_fs_fchown() took the uid and
    gid as signed integers which is wrong because uid_t and gid_t are
    unsigned on most all platforms and IDs that don't fit in a signed
    integer do exist.

    This is not an ABI change because the size of the uid and gid arguments
    do not change, only their sign.

    On Windows, uv_uid_t and uv_gid_t are typedef'd as unsigned char for
    reasons that are unclear. It doesn't matter: they get cast to ints when
    used as function arguments. The arguments themselves are unused.

    Partial fix for joyent/node#5890.

commit 3b4e0a216fb4093fa9f6e5d3c9039b5f1d30820b
Author: isaacs <i@izs.me>
Date:   Tue Jul 9 13:18:53 2013 -0700

    Now working on v0.10.13

commit 58a46221bba726746887a661a9f36fe9ff204209
Author: isaacs <i@izs.me>
Date:   Tue Jul 9 13:18:50 2013 -0700

    2013.07.10, Version 0.10.12 (Stable)

    Changes since version 0.10.11:

    * linux: add support for MIPS (Andrei Sedoi)

    * windows: uv_spawn shouldn't reject reparse points (Bert Belder)

    * windows: use WSAGetLastError(), not errno (Ben Noordhuis)

    * build: darwin: disable -fstrict-aliasing warnings (Ben Noordhuis)

    * build: `all` now builds static and dynamic lib (Ben Noordhuis)

    * unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) (Ben
      Noordhuis)

commit 37d0209c8911c80115bb0c58b248c7e10bb541a9
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Jul 5 12:04:43 2013 +0200

    unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK)

    Ancient versions of glibc (<= 2.3.1) don't have error-checking mutexes.

commit 88a2c7ff209935d736f02e79b3369f2e7b646bb8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 17:13:26 2013 +0200

    build: `all` now builds static and dynamic lib

    The `make all` target now builds both libuv.a and libuv.{so,dylib}
    rather than just libuv.a.

commit 5841852703c02e46d7220f1eb8d89bb8414d7cf3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:02:39 2013 +0200

    test: add 'start timer from check handle' test

    Check that a timer that is started from a check handle gets picked up
    correctly, i.e. that it influences the timeout used in the next tick
    of the event loop.

commit 488b43ecc5a79143d0697e5e49d834c86c7c9894
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:26:45 2013 +0200

    test: fix signed/unsigned compiler warning

commit a0bc4cca74be7de2a540439920c8f15d0a671b74
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 13:06:26 2013 +0200

    build: darwin: disable -fstrict-aliasing warnings

    gcc 4.2.1 as shipped with Xcode complains incessantly about aliasing
    warnings, which, while technically true, disregards the fact that the
    aliased types have the same layout in memory. Squelch the warnings.

commit c8c775bd9739e0c9562b925ec482a378b50f97c2
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 26 01:03:36 2013 +0200

    windows: use WSAGetLastError(), not errno

    setsockopt() doesn't touch errno on failure. Use WSAGetLastError()
    instead.

    This is a back-port of commit 30a8b44 from the master branch.

commit 495d1a09fb863354e5de1c6ab4547be3672ace00
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed Jun 19 00:14:58 2013 +0200

    windows: uv_spawn shouldn't reject reparse points

    This fixes an issue where uv_spawn would not try to run a reparse point,
    and continue to scan the PATH instead. Effectively, it was impossible to
    spawn a symlinked binary. This commit fixes that.

    Also see #748

commit 6607e702539f0affa2d1b2926d4e69a1e032c242
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue Jun 18 23:50:31 2013 +0200

    test: open stdout fd in write-only mode

    Fixes #771.

commit 5096f1e0961896998c4185db866c53a8a8636fab
Author: Andrei Sedoi <bsnote@gmail.com>
Date:   Thu Jun 13 23:23:42 2013 +0300

    linux: add support for MIPS

commit 72e440d7e193123c0359fa12a7fabab15d7d9f51
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 12 21:52:05 2013 +0200

    Now working on v0.10.12

commit c3b75406a66a10222a589cb173e8f469e9665c7e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 12 21:52:01 2013 +0200

    2013.06.13, Version 0.10.11 (Stable)

    Changes since version 0.10.10:

    * unix: unconditionally stop handle on close (Ben Noordhuis)

    * freebsd: don't enable dtrace if it's not available (Brian White)

    * build: make HAVE_DTRACE=0 should disable dtrace (Timothy J. Fontaine)

    * unix: remove overzealous assert (Ben Noordhuis)

    * unix: clear UV_STREAM_SHUTTING after shutdown() (Ben Noordhuis)

    * unix: fix busy loop, write if POLLERR or POLLHUP (Ben Noordhuis)

commit 12210fe578623995d13cc5126427c1c67de4b6e0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Jun 8 03:20:29 2013 +0200

    unix: fix busy loop, write if POLLERR or POLLHUP

    This fixes a busy loop by working around a quirk with Linux kernels
    <= 2.6.32 where an EPIPE or ECONNRESET error on a file descriptor that
    is polled for EPOLLOUT but not EPOLLIN gets reported by epoll_wait() as
    just EPOLLERR|EPOLLHUP, like this:

      epoll_wait(5, {{EPOLLERR|EPOLLHUP, {u32=12, u64=12}}}, 1024, 433) = 1

    Before this commit, libuv called uv__read() which attempts to read from
    the file descriptor.  With newer kernels and on other operating systems
    that fails like this:

      read(12, "", 65536)         = -1 EPIPE (Broken pipe)

    Which tells libuv there is a connection error and it should notify the
    user of that.  On the affected Linux kernels however, the read succeeds
    with an EOF:

      read(12, "", 65536)         = 0

    Which is subsequently passed on to the user. In most cases, the user
    will close the handle and everything is fine.

    Node.js however sometimes keeps the handle open in an attempt to flush
    pending write requests.  While libuv doesn't officially support this,
    unofficially it works...

    ...except on those older kernels.  Because the kernel keeps waking up
    the event loop without setting POLLOUT and because the read calls EOF
    but don't error, libuv's I/O state machine doesn't progress.

    That's why this commit changes uv__stream_io() to also write pending
    data.  While the read() system call doesn't error, the write() system
    call will.

    Fixes joyent/node#5504.

commit 536c5f8661af4b57f8cc8be43bf482ae27a9fcd8
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat Jun 8 03:14:32 2013 +0200

    unix: clear UV_STREAM_SHUTTING after shutdown()

    Fix a state machine buglet where the UV_STREAM_SHUTTING flag didn't get
    cleared.

commit 3ab354367b2ff16a5ade1b585fdf7e10599084d3
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri Jun 7 11:28:31 2013 +0200

    unix: remove overzealous assert

    Several node.js users are hitting this assert under what appear to be
    mostly benign conditions. In other words, it's unclear whether it's
    catching real bugs or just has wrong expectations.

    An aborting process is rather disruptive so I'm removing the assert
    from the stable branch and relanding it in the master branch.

commit f84becc64ea3f4653a2ee95319dab0aeee7c4044
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Thu Jun 6 10:48:24 2013 -0700

    build: make HAVE_DTRACE=0 should disable dtrace

commit c8ffee3460a1b507bbc7f5f83e4e09e4a769db76
Author: Brian White <mscdex@mscdex.net>
Date:   Fri May 31 18:37:45 2013 -0400

    freebsd: don't enable dtrace if it's not available

commit 8e4b248ca6cf66367476624899442974d17092f0
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed Jun 5 15:01:34 2013 +0200

    unix: unconditionally stop handle on close

    Make sure the handle is fully stopped by the time uv__stream_close()
    calls uv_read_stop(). Fixes the following assertion:

        Assertion failed: (!uv__io_active(&stream->io_watcher, UV__POLLOUT)
        || !ngx_queue_empty(&stream->write_completed_queue)
        || !ngx_queue_empty(&stream->write_queue)
        || stream->shutdown_req != NULL
        || stream->connect_req != NULL), function uv_read_stop,
        file ../deps/uv/src/unix/stream.c, line 1329.

    Fixes joyent/node#5622.

commit e9ae62d13a38b89fee60ed502307530bc2b8f520
Author: isaacs <i@izs.me>
Date:   Tue Jun 4 12:00:31 2013 -0700

    Now working on v0.10.11

commit 0d95a88bd35fce93863c57a460be613aea34d2c5
Author: isaacs <i@izs.me>
Date:   Tue Jun 4 12:00:29 2013 -0700

    2013.06.05, Version 0.10.10 (Stable)

    Changes since version 0.10.9:

    * include: document uv_update_time() and uv_now() (Ben Noordhuis)

    * linux: fix cpu model parsing on newer arm kernels (Ben Noordhuis)

    * linux: fix memory leak in uv_cpu_info() error path (Ben Noordhuis)

    * linux: don't ignore OOM errors in uv_cpu_info() (Ben Noordhuis)

    * unix, windows: move uv_now() to uv-common.c (Ben Noordhuis)

    * darwin: make uv_fs_sendfile() respect length param (Wynn Wilkes)

commit b9eb402fb047b9c10c9395ea555d22bc869a5901
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 30 22:54:44 2013 +0200

    include: remove lame comment from uv.h

commit b4c658c3c0e650590cc0496833fead4f29deea75
Author: Wynn Wilkes <wynnw@movenetworks.com>
Date:   Wed May 29 12:13:34 2013 -0600

    darwin: make uv_fs_sendfile() respect length param

    The darwin sendfile implementation uses the &len parameter as input
    and output. The code was sending 0 (not using the value of req->len)
    so the behavior wasn't what the caller was expecting.

    This makes sure to initialize len with req->len to ensure that the
    caller can send portions of a file (not always everything to the
    end of the file).

commit 081f7018ecc1c66a76f76c4b5cacb327820674b9
Author: Bert Belder <bertbelder@gmail.com>
Date:   Wed May 29 18:32:25 2013 +0300

    test: use c-style comments

    Fixes a compilation problem on OS X caused by the use of c++-style
    comments in test-osx-select.c.

commit e0bdb3dbc916d8311538de2b783c53e9739bf652
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 16:13:34 2013 +0200

    unix, windows: move uv_now() to uv-common.c

commit b93cf8b594b5eaf4617174e674961fd3db3fb0c6
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 01:37:36 2013 +0200

    linux: don't ignore OOM errors in uv_cpu_info()

commit 31282a97e70b24df7ebe4692967fee2a48aa2096
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 01:25:37 2013 +0200

    linux: fix memory leak in uv_cpu_info() error path

    Any memory allocated to hold CPU model strings wasn't freed on error.

commit 92c72f58bf59ee51a1680dd52b0e91a0ccae485d
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 29 00:24:02 2013 +0200

    linux: fix cpu model parsing on newer arm kernels

    The format of /proc/cpuinfo on ARM kernels >= 3.8 has changed. Scan for
    the string "model name" (like x86) first, "Processor" second.

    Fixes #812.

commit dfff2e9e2336ac7b89234c3f7744a73fc6560bb1
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Tue May 28 23:20:35 2013 +0200

    include: document uv_update_time() and uv_now()

commit 21c12b824a07be22a24547904b50ff022db11dd7
Author: isaacs <i@izs.me>
Date:   Tue May 28 12:08:49 2013 -0700

    Now working on v0.10.10

commit a195f9ace23d92345baf57582678bfc3017e6632
Author: isaacs <i@izs.me>
Date:   Tue May 28 12:08:46 2013 -0700

    2013.05.29, Version 0.10.9 (Stable)

    Changes since version 0.10.8:

    * unix: fix stream refcounting buglet (Ben Noordhuis)

    * unix: remove erroneous asserts (Ben Noordhuis)

    * unix: add uv__is_closing() macro (Ben Noordhuis)

    * unix: stop stream POLLOUT watcher on write error (Ben Noordhuis)

commit b329d51ef4ce32f34c21a016a7c311ddeb077878
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 26 23:44:55 2013 +0200

    unix: stop stream POLLOUT watcher on write error

    The node.js test suite sometimes hits the assert that was added in
    commit 4146805 that checks if there are connect, write or shutdown
    requests pending when the user calls uv_read_stop() while the stream
    is primed for writing.

    The libuv user (i.e. node.js) is supposed to close the stream on error.
    Because uv__stream_close() calls uv_read_stop(), it's possible that the
    POLLOUT watcher is still active.

commit 8e16f8e0564a7b853c2cb0f92572e7959c6cadae
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 26 23:02:17 2013 +0200

    unix: add uv__is_closing() macro

commit b38c9c1004993ca4f642629f5af1b7b09bbc6887
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sat May 25 02:36:45 2013 +0200

    unix: remove erroneous asserts

    As of commit c53fe81, it's legal for write_queue_size > 0 when the
    write_queue itself is empty. Sounds illogical but it means there are
    error-state write requests in the write_completed_queue that will touch
    up the write_queue_size on the next tick of the event loop.

    Remove a few stray asserts that still checked for the old situation.

commit 636a13b8c46c52413e1da1795a952bfc738f3c55
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:16:00 2013 +0200

    unix: fix stream refcounting buglet

    Fix a buglet where uv_read_stop() would mark the handle as stopped even
    when there are in-progress write requests.

    This bug is unlikely to have affected anyone, the only case where it
    has a user-visible effect is when:

      a) the handle has been stopped for reading but not writing, and
      b) it's the last active handle in the event loop's pollset

    If both conditions are met, it's possible for the event loop to
    terminate prematurely.

    This reapplies commit 80f2f82 which was temporarily reverted in fe7b154
    because it was making a lot of node.js tests fail on OS X with the
    following assertion:

        Assertion failed: (!uv__is_active(handle)), function
        uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165.

    Expecting that the handle is inactive when the state is UV_CLOSING
    turns out to be a bad assumption: it's possible that the handle is
    executing (for example) a shutdown request when uv__finish_close()
    is called. That's okay, uv__stream_destroy() takes care of that.

    The issue wasn't specific to OS X, it was just more visible on that
    platform. (Slow) debug builds on Linux exhibited the same behavior.

commit 7d5024e7e6564c36b99af39db075b0c9d75797f9
Author: isaacs <i@izs.me>
Date:   Fri May 24 14:37:56 2013 -0700

    Now working on v0.10.9

commit 0f39be12926fe2d8766a9f025797a473003e6504
Author: isaacs <i@izs.me>
Date:   Fri May 24 14:37:53 2013 -0700

    2013.05.25, Version 0.10.8 (Stable)

    Changes since version 0.10.7:

    * windows: make uv_spawn not fail under job control (Bert Belder)

    * darwin: assume CFRunLoopStop() isn't thread-safe (Fedor Indutny)

    * win: fix UV_EALREADY incorrectly set (Bert Belder)

    * darwin: make two uv__cf_*() functions static (Ben Noordhuis)

    * darwin: task_info() cannot fail (Ben Noordhuis)

    * unix: add mapping for ENETDOWN (Ben Noordhuis)

    * unix: implicitly signal write errors to libuv user (Ben Noordhuis)

    * unix: fix assert on signal pipe overflow (Bert Belder)

    * unix: turn off POLLOUT after stream connect (Ben Noordhuis)

commit fe7b154476145ebc69ab70d3ca1d195116a00065
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri May 24 21:23:09 2013 +0200

    Revert "unix: fix stream refcounting buglet"

    This change is making 45 out of 527 node.js tests fail on OS X with the
    following assertion:

        Assertion failed: (!uv__is_active(handle)), function
        uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165.

    It's likely a manifestation of a bug elsewhere but, because there's a
    new node.js release going out tonight, I'm reverting it for now.

    This reverts commit 80f2f826bf90b84e659321c0b7fd8af419acb85e.

    Conflicts:
    	src/unix/stream.c

commit 41468050745bc135247f587eae1c38e958fd8377
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:37:36 2013 +0200

    unix: turn off POLLOUT after stream connect

    Clear the POLLOUT flag after we're done connecting. Not doing so isn't
    really harmful but it may cause the event loop to wake up more often
    than it has to.

commit 80f2f826bf90b84e659321c0b7fd8af419acb85e
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 23 07:16:00 2013 +0200

    unix: fix stream refcounting buglet

    Fix a buglet where uv_read_stop() would mark the handle as stopped even
    when there are in-progress write requests.

    This bug is unlikely to have affected anyone, the only case where it
    has a user-visible effect is when:

      a) the handle has been stopped for reading but not writing, and
      b) it's the last active handle in the event loop's pollset

    If both conditions are met, it's possible for the event loop to
    terminate prematurely.

commit c5d570ddba7b3e95fdade96758df0eb2d24cf42f
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 23 14:44:45 2013 +0200

    unix: fix assert on signal pipe overflow

    An incorrect assert() statement was causing libuv to crash when writing
    to an internal signal pipe would result in EAGAIN/EWOULDBLOCK.

    This commit doesn't solve the underlying issue that the signal pipe can
    overflow.

    This should fix joyent/node#5538

commit c53fe815442559fe58f362279bdc63f5483d6fdb
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Wed May 22 16:41:52 2013 +0200

    unix: implicitly signal write errors to libuv user

    Fix an infinite loop in the example below when the stream encounters
    an EPIPE/ECONNRESET/etc. error:

        // keep writing until we start buffering
        while (stream->write_queue_size == 0) {
          uv_write_t* req = make_write_req();
          uv_buf_t buf = uv_buf_init("PING", 4);
          uv_write(req, stream, &buf, 1, write_cb);
        }

    uv_write() does not return an error code on write errors, the error is
    only reported to the callback.

    Before this commit, uv_write() left stream->write_queue_size untouched
    on error, meaning the caller had no way to find out about that error
    until the next tick of the event loop - which in the example above
    leads to an infinite loop because that next tick is indefinitely
    postponed.

    This commit works around that at the cost of some added internal
    complexity.

    Fixes joyent/node#5516.

commit 739a5b25b5704d526a46a953da8b9b8db31770d4
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 20 20:04:45 2013 +0200

    unix: add mapping for ENETDOWN

commit a1cb52a3ebe13f8e26a48e194e595e95c677de30
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 20 14:35:10 2013 +0200

    darwin: task_info() cannot fail

    And if it does: assert, don't return errno. It's a mach function, it
    doesn't set errno.

commit e515d71592afe66ddecd6bf2b1409848811cf7ff
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Fri May 17 14:42:14 2013 +0200

    darwin: make two uv__cf_*() functions static

commit db7dc6899d9badcfb99016ba87da2a66eae86dad
Author: Bert Belder <bertbelder@gmail.com>
Date:   Sat May 18 20:45:36 2013 +0200

    win: fix UV_EALREADY incorrectly set

    UV_EALREADY itself is already a libuv error, it should be set with
    uv__set_artifical_error and not with uv__set_sys_error.

    Closes #802

commit d5fa633ef22bd40c81af85dd2ee3882cce3c91c4
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Fri May 17 20:31:39 2013 +0400

    darwin: assume CFRunLoopStop() isn't thread-safe

    Use signaling mechanism for loop termination, because CFRunLoopStop() is
    most likely not a thread-safe function and invoking it from other thread
    may sometimes result in a "dead-lock".

    fix #799

commit 4f61ab2058c9baffa01d9c865a376ed8d3c65820
Author: Bert Belder <bertbelder@gmail.com>
Date:   Thu May 16 21:29:40 2013 +0200

    windows: make uv_spawn not fail under job control

    * Fix a potential issue introduced with 415f4d3, namely that uv_spawn
      can fail when the current process is under job control. This would
      happen on Windows versions that don't support nested jobs (versions
      prior to Windows 8 / Server 2012).

    * Change the `uv__init_global_job_handle` function signature to match
      what `uv_once` expects.

    * Add a bunch of comments that clarify how we're using job control,
      and how we're dealing with job control that might be established by
      our parent process.

commit 13496e9c1ab905af0c43a3dda7bdec7dca73d1b3
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:50:22 2013 -0700

    Now working on v0.10.8

commit 028baaf0846b686a81e992cb2f2f5a9b8e841fcf
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:50:19 2013 -0700

    2013.05.15, Version 0.10.7 (Stable)

    Changes since version 0.10.6:

    * windows: kill child processes when the parent dies (Bert Belder)

commit 415f4d3e4c7ac25abf723eed3f5b40e63e045785
Author: Bert Belder <bertbelder@gmail.com>
Date:   Tue May 14 16:48:03 2013 -0700

    windows: kill child processes when the parent dies

    This makes Windows behave just like Unix. This does not affect
    processes that are spawned with the UV_PROCESS_DETACHED flag set.

commit 1fd10deec4de70ec3c13765948ec2726a0023c23
Author: isaacs <i@izs.me>
Date:   Tue May 14 14:40:01 2013 -0700

    Now working on v0.10.7

commit 11e6613e6260d95c8cf11bf89a2759c24649319a
Author: isaacs <i@izs.me>
Date:   Tue May 14 14:39:58 2013 -0700

    2013.05.15, Version 0.10.6 (Stable)

    Changes since version 0.10.5:

    * stream: fix osx select hack (Fedor Indutny)

    * stream: fix small nit in select hack, add test (Fedor Indutny)

    * build: link with libkvm on openbsd (Ben Noordhuis)

    * stream: use harder sync restrictions for osx-hack (Fedor Indutny)

    * unix: fix EMFILE error handling (Ben Noordhuis)

    * darwin: fix unnecessary include headers (Daisuke Murase)

    * darwin: rename darwin-getproctitle.m (Ben Noordhuis)

    * build: convert predefined $PLATFORM to lower case (Elliot Saba)

    * build: set soname in shared library (Ben Noordhuis)

    * build: make `make test` link against .a again (Ben Noordhuis)

    * darwin: fix ios build, don't require ApplicationServices (Ben
      Noordhuis)

    * build: only set soname on shared object builds (Timothy J. Fontaine)

commit 0564ee4a66956df1f3e0294e02296158e984d728
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Wed Apr 17 00:33:25 2013 +0200

    test, sunos: disable process_title test

    Disable unit test failing due to missing implementation
    of uv_(set|get)_process_title for Sun OS (SmartOS).

    Based on discussion with @tjfontaine, such implementation is difficult
    if possible at all and it won't be done anytime soon. Thus there is
    no point in keeping the failing test around.

commit 55c150abfc11ad6c23674c196ed914db0f942224
Author: Timothy J Fontaine <tjfontaine@gmail.com>
Date:   Mon May 13 15:48:32 2013 -0700

    build: only set soname on shared object builds

commit f22163c233d4a9dedfe38ebb18a1a414cd25ba62
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Mon May 13 20:06:25 2013 +0200

    darwin: fix ios build, don't require ApplicationServices

commit a11d16d8f5888aee56f129ddbd54c6130a881d2c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 12 16:42:30 2013 +0200

    build: make `make test` link against .a again

    Commit 3eb6eb3 links the .so with -Wl,-soname which breaks the
    `make test` target: run-tests is linked against (for example)
    libuv.so.0.11 while the actual file name is libuv.so.

    That's relatively easy to fix by getting creative with rpaths but it's
    even easier to fix by simply linking statically.

    It also means I no longer have to remember to set LD_BIND_NOW when
    profiling the benchmarks.

commit 3eb6eb35ccf1aedbd2297c98b73df3cb81215e3a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Sun May 12 14:48:58 2013 +0200

    build: set soname in shared library

commit 96a2df80846af3769f6c0d432cae2c5963c51e2e
Author: Elliot Saba <staticfloat@gmail.com>
Date:   Sat May 11 14:48:52 2013 -0700

    build: convert predefined $PLATFORM to lower case

commit fe2a3150c0244759154c4cc472af12eca79df8a8
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Mon Apr 15 21:03:05 2013 +0200

    test: add error logging to tty unit test

commit af6e865a076af031213f9afc488c28306d6bc3d2
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Mon Apr 15 20:36:56 2013 +0200

    test: fix process_title failing on linux

    Shorten the test string from 40 to 38 characters because the title
    length is limited to 39 characters.

    Truncation of long titles was introduced intentionally by commit
    a0c1d84 (see discussion in joyent/node#5006).

commit 2c21050956206b5e7962e86f4bdbaade1a44b6ae
Author: Miroslav Bajtoš <miro.bajtos@gmail.com>
Date:   Sat Apr 20 06:43:31 2013 +0200

    test: add RETURN_SKIP and RETURN_TODO macros

    Added two new flags to identify tests that are intentionally ignored
    (usually because we don't want to implement the tested functionality
    on current platform) and test serving as TODO list (usually indicating
    that the tested functionality should be implemented on current plaform
    in the near future.)

commit 9b801d551b70bd4b19e1b29fd3a257bec8051842
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date:   Thu May 2 13:59:18 2013 +0200

    darwin: rename darwin-getproctitle.m

    Rename it to darwin-getproctitle.c, it doesn't need an Objective-C
    compiler. Fix up -Wpedantic warnings about void to function pointer
    casts and include <ApplicationServices/ApplicationServices.h> to get
    the GetCurrentProcess() function prototype.

commit 4b0fac89907380a62c7acc15303a39839f05e011
Author: Daisuke Murase <typester@cpan.org>
Date:   Thu May 2 10:06:03 2013 +0900

    darwin: fix unnecessary include headers

    This file doesn't use any Cocoa functions, CoreFoundation.h is enough here.
    This line causes compilation error on iO…
d975d28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment