In Windows the callbacks arrive in slightly different order. A bunch
of write operations complete immediately, and after that there is a
gap of a few hundred ms. This causes the timeout timer to fire, which
is not really warranted; the first few write operations just finished a
little quicker than expected.
* Roll V8 back to 3.9.24.31
* build: x64 target should always pass -m64 (Robert Mustacchi)
* add NODE_EXTERN to node::Start (Joel Brandt)
* repl: Warn about running npm commands (isaacs)
* slab_allocator: fix crash in dtor if V8 is dead (Ben Noordhuis)
* slab_allocator: fix leak of Persistent handles (Shigeki Ohtsu)
* windows/msi: add node.js prompt to startmenu (Jeroen Janssen)
* windows/msi: fix adding node to PATH (Jeroen Janssen)
* windows/msi: add start menu links when installing (Jeroen Janssen)
* windows: don't install x64 version into the 'program files (x86)' folder (Matt Gollob)
* domain: Fix#3379 domain.intercept no longer passes error arg to cb (Marc Harter)
* fs: make callbacks run in global context (Ben Noordhuis)
* fs: enable fs.realpath on windows (isaacs)
* child_process: expose UV_PROCESS_DETACHED as options.detached (Charlie McConnell)
* child_process: new stdio API for .spawn() method (Fedor Indutny)
* child_process: spawn().ref() and spawn().unref() (Fedor Indutny)
* Upgrade npm to 1.1.25
- Enable npm link on windows
- Properly remove sh-shim on Windows
- Abstract out registry client and logger
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.
In the long run it would be good for node to send all build
output to ./build too, on all platforms.
Conflicts:
deps/v8/build/common.gypi
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
Callbacks that were passed to the binding layer ran in the context of the
(internal) binding object. Make sure they run in the global context.
Before:
fs.symlink('a', 'b', function() {
console.log(this); // prints "{ oncomplete: [Function] }"
});
After:
fs.symlink('a', 'b', function() {
console.log(this); // prints "{ <global object> }"
});