platform/upstream/nodejs.git
11 years ago2013.02.07, Version 0.9.9 (Unstable) v0.9.9
isaacs [Thu, 7 Feb 2013 17:09:21 +0000 (09:09 -0800)]
2013.02.07, Version 0.9.9 (Unstable)

* tls: port CryptoStream to streams2 (Fedor Indutny)

* typed arrays: only share ArrayBuffer backing store (Ben Noordhuis)

* stream: make Writable#end() accept a callback function (Nathan Rajlich)

* buffer: optimize 'hex' handling (Ben Noordhuis)

* dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL (Ben Noordhuis)

* readline: treat bare \r as a line ending (isaacs)

* readline: make \r\n emit one 'line' event (Ben Noordhuis)

* cluster: support datagram sockets (Bert Belder)

* stream: Correct Transform class backpressure (isaacs)

* addon: Pass module object to NODE_MODULE init function (isaacs, Rod Vagg)

* buffer: slow buffer copy compatibility fix (Trevor Norris)

* Add bytesWritten to tls.CryptoStream (Andy Burke)

11 years agostream: Writable should ignore encoding for buffers
isaacs [Thu, 7 Feb 2013 16:50:18 +0000 (08:50 -0800)]
stream: Writable should ignore encoding for buffers

Fix #4727
Fix einaros/ws#159

11 years agoUpdate http docs with http.IncomingMessage.
Nikhil Marathe [Sat, 19 Jan 2013 23:49:30 +0000 (15:49 -0800)]
Update http docs with http.IncomingMessage.

http.ServerRequest and http.ClientResponse are merged into http.IncomingMessage
which has fields for both, and acts as a Readable Stream and EventEmitter.

Fixes #3851.

11 years agoMerge remote-tracking branch 'ry/v0.8' into master
isaacs [Thu, 7 Feb 2013 00:29:30 +0000 (16:29 -0800)]
Merge remote-tracking branch 'ry/v0.8' into master

Conflicts:
AUTHORS
ChangeLog
deps/npm/html/api/bin.html
deps/npm/html/api/bugs.html
deps/npm/html/api/commands.html
deps/npm/html/api/config.html
deps/npm/html/api/deprecate.html
deps/npm/html/api/docs.html
deps/npm/html/api/edit.html
deps/npm/html/api/explore.html
deps/npm/html/api/help-search.html
deps/npm/html/api/init.html
deps/npm/html/api/install.html
deps/npm/html/api/link.html
deps/npm/html/api/load.html
deps/npm/html/api/ls.html
deps/npm/html/api/npm.html
deps/npm/html/api/outdated.html
deps/npm/html/api/owner.html
deps/npm/html/api/pack.html
deps/npm/html/api/prefix.html
deps/npm/html/api/prune.html
deps/npm/html/api/publish.html
deps/npm/html/api/rebuild.html
deps/npm/html/api/restart.html
deps/npm/html/api/root.html
deps/npm/html/api/run-script.html
deps/npm/html/api/search.html
deps/npm/html/api/shrinkwrap.html
deps/npm/html/api/start.html
deps/npm/html/api/stop.html
deps/npm/html/api/submodule.html
deps/npm/html/api/tag.html
deps/npm/html/api/test.html
deps/npm/html/api/uninstall.html
deps/npm/html/api/unpublish.html
deps/npm/html/api/update.html
deps/npm/html/api/version.html
deps/npm/html/api/view.html
deps/npm/html/api/whoami.html
deps/npm/html/doc/README.html
deps/npm/html/doc/adduser.html
deps/npm/html/doc/bin.html
deps/npm/html/doc/bugs.html
deps/npm/html/doc/build.html
deps/npm/html/doc/bundle.html
deps/npm/html/doc/cache.html
deps/npm/html/doc/changelog.html
deps/npm/html/doc/coding-style.html
deps/npm/html/doc/completion.html
deps/npm/html/doc/config.html
deps/npm/html/doc/dedupe.html
deps/npm/html/doc/deprecate.html
deps/npm/html/doc/developers.html
deps/npm/html/doc/disputes.html
deps/npm/html/doc/docs.html
deps/npm/html/doc/edit.html
deps/npm/html/doc/explore.html
deps/npm/html/doc/faq.html
deps/npm/html/doc/folders.html
deps/npm/html/doc/global.html
deps/npm/html/doc/help-search.html
deps/npm/html/doc/help.html
deps/npm/html/doc/index.html
deps/npm/html/doc/init.html
deps/npm/html/doc/install.html
deps/npm/html/doc/json.html
deps/npm/html/doc/link.html
deps/npm/html/doc/ls.html
deps/npm/html/doc/npm.html
deps/npm/html/doc/outdated.html
deps/npm/html/doc/owner.html
deps/npm/html/doc/pack.html
deps/npm/html/doc/prefix.html
deps/npm/html/doc/prune.html
deps/npm/html/doc/publish.html
deps/npm/html/doc/rebuild.html
deps/npm/html/doc/registry.html
deps/npm/html/doc/removing-npm.html
deps/npm/html/doc/restart.html
deps/npm/html/doc/rm.html
deps/npm/html/doc/root.html
deps/npm/html/doc/run-script.html
deps/npm/html/doc/scripts.html
deps/npm/html/doc/search.html
deps/npm/html/doc/semver.html
deps/npm/html/doc/shrinkwrap.html
deps/npm/html/doc/star.html
deps/npm/html/doc/start.html
deps/npm/html/doc/stop.html
deps/npm/html/doc/submodule.html
deps/npm/html/doc/tag.html
deps/npm/html/doc/test.html
deps/npm/html/doc/uninstall.html
deps/npm/html/doc/unpublish.html
deps/npm/html/doc/update.html
deps/npm/html/doc/version.html
deps/npm/html/doc/view.html
deps/npm/html/doc/whoami.html
deps/npm/man/man1/global.1
deps/npm/man/man1/ls.1
deps/npm/man/man1/npm.1
deps/npm/man/man1/rm.1
deps/npm/man/man3/npm.3
deps/npm/node_modules/glob/glob.js
deps/npm/node_modules/glob/package.json
deps/npm/node_modules/node-gyp/package.json
deps/npm/node_modules/npm-registry-client/package.json
deps/npm/node_modules/npmconf/package.json
deps/npm/node_modules/read-installed/package.json
deps/npm/node_modules/rimraf/package.json
deps/npm/node_modules/rimraf/rimraf.js
deps/npm/package.json
deps/uv/src/win/error.c
doc/api/crypto.markdown
lib/zlib.js
src/node_version.h
src/node_zlib.cc
test/simple/test-buffer.js

