Node.js JavaScript runtime 🐢🚀
 
 
 
 
 
 
Go to file
isaacs cd2b9f542c stream: Avoid nextTick warning filling read buffer
In the function that pre-emptively fills the Readable queue, it relies
on a recursion through:

stream.push(chunk) ->
maybeReadMore(stream, state) ->
  if (not reading more and < hwm) stream.read(0) ->
stream._read() ->
stream.push(chunk) -> repeat.

Since this was only calling read() a single time, and then relying on a
future nextTick to collect more data, it ends up causing a nextTick
recursion error (and potentially a RangeError, even) if you have a very
high highWaterMark, and are getting very small chunks pushed
synchronously in _read (as happens with TLS, or many simple test
streams).

This change implements a new approach, so that read(0) is called
repeatedly as long as it is effective (that is, the length keeps
increasing), and thus quickly fills up the buffer for streams such as
these, without any stacks overflowing.
2013-03-10 11:04:48 -07:00
benchmark bench: Do math on numbers in compare.js, not strings 2013-03-07 11:56:53 -08:00
deps uv: Upgrade to 5462dab 2013-03-09 18:34:59 -08:00
doc Merge remote-tracking branch 'ry/v0.8' into master 2013-03-08 18:59:44 -08:00
lib stream: Avoid nextTick warning filling read buffer 2013-03-10 11:04:48 -07:00
src domain: Fix double-exit on nested domains 2013-03-09 07:00:21 -08:00
test stream: Avoid nextTick warning filling read buffer 2013-03-10 11:04:48 -07:00
tools win/msi: Fix typos 2013-03-09 09:22:00 -08:00
.gitattributes Explicitly disable cr/lf conversion for test fixtures 2011-08-10 19:59:37 +02:00
.gitignore tools: Add wrk for benchmarking http servers 2013-02-19 17:16:18 -08:00
.mailmap Update AUTHORS and .mailmap 2012-10-10 23:14:55 +02:00
.travis.yml test: add `.travis.yml` for testing on Travis CI 2011-12-05 16:50:55 -08:00
AUTHORS 2013.03.06, Version 0.9.12 (Unstable) 2013-03-06 13:06:10 -08:00
BSDmakefile Tell BSD users to run `gmake` instead. 2011-07-11 14:17:23 +02:00
CONTRIBUTING.md doc: add tools/ dir to CONTRIBUTING.md verboten list 2013-02-14 12:42:57 +01:00
ChangeLog Merge remote-tracking branch 'ry/v0.8' into master 2013-03-08 18:59:44 -08:00
LICENSE doc: Add wrk's license to LICENSE file 2013-03-08 13:47:36 -08:00
Makefile build: define nightly tag external to build system 2013-03-05 14:43:27 -08:00
README.md doc: document PYTHON env var in README 2013-01-22 13:53:49 +01:00
common.gypi Revert "build, windows: disable SEH" 2013-03-05 19:40:02 +01:00
configure configure: define "arm_fpu" and "arm_neon" for ARM 2013-01-10 17:13:59 -08:00
node.gyp Revert "sunos: unbreak build after v8 downgrade" 2013-02-26 07:57:12 +00:00
vcbuild.bat build: define nightly tag external to build system 2013-03-05 14:43:27 -08:00

README.md

Evented I/O for V8 javascript. Build Status

To build:

Prerequisites (Unix only):

* Python 2.6 or 2.7
* GNU Make 3.81 or newer
* libexecinfo (FreeBSD and OpenBSD only)

Unix/Macintosh:

./configure
make
make install

If your python binary is in a non-standard location or has a non-standard name, run the following instead:

export PYTHON=/path/to/python
$PYTHON ./configure
make
make install

Windows:

vcbuild.bat

To run the tests:

Unix/Macintosh:

make test

Windows:

vcbuild.bat test

To build the documentation:

make doc

To read the documentation:

man doc/node.1

Resources for Newcomers