- May 03, 2014
-
-
Fedor Indutny authored
Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
Fedor Indutny authored
Original text: Fix corner case in x64 compare stubs. BUG=v8:2416 Review URL: https://codereview.chromium.org/11413087 fix #7528
-
- May 02, 2014
-
-
Timothy J Fontaine authored
-
Timothy J Fontaine authored
-
Timothy J Fontaine authored
* npm: upgrade to v1.4.9
-
isaacs authored
* Send referer header (with any potentially private stuff redacted) * Fix critical typo bug in previous npm release
-
Timothy J Fontaine authored
-
Timothy J Fontaine authored
-
Timothy J Fontaine authored
* npm: upgrade to v1.4.8 * openssl: upgrade to 1.0.1g * uv: update to v0.10.27 * dns: fix certain txt entries (Fedor Indutny) * assert: Ensure reflexivity of deepEqual (Mike Pennisi) * child_process: fix deadlock when sending handles (Fedor Indutny) * child_process: fix sending handle twice (Fedor Indutny) * crypto: do not lowercase cipher/hash names (Fedor Indutny) * dtrace: workaround linker bug on FreeBSD (Fedor Indutny) * http: do not emit EOF non-readable socket (Fedor Indutny) * http: invoke createConnection when no agent (Nathan Rajlich) * stream: remove useless check (Brian White) * timer: don't reschedule timer bucket in a domain (Greg Brail) * url: treat the same as / (isaacs) * util: format as Error if instanceof Error (Rod Vagg)
-
isaacs authored
* Check SHA before using files from cache * adduser: allow change of the saved password * Make `npm install` respect `config.unicode` * Fix lifecycle to pass `Infinity` for config env value * Don't return 0 exit code on invalid command * cache: Handle 404s and other HTTP errors as errors * bump tap dep, make tests stderr a bit quieter * Resolve ~ in path configs to env.HOME * Include npm version in default user-agent conf * npm init: Use ISC as default license, use save-prefix for deps * Many test and doc fixes
-
Timothy J Fontaine authored
-
- Apr 29, 2014
-
-
Forrest L Norvell authored
Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
- Apr 28, 2014
-
-
Ben Noordhuis authored
Commit f9ced08d switches V8 on Linux over from gettimeofday() to clock_getres() and clock_gettime(). As of glibc 2.17, those functions live in libc. For older versions, we need to pull them in from librt. Fixes the following link-time error; Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o): In function `v8::internal::OS::Ticks()': platform-posix.cc:(.text+0x93c): undefined reference to `clock_gettime' platform-posix.cc:(.text+0x989): undefined reference to `clock_getres' Fixes #7514. Signed-off-by:
Fedor Indutny <fedor@indutny.com>
-
- Apr 26, 2014
-
-
Rod Vagg authored
Conflicts: lib/util.js test/simple/test-util-format.js This is a backport to fix #7253 Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
- Apr 25, 2014
-
-
Ben Noordhuis authored
Date.now() indirectly calls gettimeofday() on Linux and that's a system call that is extremely expensive on virtualized systems when the host operating system has to emulate access to the hardware clock. Case in point: output from `perf record -c 10000 -e cycles:u -g -i` for a benchmark/http_simple bytes/8 benchmark with a light load of 50 concurrent clients: 53.69% node node [.] v8::internal::OS::TimeCurrentMillis() | --- v8::internal::OS::TimeCurrentMillis() | |--99.77%-- v8::internal::Runtime_DateCurrentTime(v8::internal::Arguments, v8::internal::Isolate*) | 0x23587880618e That's right - over half of user time spent inside the V8 function that calls gettimeofday(). Notably, nearly all system time gets attributed to acpi_pm_read(), the kernel function that reads the ACPI power management timer: 32.49% node [kernel.kallsyms] [k] acpi_pm_read | --- acpi_pm_read | |--98.40%-- __getnstimeofday | getnstimeofday | | | |--71.61%-- do_gettimeofday | | sys_gettimeofday | | system_call_fastpath | | 0x7fffbbaf6dbc | | | | | |--98.72%-- v8::internal::OS::TimeCurrentMillis() The cost of the gettimeofday() system call is normally measured in nanoseconds but we were seeing 100 us averages and spikes >= 1000 us. The numbers were so bad, my initial hunch was that the node process was continuously getting rescheduled inside the system call... v8::internal::OS::TimeCurrentMillis()'s most frequent caller is v8::internal::Runtime_DateCurrentTime(), the V8 run-time function that's behind Date.now(). The timeout handling logic in lib/http.js and lib/net.js calls into lib/timers.js and that module will happily call Date.now() hundreds or even thousands of times per second. If you saw exports._unrefActive() show up in --prof output a lot, now you know why. That's why this commit makes V8 switch over to clock_gettime() on Linux. In particular, it checks if CLOCK_REALTIME_COARSE is available and has a resolution <= 1 ms because in that case the clock_gettime() call can be fully serviced from the vDSO. It speeds up the aforementioned benchmark by about 100% on the affected systems and should go a long way toward addressing the latency issues that StrongLoop customers have been reporting. This patch will be upstreamed as a CR against V8 3.26. I'm sending it as a pull request for v0.10 first because that's what our users are running and because the delta between 3.26 and 3.14 is too big to reasonably back-port the patch. I'll open a pull request for the master branch once the CR lands upstream. Signed-off-by:Trevor Norris <trev.norris@gmail.com> Signed-off-by:
Fedor Indutny <fedor@indutny.com>
-
- Apr 24, 2014
-
-
Julian Gruber authored
Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
Julian Gruber authored
Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
Fedor Indutny authored
This reverts commit 896e1933. Proper handling of TXT records requires API change, we can't afford it in v0.10. See #7371 for details.
-
- Apr 16, 2014
-
-
isaacs authored
* isaacs, Robert Kowalski, Benjamin Coe: Test Improvements * isaacs doc: Add canonical url * isaacs view: handle unpublished packages properly * Raynos (Jake Verbaten) do not log if silent * Julian Gruber fix no such property error * isaacs npmconf@0.1.14 * Thorsten Lorenz adding save-prefix configuration option * isaacs npm-registry-client@0.4.7 * isaacs cache: treat missing versions as a 404 * isaacs cache: Save shasum, write resolved/etc data to cache * isaacs cache: Always fetch root doc * isaacs cache: don't repack unnecessarily from tmp * Andrey Kislyuk Don't crash if shrinkwrap-dependencies were not passed in pkginfo * Robert Kowalski fix link in faq * Jean Lauliac Add a peerDependencies section in package.json doc * isaacs read-installed@2.0.2
-
isaacs authored
See https://code.google.com/p/chromium/issues/detail?id=25916 Parse URLs with backslashes the same as web browsers, by replacing all backslashes with forward slashes, except those that occur after the first # character.
-
- Apr 15, 2014
-
-
Fedor Indutny authored
Fix possible deadlock, when handles are sent in both direction simultaneously. In such rare cases, both sides may queue their `NODE_HANDLE_ACK` replies and wait for them. fix #7465
-
- Apr 11, 2014
-
-
William Bert authored
Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
Timothy J Fontaine authored
`process.uptime()` interface will return the amount of time the current process has been running. To achieve this it was caching the `uv_uptime` value at program start, and then on the call to `process.uptime()` returning the delta between the two values. `uv_uptime` is defined as the number of seconds the operating system has been up since last boot. On sunos this interface uses `kstat`s which can be a significantly expensive operation as it requires exclusive access, but because of the design of `process.uptime()` node *had* to always call this on start. As a result if you had many node processes all starting at the same time you would suffer lock contention as they all tried to read kstats. Instead of using `uv_uptime` to achieve this, the libuv loop already has a concept of current loop time in the form of `uv_now()` which is in fact monotonically increasing, and already stored directly on the loop. By using this value at start every platform performs at least one fewer syscall during initialization. Since the interface to `uv_uptime` is defined as seconds, in the call to `process.uptime()` we now `uv_update_time` get our delta, divide by 1000 to get seconds, and then convert to an `Integer`. In 0.12 we can move back to `Number::New` instead and not lose precision. Caveat: For some platforms `uv_uptime` reports time monotonically increasing regardless of system hibernation, `uv_now` interface is also monotonically increasing but may not reflect time spent in hibernation.
-
- Apr 09, 2014
-
-
Timothy J Fontaine authored
-
- Apr 08, 2014
-
-
Fedor Indutny authored
-
Fedor Indutny authored
Socket may become not `readable`, but http should not rely on this property and should not think that it means that no data will ever arrive from it. In fact, it may arrive in a next tick and, since `this.push(null)` was already called, it will result in a error like this: Error: stream.push() after EOF at readableAddChunk (_stream_readable.js:143:15) at IncomingMessage.Readable.push (_stream_readable.js:123:10) at HTTPParser.parserOnBody (_http_common.js:132:22) at Socket.socketOnData (_http_client.js:277:20) at Socket.EventEmitter.emit (events.js:101:17) at Socket.Readable.read (_stream_readable.js:367:10) at Socket.socketCloseListener (_http_client.js:196:10) at Socket.EventEmitter.emit (events.js:123:20) at TCP.close (net.js:479:12) fix #6784
-
- Apr 07, 2014
-
-
Brian White authored
Signed-off-by:Fedor Indutny <fedor@indutny.com>
-
- Apr 02, 2014
-
-
Dominic Tarr authored
when a pfx file is passed to tls.connection, it is the client private key, not the server's private key.
-
- Mar 31, 2014
-
-
Goh Yisheng (Andrew) authored
-
- Mar 28, 2014
-
-
Josh Dague authored
Previously the build artifacts did not include a signed timestamp, so when the certificate expired the validation of the artifact would fail. Now we sign against a timestamp server such that the artifact will always be valid regardless of the disposition of the certificate. Closes #7360 and #7059.
-
- Mar 26, 2014
-
-
Ben Noordhuis authored
Ensure that OpenSSL has enough entropy (at least 256 bits) for its PRNG. The entropy pool starts out empty and needs to fill up before the PRNG can be used securely. OpenSSL normally fills the pool automatically but not when someone starts generating random numbers before the pool is full: in that case OpenSSL keeps lowering the entropy estimate to thwart attackers trying to guess the initial state of the PRNG. When that happens, we wait until enough entropy is available, something that normally should never take longer than a few milliseconds. Fixes #7338.
-
Ben Noordhuis authored
The default entropy source is /dev/urandom on UNIX platforms, which is okay but we can do better by seeding it from OpenSSL's entropy pool. On Windows we can certainly do better; on that platform, V8 seeds the random number generator using only the current system time. Fixes #6250. NB: This is a back-port of commit 7ac23910 from the master branch that for some reason never got back-ported to the v0.10 branch. The default on UNIX platforms in v0.10 is different and arguably worse than it is with master: if no entropy source is provided, V8 3.14 calls srandom() with a xor of the PID and the current time in microseconds. That means that on systems with a coarse system clock, the initial state of the PRNG may be easily guessable. The situation on Windows is even more dire because there the PRNG is seeded with only the current time... in milliseconds.
-
isaacs authored
* Documentation upgrades * Fix glob bug which prevents proper README publishing * node-gyp upgrade to 0.13 * Documentation updates * Add --save-exact to save an exact dep (instead of a range) * alias 't' to 'test'
-
- Mar 24, 2014
-
-
Ben Noordhuis authored
Turn off -Werror when building V8, it hits -Werror=unused-local-typedefs with g++ 4.8. The warning itself is harmless so don't abort the build. This was originally implemented in commit d2ab314e back in 2011 but the build process has gone through a few iterations since then, that change no longer works.
-
- Mar 11, 2014
-
-
Shuhei Kagawa authored
The argument of process.stdin's readable event handler is not used.
-
Fedor Indutny authored
`crypto.getCiphers()` and `crypto.getHashes()` should prefer lower-case variants of names, but should not introduce them. fix #7282
-
- Mar 07, 2014
-
-
Ben Noordhuis authored
Fix the following valgrind warning: Conditional jump or move depends on uninitialised value(s) at 0x7D64E7: v8::internal::GlobalHandles::IterateAllRootsWithClassIds(v8::internal::ObjectVisitor*) (global-handles.cc:613) by 0x94DCDC: v8::internal::NativeObjectsExplorer::FillRetainedObjects() (profile-generator.cc:2849) # etc. This was fixed upstream in r12903 and released in 3.15.2 but that commit was never back-ported to the 3.14 branch that node.js v0.10 uses. The code itself works okay; this commit simply shuffles the clauses in an `if` statement to check that the node is in use before checking its class id (which is uninitialized if the node is not in use.)
-
- Mar 06, 2014
-
-
Fedor Indutny authored
When sending a socket to a child process via IPC pipe, `child_process.js` picks a raw UV handle from `_handle` property, sends it, and assigns `null` to the property. Sending the same socket twice was resulting in a runtime error, since we weren't handling the empty `_handle` case. In case of `null` `_handle` we should send just a plain text message as passed it was passed to `.send()` and ignore the handle, letting users handle such cases themselves instead of throwing the error at runtime. fix #5469
-
Benoit Vallée authored
Added test-cluster-send-handle-twice.js testing to send a handle twice to the parent process.
-
- Mar 05, 2014
-
-
Ben Noordhuis authored
It's currently not really possible to compile native add-ons with -fvisibility=hidden because that also hides the struct containing the module definition. The NODE_MODULE() and NODE_MODULE_DECL() macros are structured in a way that makes it impossible to add a visibility attribute manually so there is no escape hatch there. That's why this commit adds an explicit visibility attribute to the module definition. It doesn't help with node.js releases that are already out there but at least it improves the situation going forward.
-