11 years agotyped arrays: copy non-ArrayBuffer in DataView ctor
Ben Noordhuis [Wed, 6 Feb 2013 21:13:05 +0000 (22:13 +0100)]
typed arrays: copy non-ArrayBuffer in DataView ctor

This is commit 01ee551, except for the DataView type this time.

Make the behavior of DataView consistent with that of typed arrays:
make a copy of the backing store.

11 years agotls: port CryptoStream to streams2
Fedor Indutny [Thu, 31 Jan 2013 17:20:49 +0000 (21:20 +0400)]
tls: port CryptoStream to streams2

11 years agoblog: v0.8.19 release
isaacs [Wed, 6 Feb 2013 17:48:11 +0000 (09:48 -0800)]
blog: v0.8.19 release

11 years agoNow working on 0.8.20
isaacs [Wed, 6 Feb 2013 17:46:47 +0000 (09:46 -0800)]
Now working on 0.8.20

11 years agoMerge branch 'v0.8.19-release' into v0.8
isaacs [Wed, 6 Feb 2013 17:44:38 +0000 (09:44 -0800)]
Merge branch 'v0.8.19-release' into v0.8

11 years ago2013.02.06, Version 0.8.19 (Stable) v0.8.19
isaacs [Wed, 6 Feb 2013 16:46:14 +0000 (08:46 -0800)]
2013.02.06, Version 0.8.19 (Stable)

* npm: Upgrade to v1.2.10

* zlib: pass object size hint to V8 (Ben Noordhuis)

* zlib: reduce memory consumption, release early (Ben Noordhuis)

* buffer: slow buffer copy compatibility fix (Trevor Norris)

* zlib: don't assert on malformed dictionary (Ben Noordhuis)

* zlib: don't assert on missing dictionary (Ben Noordhuis)

* windows: better ipv6 support (Bert Belder)

* windows: add error mappings related to unsupported protocols (Bert Belder)

* windows: map ERROR_DIRECTORY to UV_ENOENT (Bert Belder)

11 years agonpm: Upgrade to v1.2.10
isaacs [Wed, 6 Feb 2013 16:39:27 +0000 (08:39 -0800)]
npm: Upgrade to v1.2.10

11 years agostreams: both `finish` and `close` should unpipe
Fedor Indutny [Wed, 6 Feb 2013 14:45:06 +0000 (18:45 +0400)]
streams: both `finish` and `close` should unpipe

