Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nodejs/node-v0.x-archive
base: d1fe6857ba40
Choose a base ref
...
head repository: nodejs/node-v0.x-archive
compare: b19b60a05c30
Choose a head ref
  • 16 commits
  • 294 files changed
  • 9 contributors

Commits on Apr 8, 2014

  1. Copy the full SHA
    af69f88 View commit details
    Browse the repository at this point in the history

Commits on Apr 10, 2014

  1. src: use monotonic time for process.uptime()

    `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.
    tjfontaine committed Apr 10, 2014
    Copy the full SHA
    632c135 View commit details
    Browse the repository at this point in the history
  2. docs: fix links to streams

    Signed-off-by: Fedor Indutny <fedor@indutny.com>
    sandinmyjoints authored and indutny committed Apr 10, 2014
    Copy the full SHA
    bfb7de5 View commit details
    Browse the repository at this point in the history

Commits on Apr 14, 2014

  1. child_process: fix deadlock when sending handles

    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
    indutny committed Apr 14, 2014
    Copy the full SHA
    1bd4f3a View commit details
    Browse the repository at this point in the history

Commits on Apr 15, 2014

  1. url: treat \ the same as /

    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.
    isaacs committed Apr 15, 2014
    Copy the full SHA
    9520ade View commit details
    Browse the repository at this point in the history
  2. npm: upgrade to 1.4.7

    * 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 committed Apr 15, 2014
    Copy the full SHA
    75bc11c View commit details
    Browse the repository at this point in the history

Commits on Apr 24, 2014

  1. Revert "deps: backport b5135bbc from c-ares repo"

    This reverts commit 896e193.
    
    Proper handling of TXT records requires API change, we can't afford it
    in v0.10.
    
    See #7371 for details.
    indutny committed Apr 24, 2014
    Copy the full SHA
    4601e7c View commit details
    Browse the repository at this point in the history
  2. doc: fix order in net api

    Signed-off-by: Fedor Indutny <fedor@indutny.com>
    juliangruber authored and indutny committed Apr 24, 2014
    Copy the full SHA
    b0fa931 View commit details
    Browse the repository at this point in the history
  3. doc: fix missing link in net api

    Signed-off-by: Fedor Indutny <fedor@indutny.com>
    juliangruber authored and indutny committed Apr 24, 2014
    Copy the full SHA
    0ee9956 View commit details
    Browse the repository at this point in the history
  4. deps: make v8 use CLOCK_REALTIME_COARSE

    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>
    Ben Noordhuis authored and trevnorris committed Apr 24, 2014
    Copy the full SHA
    f9ced08 View commit details
    Browse the repository at this point in the history

Commits on Apr 25, 2014

  1. util: format as Error if instanceof Error

    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>
    rvagg authored and indutny committed Apr 25, 2014
    Copy the full SHA
    250782d View commit details
    Browse the repository at this point in the history

Commits on Apr 28, 2014

  1. deps: fix v8 link error with glibc < 2.17

    Commit f9ced08 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>
    bnoordhuis authored and indutny committed Apr 28, 2014
    Copy the full SHA
    3f3a71e View commit details
    Browse the repository at this point in the history

Commits on Apr 29, 2014

  1. docs: add cautionary note to emitter.removeAllListeners

    Signed-off-by: Fedor Indutny <fedor@indutny.com>
    othiym23 authored and indutny committed Apr 29, 2014
    Copy the full SHA
    793c76e View commit details
    Browse the repository at this point in the history

Commits on May 1, 2014

  1. uv: update to v0.10.27

    tjfontaine committed May 1, 2014
    Copy the full SHA
    1038959 View commit details
    Browse the repository at this point in the history
  2. npm: upgrade to v1.4.8

    * 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
    isaacs committed May 1, 2014
    Copy the full SHA
    f76c393 View commit details
    Browse the repository at this point in the history
  3. Merge remote-tracking branch 'upstream/v0.10'

    Reverted 9520ade
    
    Conflicts:
    	deps/cares/src/ares_parse_txt_reply.c
    	deps/uv/.mailmap
    	deps/uv/AUTHORS
    	deps/uv/ChangeLog
    	deps/uv/include/uv.h
    	deps/uv/src/unix/error.c
    	deps/uv/src/unix/process.c
    	deps/uv/src/version.c
    	deps/uv/src/win/pipe.c
    	deps/uv/src/win/signal.c
    	deps/uv/src/win/util.c
    	deps/uv/test/test-spawn.c
    	deps/uv/vcbuild.bat
    	deps/v8/src/platform-posix.cc
    	deps/v8/tools/gyp/v8.gyp
    	lib/util.js
    	src/node.cc
    	test/simple/test-util-format.js
    	test/simple/test-util.js
    tjfontaine committed May 1, 2014
    Copy the full SHA
    b19b60a View commit details
    Browse the repository at this point in the history