stdio: Do not read from stdout/err
This fixes windows stdio pipes in streams2 land.
doc: Nudge formatting to make json generator happy
Starting a line with `**bold**` text makes it think that it's a link, and get confused. This should really be fixed properly in the doc generator, but for now, it's not a major issue. It's probably just a matter of updating marked.
repl: don't touch require.cache
Fixes #3226. Consider a production server that uses a REPL to debug. Creating the instance would wipe out the global cache of modules, and subsequent "require" calls in the server would be reloaded from disk. The REPL should observe only, without altering, its environment.
2012.12.21, Version 0.9.4 (Unstable)
* streams: Update all streaming interfaces to use new classes (isaacs) * node: remove idle gc (Ben Noordhuis) * http: protect against response splitting attacks (Bert Belder) * fs: Raise error when null bytes detected in paths (isaacs) * fs: fix 'object is not a function' callback errors (Ben Noordhuis) * fs: add autoClose=true option to fs.createReadStream (Farid Neshat) * process: add getgroups(), setgroups(), initgroups() (Ben Noordhuis) * openssl: optimized asm code on x86 and x64 (Bert Belder) * crypto: fix leak in GetPeerCertificate (Fedor Indutny) * add systemtap support (Jan Wynholds) * windows: add ETW and PerfCounters support (Scott Blomquist) * windows: fix normalization of UNC paths (Bert Belder) * crypto: fix ssl error handling (Sergey Kholodilov) * node: remove eio-emul.h (Ben Noordhuis) * os: add os.endianness() function (Nathan Rajlich) * readline: don't emit "line" events with a trailing 'n' char (Nathan Rajlich) * build: add configure option to generate xcode build files (Timothy J Fontaine) * build: allow linking against system libuv, cares, http_parser (Stephen Gallagher) * typed arrays: add slice() support to ArrayBuffer (Anthony Pesch) * debugger: exit and kill child on SIGTERM or SIGHUP (Fedor Indutny) * url: url.format escapes delimiters in path and query (J. Lee Coltrane)
build: allow to specify custom tags
When building custom `node` versions (e.g., floating features/fixes from different versions) it's often useful to specify a custom tag which easily identifies build when invoking `node -v`. Introduce a way to specify this tag in `node_version.h` file or by running `./configure --tag="<tag>"`. Insert it right after the patch version (and before `-pre`, if build is not a release). Closes #4452.
Remove obsolete build configuration that escaped the purge in 7eaea7f.
net: allow socket end before connect
Fix a bug where calling .end() on a socket without calling .connect() first
throws a TypeError:
TypeError: Cannot read property 'shutdown' of undefined
at Socket.onSocketFinish (net.js:194:20)
at Socket.EventEmitter.emit (events.js:91:17)
at Socket.Writable.end (_stream_writable.js:281:10)
at Socket.end (net.js:352:31)
Fixes #4463.stream: fix event handler leak in readstream pipe and unpipe
After a stream was unpiped there would stil be residual event handlers
stream: do only fake drain when unpiped stream is the source
If the destination had multiply read streams piped to it, they would all decrease the awaitDrain state and thereby start the flow
doc: document the finish event
Since the stream implementer is not expected to overwrite .end() the finish event is necessary in order to know when no more data can be written
repl: add 'domain' to automatic loading libs
`domain` should be a member of automatic loading libs in `repl`. Conflicts: lib/repl.js
repl: remove 'repl' from automatic loading libs
In repl, calling `repl` twice shows the following message: ``` > repl A different "repl" already exists globally ```
http: Handle end only when stream is not dumped
This fixes regression introduced in some cases by 8bf0c15
build: allow to specify custom tags
When building custom `node` versions (e.g., floating features/fixes from different versions) it's often useful to specify a custom tag which easily identifies build when invoking `node -v`. Introduce a way to specify this tag in `node_version.h` file or by running `./configure --tag="<tag>"`. Insert it right after the patch version (and before `-pre`, if build is not a release).
build: Add hyphen to custom build tags
so that ./configure --tag=foo makes a version number like v0.9.5-foo instead of v0.9.5foo
The module variable `END_OF_FILE` was no longer needed from 1d36931.
domain: speed up domain.create
Use `EventEmitter.call` instead of `EventEmitter.apply` because of performance.
stream: speed up instantiation of readable stream
- Stream.apply -> Stream.call
net: socket.readyState corrections
socket.readyState, .readable, and .writable behavior changed as a result of the new streaming interfaces. Updated to be backwards compatible with current API and adds regression test. closes #4461
Colorize API stabilitity index headers in docs
Noted in @shtylman's #3898, API stability notes are easy to overlook in the html documentation. This can be especially troublesome if the API is deprecated. This commit gives visual feedback by adding in a class to the html docs when they're generated. The API headers with corresponding colors are also listed in the 'About this Documentation' page for easy reference.
buffer: speed up base64 encoding by 20%
Remove a lot of branches from the inner loop. Speeds up buf.toString('base64')
by about 20%.
Before:
$ time out/Release/node benchmark/buffer-base64-encode.js
real 0m6.607s
user 0m5.508s
sys 0m1.088s
After:
$ time out/Release/node benchmark/buffer-base64-encode.js
real 0m5.520s
user 0m4.520s
sys 0m0.992shttps: optimize https.createConnection()
Stop using `arguments` for performance and readability.
Said function has been broken (and useless) since v0.6.0. Remove it altogether. Fixes #3854.
fs: make 'end' work with ReadStream without 'start'
Make `fs.createReadStream({ end: 42 })` work.
Before this commit, it worked only when used like this:
`fs.createReadStream({ start: 0, end: 42 })` - only when `start` was specified
by the caller.
Fixes #4423.domain: Do not use uncaughtException handler
This adds a process._fatalException method which is called into from C++ in order to either emit the 'uncaughtException' method, or emit 'error' on the active domain. The 'uncaughtException' event is an implementation detail that it would be nice to deprecate one day, so exposing it as part of the domain machinery is not ideal. Fix #4375
domain: use camelCase instead of snake_case
While it's true that error objects have a history of getting snake_case properties attached by the host system, it's a point of confusion to Node users that comes up a lot. It's still 'experimental', so best to change this sooner rather than later.
assert: improve support for new execution contexts
More detailed information in GH-693
http: Replace "in" usage with "=== undefined"
Speeds up http benchmarks.
net: Don't go through Stream API when ondata is used
This speeds up http_simple by around 6%.