Otherwise sockets that are 'finish'ed won't be unpiped and `writing to
ended stream` error will arise.

This might sound unrealistic, but it happens in net.js. When
`socket.allowHalfOpen === false`, EOF will cause `.destroySoon()` call which
ends the writable side of net.Socket.

11 years agotest: add cluster EADDRINUSE test
Ben Noordhuis [Wed, 6 Feb 2013 14:10:48 +0000 (15:10 +0100)]
test: add cluster EADDRINUSE test

Check that having a worker bind to a port that's already taken doesn't
leave the master process in a confused state. Releasing the port and
trying again should Just Work[TM].

11 years agotyped arrays: only share ArrayBuffer backing store
Ben Noordhuis [Tue, 5 Feb 2013 13:24:43 +0000 (14:24 +0100)]
typed arrays: only share ArrayBuffer backing store

Follow browser behavior, only share the backing store when it's a
ArrayBuffer. That is:

  var abuf = new ArrayBuffer(32);
  var a = new Int8Array(abuf);
  var b = new Int8Array(abuf);
  a[0] = 0;
  b[0] = 1;
  assert(a[0] === b[0]);  // a and b share memory

But:

  var a = new Int8Array(32);
  var b = new Int8Array(a);
  a[0] = 0;
  b[0] = 1;
  assert(a[0] !== b[0]);  // a and b don't share memory

The typed arrays spec allows both `a[0] === b[0]` and `a[0] !=== b[0]`
but Chrome and Firefox implement the behavior where memory is not
shared.

Copying the memory is less efficient but let's do it anyway for the
sake of the Principle of Least Surprise.

Fixes #4714.

11 years agov8: loosen artificial mmap constraint
Bryan Cantrill [Tue, 18 Sep 2012 22:35:29 +0000 (15:35 -0700)]
v8: loosen artificial mmap constraint

Fixes #4010.

11 years agostream: make Writable#end() accept a callback function
Nathan Rajlich [Tue, 5 Feb 2013 22:58:16 +0000 (14:58 -0800)]
stream: make Writable#end() accept a callback function

This is more backwards-compatible with stream1 streams like `fs.WriteStream`
which would allow a callback function to be passed in as the only argument.

Closes #4719.

11 years agoblog: remove dangling symlink
Ben Noordhuis [Tue, 5 Feb 2013 21:34:49 +0000 (22:34 +0100)]
blog: remove dangling symlink

Fixes #4716.

11 years agozlib: pass object size hint to V8
Ben Noordhuis [Tue, 30 Oct 2012 13:40:50 +0000 (14:40 +0100)]
zlib: pass object size hint to V8

Inform V8 that the zlib context object is tied to a large off-heap buffer.

This makes the GC run more often (in theory) and improves the accuracy of
--trace_external_memory.

11 years agozlib: reduce memory consumption, release early
Ben Noordhuis [Tue, 30 Oct 2012 00:19:01 +0000 (01:19 +0100)]
zlib: reduce memory consumption, release early

In zlibBuffer(), don't wait for the garbage collector to reclaim the zlib memory
but release it manually. Reduces memory consumption by a factor of 10 or more
with some workloads.

Test case:

  function f() {
    require('zlib').deflate('xxx', g);
  }
  function g() {
    setTimeout(f, 5);
  }
  f();

Observe RSS memory usage with and without this commit. After 10,000 iterations,
RSS stabilizes at ~35 MB with this commit. Without, RSS is over 300 MB and keeps
growing.

Cause: whenever the JS object heap hits the high-water mark, the V8 GC sweeps
it clean, then tries to grow it in order to avoid more sweeps in the near
future. Rule of thumb: the bigger the JS heap, the lazier the GC can be.

A side effect of a bigger heap is that objects now live longer. This is harmless
in general but it affects zlib context objects because those are tied to large
buffers that live outside the JS heap, on the order of 16K per context object.

Ergo, don't wait for the GC to reclaim the memory - it may take a long time.

Fixes #4172.

11 years agodoc: don't suggest to reuse net.Socket objects
Ben Noordhuis [Tue, 5 Feb 2013 11:47:23 +0000 (12:47 +0100)]
doc: don't suggest to reuse net.Socket objects

Using Socket.prototype.connect() to reconnect an existing Socket object
is not reliable. Users should just create a new Socket object.

See #4698.

11 years agoblog: Correct shasums for v0.9.8 release
isaacs [Sat, 2 Feb 2013 19:14:42 +0000 (11:14 -0800)]
blog: Correct shasums for v0.9.8 release

11 years agobuffer: optimize Buffer.prototype.write(s, 'hex')
Ben Noordhuis [Fri, 1 Feb 2013 23:40:10 +0000 (00:40 +0100)]
buffer: optimize Buffer.prototype.write(s, 'hex')

Move the implementation to C++ land. This is similar to commit 3f65916
but this time for the write() function and the Buffer(s, 'hex')
constructor.

Speeds up the benchmark below about 24x (2.6s vs 1:02m).

  var s = 'f';
  for (var i = 0; i < 26; ++i) s += s;  // 64 MB
  Buffer(s, 'hex');

11 years agodebugger: Make the debugger timeout configurable
isaacs [Fri, 1 Feb 2013 23:55:03 +0000 (15:55 -0800)]
debugger: Make the debugger timeout configurable

If the NODE_DEBUGGER_TIMEOUT environment variable is set, then use
that as the number of ms to wait for the debugger to start.

This is primarily to work around a race condition that almost never
happens in real usage with the debugger, but happens EVERY FRACKING
TIME when the debugger tests run as part of 'make test'.

11 years agobuffer: optimize Buffer.prototype.toString('hex')
Ben Noordhuis [Fri, 1 Feb 2013 21:35:57 +0000 (22:35 +0100)]
buffer: optimize Buffer.prototype.toString('hex')

Move the implementation to C++ land. The old JS implementation used
string concatenation, was dog slow and consumed copious amounts of
memory for large buffers. Example:

  var buf = Buffer(0x1000000);  // 16 MB
  buf.toString('hex')           // Used 3+ GB of memory.

The new implementation operates in O(n) time and space.

Fixes #4700.

11 years agogitignore: Ignore release tarballs and shasum files
isaacs [Fri, 1 Feb 2013 18:17:22 +0000 (10:17 -0800)]
gitignore: Ignore release tarballs and shasum files

11 years agodns, cares: don't filter NOTIMP, REFUSED, SERVFAIL
Ben Noordhuis [Fri, 1 Feb 2013 16:33:19 +0000 (17:33 +0100)]
dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL

Report the aforementioned DNS server failure codes as-is, stop c-ares
from reporting them as ARES_ECONNREFUSED.

Reported by Steve Freegard.

11 years agostream: Don't stop reading on zero-length decoded output
isaacs [Thu, 31 Jan 2013 21:33:37 +0000 (13:33 -0800)]
stream: Don't stop reading on zero-length decoded output

Fixes regression introduced in 7e1cf84c9efd491d72b25968a70656458ecb6b7c

11 years agostream: Don't signal EOF on '' or Buffer(0)
isaacs [Thu, 31 Jan 2013 19:22:07 +0000 (11:22 -0800)]
stream: Don't signal EOF on '' or Buffer(0)

Those values, if passed to the _read() cb, will not signal an EOF.  Only
null or undefined will mark the end of data, and trigger the end event.

However, great care must be taken if you are returning an empty string
or buffer!  There must be some other thing somewhere that will trigger
a read() call, because there will never be a readable event fired later.

This is in preparation for CryptoStreams being ported to streams2, where
it is safe to simply stop reading, because the crypto cycle process will
cause it to read(0) again at some future date.

11 years agodeps: upgrade libuv to 034ea31
Bert Belder [Wed, 30 Jan 2013 19:30:10 +0000 (20:30 +0100)]
deps: upgrade libuv to 034ea31

11 years agonode: Do not use fn.apply() in process._makeCallback
isaacs [Wed, 30 Jan 2013 07:23:36 +0000 (23:23 -0800)]
node: Do not use fn.apply() in process._makeCallback

11 years agolint
isaacs [Wed, 30 Jan 2013 07:55:58 +0000 (23:55 -0800)]
lint

11 years agoos: rename tmpDir() to tmpdir() for consistency
Ben Noordhuis [Tue, 29 Jan 2013 16:27:33 +0000 (17:27 +0100)]
os: rename tmpDir() to tmpdir() for consistency

Make the casing consistent with the other os.* functions but keep
os.tmpDir() around as an alias.

11 years agoreadline: treat bare \r as a line ending
isaacs [Wed, 30 Jan 2013 01:50:44 +0000 (17:50 -0800)]
readline: treat bare \r as a line ending

Fixes #3305

11 years agoreadline: make \r\n emit one 'line' event
Ben Noordhuis [Mon, 28 Jan 2013 12:13:28 +0000 (13:13 +0100)]
readline: make \r\n emit one 'line' event

Make lines ending \r\n emit one 'line' event, not two (where the second
one is an empty string).

This adds a new keypress name: 'return' (as in: 'carriage return').

Fixes #3305.

11 years agoRevert "net: Avoid tickDepth warnings on small writes"
isaacs [Tue, 29 Jan 2013 01:15:22 +0000 (17:15 -0800)]
Revert "net: Avoid tickDepth warnings on small writes"

This commit breaks simple/test-stream2-stderr-sync.  Need to figure out
a better way, or just accept that `(function W(){stream.write(b,W)})()`
is going to be noisy.  People should really be using the `'drain'` event
for this use-case anyway.

This reverts commit 02f7d1bfd8b5b75620352774967dce63b0934037.

11 years agonet: Avoid tickDepth warnings on small writes
isaacs [Mon, 28 Jan 2013 19:15:53 +0000 (11:15 -0800)]
net: Avoid tickDepth warnings on small writes

Always defer the _write callback.  The optimization here was only
relevant in some oddball edge cases that we don't actually care about.

Our benchmarks confirm that just always deferring the Socket._write cb
is perfectly fine to do, and in some cases, even slightly more
performant.

11 years agodgram: avoid EventEmitter leak warning
Bert Belder [Mon, 28 Jan 2013 21:19:02 +0000 (22:19 +0100)]
dgram: avoid EventEmitter leak warning

When a datagram socket hasn't been bound yet, node will defer `send()`
operations until binding has completed. Before this patch a `listening`
listener would be installed every time `send` was called. This triggered
an EventEmitter leak warning when more than 10 packets were sent in a
tight loop. Therefore switch to using a single `listening` listener, and
use an array to enqueue outbound packets.

11 years agocluster: support datagram sockets
Bert Belder [Tue, 22 Jan 2013 22:52:20 +0000 (23:52 +0100)]
cluster: support datagram sockets

11 years agochild_process: move binding init in constructor
Fedor Indutny [Mon, 28 Jan 2013 17:22:59 +0000 (21:22 +0400)]
child_process: move binding init in constructor

Doing this in net.Socket constructor has much more overhead, and
error is actually may happen before the construction of socket object.

11 years agonet: Initialize _connection, _handle in Socket ctor
isaacs [Mon, 28 Jan 2013 16:54:27 +0000 (08:54 -0800)]
net: Initialize _connection, _handle in Socket ctor

The better to reduce the hidden classes

11 years agohttp: Don't dump twice
isaacs [Mon, 28 Jan 2013 16:54:08 +0000 (08:54 -0800)]
http: Don't dump twice

11 years agostream: Correct Transform class backpressure
isaacs [Sun, 27 Jan 2013 19:56:36 +0000 (11:56 -0800)]
stream: Correct Transform class backpressure

The refactor in b43e544140ccf68580c02e71c56d19b82e1e1d32 to use
stream.push() in Transform inadvertently caused it to immediately
consume all the written data, regardless of whether or not the readable
side was being consumed.

Only pull data through the _transform() process when the readable side
is being consumed.

Fix #4667

11 years agonet: initialize TCPWrap when receiving socket
Fedor Indutny [Mon, 28 Jan 2013 09:04:58 +0000 (13:04 +0400)]
net: initialize TCPWrap when receiving socket

TCPWrap::Initialize() and PipeWrap::Initialize() should be called before
any data will be read from received socket. But, because of lazy
initialization of these bindings, Initialize() method isn't called.

Init bindings manually upon socket receiving.

See #4669

11 years agotest: move simple/test-http-dns-fail to test/internet
Ben Noordhuis [Mon, 28 Jan 2013 11:41:54 +0000 (12:41 +0100)]
test: move simple/test-http-dns-fail to test/internet

The test times out when the upstream DNS resolver takes too long to
respond.

See #4672.

11 years agotest: fix pummel test out-of-memory errors
Ben Noordhuis [Sun, 27 Jan 2013 21:01:10 +0000 (22:01 +0100)]
test: fix pummel test out-of-memory errors

Fix the following OOM error in pummel/test-net-connect-memleak
and pummel/test-tls-connect-memleak:

  FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of
  memory

Commit v8/v8@91afd39 increases the size of the deoptimization table
to the extent that a 64M float array pushes it over the brink. Switch
to SMIs so it stays below the limit.

pummel/test-net-connect-memleak is still failing albeit with a different
error this time. Needs further investigation.

  === release test-net-connect-memleak ===
  Path: pummel/test-net-connect-memleak
  -64 kB reclaimed
  assert.js:102
    throw new assert.AssertionError({
          ^
  AssertionError: false == true
      at done [as _onTimeout] (/home/bnoordhuis/src/nodejs/master/
  test/pummel/test-net-connect-memleak.js:48:3)
      at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
      at process._makeCallback (node.js:306:20)

11 years agobuffer: fix Buffer::Copy regression from 00b4b7b
Ben Noordhuis [Sun, 27 Jan 2013 20:50:00 +0000 (21:50 +0100)]
buffer: fix Buffer::Copy regression from 00b4b7b

If the end argument is omitted or not a number, make it default to
the end of the buffer, not zero.

Ideally, it should not matter what it defaults to because the JS shim
in lib/buffer.js should handle that but there are still several places
in node.js core that secrete SlowBuffers, hence Buffer::Copy() gets
called without going through Buffer.prototype.copy() first.

11 years agostream_wrap: reference handle before uv_write2
Fedor Indutny [Sun, 27 Jan 2013 15:25:54 +0000 (19:25 +0400)]
stream_wrap: reference handle before uv_write2

Revert commit 7f2a78bf4d494806ccabcccdeb8579dcc4405a8d and fix using
empty symbol handle.

11 years agoRevert "stream_wrap: reference handle before uv_write2"
Ben Noordhuis [Sun, 27 Jan 2013 14:21:03 +0000 (15:21 +0100)]
Revert "stream_wrap: reference handle before uv_write2"

It's segfaulting in release mode and asserting in debug mode:

  #
  # Fatal error in ../../deps/v8/src/api.h, line 297
  # CHECK(allow_empty_handle || that != __null) failed
  #

This reverts commit 99f0b022d528cc350f87150b5ecdf5c903aaeeb1.

11 years agodoc: fix typo in cluster module documentation
Rick Yakubowski [Sat, 26 Jan 2013 23:07:09 +0000 (18:07 -0500)]
doc: fix typo in cluster module documentation

Fix a small typo in the cluster.settings documentation.

11 years agostream_wrap: reference handle before uv_write2
Fedor Indutny [Fri, 25 Jan 2013 12:34:54 +0000 (16:34 +0400)]
stream_wrap: reference handle before uv_write2

Before sending handle to another process using uv_write2(), it should be
referenced to prevent it from being GCed before AfterWrite() will be
called.

see #4599

11 years agodoc: fix line wrapping in addons.markdown
isaacs [Fri, 25 Jan 2013 22:27:46 +0000 (14:27 -0800)]
doc: fix line wrapping in addons.markdown

11 years agodoc: NODE_MODULE() to pass full `module` to addons
Rod Vagg [Mon, 21 Jan 2013 03:20:43 +0000 (14:20 +1100)]
doc: NODE_MODULE() to pass full `module` to addons

mainly to allow native addons to export single functions on `exports`
rather than being restricted to operating on an existing `exports`
object.

added link to addons repo in docs

11 years agoaddon: Pass module object to NODE_MODULE init function
isaacs [Thu, 24 Jan 2013 23:40:58 +0000 (15:40 -0800)]
addon: Pass module object to NODE_MODULE init function

mainly to allow native addons to export single functions on
rather than being restricted to operating on an existing
object.

Init functions now receive exports as the first argument, like
before, but also the module object as the second argument, if they
support it.

Related to #4634

cc: @rvagg

11 years agobuffer: remove minor Buffer::Copy deoptimizations
Ben Noordhuis [Fri, 25 Jan 2013 21:03:11 +0000 (22:03 +0100)]
buffer: remove minor Buffer::Copy deoptimizations

* Omit ToObject() call. Buffer::Data() and Buffer::Length() know how
  to deal with Values.

* Don't check if the argument is undefined because it realistically
  never is and undefined->integer coercion achieves the same thing.

11 years agobuffer: slow buffer copy compatibility fix
Trevor Norris [Tue, 22 Jan 2013 17:09:12 +0000 (09:09 -0800)]
buffer: slow buffer copy compatibility fix

Fix issue where SlowBuffers couldn't be passed as target to Buffer
copy().

Also included checks to see if Argument parameters are defined before
assigning their values. This offered ~3x's performance gain.

Backport of 16bbecc from master branch. Closes #4633.

11 years agobuffer: error and misc cleanup
Trevor Norris [Tue, 22 Jan 2013 19:10:11 +0000 (11:10 -0800)]
buffer: error and misc cleanup

Changed types of errors thrown to be more indicative of what the error
represents. Also removed a few unnecessary uses of the v8 fully
quantified typename.

11 years agobuffer: clean up copy() asserts and tests
Trevor Norris [Tue, 22 Jan 2013 18:48:54 +0000 (10:48 -0800)]
buffer: clean up copy() asserts and tests

Argument checks were simplified by setting all undefined/NaN or out of
bounds values equal to their defaults.

Also copy() tests had a flaw that each buffer had the same bit pattern at
the same offset. So even if the copy failed, the bit-by-bit comparison
would have still been true. This was fixed by filling each buffer with a
unique value before copy operations.

11 years agobuffer: slow buffer copy compatibility fix
Trevor Norris [Tue, 22 Jan 2013 17:09:12 +0000 (09:09 -0800)]
buffer: slow buffer copy compatibility fix

Fix issue where SlowBuffers couldn't be passed as target to Buffer
copy().

Also included checks to see if Argument parameters are defined before
assigning their values. This offered ~3x's performance gain.

11 years agobenchmark: Port http.sh from master
isaacs [Fri, 25 Jan 2013 01:23:11 +0000 (17:23 -0800)]
benchmark: Port http.sh from master

11 years agodoc: Connecting debugger to existing node process
Sugendran Ganess [Thu, 6 Dec 2012 00:01:41 +0000 (11:01 +1100)]
doc: Connecting debugger to existing node process

11 years agoAdd bytesWritten to tls.CryptoStream
Andy Burke [Wed, 23 Jan 2013 23:17:04 +0000 (15:17 -0800)]
Add bytesWritten to tls.CryptoStream

This adds a proxy for bytesWritten to the tls.CryptoStream.  This
change makes the connection object more similar between HTTP and
HTTPS requests in an effort to avoid confusion.

See issue #4650 for more background information.

11 years agodoc: fix typo in crypto Hash.digest() note
Jacob Gable [Wed, 23 Jan 2013 22:38:09 +0000 (16:38 -0600)]
doc: fix typo in crypto Hash.digest() note

Added the word 'has' to the sentence.
Closes #4652.

11 years agoblog: Post for v0.9.8
isaacs [Thu, 24 Jan 2013 18:32:35 +0000 (10:32 -0800)]
blog: Post for v0.9.8

11 years agoNow working on v0.9.9
isaacs [Thu, 24 Jan 2013 18:31:40 +0000 (10:31 -0800)]
Now working on v0.9.9

11 years agoMerge branch 'v0.9.8-release'
isaacs [Thu, 24 Jan 2013 18:31:23 +0000 (10:31 -0800)]
Merge branch 'v0.9.8-release'

11 years agotest: Add transform objectMode test
isaacs [Thu, 24 Jan 2013 18:12:19 +0000 (10:12 -0800)]
test: Add transform objectMode test

11 years ago2013.01.24, Version 0.9.8 (Unstable) v0.9.8
isaacs [Thu, 24 Jan 2013 17:15:25 +0000 (09:15 -0800)]
2013.01.24, Version 0.9.8 (Unstable)

* npm: Upgrade to v1.2.3

* V8: Upgrade to 3.15.11.10

* streams: Support objects other than Buffers (Jake Verbaten)

* buffer: remove float write range checks (Trevor Norris)

* http: close connection on 304/204 responses with chunked encoding (Ben Noordhuis)

* build: fix build with dtrace support on FreeBSD (Fedor Indutny)

* console: Support formatting options in trace() (isaacs)

* domain: empty stack on all exceptions (Dave Olszewski)

* unix, windows: make uv_*_bind() error codes consistent (Andrius Bentkus)

* linux: add futimes() fallback (Ben Noordhuis)

11 years agonpm: Upgrade to v1.2.3
isaacs [Thu, 24 Jan 2013 17:06:31 +0000 (09:06 -0800)]
npm: Upgrade to v1.2.3

11 years agoV8: Reapply floating patches
isaacs [Thu, 24 Jan 2013 17:02:21 +0000 (09:02 -0800)]
V8: Reapply floating patches

11 years agoV8: Upgrade to 3.15.11.10
isaacs [Thu, 24 Jan 2013 16:59:39 +0000 (08:59 -0800)]
V8: Upgrade to 3.15.11.10

11 years agotls: make slab buffer's size configurable
Fedor Indutny [Tue, 22 Jan 2013 13:27:05 +0000 (17:27 +0400)]
tls: make slab buffer's size configurable

see #4636

11 years agotest: Add test for negative stream drain counter
isaacs [Thu, 24 Jan 2013 03:15:03 +0000 (19:15 -0800)]
test: Add test for negative stream drain counter

11 years agostreams2: Handle sync read callbacks nicely
isaacs [Thu, 24 Jan 2013 01:52:45 +0000 (17:52 -0800)]
streams2: Handle sync read callbacks nicely

11 years agostreams: Support objects other than Buffers
Raynos [Sat, 12 Jan 2013 04:59:57 +0000 (20:59 -0800)]
streams: Support objects other than Buffers

We detect for non-string and non-buffer values in onread and
turn the stream into an "objectMode" stream.

If we are in "objectMode" mode then howMuchToRead will
always return 1, state.length will always have 1 appended
to it when there is a new item and fromList always takes
the first value from the list.

This means that for object streams, the n in read(n) is
ignored and read() will always return a single value

Fixed a bug with unpipe where the pipe would break because
the flowing state was not reset to false.

Fixed a bug with sync cb(null, null) in _read which would
forget to end the readable stream

11 years agogitignore: ignore v8.log files
Ben Noordhuis [Thu, 24 Jan 2013 10:35:29 +0000 (11:35 +0100)]
gitignore: ignore v8.log files

11 years agohttp: close connection on 204 and chunked encoding
Ben Noordhuis [Wed, 23 Jan 2013 12:47:29 +0000 (13:47 +0100)]
http: close connection on 204 and chunked encoding

This is similar to commit 2cbf458 but this time for 204 No Content
instead of 304 Not Modified responses.

When the user sends a 204 response with a Transfer-Encoding: chunked
header, suppress sending the zero chunk and force the connection to
close.

11 years agobuild: Add some gyp artifacts to .gitignore
Scott Blomquist [Thu, 17 Jan 2013 06:29:48 +0000 (22:29 -0800)]
build: Add some gyp artifacts to .gitignore

11 years agobuffer: remove float write range checks
Trevor Norris [Tue, 22 Jan 2013 22:35:20 +0000 (14:35 -0800)]
buffer: remove float write range checks

Removed range checks when writing float values, and removed a few
includes and defines. Also updated api docs to reflect that invalid 32
bit float is an unspecified behavior.

11 years agohttp: close connection on 304 and chunked encoding
Ben Noordhuis [Wed, 23 Jan 2013 00:42:16 +0000 (01:42 +0100)]
http: close connection on 304 and chunked encoding

Force the connection to close when the response is a 304 Not Modified
and the user has set a "Transfer-Encoding: chunked" header.

RFC 2616 mandates that 304 responses MUST NOT have a body but node.js
used to send out a zero chunk anyway to accommodate clients that don't
have special handling for 304 responses.

It was pointed out that this might confuse reverse proxies to the point
of creating security liabilities, so suppress the zero chunk and force
the connection to close.

11 years agodeps: upgrade libuv to e4d8cba
Bert Belder [Tue, 22 Jan 2013 23:17:01 +0000 (00:17 +0100)]
deps: upgrade libuv to e4d8cba

11 years agodeps: upgrade libuv to 7841f77
Ben Noordhuis [Tue, 22 Jan 2013 15:21:25 +0000 (16:21 +0100)]
deps: upgrade libuv to 7841f77

11 years agodoc: document PYTHON env var in README
Ben Noordhuis [Tue, 22 Jan 2013 12:53:49 +0000 (13:53 +0100)]
doc: document PYTHON env var in README

11 years agozlib: don't assert on malformed dictionary
Ben Noordhuis [Tue, 22 Jan 2013 12:23:46 +0000 (13:23 +0100)]
zlib: don't assert on malformed dictionary

Handle Z_DATA_ERROR errors from inflateSetDictionary() gracefully.
Fixes the following assertion:

  node: ../src/node_zlib.cc:167: static void node::ZCtx::Process
  (uv_work_t*): Assertion `ctx->err_ == 0 && "Failed to set
  dictionary"' failed.
  Aborted (core dumped)

Fixes #4632.

11 years agozlib: don't assert on missing dictionary
Ben Noordhuis [Tue, 22 Jan 2013 11:58:15 +0000 (12:58 +0100)]
zlib: don't assert on missing dictionary

Handle Z_NEED_DICT errors graciously. Fixes the following assertion:

  node: ../src/node_zlib.cc:161: static void node::ZCtx::Process
  (uv_work_t*): Assertion`ctx->dictionary_ != __null && "Stream
  has no dictionary"' failed.
  Aborted (core dumped)

Fixes #4632.

11 years agodoc: Fix syntax in cluster example code
Tim [Mon, 7 Jan 2013 19:35:42 +0000 (15:35 -0400)]
doc: Fix syntax in cluster example code

11 years agogyp: fix build with dtrace support on FreeBSD
Fedor Indutny [Sun, 20 Jan 2013 15:23:35 +0000 (19:23 +0400)]
gyp: fix build with dtrace support on FreeBSD

Fix undefined reference to `gelf_getsym`... and other undefined symbols
from libelf, by adding `-lelf` to linker options on FreeBSD.

11 years agodtrace: fix generation of v8 constants on freebsd
Fedor Indutny [Sun, 20 Jan 2013 14:31:30 +0000 (18:31 +0400)]
dtrace: fix generation of v8 constants on freebsd

Every constant is certainly 4 bytes now, but freebsd's objdump utility
prints out odd byte sequences (5-bytes, 6-bytes and even 9-bytes long)
for v8's data section. We can safely ignore all upper bytes, because all
constants that we're using are just `int`s. Since on all supported
platforms `int` is 32bit long (and anyway v8's constants are 32bit too),
we ignore all higher bits if they were read.

11 years agotyped arrays: fix DataView endianness regression
Ben Noordhuis [Sat, 19 Jan 2013 23:24:19 +0000 (00:24 +0100)]
typed arrays: fix DataView endianness regression

Fix an off-by-one error introduced in 9fe3734 that caused a regression
in the default endianness used for writes in DataView::setGeneric().

Fixes #4626.

11 years agochild_process: remove .track option
Fedor Indutny [Sat, 19 Jan 2013 20:26:38 +0000 (00:26 +0400)]
child_process: remove .track option

Since net.Server's `connection` property is deprecated now, we don't
need API to track socket's state to keep `connection`s value up-to-date.

11 years agoconsole: Support formatting options in trace()
isaacs [Fri, 18 Jan 2013 00:02:41 +0000 (16:02 -0800)]
console: Support formatting options in trace()

Fix #4589

11 years agodomain: empty stack on all exceptions
Dave Olszewski [Thu, 27 Dec 2012 20:08:23 +0000 (12:08 -0800)]
domain: empty stack on all exceptions

Due to the nature of asyncronous programming, it's impossible to know
what will run on the next tick.  Because of this, it's not correct to
maintain domain stack state between ticks

Since the _fatalException handler is only invoked after the stack is
unwound, once it exits the tick will end.  The only reasonable thing to
do in that case is to exit *all* domains.

11 years agodoc: Add NODE_DEBUG env to the first example.
Yi EungJun [Fri, 18 Jan 2013 13:51:09 +0000 (22:51 +0900)]
doc: Add NODE_DEBUG env to the first example.

The first example in cluster.markdown requires NODE_DEBUG env to show
debug message.

And also fix the message because it was a little bit different with
the actual message.

11 years agoMerge remote-tracking branch 'ry/v0.8' into master
isaacs [Fri, 18 Jan 2013 20:58:16 +0000 (12:58 -0800)]
Merge remote-tracking branch 'ry/v0.8' into master

Conflicts:
AUTHORS
ChangeLog
src/node_version.h
test/simple/test-buffer.js

11 years agoblog: Post for v0.8.18 release
isaacs [Fri, 18 Jan 2013 20:54:22 +0000 (12:54 -0800)]
blog: Post for v0.8.18 release

11 years agoNow working on 0.8.19
isaacs [Fri, 18 Jan 2013 20:51:34 +0000 (12:51 -0800)]
Now working on 0.8.19

11 years agoMerge branch 'v0.8.18-release' into v0.8
isaacs [Fri, 18 Jan 2013 20:51:14 +0000 (12:51 -0800)]
Merge branch 'v0.8.18-release' into v0.8

11 years ago2013.01.18, Version 0.8.18 (Stable) v0.8.18
isaacs [Fri, 18 Jan 2013 20:15:41 +0000 (12:15 -0800)]
2013.01.18, Version 0.8.18 (Stable)

* npm: Upgrade to v1.2.2

* dns: make error message match errno (Dan Milon)

* tls: follow RFC6125 more stricly (Fedor Indutny)

* buffer: reject negative SlowBuffer offsets (Ben Noordhuis)

* install: add simplejson fallback (Chris Dent)

* http: fix "Cannot call method 'emit' of null" (Ben Noordhuis)

11 years agonpm: Upgrade to v1.2.2
isaacs [Fri, 18 Jan 2013 20:12:07 +0000 (12:12 -0800)]
npm: Upgrade to v1.2.2

11 years agoNow working on 0.9.8
isaacs [Fri, 18 Jan 2013 19:49:35 +0000 (11:49 -0800)]
Now working on 0.9.8

11 years agoMerge branch 'v0.9.7-release'
isaacs [Fri, 18 Jan 2013 19:49:12 +0000 (11:49 -0800)]
Merge branch 'v0.9.7-release'