Compare commits

...

1953 Commits

Author SHA1 Message Date
Fedor Indutny
396b9deacd deps: throw StackOverflow in JSON.parse
Backport of:

fc6343a79274b6a1e99037ebb131096e2da05306

from v8 upstream.

Original commit message:

    Catch stack overflow in JSON.parse.

    BUG=

    Review URL: https://chromiumcodereview.appspot.com/11275039

    git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@12816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-11 17:38:09 +04:00
Timothy J Fontaine
8fd350e357 Now working on 0.8.29 2014-07-31 11:40:01 -07:00
Timothy J Fontaine
418fc1a4d6 Merge branch 'v0.8.28-release' into v0.8 2014-07-31 11:39:39 -07:00
Timothy J Fontaine
643a21c097 build: run wix tool chain out of process
Building MSIs for different arch's can sometimes confuse MSBuild and
Wix, isntead run the toolchain externally so we don't have to worry
about which arch cmd.exe is running as.
2014-07-31 11:17:31 -07:00
Timothy J Fontaine
0c766cbdfe 2014.07.31, Version 0.8.28 (maintenance)
* v8: Interrupts must not mask stack overflow. (Fedor Indutny)
2014-07-31 10:34:44 -07:00
Fedor Indutny
895c3647a2 v8: Interrupts must not mask stack overflow.
Backport of https://codereview.chromium.org/339883002
2014-07-31 10:27:50 -07:00
Timothy J Fontaine
d5edd68794 Now working on 0.8.28 2014-06-16 10:35:12 -05:00
Timothy J Fontaine
d3ff648997 Merge branch 'v0.8.27-release' into v0.8 2014-06-16 10:34:47 -05:00
Timothy J Fontaine
a69205346b build: support individual signing keys 2014-06-09 12:44:26 -07:00
Timothy J Fontaine
eeb08ca496 2014.06.09, Version 0.8.27 (maintenance)
* openssl: update to 1.0.0m (CVE-2014-0224)

* utf8: Prevent Node from sending invalid UTF-8 (Felix Geisendörfer)
  - *NOTE* this introduces a breaking change, previously you could construct
invalid UTF-8 and invoke an error in a client that was expecting valid
UTF-8, now unmatched surrogate pairs are replaced with the unknown UTF-8
character. To restore the old functionality simply have NODE_INVALID_UTF8
environment variable set.

* tls: fix pool usage race (Fedor Indutny)

* fs: close file if fstat() fails in readFile() (cjihrig)
2014-06-09 11:05:29 -07:00
Timothy J Fontaine
f82652e68e openssl: regenerate asm 2014-06-06 15:04:40 -07:00
Matt Caswell
737ba482cb openssl: apply upstream ccb0398 commit
Fixed Windows compilation failure
2014-06-06 15:04:40 -07:00
Timothy J Fontaine
650d1355a5 openssl: update to 1.0.0m 2014-06-06 15:04:39 -07:00
Timothy J Fontaine
15f0e0a596 src: replace usage of String::Utf8Value
v8::String::Utf8Value previously could allow invalid surrogates when
interpreting values.
2014-06-06 15:04:39 -07:00
Felix Geisendörfer
066e97867a string_bytes: Guarantee valid utf-8 output
Previously v8's WriteUtf8 function would produce invalid utf-8 output
when encountering unmatched surrogate code units [1]. The new
REPLACE_INVALID_UTF8 option fixes that by replacing invalid code points
with the unicode replacement character.

[1]: JS Strings are defined as arrays of 16 bit unsigned integers. There
is no unicode enforcement, so one can easily end up with invalid unicode
code unit sequences inside a string.
2014-06-06 15:04:39 -07:00
Felix Geisendörfer
11d21f5b17 deps/v8: Apply REPLACE_INVALID_UTF8 patch
- https://codereview.chromium.org/121173009/
- https://code.google.com/p/v8/source/detail?r=18683

Note: The v8 test case did not cleanly apply, so it's missing from this
patch. I'm assuming this is not a problem if the v8 test suite is not
part of the node build / test system. If that's the case I'll fix it.
Otherwise the test case will be integrated once v8 is upgraded.
2014-06-06 15:04:39 -07:00
Felix Geisendörfer
0dc2f4f82d string_decoder: Add more comments 2014-06-06 15:04:39 -07:00
Felix Geisendörfer
f59ec645cb string_decoder: Fix failures from new test cases
This patch simplifies the implementation of StringDecoder, fixes the
failures from the new test cases, and also no longer relies on v8's
WriteUtf8 function to encode individual surrogates.
2014-06-06 15:04:39 -07:00
Felix Geisendörfer
d55702e73d string_decoder: Improve test coverage
The test cases are still essentially the same, but now all possible ways
of writing a buffer into the decoder are tested, which has exposed a few
failing scenarios that had not been discovered so far!
2014-06-06 15:04:39 -07:00
Timothy J Fontaine
654267609b src: avoid extra syscalls during node init 2014-06-06 15:04:38 -07:00
cjihrig
b93a51e3a6 fs: close file if fstat() fails in readFile()
Currently, if fstat() fails in readFile(), the callback
is invoked without closing the file. This commit closes
the file before calling back.

Closes #7697
2014-05-28 18:58:57 -07:00
Fedor Indutny
10b6156bd2 tls: fix pool usage race
When calling `encOut` in loop, `maybeInitFinished()` may invoke
`clearOut`'s loop, leading to the writing of interleaved data
(encrypted and cleartext) into the one shared pool.

Move `maybeInitFinished()` out of the loop and add assertion for
future.

backport of 60f777d
2014-01-08 23:06:49 +04:00
Eugene Girshov
1e9ad1f6a4 test: fix http backpressure test case
- use socket timeout event,
- pause socket from the client side.
2013-11-07 12:30:22 +04:00
Fedor Indutny
532f9ffca2 v8: backport b3775cf3 from upstream 2013-10-31 15:09:16 +04:00
Timothy J Fontaine
23c608ad40 Now working on 0.8.27 2013-10-18 14:54:55 -07:00
Timothy J Fontaine
faa042b4e4 Merge branch 'v0.8.26-release' into v0.8 2013-10-18 14:54:23 -07:00
Timothy J Fontaine
4421bebc36 2013.10.13, Version 0.8.26 (maintenance)
* v8: Upgrade to 3.11.10.26

* crypto: clear openssl error stack when handled (Ben Noordhuis)

* crypto: clear errors from verify failure (Timothy J Fontaine)

* crypto: fix memory leak in LoadPKCS12 (Fedor Indutny)

* http: provide backpressure for pipeline flood (isaacs)

* http_parser: expose pause/resume method for parser (Timothy J Fontaine)

* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
2013-10-18 10:34:55 -07:00
Ben Noordhuis
78fe7d0592 crypto: clear openssl error stack when handled
Clear OpenSSL's error stack on return from Connection::HandleSSLError().
This stops stale errors from popping up later in the lifecycle of the
SSL connection where they would cause spurious failures.

This commit causes a 1-2% performance regression on `make bench-tls`.
We'll address that in follow-up commits if possible but let's ensure
correctness first.

Backport of c6e2db2
2013-10-18 10:07:49 -07:00
Timothy J Fontaine
c421a5e66b crypto: clear errors from verify failure
OpenSSL will push errors onto the stack when a verify fails, which can
disrupt TLS and other routines if we don't clear the error stack

Fixes #6304
2013-10-18 08:56:35 -07:00
isaacs
653d4db71f http: provide backpressure for pipeline flood
If a client sends a lot more pipelined requests than we can handle, then
we need to provide backpressure so that the client knows to back off.
Do this by pausing both the stream and the parser itself when the
responses are not being read by the downstream client.

Backport of 085dd30
2013-10-18 08:36:45 -07:00
Timothy J Fontaine
826661f33a http_parser: expose pause/resume method for parser 2013-10-16 13:18:06 -07:00
Daniel Chatfield
98a9089f5f readline: pause stdin before turning off terminal raw mode
On windows, libuv will immediately make a `ReadConsole` call (in the
thread pool) when a 'flowing' `uv_tty_t` handle is switched to
line-buffered mode. That causes an immediate issue for some users,
since libuv can't cancel the `ReadConsole` operation on Windows 8 /
Server 2012 and up if the program switches back to raw mode later.

But even if this will be fixed in libuv at some point, it's better to
avoid the overhead of starting work in the thread pool and immediately
cancelling it afther that.

See also f34f1e3, where the same change is made for the opposite
flow, e.g. move `resume()` after `_setRawMode(true)`.

Fixes #5927

This is a backport of dfb0461 (see #5930) to the v0.8 branch.
2013-08-17 15:41:03 +02:00
Fedor Indutny
42f926ece7 crypto: fix memory leak in LoadPKCS12
X509_STORE_add_cert increment reference of passed `x509` cert,
`X509_free` must be called to avoid memory leak.

This is a back-port of commit c1db1ec from the master branch.
2013-07-29 13:20:20 +04:00
isaacs
ccad4c7fbc V8 build: 'echo -n' considered harmful 2013-06-26 08:16:15 -07:00
Ben Noordhuis
ca3976726b v8: remove optimization switches
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi, we set
them globally in $(TOPLEVEL)/common.gypi.

Commit 29d12c73 accidentally reintroduced the switches again. In particular,
the 'cflags!': ['-O2','-Os'] section forced building V8 without any
optimizations, resulting in a steep (~66%) performance drop on some benchmarks.

Fixes #4191.
2013-06-26 08:16:10 -07:00
isaacs
c86b3815b5 V8: Reapply patches 2013-06-26 08:16:05 -07:00
isaacs
1111880df4 v8: Upgrade to 3.11.10.26 2013-06-26 08:15:09 -07:00
isaacs
1a39380ab4 Now working on 0.8.26 2013-06-13 13:21:50 -07:00
isaacs
7f52ee086a Merge branch 'v0.8.25-release' into v0.8 2013-06-13 13:21:31 -07:00
isaacs
0b9bdb2bc7 2013.06.13, Version 0.8.25 (maintenance)
* npm: Upgrade to 1.2.30

* child_process: fix handle delivery (Ben Noordhuis)
2013-06-13 11:49:15 -07:00
isaacs
a0837fd32e npm: Upgrade to 1.2.30 2013-06-12 11:00:38 -07:00
Ben Noordhuis
8a3d0c8b91 child_process: fix handle delivery
node.js and libuv depend on the fact that none of the supported systems
ever emit more than one SCM_RIGHTS message from a recvmsg() syscall.

SCM_RIGHTS messages are never coalesced. SCM_RIGHTS and normal messages
however _are_ coalesced. That is, recvmsg() might return this:

  recvmsg();  // { "message-with-fd", "message", "message" }

The operating system implicitly breaks pending messages along
SCM_RIGHTS boundaries. Most Unices break before such messages but Linux
also breaks _after_ them.  When the sender looks like this:

  sendmsg("message");
  sendmsg("message-with-fd");
  sendmsg("message");

Then on most Unices the receiver sees messages arriving like this:

  recvmsg();  // { "message" }
  recvmsg();  // { "message-with-fd", "message" }

The bug fix in commit 9352c19 assumes this behavior. On Linux however,
those messages can also come in like this:

  recvmsg();  // { "message", "message-with-fd" }
  recvmsg();  // { "message" }

In other words, it's incorrect to assume that the file descriptor is
always attached to the first message. This commit makes node wise up.

This is a back-port of commit 21bd456 from the v0.10 branch. The test
has been dropped as it's not compatible with the v0.8 process model.

Fixes #5330.

Conflicts:
	lib/child_process.js
2013-06-06 17:42:07 +02:00
isaacs
bf16141eeb npm: Upgrade to 1.2.27 2013-06-06 14:44:10 -07:00
isaacs
6fad535c63 Now working on v0.8.25 2013-06-04 11:11:55 -07:00
isaacs
01626461e3 Merge branch 'v0.8.24-release' into v0.8 2013-06-04 11:11:34 -07:00
isaacs
c1a1ab0677 2013.06.04, Version 0.8.24 (maintenance)
* npm: Upgrade to v1.2.24

* url: Properly parse certain oddly formed urls (isaacs)

* http: Don't try to destroy nonexistent sockets (isaacs)

* handle_wrap: fix NULL pointer dereference (Ben Noordhuis)
2013-06-03 16:53:09 -07:00
isaacs
71091f78f2 npm: Upgrade to 1.2.24 2013-06-03 16:51:23 -07:00
isaacs
ba0ed00b5f url: Properly parse certain oddly formed urls
In cases where there are multiple @-chars in a url, Node currently
parses the hostname and auth sections differently than web browsers.

This part of the bug is serious, and should be landed in v0.10, and
also ported to v0.8, and releases made as soon as possible.

The less serious issue is that there are many other sorts of malformed
urls which Node either accepts when it should reject, or interprets
differently than web browsers.  For example, `http://a.com*foo` is
interpreted by Node like `http://a.com/*foo` when web browsers treat
this as `http://a.com%3Bfoo/`.

In general, *only* the `hostEndingChars` should be the characters that
delimit the host portion of the URL.  Most of the current `nonHostChars`
that appear in the hostname should be escaped, but some of them (such as
`;` and `%` when it does not introduce a hex pair) should raise an
error.

We need to have a broader discussion about whether it's best to throw in
these cases, and potentially break extant programs, or return an object
that has every field set to `null` so that any attempt to read the
hostname/auth/etc. will appear to be empty.
2013-06-03 16:29:10 -07:00
isaacs
4dc5b13861 http: Don't try to destroy nonexistent sockets
Fixes #3740

In the case of pipelined requests, you can have a situation where
the socket gets destroyed via one req/res object, but then trying
to destroy *another* req/res on the same socket will cause it to
call undefined.destroy(), since it was already removed from that
message.

Add a guard to OutgoingMessage.destroy and IncomingMessage.destroy
to prevent this error.
2013-04-22 09:56:48 -07:00
Ben Noordhuis
600cd28167 test: make stdout-close-unref work in test runner
process.stdout isn't fully initialized yet by the time the test starts
when invoked with `python tools/test.py`. Use process.stdin instead and
force initialization with process.stdin.resume().

This is a back-port of commit 2e70dda from the v0.10 branch.
2013-04-18 00:05:31 +02:00
Ben Noordhuis
0801a18890 handle_wrap: fix NULL pointer dereference
Fix a NULL pointer dereference in src/handle_wrap.cc which is really a
use-after-close bug.

The test checks that unref() after close() works on process.stdout but
this bug affects everything that derives from HandleWrap. I discovered
it because child processes would sometimes quit for no reason (that is,
no reason until I turned on core dumps.)

This is a back-port of commit ccd3722 from the v0.10 branch.
2013-04-16 23:17:50 +02:00
isaacs
49dcab933b Now working on 0.8.24 2013-04-08 17:41:26 -07:00
isaacs
b36aab16f0 Merge branch 'v0.8.23-release' into v0.8 2013-04-08 17:40:58 -07:00
isaacs
c67f8d0500 2013.04.09, Version 0.8.23 (maintenance)
* npm: Upgrade to v1.2.18

* http: Avoid EE warning on ECONNREFUSED handling (isaacs)

* tls: Re-enable check of CN-ID in cert verification (Tobias Müllerleile)

* child_process: fix sending utf-8 to child process (Ben Noordhuis)

* crypto: check key type in GetPeerCertificate() (Ben Noordhuis)

* win/openssl: mark assembled object files as seh safe (Bert Belder)

* windows/msi: fix msi build issue with WiX 3.7/3.8 (Raymond Feng)
2013-04-08 16:51:44 -07:00
isaacs
f2f893b2a7 npm: Upgrade to v1.2.18 2013-04-08 16:47:58 -07:00
isaacs
b2587b2678 http: Avoid EE warning on ECONNREFUSED handling
This is a back-port of the same fix in
deb1dc279d49463e13af44feed45c79ae0f379f9, for v0.8.
2013-04-08 16:25:50 -07:00
Tobias Müllerleile
1a95ce5214 tls: Re-enable check of CN-ID in cert verification
RFC 6125 explicitly states that a client "MUST NOT seek a match
for a reference identifier of CN-ID if the presented identifiers
include a DNS-ID, SRV-ID, URI-ID, or any application-specific
identifier types supported by the client", but it MAY do so if
none of the mentioned identifier types (but others) are present.
2013-04-07 19:04:02 +04:00
Ben Noordhuis
84bb0ec613 child_process: fix sending utf-8 to child process
In process#send() and child_process.ChildProcess#send(), use 'utf8' as
the encoding and correctly handle partial character sequences by
introducing a StringDecoder. Before this commit, it used 'ascii' and
partial sequences were dropped or corrupted.

This is a back-port of commit 44843a6 from the v0.10 branch.

Fixes #4999 and #5011.
2013-03-25 13:33:26 +01:00
Ben Noordhuis
2c41a80282 crypto: check key type in GetPeerCertificate()
Works around the following exception:

  Error: 140463203215168:error:0607907F:digital envelope
  routines:EVP_PKEY_get1_RSA:expecting an rsa key:
  ../deps/openssl/openssl/crypto/evp/p_lib.c:288:
    at CleartextStream._pusher (tls.js:656:24)
    at SlabBuffer.use (tls.js:199:18)
    at CleartextStream.CryptoStream._push (tls.js:483:33)
    at SecurePair.cycle (tls.js:880:20)
    <snip>

The issue has been solved properly in v0.10 and the master branch as of
commit c6e2db2 ("crypto: clear error stack"). This is the "back-port"
to v0.8.

For some (rather unquantifiable) reason the original fix only works for
the tls module in v0.8 but not the https module unless OpenSSL is
downgraded to 0.9.8. Upgrading OpenSSL does *not* fix it, however.

The https module doesn't appear to be at fault; upgrading it to v0.10
doesn't fix the issue. That leaves either the tls or the http module
(that https derives from) but the changes to those modules are too
massive to back-port as-is.

`git bisect` over the v0.8 -> v0.10 commits didn't show up anything
useful, it pinpoints c6e2db2 as the commit that fixes things.

I've spent several hours on this now and seeing that v0.8 is in
maintenance mode, this cheap hack will have to do.

Fixes #4771.
2013-03-13 16:42:23 +01:00
Bert Belder
d5959c5cea Revert "build, windows: disable SEH"
This is no longer necessary - the underlying issue was fixed in 01fa5ee.
This reverts commit d879042860.
2013-03-08 12:43:58 +01:00
Bert Belder
3446157269 win/openssl: mark assembled object files as seh safe
There are no unsafe structured exception handlers in object files
generated from hand-crafted assembly - because they contain no exception
handlers at all.
2013-03-08 12:43:57 +01:00
Raymond Feng
95871ac1db windows/msi: fix msi build issue with WiX 3.7/3.8
The `heat` tool that gathers NPM source files wasn't getting called.
Closes #4896
2013-03-08 12:38:13 +01:00
isaacs
9c5812574f blog: Post for v0.8.22 2013-03-06 16:22:23 -08:00
isaacs
5c3c2ed945 Now working on 0.8.23 2013-03-06 16:20:00 -08:00
isaacs
d7a5f96fa5 Merge branch 'v0.8.22-release' into v0.8 2013-03-06 16:19:29 -08:00
isaacs
67a4cb4fe8 2013.03.07, Version 0.8.22 (Stable)
* npm: Update to 1.2.14

* cluster: propagate bind errors (Ben Noordhuis)

* crypto: don't assert when calling Cipher#final() twice (Ben Noordhuis)

* build, windows: disable SEH (Ben Noordhuis)
2013-03-06 15:47:29 -08:00
isaacs
80fb580936 npm: Update to 1.2.14 2013-03-06 15:41:06 -08:00
isaacs
277a2545d2 blog: Update streams2 feature post to match actual doc 2013-03-06 14:19:16 -08:00
isaacs
116d6c4402 blog: Post for 0.9.12 2013-03-06 13:57:57 -08:00
Nathan Rajlich
4d809e297f process: invoke EventEmitter on process
This properly sets the `_maxListeners` property, which
fixes the max listener warning. Closes #4924.
2013-03-05 21:15:45 -08:00
Ben Noordhuis
532d9929c7 cluster: propagate bind errors
This commit fixes a bug where the cluster module fails to propagate
EADDRINUSE errors.

When a worker starts a (net, http) server, it requests the listen socket
from its master who then creates and binds the socket.

Now, OS X and Windows don't always signal EADDRINUSE from bind() but
instead defer the error until a later syscall. libuv mimics this
behaviour to provide consistent behaviour across platforms but that
means the worker could end up with a socket that is not actually bound
to the requested addresss.

That's why the worker now checks if the socket is bound, raising
EADDRINUSE if that's not the case.

Fixes #2721.
2013-03-05 15:23:55 +01:00
Ben Noordhuis
ecf9f606c9 doc: add url.resolve() usage examples
Fixes #4913.
2013-03-04 20:54:36 +01:00
Rod Vagg
a6a1659d85 link to LevelUP modules wiki page, not level-hooks 2013-03-03 22:12:53 -08:00
Ben Noordhuis
426cbedb44 test: make simple/test-dgram-pingpong respect PORT
Don't use hard-coded port numbers, use common.PORT instead.

Should fix the occasional Jenkins failure; the builds run in parallel.
2013-03-02 23:04:06 +01:00
Timothy J Fontaine
0b70a14abf test: optionally set common.PORT via env variable
This is a back-port of commit 17a8126 from the master branch.
2013-03-02 19:09:39 +01:00
Ben Noordhuis
7189b3ed33 crypto: don't assert when calling Cipher#final() twice
Remove the assert() that triggered when Cipher#final() or
Decipher#final() was called twice.

Fixes #4886.
2013-03-02 02:13:18 +01:00
isaacs
be770a3839 blog: Post about v0.9.11 2013-03-01 11:24:46 -08:00
Ben Noordhuis
f26362e938 http: use socket.once, not socket.on
Register the 'close' event listener with .once(), not .on().

It doesn't matter in the grand scheme of things because the listener
doesn't keep references to any heavy-weight objects but using .once()
for a oneshot listener is something of a best practice.
2013-03-01 13:11:40 +01:00
Eugene Girshov
50ba0f27d9 doc: remove note about close event 2013-03-01 00:01:06 +01:00
Timothy J Fontaine
d032ff4954 test: fix tap output on windows
Test output is always \n and not platform dependent
2013-02-28 23:13:05 +01:00
Ben Noordhuis
d879042860 build, windows: disable SEH
Turn off safe exception handlers, they're incompatible with how
openssl is compiled / linked under MSVS 2012.

Addresses the following build error:

  openssl.lib(x86cpuid.obj) : error LNK2026: module unsafe for SAFESEH
  image. [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]
  openssl.lib(x86.obj) : error LNK2026: module unsafe for SAFESEH
  image. [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]
  # etc. etc.
  g:\jenkins\workspace\nodejs-oneoff\Release\node.exe : fatal error
  LNK1281: Unable to generate SAFESEH image.
  [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]

Fixes #4242.
2013-02-28 16:40:13 +01:00
Ben Noordhuis
522668b5d9 doc: update instructions on home page
Document how to run the example on the home page in more detail.

Apparently our Windows brethren are prone to double-clicking on the
binary instead of running it from the command line.

Fixes #4854.
2013-02-28 16:30:46 +01:00
isaacs
82357b87eb blog: Update with EINPROGRESS changelog item 2013-02-25 14:17:11 -08:00
isaacs
fafb67c65b ChangeLog: Missed item about EINPROGRESS 2013-02-25 13:57:02 -08:00
isaacs
f8ae4446ee blog: Post for v0.8.21 2013-02-25 13:56:46 -08:00
isaacs
33e8e694e8 Now working on 0.8.22 2013-02-25 13:52:13 -08:00
isaacs
7b92b301fa Merge branch 'v0.8.21-release' into v0.8 2013-02-25 13:51:15 -08:00
isaacs
530d8c05d4 2013.02.25, Version 0.8.21 (Stable)
* http: Do not free the wrong parser on socket close (isaacs)

* http: Handle hangup writes more gently (isaacs)

* zlib: fix assert on bad input (Ben Noordhuis)

* test: add TAP output to the test runner (Timothy J Fontaine)

* unix: Handle EINPROGRESS from domain sockets (Ben Noordhuis)
2013-02-25 13:07:25 -08:00
isaacs
ff540e19a4 uv: Upgrade to 86ae8b3c 2013-02-25 13:07:25 -08:00
isaacs
b0e7dbf2c0 http: Do not free the wrong parser on socket close
This appears to fix #4673.  That bug is very hard to reproduce, so it's
hard to tell for certain, but this approach is more correct anyway.

Hat-tip: @dougwilson
2013-02-25 09:06:46 -08:00
isaacs
f9a0140ef1 http: Handle hangup writes more gently 2013-02-22 10:35:07 -08:00
Ben Noordhuis
22d3eff8f4 doc: add note about child process line buffering
Fixes #4808.
2013-02-22 01:19:40 +01:00
Ben Noordhuis
ef94521909 zlib: fix assert on bad input
The following test case occasionally triggered an assert because
write_in_progress_ didn't get cleared on error:

  $ cat test.js
  require('zlib').gunzip('BAM', console.log);
  setTimeout(gc, 10);

  $ while true; do node --expose-gc test.js || break; done
  { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
  Assertion failed: (!write_in_progress_ && "write in progress"),
  function Clear, file ../src/node_zlib.cc, line 71.
  Abort trap: 6

Steps to avoid that:

* Initialize all primitive member fields in the constructor.
* Clear the write_in_progress_ member field in ZCtx::Error().
* Ref the ZCtx object as soon as write_in_progress_ is set to true.
  Before this commit, it could get GC'ed in the time between setting
  the field and the call to ctx->Ref().

Fixes #4783.
2013-02-22 00:08:26 +01:00
Timothy J Fontaine
9d45b945f7 test: add TAP output to the test runner
This is a back-port of commit 14ed173 from the master branch.
2013-02-20 18:50:55 +01:00
isaacs
3267464586 blog: v0.9.10 2013-02-19 14:01:23 -08:00
isaacs
3f38069acf blog: Release v0.8.20 2013-02-15 11:24:20 -08:00
isaacs
01bff7e7a7 Now working on v0.8.21 2013-02-15 11:24:08 -08:00
isaacs
48521f1220 Merge branch 'v0.8.20-release' into v0.8 2013-02-15 11:23:55 -08:00
isaacs
e10c75579b 2013.02.15, Version 0.8.20 (Stable)
* npm: Upgrade to v1.2.11

* http: Do not let Agent hand out destroyed sockets (isaacs)

* http: Raise hangup error on destroyed socket write (isaacs)

* http: protect against response splitting attacks (Bert Belder)
2013-02-15 10:50:11 -08:00
isaacs
73be4608d9 npm: Upgrade to v1.2.11 2013-02-15 10:49:30 -08:00
isaacs
987338fe31 http: Do not let Agent hand out destroyed sockets
Fix #4373
2013-02-14 16:03:40 -08:00
isaacs
c9dcf5718c http: Raise hangup error on destroyed socket write
Prior to v0.10, Node ignored ECONNRESET errors in many situations.
There *are* valid cases in which ECONNRESET should be ignored as a
normal part of the TCP dance, but in many others, it's a very relevant
signal that must be heeded with care.

Exacerbating this problem, if the OutgoingMessage does not have a
req.connection._handle, it assumes that it is in the process of
connecting, and thus buffers writes up in an array.

The problem happens when you reuse a socket between two requests, and it
is destroyed abruptly in between them.  The writes will be buffered,
because the socket has no handle, but it's not ever going to GET a
handle, because it's not connecting, it's destroyed.

The proper fix is to treat ECONNRESET correctly.  However, this is a
behavior/semantics change, and cannot land in a stable branch.

Fix #4775
2013-02-14 16:03:40 -08:00
Ben Noordhuis
3e2be6f39f doc: clarify child_process.exec() stdio option
It only works for stdin, not stdout/stderr, for obvious reasons.
2013-02-14 19:42:14 +01:00
Ben Noordhuis
aec6e93931 doc: add tools/ dir to CONTRIBUTING.md verboten list 2013-02-14 12:42:57 +01:00
Dan Kohn
2e1ebbf2c5 doc: add prompt to fix repl_test.js example
Running repl.start without the prompt set produces this error:

repl.js:95
    throw new Error('An options Object, or a prompt String are required');
          ^
Error: An options Object, or a prompt String are required
    at new REPLServer (repl.js:95:11)
    at Object.exports.start (repl.js:321:14)
    at Object.<anonymous> (/Users/dan/Dropbox/Documents/dev/nextgen/repl_test.js:5:6)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
2013-02-13 16:40:27 +01:00
isaacs
82ad5fbe9a blog: Forgot slug on peer-dependencies article 2013-02-12 16:30:25 -08:00
isaacs
6dcadb9fc8 blog: Peer Dependencies article
Thanks, @domenic
2013-02-12 12:03:52 -08:00
Ben Noordhuis
c4f418d035 test: disable simple/test-dgram-send-error
It's not a good citizen, it spams random IP addresses with UDP packets.

Fixes #4730.
2013-02-08 01:33:33 +01:00
isaacs
2810b1ab00 blog: v0.9.9 is unstable, not stable 2013-02-07 10:35:35 -08:00
isaacs
e4d97b1dca blog: v0.9.9 2013-02-07 10:34:45 -08:00
Bert Belder
255bc945c2 http: protect against response splitting attacks
This patch is a back-port of 3c293ba.
Closes #4696
2013-02-07 14:39:47 +01:00
isaacs
13897279ae blog: v0.8.19 release 2013-02-06 09:48:20 -08:00
isaacs
ccf2712ee5 Now working on 0.8.20 2013-02-06 09:46:47 -08:00
isaacs
8caf6572b6 Merge branch 'v0.8.19-release' into v0.8 2013-02-06 09:44:38 -08:00
isaacs
53978bdf42 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)
2013-02-06 08:46:14 -08:00
isaacs
5aef65a98a npm: Upgrade to v1.2.10 2013-02-06 08:39:31 -08:00
Ben Noordhuis
a86ebbe288 blog: remove dangling symlink
Fixes #4716.
2013-02-05 22:34:51 +01:00
Ben Noordhuis
6b99fd2323 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.
2013-02-05 22:26:03 +01:00
Ben Noordhuis
8d14668992 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.
2013-02-05 22:25:54 +01:00
Ben Noordhuis
5fe05464cb 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.
2013-02-05 12:50:48 +01:00
isaacs
9a488a667c blog: Correct shasums for v0.9.8 release 2013-02-02 11:14:42 -08:00
Bert Belder
1a87776be9 deps: upgrade libuv to 034ea31 2013-01-30 20:30:10 +01:00
Rick Yakubowski
5abde8161a doc: fix typo in cluster module documentation
Fix a small typo in the cluster.settings documentation.
2013-01-27 00:25:35 +01:00
Trevor Norris
65249ccd9b 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.
2013-01-25 10:42:38 -08:00
isaacs
72dd3b4e25 benchmark: Port http.sh from master 2013-01-24 17:23:22 -08:00
Jacob Gable
34131af606 doc: fix typo in crypto Hash.digest() note
Added the word 'has' to the sentence.
Closes #4652.
2013-01-24 12:42:53 -08:00
isaacs
7f6054ca81 blog: Post for v0.9.8 2013-01-24 10:32:35 -08:00
Ben Noordhuis
13d86a86d6 doc: document PYTHON env var in README 2013-01-22 13:53:49 +01:00
Ben Noordhuis
d7bf7ed993 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.
2013-01-22 13:34:43 +01:00
Ben Noordhuis
1c32eb4ae2 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.
2013-01-22 13:34:43 +01:00
isaacs
9c2c845463 blog: Post for v0.8.18 release 2013-01-18 12:54:22 -08:00
isaacs
4598a4c6dd Now working on 0.8.19 2013-01-18 12:51:34 -08:00
isaacs
f05cf3bea7 Merge branch 'v0.8.18-release' into v0.8 2013-01-18 12:51:14 -08:00
isaacs
2c4eef0d97 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)
2013-01-18 12:15:41 -08:00
isaacs
4d32fc5964 npm: Upgrade to v1.2.2 2013-01-18 12:12:07 -08:00
isaacs
1c35ee8695 blog: Post for v0.9.7 release 2013-01-18 11:48:21 -08:00
Dan Milon
7295bb9435 dns: make error message match errno 2013-01-18 12:13:32 +01:00
Fedor Indutny
31583be042 tls: follow RFC6125 more stricly
* Allow wildcards only in left-most part of hostname identifier.
* Do not match CN if altnames are present
2013-01-18 03:48:05 +04:00
Fedor Indutny
e70d1bfe64 Revert "Revert "tls: allow wildcards in common name""
This reverts commit 30e237041d.

Works properly with b4b750b
2013-01-18 03:47:47 +04:00
Ben Noordhuis
30e237041d Revert "tls: allow wildcards in common name"
This reverts commit 45024e7b75.

It's making test/simple/test-tls-check-server-identity.js fail:

  AssertionError: Test#4 failed: { host: 'b.a.com',
    cert: { subject: { CN: '*.a.com' } },
    result: false }
      at <omitted>/test/simple/test-tls-check-server-identity.js:201:10
2013-01-17 16:32:00 +01:00
Ben Noordhuis
08ac9fe016 test: add cluster 'bind twice' test
This test starts two clustered HTTP servers on the same port.
It expects the first cluster to succeed and the second cluster
to fail with EADDRINUSE.

Reapplies commit cacd3ae, accidentally reverted in a2851b6.
2013-01-17 13:37:23 +01:00
Ben Noordhuis
498200b87c buffer: reject negative SlowBuffer offsets
Reject negative offsets in SlowBuffer::MakeFastBuffer(), it allows
the creation of buffers that point to arbitrary addresses.

Reported by Trevor Norris.
2013-01-17 01:22:11 +01:00
Chris Dent
6b4a93577b install: add simplejson fallback
Make tools/install.py work with python 2.5

2.5 is still fairly widespread and does not include a json lib as
standard. Most python folk will have simplejson if they are in that
boat.

In general it seems a bit tricky to solve this perfectly...
2013-01-15 09:34:07 +01:00
Bert Belder
a6b8f63660 buffer: zero-length buffers shouldn't be slab-backed 2013-01-14 22:20:03 +01:00
Fedor Indutny
45024e7b75 tls: allow wildcards in common name
see #4592
2013-01-14 21:31:34 +04:00
Ben Noordhuis
f3e78bd3c2 http: fix "Cannot call method 'emit' of null"
Fix the following exception:

  http.js:974
    this._httpMessage.emit('close');
                      ^
  TypeError: Cannot call method 'emit' of null
      at Socket.onServerResponseClose (http.js:974:21)
      at Socket.EventEmitter.emit (events.js:124:20)
      at net.js:421:10
      at process._tickCallback (node.js:386:13)
      at process._makeCallback (node.js:304:15)

Fixes #4586.
2013-01-14 17:28:32 +01:00
isaacs
4c9de9d716 blog: release v0.9.6 2013-01-11 11:24:37 -08:00
Nathan Rajlich
4fa3fd1cc0 make binary: allow custom config flags
For example, to cross-compile from my OS X laptop for Raspberry Pi, you would
do something like:

  $ make binary BINARYNAME=node-v`python tools/getnodeversion.py`-linux-arm-pi \
      DESTCPU=arm CONFIG_FLAGS="--dest-os=linux"
2013-01-10 17:05:14 -08:00
isaacs
8e37a589a6 blog, changelog: 0.8.17 was released in 2013, not 2012 2013-01-10 07:47:09 -08:00
isaacs
be54423782 blog: Correct shasums for v0.8.17 2013-01-09 19:05:37 -08:00
isaacs
6d9ee4b184 blog: Add security notice to v0.8.17 post 2013-01-09 17:21:16 -08:00
isaacs
1388171d96 blog: Post about v0.8.17 2013-01-09 17:08:24 -08:00
isaacs
daf4666963 Now working on 0.8.18 2013-01-09 17:07:33 -08:00
isaacs
c4b080f82d Merge branch 'v0.8.17-release' into v0.8 2013-01-09 17:07:21 -08:00
isaacs
c50c33e939 2012.01.09, Version 0.8.17 (Stable)
* npm: Upgrade to v1.2.0
  - peerDependencies (Domenic Denicola)
  - node-gyp v0.8.2 (Nathan Rajlich)
  - Faster installs from github user/project shorthands (Nathan Zadoks)

* typed arrays: fix 32 bit size/index overflow (Ben Noordhuis)

* http: Improve performance of single-packet responses (Ben Noordhuis)

* install: fix openbsd man page location (Ben Noordhuis)

* http: bubble up parser errors to ClientRequest (Brian White)
2013-01-09 16:55:12 -08:00
Ben Noordhuis
ed825f4888 typed arrays: fix 32 bit size/index overflow
Fix an out-of-bound read/write bug due to integer wrapping. Reported by
Dean McNamee.
2013-01-10 00:55:27 +01:00
isaacs
aa742ddf80 npm: Upgrade to v1.2.0 2013-01-09 15:21:30 -08:00
Fedor Indutny
7a2ae4c930 object_wrap: add missing HandleScope
by Sven Panne's suggestion, see [0] for details.

[0]: https://code.google.com/p/v8/issues/detail?id=2468
2013-01-09 12:16:04 +04:00
Ben Noordhuis
ad6769fc92 dgram: don't assert on send('string')
Raise a TypeError when the argument to send() or sendto() is anything
but a Buffer.

Fixes the following assertion:

  $ node -e 'require("dgram").createSocket("udp4").send("BAM")'
  node: ../../src/udp_wrap.cc:220: static v8::Handle<v8::Value>
  node::UDPWrap::DoSend(const v8::Arguments&, int): Assertion
  `Buffer::HasInstance(args[0])' failed.
  Aborted (core dumped)

Fixes #4496.
2013-01-08 04:32:40 +01:00
Johannes Ewald
872cb0d7fa doc: improve example of process.hrtime()
The example clarifies now that diff[0] * 1000000000 + diff[1] equals
the result in nanoseconds.
2013-01-04 23:06:40 +01:00
Tim Bradshaw
50e88d0b66 os: change CPU time from Integer to Number
CPU time values must be Numbers, not Integers, as they can be too large
for Integers on 32 bit platforms.
2012-12-31 18:09:36 +01:00
Ben Noordhuis
acc085e131 doc: add CONTRIBUTING.md 2012-12-31 01:50:48 +01:00
isaacs
44ceb5d8f5 blog: Post for v0.9.5 2012-12-29 17:26:32 -08:00
Ben Noordhuis
a7cc53067d deps: upgrade libuv to 4997738 2012-12-29 17:34:41 +01:00
Maciej Małecki
c2e71dd51d 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).
2012-12-26 20:15:17 -08:00
isaacs
54740c8b24 lint 2012-12-26 15:26:53 -08:00
isaacs
6738e68592 blog: Post about v0.9.4 2012-12-21 12:37:39 -08:00
isaacs
d30e76e0e8 npm: upgrade to 1.1.70 2012-12-21 16:42:29 +00:00
isaacs
9d0103d22e blog: More streams2 wordsmithing 2012-12-21 00:46:40 +00:00
isaacs
0c867ae618 blog: Update blog post re streams2 2012-12-21 00:08:50 +00:00
Ben Noordhuis
5a19c07c08 http: pack response body buffer in first tcp packet
Apply the same optimization to res.end(buf) that is applied to res.end(str).

Speeds up `node benchmark/http_simple_auto -k -c 1 -n 25000 buffer/1`
(non-chunked response body) by about 750x. That's not a typo.

Chunked responses:

  $ cat tmp/http-chunked-client.js
  // Run `node benchmark/http_simple` in another terminal.
  var http = require('http'), url = require('url');
  var options = url.parse('http://127.0.0.1:8000/buffer/1/1');
  options.agent = new http.Agent({ maxSockets: 1 });
  for (var i = 0; i < 25000; ++i) http.get(options);

Before:

  $ time out/Release/node tmp/http-chunked-client.js
  real    16m40.411s
  user    0m9.184s
  sys     0m0.604s

After:

  $ time out/Release/node tmp/http-chunked-client.js
  real    0m5.386s
  user    0m2.768s
  sys     0m0.728s

That's still a 185x speed-up.

Fixes #4415.
2012-12-20 12:02:06 +01:00
Ben Noordhuis
ba407ce410 bench: use res.end() for chunked encoding
Use res.end() for the final chunk so we can benchmark the 'hot path' shortcut
in lib/http.js that packs the headers and the body into a single packet.
2012-12-20 11:44:10 +01:00
isaacs
04adf0e5a1 blog: post about streams2 feature 2012-12-18 08:45:03 -08:00
Nicolas Chambrier
496c0bd936 doc: add Google+ French community 2012-12-17 17:21:35 +01:00
Ben Noordhuis
53b826e6ae install: fix openbsd man page location
Man pages go into $PREFIX/man on OpenBSD, not $PREFIX/share/man.
2012-12-17 12:05:14 +01:00
Brian White
827b2a9b0b http: bubble up parser errors to ClientRequest
Make parser errors bubble up to the ClientRequest instead of the underlying
net.Socket object.

This is a back-port of commit c78678b from the master branch.

Fixes #3776.
2012-12-16 17:25:03 +01:00
isaacs
45cdb0e4c1 blog: Post for 0.8.16 2012-12-13 11:50:47 -08:00
isaacs
953673424a Now working on 0.8.17 2012-12-13 11:50:35 -08:00
isaacs
a18507ce11 Merge commit 'v0.8.16' into v0.8 2012-12-13 11:50:15 -08:00
isaacs
1c9c6277d5 2012.12.13, Version 0.8.16 (Stable)
* npm: Upgrade to 1.1.69

* fs: fix WriteStream/ReadStream fd leaks (Ben Noordhuis)

* crypto: fix leak in GetPeerCertificate (Fedor Indutny)

* buffer: Don't double-negate numeric buffer arg (Trevor Norris)

* net: More accurate IP address validation and IPv6 dotted notation. (Joshua Erickson)
2012-12-13 11:49:39 -08:00
isaacs
b09f97068e npm: Upgrade to v1.1.69 2012-12-12 14:41:28 -08:00
Ben Noordhuis
d65832ccd0 fs: fix WriteStream fd leak
Close the file descriptor when a write operation fails.

Fixes #4387.
2012-12-12 09:46:22 +01:00
Ben Noordhuis
6e97b2cc17 fs: fix ReadStream fd leak
Close the file descriptor when a read operation fails.

Fixes #4387.
2012-12-12 09:46:22 +01:00
Ben Noordhuis
65d824b488 test: add common.mustCall function
Verifies that the callback gets invoked <n> times during the lifetime of the
test script.

This is a back-port of commit d0e6c3f from the master branch.
2012-12-12 09:46:09 +01:00
isaacs
92e92b0215 doc: Add nodejstr to community page 2012-12-10 16:56:49 -08:00
Ben Noordhuis
c79fd0e167 doc: remove broken require.extensions example
Fixes #4384.
2012-12-06 21:58:36 +01:00
Fedor Indutny
276245d26f crypto: fix leak in GetPeerCertificate 2012-12-03 20:30:16 +04:00
Ben Noordhuis
e5649d4b3d tools: fix platform detection on freebsd, sunos
This is a back-port of upstream gyp commit r1482.
2012-12-02 03:01:20 +01:00
Ben Noordhuis
22965da799 install: fix freebsd man page location
Man pages go into $PREFIX/man on FreeBSD, not $PREFIX/share/man.
2012-12-02 02:55:50 +01:00
Lewuathe
4d0fcd515f Fix dropped html tag 2012-11-30 18:14:26 -08:00
Trevor Norris
6772308883 buffer: Don't double-negate numeric buffer arg
Fix #4331

Using double negate forces values into 32bit space. Because of this
Math.ceil needs to be used. Since NaN comparisons are always false, use
that to our advantage to return 0 if it is.

Also added two tests to verify the changes.
2012-11-30 16:23:49 -08:00
Kyle Robinson Young
acad8d9a77 website: typo fixes 2012-11-29 23:00:09 +01:00
Joshua Erickson
c9f2531ae0 net: More accurate IP address validation and IPv6 dotted notation.
* Added isIP method to make use of inet_pton to cares_wrap.cc
* Modified net.isIP() to make use of new C++ isIP method.
* Added new tests to test-net-isip.js.

This is a back-port of commit fb6377e from the master branch.
2012-11-28 21:51:27 +01:00
Ryunosuke SATO
83161455bd doc: Fix missing link target to 'https.request()' 2012-11-27 18:11:40 -08:00
isaacs
122ac4e1f2 blog: Post for v0.8.15 2012-11-26 09:20:07 -08:00
isaacs
e773be6f90 Now working on 0.8.16 2012-11-26 09:18:33 -08:00
isaacs
9f51fd6b84 Merge branch 'v0.8.15-release' into v0.8 2012-11-26 09:12:52 -08:00
isaacs
fdf91afb49 2012.11.26, Version 0.8.15 (Stable)
* npm: Upgrade to 1.1.66 (isaacs)

* linux: use /proc/cpuinfo for CPU frequency (Ben Noordhuis)

* windows: map WSAESHUTDOWN to UV_EPIPE (Ben Noordhuis)

* windows: map ERROR_GEN_FAILURE to UV_EIO (Bert Belder)

* unix: do not set environ unless one is provided (Charlie McConnell)

* domains: don't crash if domain is set to null (Bert Belder)

* windows: fix the x64 debug build (Bert Belder)

* net, tls: fix connect() resource leak (Ben Noordhuis)
2012-11-26 08:39:49 -08:00
Ben Noordhuis
121ed91331 tls: fix tls.connect() resource leak
The 'secureConnect' event listener was attached with .on(), which blocked it
from getting garbage collected. Use .once() instead.

Fixes #4308.
2012-11-26 01:51:05 +01:00
Ben Noordhuis
4cb17cb219 net: fix net.connect() resource leak
The 'connect' event listener was attached with .on(), which blocked it from
getting garbage collected. Use .once() instead.

Fixes #4308.
2012-11-24 15:27:14 +01:00
isaacs
fb5c7f03a0 blog: Don't filter out non-latest release notes
This causes too many people to ask me why it's broken.
2012-11-23 12:54:33 -08:00
isaacs
db008f7cce npm: Upgrade to 1.1.66 2012-11-23 12:51:23 -08:00
Trevor Norris
bb867c0fa6 doc: Add lines about additonal uses of Buffer
That Buffers can be used with Typed Array Views and DataViews. Included
are a couple simple examples.

Closes #4257.
2012-11-22 09:30:18 -08:00
Ben Noordhuis
7716828166 deps: upgrade libuv to 5639b2f 2012-11-20 19:21:48 +01:00
Bert Belder
b3bfb6fbb6 domains: don't crash if domain is set to null
Closes #4256
2012-11-09 00:49:24 +01:00
Bert Belder
9b22944b68 windows: fix the x64 debug build 2012-11-08 23:54:53 +01:00
Francois Marier
44dd2c392a doc: remove duplicate set of options 2012-10-30 01:20:17 +01:00
Francois Marier
326bce91d6 doc: reflect hostname v. host preference in examples
The documentation for http.request and https.request states that
`hostname` is preferred over `host` so the code examples should
use that option name.
2012-10-29 20:34:03 +01:00
isaacs
5f0a10ad21 blog: Correct shasums for v0.8.14 2012-10-25 14:42:47 -07:00
isaacs
7fe1671727 blog: Post for v0.8.14 2012-10-25 14:17:43 -07:00
isaacs
54e88b3d61 Now working on 0.8.15 2012-10-25 14:16:53 -07:00
isaacs
4379e49818 Merge branch 'v0.8.14-release' into v0.8 2012-10-25 14:15:27 -07:00
isaacs
b00527fcf0 2012.10.25, Version 0.8.14 (Stable)
* events: Don't clobber pre-existing _events obj in EE ctor (isaacs)
2012-10-25 13:49:32 -07:00
isaacs
45a13d9674 events: Don't clobber pre-existing _events obj in EE ctor 2012-10-25 13:37:08 -07:00
isaacs
d130bb060e blog: Post for v0.8.13 2012-10-25 12:54:00 -07:00
isaacs
648e38771e Now working on 0.8.14 2012-10-25 12:52:46 -07:00
isaacs
d269f7e48c Merge branch 'v0.8.13-release' into v0.8 2012-10-25 12:52:26 -07:00
isaacs
ff4c974873 2012.10.25, Version 0.8.13 (Stable)
* V8: Upgrade to 3.11.10.25

* npm: Upgrade to 1.1.65

* url: parse hostnames that start with - or _ (Ben Noordhuis)

* repl: Fix Windows 8 terminal issue (Bert Belder)

* typed arrays: use signed char for signed int8s (Aaron Jacobs)

* crypto: fix bugs in DiffieHellman (Ben Noordhuis)

* configure: turn on VFPv3 on ARMv7 (Ben Noordhuis)

* Re-enable OpenSSL UI for entering passphrases via tty (Ben Noordhuis)

* repl: ensure each REPL instance gets its own "context" (Nathan Rajlich)
2012-10-25 11:46:13 -07:00
isaacs
e1bdde05c7 V8 build: 'echo -n' considered harmful 2012-10-25 11:46:13 -07:00
isaacs
822e13d375 npm: Upgrade to 1.1.65 2012-10-25 09:15:35 -07:00
isaacs
c7b2e29e5e events: Make the EventEmitter class monomorphic
Always add domain, _events, and _maxListeners properties, set to the
default values at first.

Leads to a very very slight perf improvement when using setMaxListeners,
or dealing with a lot of EE objects that don't have any listeners.
2012-10-25 07:51:05 -07:00
Ben Noordhuis
4b8629db37 v8: remove optimization switches
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi, we set
them globally in $(TOPLEVEL)/common.gypi.

Commit 29d12c73 accidentally reintroduced the switches again. In particular,
the 'cflags!': ['-O2','-Os'] section forced building V8 without any
optimizations, resulting in a steep (~66%) performance drop on some benchmarks.

Fixes #4191.
2012-10-25 01:06:00 +02:00
Ben Noordhuis
28e6403a56 build: add --unsafe-optimizations configure switch
Turns on -O3 and other optimizations that may produce buggy code with some
toolchains. Use at your own risk.
2012-10-25 01:06:00 +02:00
Ben Noordhuis
de0303d3ad url: parse hostnames that start with - or _
Allow hostnames like '-lovemonsterz.tumblr.com' and '_jabber._tcp.google.com'.

Fixes #4177.
2012-10-25 01:06:00 +02:00
isaacs
82a72e9591 blog: Post for v0.9.3 release 2012-10-24 10:08:58 -07:00
Bert Belder
f34f1e30a6 repl: call resume() after setRawMode()
Solves #4178, but does not fix the underlying issue
2012-10-24 02:52:18 +02:00
Olivier Lalonde
626db18635 doc: child_process: document uid and gid spawn() options 2012-10-24 01:24:00 +02:00
isaacs
76a6c4bf2e V8: Reapply patches 2012-10-23 11:38:09 -07:00
isaacs
29d12c7342 V8: Upgrade to 3.11.10.25 2012-10-23 11:35:27 -07:00
isaacs
7413df0c1f npm: Upgrade to 1.1.64 2012-10-23 11:34:46 -07:00
Ben Noordhuis
b6b881378a test: add typed arrays regression test
Ensure that uint8 values >= 128 are correctly promoted to int8 <= -1.
2012-10-23 17:12:39 +02:00
Aaron Jacobs
49f0f618a9 typed arrays: use signed char for signed int8s
The C standard allows plain `char` to be unsigned. The build environment
at Google trips this issue.
2012-10-23 16:55:59 +02:00
yangguo@chromium.org
9fa953d3e7 v8: use correct timezone information on Solaris
`timezone` variable contains the difference, in seconds, between UTC and
local standard time (see `man 3 localtime` on Solaris).

Call to `tzset` is required to apply contents of `TZ` variable to
`timezone` variable.

BUG=v8:2064

Review URL: https://chromiumcodereview.appspot.com/10967066
Patch from Maciej Małecki <me@mmalecki.com>.

This is a back-port of upstream commit r12802.
2012-10-23 16:43:38 +02:00
Ben Noordhuis
844a0058d0 crypto: fix DH use-after-free and memory leak
Fix a use-after-free bug and a memory leak in the error path of
DiffieHellman::ComputeSecret().

* the BIGNUM key was used after being freed with BN_free().
* the output buffer was not freed
2012-10-22 00:20:45 +02:00
Ben Noordhuis
de18e29784 crypto: fix DH 1 byte buffer underflow
Passing a bad key to DiffieHellman::ComputeSecret() made it zero the byte
before the heap allocated buffer due to an erroneous size calculation.
2012-10-22 00:20:32 +02:00
Ben Noordhuis
82df345fbb test: add diffie-hellman regression test
Exercises the error path in DiffieHellman::ComputeSecret() in src/node_crypto.cc
2012-10-21 23:56:01 +02:00
isaacs
627f0d27e8 doc: Typo. s/arguemnt/argument/ 2012-10-16 10:59:23 -07:00
Nathan Rajlich
cca15e8e33 test: disable global variable check for "test-repl-options.js"
Previously, the "global" mode of REPLs was broken when created after another
non-global REPL (they would end up sharing the same context). Now that "global"
mode is fixed for that case (b1e78cef09), this
test case gets its global scope modified with "module" and other REPL-specific
properties, so disable the global check.
2012-10-15 14:59:57 -07:00
Ben Noordhuis
1205734e69 configure: turn on VFPv3 on ARMv7
Fixes a V8 build error caused by missing arm_fpu and arm_neon settings.

This is a back-port of commit bbf6b4e from the master branch.

Fixes #4142.
2012-10-15 23:55:26 +02:00
Ben Noordhuis
28b0cc08b8 Revert "Disable OpenSSL UI"
This reverts commit 1c88c3b3b5.

It breaks the "read a password from stdin" functionality that OpenSSL provides.

Fixes #4059, #4143.

Conflicts:

	deps/openssl/openssl.gyp
2012-10-15 23:40:15 +02:00
Jan Lehnardt
a7b5938715 docs: fix copy and paste error 2012-10-14 14:47:02 +02:00
Ben Noordhuis
4a23add90f doc: rectify http.ClientResponse close/end events
* The 'close' event doesn't emit an error object.

* It's possible for a 'close' event to come after an 'end' event, contrary to
  what the documentation said.

Fixes #4116.
2012-10-13 15:17:51 +02:00
Nathan Rajlich
b1e78cef09 repl: ensure each REPL instance gets its own "context"
Before there was this weird module-scoped "context" variable which seemingly
shared the "context" of subsequent REPL instances, unless ".clear" was invoked
inside the REPL. To be proper, we need to ensure that each REPL gets its own
"context" object. I literally don't know why this "sharing" behavior was in place
before, but it was just plain wrong.
2012-10-12 16:37:17 -07:00
Max Ogden
323bbdb0cb doc: set default background color to white 2012-10-13 00:54:21 +02:00
isaacs
58db21e6c5 Now working on 0.8.13 2012-10-12 08:57:25 -07:00
isaacs
b3536ae0a8 blog: Post about 0.8.12 2012-10-12 08:57:12 -07:00
isaacs
d411622814 Merge branch 'v0.8.12-release' into v0.8 2012-10-12 08:56:53 -07:00
isaacs
38c72d4e29 2012.10.12, Version 0.8.12 (Stable)
* npm: Upgrade to 1.1.63

* crypto: Reduce stability index to 2-Unstable (isaacs)

* windows: fix handle leak in uv_fs_utime (Bert Belder)

* windows: fix application crashed popup in debug version (Bert Belder)

* buffer: report proper retained size in profiler (Ben Noordhuis)

* buffer: fix byteLength with UTF-16LE (koichik)

* repl: make "end of input" JSON.parse() errors throw in the REPL (Nathan Rajlich)

* repl: make invalid RegExp modifiers throw in the REPL (Nathan Rajlich)

* http: handle multiple Proxy-Authenticate values (Willi Eggeling)
2012-10-11 14:34:11 -07:00
isaacs
218f08dbde npm: Upgrade to 1.1.63 2012-10-11 14:11:38 -07:00
isaacs
99b2368a6c doc: Reduce crypto stability to 2-Unstable 2012-10-11 08:32:46 -07:00
Ben Noordhuis
6a128e037e buffer: report proper retained size in profiler
Make buffers report the proper retained size in heap snapshots.

Before this commit, Buffer objects would show up in the heap profiler as being
only a few hundred bytes large, even if the actual buffer was many megabytes.
2012-10-11 01:05:18 +02:00
Bert Belder
87518f1e3c uv: upgrade to b0c1a38 2012-10-10 17:18:48 +02:00
Ben Noordhuis
eec8c2edaf crypto: fix -Wtautological-compare warning 2012-10-09 00:46:51 +02:00
Andreas Madsen
be5a8e24c2 doc: consistent use of the callback argument 2012-10-08 22:58:11 +02:00
Andrew Paprocki
8c5f269f90 Fix -Wsizeof-array-argument compiler warning. 2012-10-07 23:22:31 +02:00
Nathan Rajlich
59c166cfba repl: move "isSyntaxError()" definition to the bottom
fixes lint "line length too long" error
2012-10-05 18:33:28 -07:00
Nathan Rajlich
f826b3269d doc: document the custom "inspect()" function behavior
Closes #3361.
2012-10-05 16:48:13 -07:00
koichik
fbb0ee6f24 buffer: fix byteLength with UTF-16LE
Fixes #4075.
2012-10-04 18:18:15 +09:00
Alex Kocharin
bf0bc3565b doc: better example for process.hrtime()
Fixes #3984.
2012-10-03 22:18:33 +02:00
Ben Noordhuis
b0d04ffbd8 doc: stream: clarify meaning of 'drain' some more
Courtesy of Lee Coltrane (@coltrane).
2012-10-03 13:38:03 +02:00
Ben Noordhuis
f624be4093 doc: stream: clarify meaning of 'drain' event 2012-10-03 00:49:27 +02:00
isaacs
b90c1502e5 doc: Correct stream.write fd mention
No streams actually work this way.
2012-10-01 14:30:02 -07:00
Nathan Rajlich
3b7312d23a repl: make "end of input" JSON.parse() errors throw in the REPL 2012-10-01 11:36:06 -07:00
Nathan Rajlich
f1722a280c repl: make invalid RegExp modifiers throw in the REPL
Fixes #4012.
2012-09-30 22:47:57 -07:00
isaacs
fa912c246c blog: s/LibUV/libuv/ 2012-09-30 15:47:27 -07:00
isaacs
d3e818cf8f blog: LXJS talk by @piscisaureus 2012-09-30 10:34:28 -07:00
thewilli
33a5c8a814 http: handle multiple Proxy-Authenticate values
Just as the 'WWW-Authenticate' HTTP header the 'Proxy-Authenticate' header might
be received several times as well. Currently only one value is preserved. This
change allows to receive multiple values concatenated by space and comma.
2012-09-27 13:28:16 -07:00
isaacs
c08320c957 doc: Make the CLA more simple/sane
1. Emails should go to @isaacs, not emily.
2. Ask for the electronic signature first, not the printed faxed thing.
2012-09-27 13:25:55 -07:00
isaacs
dcc01df968 blog: Post about 0.8.11 2012-09-27 10:25:37 -07:00
isaacs
9877b8f414 Now working on 0.8.12 2012-09-27 10:25:12 -07:00
isaacs
a9429052c2 Merge branch 'v0.8.11-release' into v0.8 2012-09-27 10:24:32 -07:00
isaacs
e1f39468fa 2012.09.27, Version 0.8.11 (Stable)
* fs: Fix stat() size reporting for large files (Ben Noordhuis)
2012-09-27 09:39:23 -07:00
Bert Belder
b5db5fc9dc test: pick another CNAME record to test dns queries
Google.com no longer has a CNAME record.
2012-09-26 01:57:24 +02:00
Ben Noordhuis
ec03c47c19 fs: fix stat() reporting for large files
Use Number::New(), not Integer::New(). Large values won't fit in an Integer.

Apply to the size, ino and blocks fields.
2012-09-26 01:20:56 +02:00
isaacs
8ca44f9928 blog: Post about v0.8.10 2012-09-25 15:37:53 -07:00
isaacs
37869f1c9a Now working on 0.8.11 2012-09-25 15:36:10 -07:00
isaacs
02897bd8de Merge branch 'v0.8.10-release' into v0.8 2012-09-25 15:33:01 -07:00
isaacs
0bc273da4f 2012.09.25, Version 0.8.10 (Stable)
* npm: Upgrade to 1.1.62

* repl: make invalid RegExps throw in the REPL (Nathan Rajlich)

* v8: loosen artificial mmap constraint (Bryan Cantrill)

* process: fix setuid() and setgid() error reporting (Ben Noordhuis)

* domain: Properly exit() on domain disposal (isaacs)

* fs: fix watchFile() missing deletion events (Ben Noordhuis)

* fs: fix assert in fs.watch() (Ben Noordhuis)

* fs: don't segfault on deeply recursive stat() (Ben Noordhuis)

* http: Remove timeout handler when data arrives (Frédéric Germain)

* http: make the client "res" object gets the same domain as "req" (Nathan Rajlich)

* windows: don't blow up when an invalid FD is used (Bert Belder)

* unix: map EDQUOT to UV_ENOSPC (Charlie McConnell)

* linux: improve /proc/cpuinfo parser (Ben Noordhuis)

* win/tty: reset background brightness when color is set to default (Bert Belder)

* unix: put child process stdio fds in blocking mode (Ben Noordhuis)

* unix: fix EMFILE busy loop (Ben Noordhuis)

* sunos: don't set TCP_KEEPALIVE (Ben Noordhuis)

* tls: Use slab allocator for memory management (Fedor Indutny)

* openssl: Use optimized assembly code for x86 and x64 (Bert Belder)
2012-09-25 13:48:15 -07:00
Bert Belder
d05d6a35b6 openssl: fix compilation issues on SmartOS x64
the SunOS linker is more strict than usual, so we have to be more
correct.
2012-09-25 13:48:14 -07:00
isaacs
ea2ceb731c test: Fix premature close in test-http-client-timeout-agent 2012-09-25 11:15:52 -07:00
isaacs
411d46087f tls: lint
cc @indutny >_<
2012-09-25 11:09:39 -07:00
isaacs
2a9a5e2318 domain: Remove stray console.log 2012-09-25 11:08:52 -07:00
Bert Belder
e0e9f0c15a openssl: use optimized asm code on x86 and x64 2012-09-25 08:51:05 -07:00
Bert Belder
823e807b5b openssl: add generated asm code 2012-09-25 08:51:04 -07:00
Bert Belder
62c3879cfa openssl: add 'clean' target to asm Makefile 2012-09-25 08:51:04 -07:00
Ben Noordhuis
202ecbc9c7 openssl: generate asm code with a Makefile 2012-09-25 08:51:04 -07:00
Bert Belder
66638a4435 openssl: disable HT sidechannel attack mitigation
It used to be off before. It's extremely unlikely that such an attack
would be a viable attack against node. And it makes AES much slower.
2012-09-25 08:51:03 -07:00
Bert Belder
d2fb507556 openssl: revert empty_OPENSSL_cpuid_setup.patch 2012-09-25 08:51:03 -07:00
Bert Belder
09ac9d0b2c openssl: fix perlasm issue
When perlasm generates MASM code it sets the assembler target to 468.
In this mode MASM refuses to assemble the CPUID instruction. Bumping
the target to 586 solves this problem.
2012-09-25 08:51:03 -07:00
Bert Belder
3568edf711 openssl: add optimized bignum x64 asm code for windows 2012-09-25 08:51:02 -07:00
Fedor Indutny
7651228ab2 tls: use slab allocator 2012-09-25 08:37:08 -07:00
isaacs
83d39c8d53 npm: upgrade to 1.1.62 2012-09-25 08:29:05 -07:00
Adam Blackburn
d5e9895ce0 doc: put API table of contents in alphabetical order 2012-09-25 14:38:36 +02:00
Nathan Rajlich
0f2ed2bc2c http: make the client "res" object gets the same domain as "req"
Fixes #4046.
2012-09-24 11:48:39 -07:00
Nathan Rajlich
4a2670740c repl: make invalid RegExps throw in the REPL
Fixes #2746.
2012-09-21 19:49:29 -07:00
Bert Belder
f536eb176b uv: upgrade to 39ca621 2012-09-22 03:53:48 +02:00
Bryan Cantrill
4165f736e6 v8: loosen artificial mmap constraint
Fixes #4010.
2012-09-21 18:51:44 -07:00
isaacs
0400571676 domain: Properly exit() on domain disposal
This addresses #4034.  There are two problems happening:

1. The domain is not exited automatically when calling dispose() on it.
Then, since the domain is disposed, attempting to exit it again will do
nothing.

2. The active domain is stored on process.domain.  Since thrown errors
call `process.emit('uncaughtException', er)`, and the process is an
event emitter with a `.domain` member, it re-enters the domain a second
time before calling the error handler, pushing it onto the stack again.

Thus, if the handler calls `domain.dispose()`, then the domain is now on
the stack twice, and cannot be exited properly.  Since the domain is
disposed, any subsequent IO will be no-op'ed, since we've declared that
this context is done and best forgotten.

The solution here is twofold:

1. In EventEmitter.emit, do not enter the domain if `this===process`.
2. Automatically exit the domain when calling `domain.dispose()`.
2012-09-21 09:22:50 -07:00
isaacs
43a2b29182 blog: Post for 0.9.2 2012-09-17 18:33:36 -07:00
Ben Noordhuis
39a0836d5c fs: fix watchFile() missing deletion events
Make sure the deletion event gets reported in the following scenario:

  1. Watch a file.
  2. The initial stat() goes okay.
  3. Something deletes the watched file.
  4. The second stat() fails with ENOENT.

The second stat() translates into the first 'change' event but a logic error
stopped it from getting emitted.

Fixes #4027.
2012-09-17 17:52:50 +02:00
Robin Lee
a08271c7a8 doc: fix three typos 2012-09-17 16:05:53 +02:00
Ben Noordhuis
96ca59fbf3 process: fix setuid() and setgid() error reporting
Zero errno before calling getgrnam_r() or getpwnam_r(). If errno had previously
been clobbered, node would report the wrong error.
2012-09-17 07:20:47 +02:00
Ben Noordhuis
db5c26e3b5 fs: fix assert in fs.watch()
Fix the following error:

  FSEventWrap: Aborting due to unwrap failure at ../../src/fs_event_wrap.cc:169

It's possible and legal for a handle to be closed twice. HandleWrap::Close()
deals with that by ignoring the second close. Now FSEventWrap::Close() does
too.

Fixes #3997.
2012-09-14 02:37:51 +02:00
Ben Noordhuis
07804c7c9a fs: don't segfault on deeply recursive stat()
Check that the calls to Integer::New() and Date::New() succeed and bail out if
they don't.

V8 returns an empty handle on stack overflow. Trying to set the empty handle as
a property on an object results in a NULL pointer dereference in release builds
and an assert in debug builds.

Fixes #4015.
2012-09-14 02:37:51 +02:00
Nathan Rajlich
1d52968d1d v8: Replace VFP by VFP2 in common.gypi
This fixes an omission in cl 10818026.
Patch by Nathan Rajlich.

Review URL: http://codereview.chromium.org/10913256
2012-09-13 15:00:46 -07:00
yangguo@chromium.org
25c2940a08 v8: Relax requirement from VFP3 to VFP2 where possible.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10818026

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@12194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-13 15:00:05 -07:00
Frédéric Germain
451ff1540a http: Remove timeout handler when data arrives 2012-09-12 09:50:06 -07:00
Ben Noordhuis
58a5bc1ec7 doc: fs: clarfify fs.watch() documentation
fs.watch() is implemented on all supported platforms but, depending on the
object being watched, doesn't always work reliably (or at all).

Fixes #4005.
2012-09-12 17:08:32 +02:00
Ben Noordhuis
4870a4e3da doc: http: expand request.headers documentation 2012-09-12 02:46:53 +02:00
isaacs
362189a5d3 Now working on 0.8.10 2012-09-11 11:59:37 -07:00
isaacs
d80de98e91 blog: Post for 0.8.9 2012-09-11 11:59:10 -07:00
isaacs
72d3124841 Merge branch 'v0.8.9-release' into v0.8 2012-09-11 11:58:35 -07:00
isaacs
b88c3902b2 2012.09.11, Version 0.8.9 (Stable)
* v8: upgrade to 3.11.10.22

* GYP: upgrade to r1477

* npm: Upgrade to 1.1.61

* npm: Don't create world-writable files (isaacs)

* windows: fix single-accept mode for shared server sockets (Bert Belder)

* windows: fix uninitialized memory access in uv_update_time() (Bert Belder)

* windows: don't throw when a signal handler is attached (Bert Belder)

* unix: fix memory leak in udp (Ben Noordhuis)

* unix: map errno ESPIPE (Ben Noordhuis)

* unix, windows: fix memory corruption in fs-poll.c (Ben Noordhuis)

* sunos: fix os.cpus() on x86_64 (Ben Noordhuis)

* child process: fix processes with IPC channel don't emit 'close' (Bert Belder)

* build: add a "--dest-os" option to force a gyp "flavor" (Nathan Rajlich)

* build: set `process.platform` to "sunos" on SunOS (Nathan Rajlich)

* build: fix `make -j` fails after `make clean` (Bearice Ren)

* build: fix openssl configuration for "arm" builds (Nathan Rajlich)

* tls: support unix domain socket/named pipe in tls.connect (Shigeki Ohtsu)

* https: make https.get() accept a URL (koichik)

* http: respect HTTP/1.0 TE header (Ben Noordhuis)

* crypto, tls: Domainify setSNICallback, pbkdf2, randomBytes (Ben Noordhuis)

* stream.pipe: Don't call destroy() unless it's a function (isaacs)
2012-09-11 11:08:07 -07:00
isaacs
1c2982b94f Update doc and test for sunos/solaris switch 2012-09-11 10:57:25 -07:00
isaacs
6e0b8b169c doc: Fork me image should be full url 2012-09-11 08:45:25 -07:00
isaacs
e35cec5c05 doc: Put current version on homepage 2012-09-11 08:43:31 -07:00
isaacs
005ae23250 doc: Add Node Dublin to community page 2012-09-11 08:43:28 -07:00
isaacs
41e1b171ec stream.pipe: Don't call destroy() unless it's a function 2012-09-10 16:00:27 -07:00
isaacs
54a4c639e9 npm: Upgrade to 1.1.61 2012-09-10 09:11:54 -07:00
Nathan Rajlich
608898c15b configure: add a "--dest-os" option to force a gyp "flavor"
This makes cross-compiling easier. i.e. from my mac:

    ./configure --dest-cpu=arm --dest-os=linux
2012-09-09 11:41:05 -07:00
Nathan Rajlich
fb383a0ad0 util: make util.inspect() work when "hasOwnProperty" is overwritten 2012-09-08 15:09:59 -07:00
Ben Noordhuis
9a3521cb25 http: respect HTTP/1.0 TE header
A HTTP/1.0 client does not support 'Transfer-Encoding: chunked' unless it
explicitly requests it by sending a 'TE: chunked' header.

Before this commit, node.js always disabled chunked encoding for HTTP/1.0
clients. Now it will scan for the TE header and turn on chunked encoding if
requested and applicable.

Fixes #940.
2012-09-08 21:43:57 +02:00
Pooya Karimian
0087bc6370 cluster.worker description and examples ere missing from the top level of docs 2012-09-06 22:00:05 +02:00
Fedor Indutny
052e63f27f v8: fix semaphore on MacOS
Landed upstream: https://chromiumcodereview.appspot.com/10867009/
2012-09-06 16:07:40 +02:00
Bert Belder
c5e554dc7e v8: reapply floating patches 2012-09-06 15:58:37 +02:00
Bert Belder
4899116d4b v8: upgrade to 3.11.10.22 2012-09-06 15:58:09 +02:00
Bert Belder
6174ea6b4c doc: don't use &apos;
Ref: #3964
2012-09-04 21:15:39 +02:00
Atsuya Takagi
9f57e422cf doc: fix typo in api/cluster 2012-09-04 00:41:40 +02:00
Ben Noordhuis
7dfa587d18 crypto, tls: make setSNICallback() compatible with domains 2012-09-03 23:33:02 +02:00
Ben Noordhuis
7d0543c128 crypto: make pbkdf2() compatible with domains 2012-09-03 23:33:02 +02:00
Ben Noordhuis
d1eff9ab68 crypto: make randomBytes() compatible with domains
Don't execute the callback in the context of the global object.

MakeCallback() tries to apply the active domain to the callback. If the user
polluted the global object with a 'domain' property, as in the code example
below, MakeCallback() will try to apply that.

Example:

    domain = {};                // missing var keyword is intentional
    crypto.randomBytes(8, cb);  // TypeError: undefined is not a function

Fixes #3956.
2012-09-03 23:33:02 +02:00
Bert Belder
ea1cba6246 windows: don't blow when a signal handler is attached
Blowing up when the user attaches a signal handler makes no sense. Also,
in Node 0.10 signals will be supported, so allow people to get used to
it.
2012-09-03 19:05:40 +02:00
koichik
37f0eb8df3 Revert "buffer: added support for writing NaN and Infinity"
This reverts commit 6b9425fe37.
2012-09-02 20:59:50 +09:00
Ben Noordhuis
6c5fdd5223 doc: document prerequisites in README 2012-09-02 13:32:57 +02:00
koichik
6b9425fe37 buffer: added support for writing NaN and Infinity
to writeDoubleBE(), writeDoubleLE(), writeFloatBE() and writeFloatLE().
Fixes #3934.
2012-09-02 00:27:17 +09:00
Shigeki Ohtsu
f347077e78 tls: support unix domain socket/named pipe in tls.connect 2012-08-31 00:23:36 +02:00
Bert Belder
9603f08f21 uv: upgrade to 24c062c 2012-08-30 17:28:02 +02:00
Bert Belder
b0d2795fe9 child process: fix processes with IPC channel don't emit 'close'
With this patch the IPC socket is no longer available in the
ChildProcess.stdio array. This shouldn't be very problematic, since
this socket was effectively non-functional; it would never emit any
events.
2012-08-30 16:13:27 +02:00
Nathan Rajlich
355c148427 build: set process.platform to "sunos" on SunOS
gyp sets it to "solaris" by default, but versions of node v0.6.x and
older would report "sunos". Let's keep things consistent.

Fixes #3944.
2012-08-29 16:12:59 -07:00
Ankur Oberoi
a57d31595d doc: fix grammar errors 2012-08-30 00:27:00 +02:00
isaacs
dec16aa5c2 Test client renegotiation attacks on HTTPS
This test should output roughly the same results as the tls ci-reneg attack
pummel test.  However, it does not.
2012-08-29 12:26:28 -07:00
isaacs
0ef1e5b5eb blog: Post for 0.9.1 release 2012-08-28 15:34:08 -07:00
Bearice Ren
ef3617c6f8 build: fix make -j' fails after make clean'
make fails if:
    ./configure && make clean && make -j6

as out/Makefile has not yet be made when entering sub dirs
2012-08-28 22:10:56 +02:00
Bert Belder
2418434568 windows: fix single-accept mode for shared server sockets 2012-08-28 02:17:08 +02:00
Ben Noordhuis
2786737417 build: compile with -fno-tree-sink if gcc <= 4.4
Fixes a 'pure virtual method called' run-time error with some versions of gcc
on some platforms, notably ARM.
2012-08-27 22:09:23 +02:00
Ben Noordhuis
84590f3fe9 build: fix -fno-tree-vrp heuristic
-fno-tree-vrp is a gcc only switch. Don't enable it when compiling with clang,
it will only complain about -fno-tree-vrp being ignored.
2012-08-27 22:09:01 +02:00
Nathan Rajlich
2d0c1da975 docs: fix syntax error in "https" example 2012-08-24 16:11:55 -07:00
koichik
752ac320ae https: make https.get() accept a URL
https.get() now accepts either a URL (as a string) or an options object.

Refs #2859.
Fixes #3882.
2012-08-24 16:56:06 +02:00
Brandon Wilson
59011448c0 doc: more uniform and sleek buttons
Closes GH-3909
2012-08-24 15:47:53 +02:00
Nathan Rajlich
7142b260c6 build: tweak the openssl android configuration to build
Removed NO_CAST, NO_MD2 and NO_STORE because otherwise there were build errors.

Added NO_CAMELLIA, NO_MDC2, and NO_CMS because otherwise there were linker errors.
2012-08-23 16:46:03 -07:00
Nathan Rajlich
f8fd9aca8b build: use the openssl android configuration for "arm" builds 2012-08-23 16:45:55 -07:00
Bert Belder
985fdf2cb3 doc: tidy the community page html file 2012-08-23 17:54:25 +02:00
Bert Belder
6c371c6a8c doc: remove Felix's IRC logs from the community page
It's been down for months.
2012-08-23 17:54:24 +02:00
Bert Belder
31ddd9516e doc: move ul styling to pipe.css 2012-08-23 17:54:23 +02:00
Bert Belder
1eab51412f doc: pixel nudge 2012-08-23 17:54:22 +02:00
Bert Belder
45cd4e211e doc: use somewhat consistent styling for css assets 2012-08-23 17:54:12 +02:00
Stéphan Kochen
81b711ba0b doc: remove nodejs-dev from the community page 2012-08-23 16:04:53 +02:00
Ben Noordhuis
422772f23b net: fix asserts
Fixes a 'Converting circular structure to JSON' TypeError.
2012-08-23 16:03:48 +02:00
isaacs
1597ce0eb3 website: Fix download link on win, un-break industry section 2012-08-22 15:11:34 -07:00
Bert Belder
99ad52ecbe doc: remote the "recommended modules" section 2012-08-22 23:58:34 +02:00
isaacs
0407ecfcfb blog: v0.8.8 release 2012-08-22 12:53:22 -07:00
isaacs
0ccdedab79 Now working on 0.8.9 2012-08-22 12:52:05 -07:00
isaacs
0ee1760ee1 Merge branch 'v0.8.8-release' into v0.8 2012-08-22 12:51:53 -07:00
Ryan Dahl
f90c9ce0e2 Upgrade GYP to r1477 2012-08-22 15:18:45 -04:00
isaacs
a299c97bbc 2012.08.22, Version 0.8.8 (Stable)
* V8: upgrade to 3.11.10.19

* npm: upgrade to 1.1.59

* windows: fix uninitialized memory access in uv_update_time() (Bert Belder)

* unix, windows: fix memory corruption in fs-poll.c (Ben Noordhuis)

* unix: fix integer overflow in uv_hrtime (Tim Holy)

* sunos: fix uv_cpu_info() on x86_64 (Ben Noordhuis)

* tls: update default cipher list (Ben Noordhuis)

* unix: Fix llvm and older gcc duplicate symbol warnings (Bert Belder)

* fs: fix use after free in stat watcher (Ben Noordhuis)

* build: Fix using manually compiled gcc on OS X (Nathan Rajlich)

* windows: make junctions work again (Bert Belder)
2012-08-22 11:03:20 -07:00
isaacs
c259499945 npm: Upgrade to 1.1.59 2012-08-22 11:03:15 -07:00
isaacs
ee200942dd lint 2012-08-22 11:03:14 -07:00
Ron Korving
2e1f2b535e doc: fix typo in cluster example code 2012-08-22 09:33:52 +02:00
isaacs
2f1985ca7d npm: Upgrade to 1.1.57 2012-08-21 17:38:21 -07:00
isaacs
024f4b12a5 npm: Upgrade to 1.1.56 2012-08-21 16:27:30 -07:00
isaacs
2bcb9ab7bc npm: Upgrade to 1.1.55 2012-08-21 15:29:37 -07:00
Ben Noordhuis
badbd1af27 tls: update default cipher list
Update the default cipher list from RC4-SHA:AES128-SHA:AES256-SHA
to ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
in order to mitigate BEAST attacks.

The documentation suggested AES256-SHA but unfortunately that's a CBC cipher
and therefore susceptible to attacks.

Fixes #3900.
2012-08-21 22:27:13 +02:00
Ben Noordhuis
7c75ca7182 doc: cluster: setupMaster() can be called only once 2012-08-21 13:44:29 +02:00
Bert Belder
ef0ca2affd v8: reapply floating patches 2012-08-21 03:05:25 +02:00
Bert Belder
2d9239359d v8: upgrade to v3.11.10.19 2012-08-21 03:04:16 +02:00
Bert Belder
d38d7bea6c unix: don't explicitly instantiate v8::Persistent<x> templates
These explicit instantiations were added to make MSVC happy. It turns
out that some older versions of gcc and llvm now complain about duplicate
symbols, so we instantiate these templates only when MSVC is used.
2012-08-20 18:42:05 +02:00
Ben Noordhuis
b1ffbdc975 fs: fix use after free in stat watcher
The uv_fs_poll_t handle was stopped but not closed, leaving libuv's internal
handle queue in a corrupted state.
2012-08-20 17:29:58 +02:00
Ben Noordhuis
0844e2359b deps: upgrade libuv to 012cbda 2012-08-20 17:29:58 +02:00
Nathan Rajlich
be3a77bd42 build: don't use "-Wnewline-eof" on OS X
This is the only thing preventing a manually compiled version of GCC
(rather than Apple's provided llvm-gcc or heavily modified gcc 4.2)
from working properly, so we might as well enable support for that.

With this patch I was able to compile node using a manually compiled
gcc 4.7.1.

Closes #3887.
2012-08-20 08:18:14 -07:00
Bert Belder
9918e5d4f6 windows: make junctions work again
Closes GH-3879
2012-08-17 02:30:57 +02:00
Bert Belder
9263213d8e Avoid compiler warning about negating unsigned value 2012-08-17 01:08:06 +02:00
Bert Belder
e8fd808dfb windows: avoid MSVC warnings about templates not having a dll interface 2012-08-17 01:02:03 +02:00
isaacs
060141c58a website: Improved install button behavior
Just install whatever's best for the OS.

Detect host os and architecture from the navigator properties.  If we
can't make a good guess, then they get the tarball, and of course
everything we have is on the full download page.
2012-08-16 15:41:23 -07:00
isaacs
b7223abbdc v8: Reapply floating patches 2012-08-16 14:43:42 -07:00
isaacs
73976b6c9d v8: Upgrade to 3.11.10.18 2012-08-16 14:42:56 -07:00
isaacs
226d37bb68 blog: Fix binary links for 0.8.7 post 2012-08-15 18:56:48 -07:00
Nathan Rajlich
f9df96b950 email-footer: update the binary package links to x86/x64 2012-08-15 18:05:33 -07:00
isaacs
c0558ff774 website: fix font-size on 'explore' list items 2012-08-15 17:33:03 -07:00
isaacs
073c7b4d08 Now working on 0.8.8 2012-08-15 17:25:25 -07:00
isaacs
25de1c1feb Merge branch 'v0.8.7-release' into v0.8 2012-08-15 17:25:01 -07:00
isaacs
b6cf0454a9 blog: release 0.8.7 2012-08-15 17:23:59 -07:00
isaacs
f640c5d35c 2012.08.15, Version 0.8.7 (Stable)
* npm: Upgrade to 1.1.49

* website: download page (Golo Roden)

* crypto: fix uninitialized memory access in openssl (Ben Noordhuis)

* buffer, crypto: fix buffer decoding (Ben Noordhuis)

* build: compile with -fno-tree-vrp when gcc >= 4.0 (Ben Noordhuis)

* tls: handle multiple CN fields when verifying cert (Ben Noordhuis)

* doc: remove unused util from child_process (Kyle Robinson Young)

* build: rework -fvisibility=hidden detection (Ben Noordhuis)

* windows: don't duplicate invalid stdio handles (Bert Belder)

* windows: fix typos in process-stdio.c (Bert Belder)
2012-08-15 15:52:57 -07:00
isaacs
24ff8f4c79 website: Sharpen and clean up download page more
Retinaify the images!
2012-08-15 15:52:57 -07:00
isaacs
86778607c9 build: Don't set gcc_version for Windows 2012-08-15 11:29:34 -07:00
isaacs
afa57799e4 website: Use table for download page
Paragraphs of text are too wordy.

Use big pretty images and clickable blocky links.
2012-08-15 09:10:03 -07:00
Golo Roden
15c6c0eecc website: download page
- Improved styling of download links.
- index.html#download now redirects to /download/
- Added missing hyphens, and added the missing "and 64-bit" for the Mac
  Installer.
2012-08-15 09:09:23 -07:00
isaacs
3ccee08759 npm: Upgrade to 1.1.49
- node-gyp@0.6.5
- abstracted-out configs
- publishing over proxies
- bugfixes to all the deps
2012-08-14 20:27:28 -07:00
Ben Noordhuis
2c13cbbc0b crypto: fix uninitialized memory access in openssl
ASN1_STRING_to_UTF8() passes an ASN1_STRING to ASN1_STRING_set() but forgot to
initialize the `length` field.

Fixes the following valgrind error:

  $ valgrind -q --track-origins=yes --num-callers=19 \
      out/Debug/node test/simple/test-tls-client-abort.js
  ==2690== Conditional jump or move depends on uninitialised value(s)
  ==2690==    at 0x784B69: ASN1_STRING_set (asn1_lib.c:382)
  ==2690==    by 0x809564: ASN1_mbstring_ncopy (a_mbstr.c:204)
  ==2690==    by 0x8090F0: ASN1_mbstring_copy (a_mbstr.c:86)
  ==2690==    by 0x782F1F: ASN1_STRING_to_UTF8 (a_strex.c:570)
  ==2690==    by 0x78F090: asn1_string_canon (x_name.c:409)
  ==2690==    by 0x78EF17: x509_name_canon (x_name.c:354)
  ==2690==    by 0x78EA7D: x509_name_ex_d2i (x_name.c:210)
  ==2690==    by 0x788058: ASN1_item_ex_d2i (tasn_dec.c:239)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x787C93: ASN1_item_d2i (tasn_dec.c:136)
  ==2690==    by 0x78F5E4: d2i_X509 (x_x509.c:141)
  ==2690==    by 0x7C9B91: PEM_ASN1_read_bio (pem_oth.c:81)
  ==2690==    by 0x7CA506: PEM_read_bio_X509 (pem_x509.c:67)
  ==2690==    by 0x703C9A: node::crypto::SecureContext::AddRootCerts(v8::Arguments const&) (node_crypto.cc:497)
  ==2690==  Uninitialised value was created by a stack allocation
  ==2690==    at 0x782E89: ASN1_STRING_to_UTF8 (a_strex.c:560)
2012-08-15 02:15:47 +02:00
Ben Noordhuis
bcb5bdebe7 test: raise pummel/test-net-throttle write req size
pummel/test-net-throttle assumes that a couple of big write requests result in
some of them getting queued because the kernel's send buffer fills up.

Said assumption breaks on systems with large send buffers. Raise the size of
the write request to ameliorate the issue.

This is a back-port of commit 6770555 from the master branch.
2012-08-14 23:11:28 +02:00
Ben Noordhuis
786e1e8712 buffer, crypto: fix buffer decoding
Before this commit, DecodeWrite() mistakenly tried to convert buffers to
UTF-8 strings which:

  a) produced invalid character sequences when the buffer contained
     octets > 127, and
  b) lead to spurious test failures because DecodeWrite() wrote less bytes
     than DecodeBytes() said it would, with the remainder either containing
     zeros or garbage

Fix that by simply copying the buffer's data to the target buffer when the
encoding is BINARY or by converting the buffer to a binary string when it's
UTF8 or ASCII.

Fixes #3651, #3866.
2012-08-14 23:00:09 +02:00
Ben Noordhuis
100e163dda build: compile with -fno-tree-vrp when gcc >= 4.0 2012-08-13 15:33:27 +02:00
Ben Noordhuis
9f26130a0e deps: upgrade libuv to 2c3e8b6 2012-08-13 15:33:27 +02:00
Ben Noordhuis
6b18e88b68 tls: handle multiple CN fields when verifying cert
Fixes #3861.
2012-08-12 21:48:26 +02:00
Kyle Robinson Young
4ef808ec0a doc: remove unused util from child_process 2012-08-12 00:08:43 +02:00
Nathan Rajlich
64ac54a64d Makefile: add a better check to ensure a node "release"
Closes #3841.
Closes #3842.
2012-08-09 17:11:41 -07:00
isaacs
c82e2889e8 blog post for 0.8.6 2012-08-07 12:05:23 -07:00
isaacs
e8bc2edabf Now working on 0.8.7 2012-08-07 12:02:49 -07:00
isaacs
e8834dc1a1 Merge branch 'v0.8.6-release' into v0.8 2012-08-07 12:02:38 -07:00
isaacs
0544a586ca 2012.08.07, Version 0.8.6 (Stable)
* npm: Upgrade to v1.1.48

* Add 'make binary' to build binary tarballs for all Unixes (Nathan Rajlich)

* zlib: Emit 'close' on destroy(). (Dominic Tarr)

* child_process: Fix stdout=null when stdio=['pipe'] (Tyler Neylon)

* installer: prevent ETXTBSY errors (Ben Noordhuis)

* installer: honor --without-npm, default install path (Ben Noordhuis)

* net: make pause work with connecting sockets (Bert Belder)

* installer: fix cross-compile installs (Ben Noordhuis)

* net: fix .listen({fd:0}) (Ben Noordhuis)

* windows: map WSANO_DATA to UV_ENOENT (Bert Belder)
2012-08-07 11:56:58 -07:00
isaacs
f11a3dfcd6 npm: Upgrade to 1.1.48
Fixes an issue with publishing readmes that are not called
'README.md', so that they still end up on the website
2012-08-06 19:09:58 -07:00
Nathan Rajlich
093be8b16b install: prevent a KeyError from being thrown when PORTABLE is not set 2012-08-06 13:22:05 -07:00
isaacs
caf69aa91a npm: Upgrade to 1.1.47 2012-08-06 13:07:31 -07:00
isaacs
9badc002b4 uv: Upgrade to dfb6be0 2012-08-06 12:40:40 -07:00
Nathan Rajlich
a23df7710a Merge branch 'binary-tarballs' into v0.8 2012-08-06 12:25:45 -07:00
Nathan Rajlich
cc6034ac86 email-footer: add links to the expected common binary packages
We can do other OSs like 32 and 64-bit OS X, but we should encourage
users to use the installer on OS X so we'll omit it here.
2012-08-06 11:57:47 -07:00
Nathan Rajlich
dc818135a5 Makefile: move the release verification logic into a make release-only target 2012-08-06 11:41:45 -07:00
Nathan Rajlich
8b11f29cf3 Makefile: properly set the ARCH variable when forcing a DESTCPU 2012-08-06 11:40:44 -07:00
Nathan Rajlich
dc9ae01ef7 Makefile: allow the dest-cpu to be specified for make binary
Needed for 64-bit Solaris, and 32-bit OS X
2012-08-06 11:40:44 -07:00
Nathan Rajlich
eadc2ec5c8 Makefile: add make binary helper target 2012-08-06 11:40:39 -07:00
Nathan Rajlich
bd10bf4418 Makefile: add make tar helper target 2012-08-06 11:40:01 -07:00
Nathan Rajlich
42aac41b93 Makefile: add target for precompiled binary tarballs
This target compiles node with "/" as the prefix and installs into a directory
like: "node-v0.8.6-darwin-x86_64". Then it creates a gzipped-tarball of that
directory, called something like: "node-v0.8.6-darwin-x86_64.tar.gz".
2012-08-06 10:22:08 -07:00
Nathan Rajlich
7a9db6cfb1 install: add a "portable" mode to the shebang-rewriting logic
This "portable" mode rewrites the npm shebang to use the "node" executable
in the same directory relative to the "npm" script. This makes the "npm"
script "just work" even when "node" is not in the user's $PATH.

This mode is necessary for the precompiled binary packages that may potentially
be extracted to anywhere. The regular shebang-rewriting logic would normally
set the npm script's shebang to "/bin/node" which will not be present on anyone's
machine. In the end, we want the precompiled packages to be as user-friendly as
possible.
2012-08-06 10:18:27 -07:00
Nathan Rajlich
6bdd4d0205 install: install the "wafadmin/Tools" files into the correct dir
Previously they were going into just "wafadmin" and node-waf wasn't working.
2012-08-06 10:16:09 -07:00
Kyle Robinson Young
bc7479d232 doc: fix typos in child_process 2012-08-06 00:13:56 +02:00
isaacs
4ff56aa15e doc: util.pump is deprecated. Use Stream.pipe 2012-08-05 14:47:23 -07:00
isaacs
7bb814f9db errnoException must be done immediately 2012-08-05 14:42:22 -07:00
isaacs
93be4ffd4b test-message: fix message output
1. The net changes add a stack frame to stdin errors.
2. The error line numbers were overly strict in many places.
2012-08-05 14:33:23 -07:00
Nathan Rajlich
3254caceef install: use os.path.join() to create the npm shebang
Prettier formatting for the shebang if the "prefix" ends with a /
2012-08-05 14:02:30 -07:00
Dominic Tarr
f4a4ef7a2d zlib: Emit 'close' on destroy(). 2012-08-04 13:04:15 -07:00
Tyler Neylon
b48684c6f1 child_process: Fix stdout=null when stdio=['pipe']
Previously, a command with a short stdio array would result in the child's
stdout and stderr objects set to null. For example:

var c = child_process.spawn(cmd, args, {stdio: ['pipe']});
// results in c.stdout === null.

The expected behavior is the above line functioning the same as this one:

var c = child_process.spawn(cmd, args, {stdio: ['pipe', null, null]});
// provides correct (non-null) c.stdout; as does the above, after this fix.
2012-08-04 11:30:58 -07:00
isaacs
a7f3288a87 blog post for 0.6.21 2012-08-04 11:30:44 -07:00
Nathan Rajlich
57f785151a install: install the "wafadmin" files into the correct directory
Before they were just being copied into "lib/node/".
Now they go into "lib/node/wafadmin/".
2012-08-04 00:10:58 -07:00
Ben Noordhuis
110e499fe7 installer: prevent ETXTBSY errors
The installer does what amounts to `cp -p`. If the node binary is in use at
the time of the copy, it'd fail with a ETXTBSY error. That's why it's unlinked
first now.
2012-08-04 02:41:34 +02:00
Ben Noordhuis
b21c8e0bfd installer: honor --without-npm, default install path
* honor the --without-waf and --without-npm configure switches

* a small logic bug made the installer script install to $PWD instead of
  /usr/local if --prefix= was not passed to configure
2012-08-04 02:18:18 +02:00
Bert Belder
5fdeebd94d net: make pause work with connecting sockets
This fixes the problem that calling pause() on a socket would not
actually prevent 'data' events from being emitted. It also replaces
the existing test by a more elaborate one.

Ref: #3118
2012-08-03 17:11:08 +02:00
isaacs
585388bbd8 blog: Fix date on 0.8.5 release 2012-08-02 15:00:57 -07:00
isaacs
575c12bba3 Blog post about 0.8.5 2012-08-02 14:59:47 -07:00
isaacs
02dae998c3 Now working on 0.8.6 2012-08-02 14:58:15 -07:00
isaacs
2bee3aeee9 Merge branch 'v0.8.5-release' into v0.8 2012-08-02 14:57:34 -07:00
isaacs
9b86a4453f 2012.08.02, Version 0.8.5 (Stable)
* node: tag Encode and friends NODE_EXTERN (Ben Noordhuis)

* fs: fix ReadStream / WriteStream missing callback (Gil Pedersen)

* fs: fix readFileSync("/proc/cpuinfo") regression (Ben Noordhuis)

* installer: don't assume bash is installed (Ben Noordhuis)

* Report errors properly from --eval and stdin (isaacs)

* assert: fix throws() throws an error without message property (koichik)

* cluster: fix libuv assert in net.listen() (Ben Noordhuis)

* build: always link sunos builds with libumem (Trent Mick)

* build: improve armv7 / hard-float detection (Adam Malcontenti-Wilson)

* https: Use host header as effective servername (isaacs)

* sunos: work around OS bug to prevent fs.watch() from spinning (Bryan Cantrill)

* linux: fix 'two watchers, one path' segfault (Ben Noordhuis)

* windows: fix memory leaks in many fs functions (Bert Belder)

* windows: don't allow directories to be opened for writing/appending (Bert Belder)

* windows: make fork() work even when not all stdio handles are valid (Bert Belder)

* windows: make unlink() not remove mount points, and improve performance (Bert Belder)

* build: Sign pkg installer for OS X (isaacs)
2012-08-02 13:56:50 -07:00
isaacs
2dd710e7ea build: Sign pkg installer for OS X
This makes the installer work on Mountain Lion.
2012-08-02 13:56:50 -07:00
Ben Noordhuis
9315377693 doc: improve cluster.workers documentation 2012-08-02 17:47:33 +02:00
isaacs
37537d5720 test: stdin error messages 2012-08-02 08:11:18 -07:00
isaacs
f5c07b65a0 npm: Upgrade to 1.1.46 2012-08-02 08:09:47 -07:00
Ben Noordhuis
50e00de92a installer: fix cross-compile installs
The old installer was a JS script, which didn't work if node had been
cross-compiled for another architecture. Replace it with a python script.

Fixes #3807.
2012-08-02 13:51:35 +02:00
Ben Noordhuis
34c750d7a9 net: fix .listen({fd:0}) 2012-08-02 13:37:02 +02:00
Ben Noordhuis
6db9e12de5 deps: remove openssl apps and tests
Shrinks the tarball by a few hundred kilobytes and fixes a broken symlinks
issue on Windows.

Fixes #3813.
2012-08-02 12:20:19 +02:00
Ben Noordhuis
53f3b128f5 node: tag Encode and friends NODE_EXTERN
Makes the symbols visible on Windows. They were already visible on Unices.

Fixes #3811.
2012-08-02 01:35:54 +02:00
Gil Pedersen
f1fba8d1f5 fs: fix ReadStream / WriteStream missing callback
The (undocumented) callback argument to .destroy() was not called if the
stream was no longer readable / writable.
2012-08-02 01:25:53 +02:00
Ben Noordhuis
23f09d7e02 fs: fix readFileSync("/proc/cpuinfo") regression
Don't use positional reads. Not all proc files support pread(), especially on
older linux kernels.

Fixes #3808.
2012-08-01 20:30:40 +02:00
isaacs
fd56981b4c blog: Remove all windows line endings once and for all 2012-08-01 10:14:17 -07:00
Dave Pacheco
fe659a6017 update profiling blog post to use shell redirection instead of -o 2012-08-01 10:11:36 -07:00
isaacs
f70be41d80 blog: Remove ^M chars from profiling-node-js blog post 2012-08-01 10:11:30 -07:00
Ben Noordhuis
cccce60b3e installer: don't assume bash is installed
Use `/bin/sh` instead of `bash` when running the relocate.sh script.
2012-08-01 13:39:12 +02:00
Bert Belder
285a46d1ca uv: upgrade to 6209fe5 2012-08-01 01:45:44 +02:00
Eugen Dueck
af699c47d1 doc: http: document res.write() drain return value 2012-08-01 01:45:09 +02:00
Bert Belder
2981f01b46 v8: don't show performance warnings when compiling with msvc
Patch sent upstream: http://codereview.chromium.org/10829109/
2012-08-01 00:52:37 +02:00
Bert Belder
9e2319f977 docs: remove unused require from example
Closes GH-3801
2012-07-31 21:38:58 +02:00
Bert Belder
80ab9a891a uv: upgrade to 69c2ef8 2012-07-31 21:26:26 +02:00
Ben Noordhuis
de16da532e deps, tools: remove stray reject files 2012-07-31 13:45:16 +02:00
Ben Noordhuis
2eb6a62f4f doc: document child_process.fork() limitation 2012-07-31 03:09:49 +02:00
isaacs
f8dab6acb6 doc: Remove timeout arg in child_process.fork
Fix #3784
2012-07-30 11:01:57 -07:00
Shigeki Ohtsu
5b37da2ac0 doc: fix domains example
Need `utf8` encoding for JSON.parse and fix to avoid JSON.parse error when only
one argument is passed in domain.bind
2012-07-30 19:15:46 +02:00
isaacs
b3cf3f35fc Report errors properly from --eval and stdin 2012-07-30 08:21:39 -07:00
koichik
72bc4dcda4 assert: fix throws() throws an error without message property
Fixes #2893.
2012-07-29 19:48:16 +09:00
Ben Noordhuis
aa0650f444 cluster: fix libuv assert in net.listen()
Problem: calling `server.listen()` (no port) on a net.Server triggered the
following libuv assertion:

  node: ../deps/uv/src/unix/stream.c:406: uv__write: Assertion `fd_to_send >= 0'
  failed.

Cause: uv_tcp_t handles are lazily initialized. Omitting the port made the
handle get initialized even more lazily. Too lazily - it wasn't initialized
when the handle was sent over to the child process.

Solution: implicitly bind to a random port in listen() when the port number
is omitted, it forces the handle to initialize. This is not a change in
behavior, listen() has always been identical to listen(0).

Fixes #3325.
2012-07-29 02:07:16 +02:00
Ben Noordhuis
879d329a5a deps: upgrade libuv to 4fe1916 2012-07-28 16:50:55 +02:00
Ben Noordhuis
d559bed0d5 node: use variadic functions in ev-emul.h
Fixes #3786.
2012-07-28 14:10:13 +02:00
Trent Mick
f70b138fcb always link sunos builds with libumem 2012-07-27 11:03:26 -07:00
Adam Malcontenti-Wilson
90efdb3a5b build: improve armv7 / hard-float detection 2012-07-26 23:38:34 +02:00
isaacs
b0c0111b04 https: Use host header as effective servername 2012-07-25 13:38:43 -07:00
Nathan Rajlich
9eddaebb79 assert: remove unnecessary use of __proto__
AssertionError already inherits from Error above using util.inherits(),
so this extra line was redundant.

test/simple/test-assert.js already tests for `instanceof`, and still passes.
2012-07-25 10:41:08 -07:00
isaacs
b207e24bcd Blog post for 0.8.4 2012-07-25 10:38:41 -07:00
isaacs
3d34590fba Now working on v0.8.5 2012-07-25 10:28:03 -07:00
isaacs
32141844f1 Merge branch 'v0.8.4-release' into v0.8 2012-07-25 10:26:03 -07:00
isaacs
8656c2654e Fix #3761 build: Default to V=1 2012-07-25 10:25:37 -07:00
isaacs
f98562fcd7 2012.07.25, Version 0.8.4 (Stable)
* V8: Upgrade to 3.11.10.17

* npm: Upgrade to 1.1.45

* net: fix Socket({ fd: 42 }) api (Ben Noordhuis)

* readline: Remove event listeners on close (isaacs)

* windows: correctly prep long path for fs.exists(Sync) (Bert Belder)

* debugger: wake up the event loop when a debugger command is dispatched (Peter Rybin)

* tls: verify server's identity (Fedor Indutny)

* net: ignore socket.setTimeout(Infinity or NaN) (Fedor Indutny)
2012-07-24 17:06:58 -07:00
isaacs
7fd3cb666b Build: add jslintfix 2012-07-24 17:06:57 -07:00
isaacs
5809426d75 net.js: lint 2012-07-24 17:05:31 -07:00
Ben Noordhuis
1513848f88 net: fix Socket({ fd: 42 }) api
Make the implementation match the documentation. This should work:

  var s = new net.Socket({ fd: 42, allowHalfOpen: true };

And now it does.
2012-07-24 15:53:22 -07:00
isaacs
e4c9c9f412 readline: Remove event listeners on close
Fix #3756
2012-07-24 15:36:53 -07:00
isaacs
2c487669f7 v8: Reapply floating patches 2012-07-24 14:19:50 -07:00
isaacs
f4f0daa44d V8: Upgrade to 3.11.10.17 2012-07-24 14:18:47 -07:00
isaacs
0a0002b480 npm: Upgrade to 1.1.45
This includes node-gyp 0.6.1
2012-07-24 12:34:13 -07:00
Bert Belder
43a0c88116 windows: correctly prep long path for fs.exists(Sync)
Closes GH-3739
2012-07-23 13:55:42 +02:00
Peter Rybin
688859afc0 debugger: wake up the event loop when a debugger command is dispatched
When the event loop was blocked in epoll / kqueue or similar, debugger
commands wouldn't be processed. This patch fixes that by adding an
uv_async handle which is triggered when a debugger command is
dispatched. The async handle's callback makes sure that V8 is entered.

Closes GH-3626
Closes GH-3718
2012-07-23 13:15:51 +02:00
Brian White
e06b5d7af7 http: remove duplicate assignments
Closes GH-3754
2012-07-23 11:35:52 +02:00
koichik
bc30c90af6 doc: remove duplicate section
Fixes #3750.
2012-07-22 02:33:06 +09:00
Fedor Indutny
42c6952edb tls: pass linting 2012-07-20 22:07:39 +04:00
Fedor Indutny
50122fed8a tls: fix 'hostless' tls connection verification
And fix last failing tests
2012-07-20 21:43:12 +04:00
Fedor Indutny
5950db197c tls: revert accidental API change
socket.authorizationError should always be string. Also make sni test
pass.
2012-07-20 21:10:23 +04:00
Fedor Indutny
4aa09d1e0e tls: localhost is valid against identity-check 2012-07-20 20:51:38 +04:00
Fedor Indutny
e43fe5c833 Revert "http/https: pass request to .createConnection()"
This reverts commit 53716eb0b5.
2012-07-20 20:51:02 +04:00
Fedor Indutny
eb2ca10462 tls: veryify server's identity 2012-07-20 01:49:31 +04:00
Fedor Indutny
53716eb0b5 http/https: pass request to .createConnection()
It's useful for passing some additional options of request object to the
underlying API
2012-07-20 01:49:30 +04:00
Fedor Indutny
1fa0bca2ad net: ignore socket.setTimeout(Infinity) (and NaN) 2012-07-20 01:49:30 +04:00
isaacs
d9057cc090 npm: Upgrade to 1.1.44 2012-07-19 13:03:28 -07:00
isaacs
f6484842b3 Blog post about v0.8.3 2012-07-19 10:20:44 -07:00
isaacs
02ff9741cc Now working on 0.8.4 2012-07-19 10:19:45 -07:00
isaacs
4439f7b879 Merge branch 'v0.8.3-release' into v0.8 2012-07-19 10:19:04 -07:00
isaacs
60bf2d6cb3 2012.07.19, Version 0.8.3 (Stable)
* V8: upgrade to 3.11.10.15

* npm: Upgrade to 1.1.43

* net: fix net.Server.listen({fd:x}) error reporting (Ben Noordhuis)

* net: fix bogus errno reporting (Ben Noordhuis)

* build: Move npm shebang logic into an npm script (isaacs)

* build: fix add-on loading on freebsd (Ben Noordhuis)

* build: disable unsafe optimizations (Ben Noordhuis)

* build: fix spurious mksnapshot crashes for good (Ben Noordhuis)

* build: speed up genv8constants (Dave Pacheco)

* fs: make unwatchFile() remove a specific listener (Ben Noordhuis)

* domain: Remove first arg from intercepted fn (Toshihiro Nakamura)

* domain: Fix memory leak on error (isaacs)

* events: Fix memory leak from removeAllListeners (Nathan Rajlich)

* zlib: Fix memory leak in Unzip class. (isaacs)

* crypto: Fix memory leak in DecipherUpdate() (Ben Noordhuis)
2012-07-19 10:01:56 -07:00
isaacs
0c91b0e48e uv: Upgrade to 94355e4 2012-07-19 09:33:02 -07:00
isaacs
845b9e92d8 uv: Upgrade to 94355e4 2012-07-19 09:32:46 -07:00
Ben Noordhuis
b2648934f0 build: unbreak ustack on smartos
I disabled the -ffunction-sections and -fdata-sections switches in 202df30
because they're horribly buggy with some gcc/binutils combos.

However, it turns out that the dtrace/ustack post-processing tool requires
that V8 is compiled with said switches and was broken because of it.

This commit turns them on again on SunOS systems. Let's hope for the best.
2012-07-19 18:20:34 +02:00
Ben Noordhuis
5a5e128165 build: link with -rdynamic, not -Wl,--export-dynamic
The system linker on SunOS doesn't understand --export-dynamic.
2012-07-19 00:08:37 +02:00
Ben Noordhuis
98b1ce91f6 build: fix mksnapshot crash on sunos
Unconditionally compile V8 with -fno-strict-aliasing on all platforms.

gcc 4.5.2 on sunos generates bad code when -fstrict-aliasing is enabled, which
undoubtedly means that there are more buggy versions of gcc out there.

-fstrict-aliasing does not give a significant performance boost so let's just
disable it.

Fixes #3736.
2012-07-18 23:26:00 +02:00
Ben Noordhuis
beb7425c18 doc: build requires GNU make 3.81+ 2012-07-18 14:23:39 +02:00
Ben Noordhuis
f6f2d42ee9 node: make ev-emul.h compile with -Wextra -Werror
Explicitly cast double to int64_t, it was making add-ons that compile with
`-Wall -Wextra -Werror` fail to build.

Don't use fully variadic macros, gcc in uber-strict mode rejects them.
2012-07-18 13:56:09 +02:00
Ben Noordhuis
e8af340557 doc: advise *strongly* against uncaughtException 2012-07-18 03:46:39 +02:00
isaacs
e1fb7b76e9 uv: Upgrade to b49d6f7 2012-07-17 17:09:34 -07:00
Dave Pacheco
648fdc56a0 tools: speed up genv8constants
genv8constants was much slower than necessary due to lack of pipe buffering.
2012-07-18 00:56:02 +02:00
isaacs
868ffed77c v8: Reapply floating patches 2012-07-17 11:44:01 -07:00
isaacs
a0a0062d61 v8: upgrade to 3.11.10.15 2012-07-17 11:43:02 -07:00
isaacs
7397ab2cf1 uv: Upgrade to a9f6f06 2012-07-17 11:40:13 -07:00
isaacs
c383befd25 npm: Upgrade to 1.1.43 2012-07-17 11:37:39 -07:00
isaacs
d6b78d0e37 domain: Fix stack leak on error 2012-07-16 18:04:55 -07:00
Mike Morearty
19aa05fab8 doc: fix bug in child_process.spawn() sample code 2012-07-16 02:27:01 +02:00
Bert Belder
23dc099299 benchmark: add single process tls connection benchmark 2012-07-14 01:43:34 +02:00
George Shank
8721667a2f doc: update 'Fork me at Github' ribbon
Replace 'Fork me at Github' ribbon with a new one fitting the website's color
scheme.
2012-07-13 14:09:06 -07:00
isaacs
ef1b7dd3d7 build: Move npm shebang logic into an npm script
This allows us to run npm's scripts/relocate.sh script whenever
necessary, if for example node has been 'make install'ed into one
folder, and then you wish to move it into another one.
2012-07-13 12:08:17 -07:00
isaacs
9d4362403c npm: upgrade to 1.1.41 2012-07-13 12:08:17 -07:00
Ben Noordhuis
acbfc40888 build: fix add-on loading on freebsd
Link with -Wl,--export-dynamic, makes symbols from the node binary visible to
binary add-ons.

Fixes "undefined symbol: _ZN2v811HandleScopeC1Ev" errors when loading add-ons
on FreeBSD and likely other BSDs.

Fixes #3623.
2012-07-13 01:57:00 +02:00
Nathan Rajlich
713b9249e1 Revert "events: don't delete the listeners array in removeListener()"
This reverts commit 928ea564d1.

Keeping the original Array instance in-place essentially causes a memory leak
on EventEmitters that use an infinite number of event names (an incrementing
counter, for example), which isn't an unreasonable thing to want to do.

Fixes #3702.
2012-07-12 15:43:35 -07:00
Ben Noordhuis
3a6314dbe1 net: fix net.Server.listen({fd:x}) error reporting
* don't assert when fd isn't an open file descriptor

* don't die with a ReferenceError when fd isn't a file descriptor
  you can listen() on

Fixes #3699.
2012-07-12 18:18:38 +02:00
Ben Noordhuis
5d97d72753 net: fix bogus errno reporting
_listen2() emits the error on the next tick. The errno value may have changed
by then.
2012-07-12 16:56:44 +02:00
Ben Noordhuis
c6bb361b84 build: partially fix configure on ARM
V8 on ARM requires that armv7 is set. We don't have a good way to detect the
CPU model right now so we pick a default and hope that it works okay for the
majority of people.

Non-scientific sampling - the ARM hardware I have lying around the house -
suggests that ARMv5 and ARMv6 are still most common so armv7=0 it is.

This obviously needs to be revisited sometime in the future.
2012-07-12 16:29:46 +02:00
Ben Noordhuis
202df30aab build: disable unsafe optimizations
Compile at -O2 and disable optimizations that trigger gcc bugs.

Some people still reported mksnapshot crashes after commit b40f813 ("build: fix
spurious mksnapshot crashes for good" - so much for that).

Average performance of the -O2 binary is on par with the -O3 binary. Variance
on the http_simple bytes/8 benchmark appears to be slightly greater but small
enough that the possibly of it being noise cannot be excluded.

The new binary very slightly but consistently outperforms the -O3 binary (by
about 0.5%) on the mostly CPU-bound bytes/102400 benchmark. That could be an
artifact of the system I benchmarked it on, a Core 2 Duo with a puny 32 kB of
L1 instruction cache. The smaller binary seems to play nicer with the cache.
2012-07-12 16:17:25 +02:00
Bert Belder
d2e40f66cc Merge branch 'v0.6' into v0.8 2012-07-12 03:30:04 +02:00
isaacs
b6e916db58 Now working on 0.6.21 2012-07-11 10:15:03 -07:00
Philipp Hagemeister
1d99441d37 tools: fix shebang in tools/doc/generate.js 2012-07-11 14:36:43 +02:00
Ben Noordhuis
b40f813bab build: fix spurious mksnapshot crashes for good
A variety of gcc bugs made mksnapshot crash with either a segmentation fault
or a 'pure virtual method callled' run-time error.

After much wailing and gnashing of teeth I managed to deduce that the bugs
show up when:

  1. gcc 4.5.2 for i386-pc-solaris2.11 is used and -fstrict-aliasing is
     enabled, or

  2. gcc version 4.4.6 for x86_64-redhat-linux is used and
     -ffunction-sections -finline-functions at -O2 or higher is enabled

Therefore, disable -ffunction-sections and -fdata-sections unconditionally
and disable -fstrict-aliasing only on Solaris.

The -ffunction-sections and -fdata-sections switches were nonsense anyway
because we don't link with -Wl,--gc-sections.
2012-07-11 03:52:13 +02:00
isaacs
bf561c52a5 Blog post for v0.6.20 2012-07-10 17:05:54 -07:00
isaacs
952e513379 2012.07.10 Version 0.6.20 (maintenance)
* npm: Upgrade to 1.1.37 (isaacs)

* benchmark: Backport improvements made in master (isaacs)

* build: always link with -lz (Trent Mick)

* core: use proper #include directives (Ben Noordhuis)

* cluster: don't silently drop messages when the write queue gets big (Bert Belder)

* windows: don't print error when GetConsoleTitleW returns an empty string (Bert Belder)
2012-07-10 16:25:12 -07:00
isaacs
17061d981e .gitignore: Don't ignore node_modules (breaks npm) 2012-07-10 16:16:43 -07:00
isaacs
ae5a209b11 npm: Upgrade to 1.1.37 2012-07-10 16:16:25 -07:00
isaacs
fecebe1dbf build: Regenerate docs for tarball and releases
Related: https://twitter.com/kapeli/status/222477400880070658
2012-07-10 08:02:30 -07:00
Ivan Torres
8146f2e607 doc: clarify fs.symlink and fs.symlinkSync parameters 2012-07-10 16:36:08 +02:00
isaacs
71078f91ed Now working on 0.8.3 2012-07-09 10:25:17 -07:00
isaacs
a4da6300c8 v0.8.2 blog post 2012-07-09 10:24:34 -07:00
isaacs
9547ee90db Merge branch 'v0.8.2-release' into v0.8
Conflicts:
	AUTHORS
2012-07-09 10:23:49 -07:00
Toshihiro Nakamura
6530310ed5 domain: Remove first arg from intercepted fn
Fix to remove the first-arg, in case arguments length is more than 2
Add domain.intercept() test about first-arg removal
2012-07-09 09:37:46 -07:00
Bert Belder
2a8380ce57 Update AUTHORS 2012-07-09 17:28:30 +02:00
Bert Belder
f4369d76c8 Add a .mailmap file, and clean up AUTHORS somewhat
* A mailmap makes it easier to keep track of contributors.
* Changes to the AUTHORS file:
  - fix misspellings
  - add missing/incomplete names
  - remove duplicate mentions
* No names were added to or removed from the AUTHORS list.
2012-07-09 16:55:09 +02:00
Justin Plock
fba1e48fae doc: cluster: worker.pid is now worker.process.pid 2012-07-09 15:57:44 +02:00
Ben Noordhuis
63c2391984 test: make test-fs-watch-file write to tmp dir
Write temp files to test/tmp, not test/fixtures.
2012-07-09 15:48:43 +02:00
Ben Noordhuis
5b5362aa8d fs: make unwatchFile() remove a specific listener
Before this commit, `fs.unwatchFile(path)` removed *all* listeners for `path`.

The function is overloaded now: `fs.unwatchFile(path)` still removes all
listeners, but `fs.unwatchFile(path, cb)` lets you remove a specific listener.

Fixes #3660.
2012-07-09 15:48:43 +02:00
isaacs
bf539f9bfd zlib: Call inflateEnd for UNZIP. Fixes memory leak.
Fix #2595
2012-07-08 22:22:01 -07:00
Nathan Rajlich
d3d83d7b90 process: throw a TypeError when anything but an Array is passed to hrtime()
Fixes #3664.
2012-07-08 20:53:19 -07:00
Ben Noordhuis
26f1bc8e8c crypto: fix DecipherUpdate() memory leak
Fix a memory leak in the the code path that deals with partial hex strings.
2012-07-08 14:45:55 +02:00
isaacs
cc6084b9ac 2012.07.09, Version 0.8.2 (Stable)
* npm: Upgrade to 1.1.36

* readline: don't use Function#call() (Nathan Rajlich)

* Code cleanup to pass 'use strict' (Jonas Westerlund)

* module: add filename to require() json errors (TJ Holowaychuk)

* readline: fix for unicode prompts (Tim Macfarlane)

* timers: fix handling of large timeouts (Ben Noordhuis)

* repl: fix passing an empty line inserting "undefined" into the buffer (Nathan Rajlich)

* repl: fix crashes when buffering command (Maciej Małecki)

* build: rename strict_aliasing to node_no_strict_aliasing (Ben Noordhuis)

* build: disable -fstrict-aliasing for any gcc < 4.6.0 (Ben Noordhuis)

* build: detect cc version with -dumpversion (Ben Noordhuis)

* build: handle output of localized gcc or clang (Ben Noordhuis)

* unix: fix memory corruption in freebsd.c (Ben Noordhuis)

* unix: fix 'zero handles, one request' busy loop (Ben Noordhuis)

* unix: fix busy loop on unexpected tcp message (Ben Noordhuis)

* unix: fix EINPROGRESS busy loop (Ben Noordhuis)
2012-07-07 15:15:17 -07:00
isaacs
c4e9226bdb Fix test-require-json on Windows 2012-07-07 15:15:17 -07:00
Bert Belder
1c1ad9bcf4 v8: reapply floating patches 2012-07-07 23:45:02 +02:00
isaacs
5b5c8b6005 v8: Upgrade to 3.11.10.14 2012-07-07 23:45:00 +02:00
Bert Belder
3e5139fd2f Fix the Windows build 2012-07-07 23:40:12 +02:00
Bert Belder
c6843f40c8 gitignore: ignore .svn directories 2012-07-07 23:19:12 +02:00
isaacs
c49888bd84 Now working on 0.8.2 2012-07-07 13:42:25 -07:00
isaacs
59a40fc8ed npm: Upgrade to 1.1.36 2012-07-07 12:40:06 -07:00
isaacs
559a98f0d7 doc: Formatting and grammar on stream api doc 2012-07-07 09:53:33 -07:00
Dominic Tarr
7accaeb490 correct documentation of Stream#destroy 2012-07-07 09:51:00 -07:00
Nathan Rajlich
8a9e8d60d2 readline: don't use Function#call()
It wasn't necessary.
2012-07-06 19:41:01 -07:00
Jonas Westerlund
2297d638c1 Forgotten commit: add arguments to handleGroup 2012-07-06 19:28:35 -07:00
Jonas Westerlund
a9b0bcfafe Assign to property of global, instead of implicit global variable
Fixes crash in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
c7bc4cacde Use unicode escape sequences instead of octal
The latter is illegal in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
4cfdc57712 Inline timeout function, avoiding declaration in conditional
Moving it out would require an anonymous function, or bind(), anyway.
Luckily It's a tiny function. Fixes crash in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
7e7d5d38ea Move function declaration out of conditional
Also avoid using eval as identifier.
Fixes crashes in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
0b0b72c2fa Move function declaration to top-level
Gets rid of a strict mode error and a few levels of indentation.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
e5bb8391a8 Do not assign to properties that only have getters
It is an error in strict mode, and silent failure otherwise.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
93d4259cf0 Avoid redeclaring variable
Capitalize the constructor to avoid redeclaration.
Fixes strict mode error.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
e11b6b8f75 Remove octal escape sequences and avoid reserved keyword
Both are errors in strict mode.
2012-07-06 19:28:35 -07:00
TJ Holowaychuk
ed7fb149a2 module: add filename to require() json errors
Otherwise it can be quite difficult to figure out which file is busted.

Closes #3580.
2012-07-06 15:26:41 -07:00
Tim Macfarlane
0dba28b5c2 readline: fix for unicode prompts
prompt length is char length, not byte length
2012-07-06 02:14:47 +02:00
Ben Noordhuis
0c47219a72 timers: fix handling of large timeouts
Don't use the double-negate trick to coalesce the timeout argument into a
number, it produces the wrong result for very large timeouts.

Example:

    setTimeout(cb, 1e10); // doesn't work, ~~1e10 == 1410065408
2012-07-05 23:07:27 +02:00
Nathan Rajlich
9126dd2d90 repl: fix passing an empty line inserting "undefined" into the buffer
There was a possiblity of insering the string "undefined" into the repl's
command buffer, which would cause interesting results while evaluating.
2012-07-04 11:51:24 -07:00
Maciej Małecki
6a11f3edf4 repl: fix crashes when buffering command
Wrong order of operands was causing problems while trying to use command
buffering:

    > {
    ...   a: 3,
    ...

    repl.js:284
            if (cmd.trim().match(/^npm /) && !self.bufferedCommand) {
                    ^
    TypeError: Cannot call method 'trim' of undefined
        at finish (repl.js:284:17)
        at REPLServer.self.eval (repl.js:118:5)
        at rli.on.e (repl.js:260:20)
        at REPLServer.self.eval (repl.js:118:5)
        at Interface.<anonymous> (repl.js:250:12)
        at Interface.EventEmitter.emit (events.js:88:17)
        at Interface._onLine (readline.js:183:10)
        at Interface._line (readline.js:502:8)
        at Interface._ttyWrite (readline.js:720:14)
        at ReadStream.<anonymous> (readline.js:105:12)

Test included.

Closes #3515.
Closes #3517.
Closes #3621.
2012-07-04 11:22:10 -07:00
Ben Noordhuis
4fbe7a5fab deps: upgrade libuv to be09be7 2012-07-04 14:08:07 +02:00
Ben Noordhuis
fc4e12b8f1 tools: update gyp to r1426 2012-07-03 20:56:35 +02:00
Ben Noordhuis
5da78905a6 deps: upgrade libuv to 5031a5b 2012-07-03 20:56:26 +02:00
Ben Noordhuis
b1cce04646 build: rename strict_aliasing to node_no_strict_aliasing
Make the variable naming consistent with the other strict aliasing var,
v8_no_strict_aliasing.
2012-07-03 15:28:45 +02:00
Ben Noordhuis
b731c96679 build: disable -fstrict-aliasing for any gcc < 4.6.0
It has been conclusively demonstrated that the -fstrict-aliasing bugs in gcc's
optimizer are not limited to the 4.5.x releases only.

Fixes #3601 among others.
2012-07-03 15:19:17 +02:00
Ben Noordhuis
a0add91987 build: detect cc version with -dumpversion
The heuristic introduced in f78ce08 ("build: handle output of localized gcc or
clang") does not handle "branded" versions of gcc, i.e. a gcc whose output has
been customized by the distro vendor.

Fixes #3601.
2012-07-03 15:15:28 +02:00
Ben Noordhuis
a25a27817f deps: upgrade libuv to cc1b3de 2012-07-02 00:07:11 +02:00
Ben Noordhuis
b53cd9798f doc: document setTimeout / setInterval behavior 2012-07-01 20:09:55 +02:00
Ben Noordhuis
f78ce087ba build: handle output of localized gcc or clang
Before this commit, we used to scan the output of `$CC -v` for strings like
"gcc version x.y.z".

It was pointed out that this approach fails with localized versions of gcc
because those print (for example) "gcc versión x.y.z".

Use the output of `$CC --version` instead and only look at the first line.
2012-06-30 17:49:37 +02:00
Ben Noordhuis
f315029268 build: rename openssl configure switches
For consistency's sake, rename:

  --openssl-use-sys
  --openssl-includes
  --openssl-libpath

To:

  --shared-openssl
  --shared-openssl-includes
  --shared-openssl-libpath

And add --shared-openssl-libname while we're at it.

The old switches still work but `./configure --help` won't print them.

Fixes #3591.
2012-06-30 04:30:49 +02:00
Ben Noordhuis
7e5aeac28f deps: upgrade libuv to 3b8c0da 2012-06-30 03:27:54 +02:00
Ben Noordhuis
b9abb64fbb doc: fs.lchmod() is only available on OS X 2012-06-30 02:23:31 +02:00
isaacs
bc71874262 Blog post about 0.8.1 2012-06-29 10:20:25 -07:00
isaacs
cb64adaadc Merge branch 'v0.8.1-release' into v0.8 2012-06-29 10:14:58 -07:00
isaacs
2134aa3d5c 2012.06.29, Version 0.8.1 (stable)
* V8: upgrade to v3.11.10.12

* npm: upgrade to v1.1.33
  - Support for parallel use of the cache folder
  - Retry on registry timeouts or network failures (Trent Mick)
  - Reduce 'engines' failures to a warning
  - Use new zsh completion if aviailable (Jeremy Cantrell)

* Fix #3577 Un-break require('sys')

* util: speed up formatting of large arrays/objects (Ben Noordhuis)

* windows: make fs.realpath(Sync) work with UNC paths (Bert Belder)

* build: fix --shared-v8 option (Ben Noordhuis)

* doc: `detached` is a boolean (Andreas Madsen)

* build: use proper python interpreter (Ben Noordhuis)

* build: expand ~ in `./configure --prefix=~/a/b/c` (Ben Noordhuis)

* build: handle CC env var with spaces (Gabriel de Perthuis)

* build: fix V8 build when compiling with gcc 4.5 (Ben Noordhuis)

* build: fix --shared-v8 option (Ben Noordhuis)

* windows msi: Fix icon issue which caused huge file size (Bert Belder)

* unix: assume that dlopen() may clobber dlerror() (Ben Noordhuis)

* sunos: fix memory corruption bugs (Ben Noordhuis)

* windows: better (f)utimes and (f)stat (Bert Belder)
2012-06-29 02:11:19 -07:00
isaacs
40f70673c6 blog: Require posts to have a date 2012-06-29 01:22:10 -07:00
isaacs
b919e29871 blog: Direct bugs/feature feedback to issues 2012-06-29 01:20:59 -07:00
isaacs
5193d59219 blog: Don't print 'undefined' for missing author/category 2012-06-29 01:20:13 -07:00
isaacs
103921dac0 blog css: Styling of nested lists 2012-06-29 00:45:55 -07:00
isaacs
1747eeff1a homepage: Update Claudio's title/link 2012-06-28 22:23:53 -07:00
isaacs
3e0757c101 lint 2012-06-28 22:06:53 -07:00
isaacs
3644b0bc96 uv: upgrade to 5b8a112 2012-06-28 19:11:30 -07:00
isaacs
c721604d25 npm: Upgrade to 1.1.33
Support for parallel use of the cache folder
Retry on registry timeouts or network failures
Reduce 'engines' failures to a warning
Use new zsh completion if aviailable
2012-06-28 19:08:32 -07:00
isaacs
f2a9ed4873 Fix #3577 Un-break require('sys') 2012-06-28 10:14:03 -07:00
Bert Belder
3ea2a618ad uv: upgrade to 4a88b3b 2012-06-28 16:17:56 +02:00
isaacs
37bdd36d70 blog: Show 0.8.0 even after 0.8.1 ships
The 0.(even).0 releases typically have benchmarks and other interesting
stuff, since that's a milestone.
2012-06-27 23:32:50 -07:00
Ben Noordhuis
6531f187d8 util: speed up formatting of large arrays/objects
Don't .indexOf() into the keys array. V8 is smart but not so smart that it
knows how to turn the linear scan into a O(1) lookup.

Fixes #3562.
2012-06-28 03:51:42 +02:00
Ben Noordhuis
be3afd0bec doc: remove references to deprecated fs api
The string-based versions of fs.read() and fs.write() have been deprecated
since before v0.2.0.
2012-06-28 03:50:48 +02:00
Ben Noordhuis
d5f13f6c08 build: use proper python interpreter
Make configure start gyp with the same python interpreter that is used to
run configure itself.

Fixes an issue where configure fails with a SyntaxError because the user
has multiple python binaries on his $PATH and the default one is too old.
2012-06-28 01:07:45 +02:00
Gabriel
9e72b7b65c build: handle CC env var with spaces
For example:

    CC='ccache gcc' ./configure
2012-06-27 19:52:01 +02:00
Bert Belder
0cdeb8ed96 windows: make fs.realpath(Sync) work with UNC paths
Closes #3542
2012-06-27 01:59:25 +02:00
Ben Noordhuis
f00c8bcef8 build: fix --shared-v8 option 2012-06-27 00:35:16 +02:00
isaacs
21aa0df8b2 realpath: No sync cb() calling allowed. 2012-06-26 15:20:26 -07:00
Ben Noordhuis
1e50282ae8 deps: upgrade libuv to 4d42af2 2012-06-26 23:38:35 +02:00
Tim Oxley
69f594d22c Added % difference for perf benchmarks in 0.8 post 2012-06-26 10:54:20 -07:00
Bert Belder
10448487e5 configure: don't fail if compiler_version() doesn't work
This fixes the Windows build.
2012-06-26 19:23:24 +02:00
Andreas Madsen
401ff10295 doc: detached is a boolean 2012-06-26 17:30:07 +02:00
Ben Noordhuis
06c82c5069 build: expand ~ in ./configure --prefix=~/a/b/c 2012-06-26 16:35:14 +02:00
Ben Noordhuis
07e5877144 build: disable strict aliasing in v8 with gcc 4.5.x
The gcc 4.5.x have various bugs that make V8 crash in various and interesting
ways when -fstrict-aliasing is in effect.
2012-06-26 03:01:46 +02:00
Bert Belder
f60def5e9a v8: reapply floating patches 2012-06-26 02:03:49 +02:00
Bert Belder
74872b0dc9 v8: upgrade to version 3.11.10.12 2012-06-26 02:03:24 +02:00
Andreas Madsen
3d51646c4b doc: replace references to cluster.autoFork 2012-06-25 23:17:18 +02:00
Bert Belder
41a4b734d3 windows: remove 256x256 version of the icon
Nobody needs that anyway, it's just eating up space.
2012-06-25 18:40:48 +02:00
Bert Belder
3f932c52b0 windows msi: don't use .exe file as icon
This makes the installer nice and small again.
2012-06-25 18:40:12 +02:00
koichik
d7825b3c1d docs: add punycode to TOC
Refs #3301.
2012-06-25 09:07:57 -07:00
isaacs
7823474022 blog post for v0.8.0 2012-06-25 07:59:14 -07:00
isaacs
b07b391304 Now working on 0.8.1 2012-06-25 07:58:03 -07:00
isaacs
5feea97b53 Merge branch 'v0.8.0-release' into v0.8 2012-06-25 07:57:45 -07:00
isaacs
8b8a7a7f9b 2012.06.25, Version 0.8.0 (stable)
* V8: upgrade to v3.11.10.10

* npm: Upgrade to 1.1.32

* Deprecate iowatcher (Ben Noordhuis)

* windows: update icon (Bert Belder)

* http: Hush 'MUST NOT have a body' warnings to debug() (isaacs)

* Move blog.nodejs.org content into repository (isaacs)

* Fix #3503: stdin: resume() on pipe(dest) (isaacs)

* crypto: fix error reporting in SetKey() (Fedor Indutny)

* Add --no-deprecation and --trace-deprecation command-line flags
* (isaacs)

* fs: fix fs.watchFile() (Ben Noordhuis)

* fs: Fix fs.readfile() on pipes (isaacs)

* Rename GYP variable node_use_system_openssl to be consistent (Ryan
* Dahl)
2012-06-25 07:37:20 -07:00
isaacs
9a7158de18 Hotfix for #3528 Add strdup in uv_cpu_info 2012-06-25 07:37:19 -07:00
Mathias Bynens
839bf025a8 docs: Switch to the asynchronous Google Analytics snippet
The old snippet needlessly uses `document.write`. Let’s use the
optimized version of the most recent, asynchronous GA snippet:
http://mathiasbynens.be/notes/async-analytics-snippet
2012-06-23 11:54:51 -07:00
isaacs
8a946c2ee7 benchmark: Backport improvements made in master
Ported to v0.6 for easier comparison in the 0.8.0 blog post.
2012-06-23 10:03:12 -07:00
isaacs
38250f6403 npm: Upgrade to 1.1.32 2012-06-22 15:14:12 -07:00
Bert Belder
1b114162ab uv: upgrade to 0387c23 2012-06-22 20:53:04 +02:00
isaacs
2603cc564d blog: add RSS link tag for discovery 2012-06-22 09:04:14 -07:00
isaacs
d34fea59e1 blog: Generate RSS feeds 2012-06-22 08:49:20 -07:00
isaacs
91835966eb npm: Upgrade to 1.1.31 2012-06-22 07:45:21 -07:00
isaacs
5565366a33 uv: Upgrade to 171e2f71b9 2012-06-22 07:44:40 -07:00
Bert Belder
a1b274108f windows msi: use .url files for documentation and website shortcuts 2012-06-22 15:24:23 +02:00
Bert Belder
399731e3a0 windows msi: add npm dir to user PATH only
The NPM folder is personal to the user. It shouldn't be added to the
system-wide path.
2012-06-22 15:24:22 +02:00
Bert Belder
2dccebd4b8 windows msi: set icon for add/remove programs dialog 2012-06-22 15:24:21 +02:00
Bert Belder
3bab12197f windows: fix/improve nodejsvars.bat
- Fix: it didn't work for the x86 version of node
- Also add NPM to path
- Also print node version
- Don't change dir to home dir if not started from the start menu
2012-06-22 15:24:21 +02:00
isaacs
de89bbb00c blog: Show category in post metadata 2012-06-21 19:45:11 -07:00
isaacs
441e792849 stdin.pipe: Replace forgotten opts member 2012-06-21 19:36:17 -07:00
isaacs
6014a62b3e blog: Missing title tag 2012-06-21 19:20:09 -07:00
isaacs
ff2a1b86c3 blog: Minor tweaks to style and some data conversion cleanup 2012-06-21 19:15:03 -07:00
Joe Shaw
38250f9aef authors: update email address
Closes #3507.
2012-06-22 02:09:45 +02:00
isaacs
9df5fda777 Merge branch 'blog' 2012-06-21 16:19:56 -07:00
isaacs
8f1a38d916 Generate static HTML blog content out of markdown 2012-06-21 16:18:17 -07:00
isaacs
ddf52bd347 Initial blog source
Exported from WP and cleaned up a bit.
2012-06-21 16:18:17 -07:00
isaacs
c6f7fd7e47 Merge branch 'stdin-resume-pipe' 2012-06-21 16:18:00 -07:00
isaacs
5ec056633f Fix #3503: stdin: resume() on pipe(dest) 2012-06-21 16:16:30 -07:00
Fedor Indutny
af52bc4fe6 crypto: fix error reporting in SetKey() 2012-06-21 16:06:06 -07:00
isaacs
fce7c958ed test: add deprecation fixture 2012-06-21 14:47:25 -07:00
isaacs
8988af58f4 Externalize node::no_deprecation 2012-06-21 13:55:40 -07:00
isaacs
48c3d20041 Apply --no-deprecation to C++ warnings as well 2012-06-21 12:29:33 -07:00
isaacs
5b39929d47 Add --no-deprecation and --trace-deprecation flags 2012-06-21 12:05:33 -07:00
isaacs
260695afd0 http: Hush 'MUST NOT have a body' warnings to debug() 2012-06-21 12:05:33 -07:00
Bert Belder
6e5217d320 Fix bug in io benchmark 2012-06-21 20:52:38 +02:00
Ben Noordhuis
1bf704a571 iowatcher: add deprecation warning 2012-06-21 17:55:05 +02:00
Ben Noordhuis
8708bb0280 doc: update fs.watchFile() docs 2012-06-21 15:03:49 +02:00
Ben Noordhuis
ef1ffcb717 fs: make fs.watchFile() interval default to 5007 2012-06-21 15:03:21 +02:00
Ben Noordhuis
f0ce98441f fs: make fs.watchFile() work on windows 2012-06-21 03:05:18 +02:00
Ben Noordhuis
d98a8578d6 test: add another fs.watchFile() test 2012-06-21 02:50:13 +02:00
Ben Noordhuis
09150b0616 node: replace NODE_STAT_STRUCT with uv_statbuf_t 2012-06-21 02:42:28 +02:00
Bert Belder
ae7a3cddae uv: upgrade to da59427 2012-06-21 02:39:13 +02:00
Karl Skomski
57d53a47e8 Use parent SlowBuffer, if any, when Buffer is sliced
Closes #3416
Closes #3477
2012-06-21 01:46:04 +02:00
Fedor Indutny
81a889fd88 v8: fix postmortem debugging tools build 2012-06-21 00:35:52 +02:00
Bert Belder
6b8ae8e66d v8: reapply floating patches 2012-06-21 00:35:46 +02:00
Bert Belder
6b26583e84 v8: upgrade to v3.11.10.10 2012-06-21 00:33:44 +02:00
Ryan Dahl
fe464a2fea Rename GYP variable node_use_system_openssl to be consistent 2012-06-20 22:38:30 +02:00
isaacs
1d3d02c70d Fix fs.readfile('/dev/stdin')
There is no need for fs.readFile() to be using pread rather than read.
The default semantics of read() are such that subsequent reads are where
we want them anyway.
2012-06-20 10:28:44 -07:00
Bert Belder
7887e68ff7 uv: upgrade to 6e8eb332 2012-06-20 04:23:32 +02:00
isaacs
e4017402ef Now working on 0.8.0 2012-06-19 17:03:12 -07:00
isaacs
fbc2ad5815 Merge branch 'v0.7.12-release' 2012-06-19 17:01:11 -07:00
Bert Belder
26b11915b1 test-domain: fix the test to work on Windows
On Windows, full pathnames are stored in the Error object when
a file i/o error happens. This is not the case on Unix. Before
this fix the test would break because of these full paths.
2012-06-20 01:07:57 +02:00
Bert Belder
7a4dfb6aa8 test-cluster-worker-kill: use SIGKILL instead of SIGHUP
In this test sending SIGKILL has the same effect as sending SIGHUP,
but SIGKILL has the advantage that it works on Windows too.
2012-06-20 00:56:33 +02:00
Bert Belder
3795d77113 windows: listen(pipe_name) is not supported when running cluster
- Added a note to the cluster module documentation.
- Disabled test-cluster-http-pipe.
2012-06-20 00:53:01 +02:00
Bert Belder
41d5fefc10 windows: update icon 2012-06-19 23:51:38 +02:00
isaacs
a72120190a 2012.06.19, Version 0.7.12 (unstable)
* npm: Upgrade to 1.1.30
  - Improved 'npm init'
  - Fix the 'cb never called' error from 'oudated' and 'update'
  - Add --save-bundle|-B config
  - Fix isaacs/npm#2465: Make npm script and windows shims cygwin-aware
  - Fix isaacs/npm#2452 Use --save(-dev|-optional) in npm rm
  - `logstream` option to replace removed `logfd` (Rod Vagg)
  - Read default descriptions from README.md files

* Shims to support deprecated ev_* and eio_* methods (Ben Noordhuis)

* #3118 net.Socket: Delay pause/resume until after connect (isaacs)

* #3465 Add ./configure --no-ifaddrs flag (isaacs)

* child_process: add .stdin stream to forks (Fedor Indutny)

* build: fix `make install DESTDIR=/path` (Ben Noordhuis)

* tls: fix off-by-one error in renegotiation check (Ben Noordhuis)

* crypto: Fix diffie-hellman key generation UTF-8 errors (Fedor Indutny)

* node: change the constructor name of process from EventEmitter to process (Andreas Madsen)

* net: Prevent property access throws during close (Reid Burke)

* querystring: improved speed and code cleanup (Felix Böhm)

* sunos: fix assertion errors breaking fs.watch() (Fedor Indutny)

* unix: stat: detect sub-second changes (Ben Noordhuis)

* add stat() based file watcher (Ben Noordhuis)
2012-06-19 14:07:49 -07:00
isaacs
f105f2f2fd trivial: Doc typo and lint fix 2012-06-19 14:07:48 -07:00
isaacs
252f034b30 email-footer: Label Windows x64 installer properly 2012-06-19 14:07:48 -07:00
Ben Noordhuis
067be2b3fe node: fix namespacing issue in ev-emul.h
Always use C linkage, prevent accidental name mangling.
2012-06-19 23:04:59 +02:00
Bert Belder
3f687dbddf uv: upgrade to b496c122 2012-06-19 21:12:48 +02:00
Bert Belder
5e1d844f3d uv: upgrade to 67090653 2012-06-19 20:48:02 +02:00
isaacs
6ba1c625cd npm: Upgrade to 1.1.30 2012-06-19 09:53:26 -07:00
verwaest@chromium.org
8a6ef65c2c Fixing bugs in promotion of elements transitions (r1175). - Fixed invalid memory access when reading enum-cache from descriptor array with elements transitions but 0 real descriptors. - Fixed infinite recursion in the intrusive map iterator when visiting elements transitions. - Properly cached non-fastmode elements transitions.
Review URL: https://chromiumcodereview.appspot.com/10565030

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11841 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:52 +02:00
jkummerow@chromium.org
7282ce9014 Remove unused-but-set variable from objects.cc.
This fixes compilation with newer GCCs.

R=erik.corry@gmail.com

Review URL: https://chromiumcodereview.appspot.com/10568006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11838 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:51 +02:00
erik.corry@gmail.com
f94b85db83 Revert part of 11727 as it sometimes tanked V8 benchmark (raytrace) performance for reasons that are not obvious. Now we make objects into fast-case objects when they are made prototypes for other objects, but we do not mark objects that are already fast case with a bit that helps keep them in fast case. Review URL: https://chromiumcodereview.appspot.com/10556004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:50 +02:00
danno@chromium.org
bf682afb98 MIPS: Fix packed-element.js test on ARM with no snap
Port r11826 (5be3568a)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10559002
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11840 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:49 +02:00
Ben Noordhuis
8966480c0e Revert "build: fix make install DESTDIR=/path"
This reverts commit f80513974e.

The reverted commit made DESTDIR behave more like we want it to but it was
pointed out in #3489 that it makes life a lot harder for distro package
maintainers.

Those guys and gals already have a hard enough time as it is, let's not make
their jobs even more hellish.
2012-06-19 17:50:34 +02:00
Ben Noordhuis
7de6eba061 node: preemptively unbreak windows build
No one has complained about it so far but I'm sure MSVC doesn't like things
like __attribute__((unused)). Include the libev and libeio shims only on
non-Windows platforms.
2012-06-19 13:51:00 +02:00
isaacs
edb62dd902 npm: Upgrade to 1.1.29 2012-06-18 18:08:48 -07:00
isaacs
10fa526fa0 Update npm's license
Adds the Gubblebum Blocky copyright statement
2012-06-18 18:08:45 -07:00
isaacs
5cfe0b86d5 eio-emul: Cast eio_custom method to void(*)(eio_req*) 2012-06-18 17:48:16 -07:00
Trent Mick
dd1c3d72e2 build: always link with -lz
Fix building with a shared zlib: ensure link with '-lz'.

Configuring for a shared zlib:

    LDFLAGS="-L/opt/local/lib -R/opt/local/lib" \
        ./configure --shared-zlib \
        --shared-zlib-includes=/opt/local/include \
        --shared-zlib-libpath=/opt/local/lib

and building would fail on SmartOS because the link would not include '-lz'.
This doesn't fail on Mac (at least in my setup) because you get lucky with the
openssl libs reported from the Homebrew pkg-config:

    $ pkg-config --libs openssl
    -lssl -lcrypto -lz

On SmartOS, the pkgsrc libs for openssl are:

    $ pkg-config --libs openssl
    -Wl,-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto -lsocket -lnsl -ldl

The patch has no adverse effect on the Mac build (by control case).
2012-06-19 02:23:19 +02:00
Ben Noordhuis
1b22f5376b build: install eio-emul.h 2012-06-19 02:15:29 +02:00
Ben Noordhuis
f405517de1 build: install ev-emul.h 2012-06-19 02:15:29 +02:00
isaacs
1df222f179 Fix breakage introduced in de65ba7 2012-06-18 16:04:36 -07:00
isaacs
de65ba7aba net.Socket: Delay pause/resume until after connect
Fix #3118
2012-06-18 15:17:20 -07:00
Trent Mick
196207c228 node: remove unused flags and files
Drop vestigial `process.installPrefix`, `node --vars`, NODE_CFLAGS and
NODE_PREFIX.

Also removed unused node_config.h.in (replaced with config.gypi a while back).
2012-06-18 23:56:42 +02:00
isaacs
0ef6cfd39b Fix #3465 Add ./configure --no-ifaddrs flag
For Old Solaris.
2012-06-18 14:52:12 -07:00
isaacs
d0111aa0c4 uv: Upgrade to 382f2a26 2012-06-18 14:51:41 -07:00
Fedor Indutny
0a89e8b838 child_process: add .stdin stream to forks
Remove test as it doesn't make any sense after the latest stdio API
changes.
2012-06-19 01:46:28 +04:00
Fedor Indutny
057b80611f uv: upgrade to 61a6e06e 2012-06-19 01:03:11 +04:00
Bert Belder
30ab1f567d test-eio-limit: bump the number of allowed background tasks to 200
This makes the test pass on Windows.
2012-06-18 15:58:43 +02:00
Bert Belder
1b7d23e81e Fix test-cluster-message so it passes on Windows
The test was relying on a particular order of events that cannot be
guaranteed.

Also fixes some typos.
2012-06-18 15:36:26 +02:00
Ben Noordhuis
f80513974e build: fix make install DESTDIR=/path
Install to $DESTDIR, not $DESTDIR/$PREFIX.

Example: if DESTDIR=/opt/node, install to /opt/node, not /opt/node/usr/local.
2012-06-18 15:13:39 +02:00
Ben Noordhuis
ff552ddbaa tls: fix off-by-one error in renegotiation check
Make CLIENT_RENEG_LIMIT inclusive instead of exclusive, i.e. a limit of 2
means the peer can renegotiate twice, not just once.

Update pummel/test-tls-ci-reneg-attack accordingly and make it less timing
sensitive (and run faster) while we're at it.
2012-06-18 04:31:40 +02:00
Ben Noordhuis
eef57dddf4 core: use proper #include directives 2012-06-18 02:35:14 +02:00
Fedor Indutny
ae5b0e1fc1 crypto: add padding to diffie-hellman key
DH_size returns number of bytes in a prime number, DH_compute_key returns number
of bytes in a remainder of exponent, which may have less bytes than a prime
number. Therefore add 0-padding to the allocated buffer.

Fixes #3372
2012-06-18 00:59:31 +04:00
Andreas Madsen
6d70a4ae16 node: change the constructor name of process from EventEmitter to process 2012-06-17 13:14:11 -07:00
Maciej Małecki
3db2e034c4 events: cache domain module locally
It's faster than calling `require` every time we create an
`EventEmitter`.
2012-06-17 13:07:20 -07:00
Reid Burke
71a2a2caa6 net: Prevent property access throws during close
Fix #3455.

The remoteAddress and remotePort properties are
dynamically retrieved from _getpeername().

While _getpeername() checks if the _handle is
null, it is also possible for the tcp_wrapped
_handle.getpeername() to return null on error.

Such a condition happens when the remote closes
and one of these properties is accessed before
_handle is set to null.
2012-06-17 13:00:00 -07:00
isaacs
b0b707cb6e npm: Upgrade to 1.1.27
- severely enhanced 'npm init'
- upgraded node-gyp
2012-06-17 12:04:35 -07:00
isaacs
d614d161c7 test: Don't reuse common.PORT in test-child-process-fork-net
This fixes #3447
2012-06-16 16:26:22 -07:00
isaacs
41421ff9da Make listenFD just DTRT after warning 2012-06-16 16:26:16 -07:00
Bert Belder
55ef9ef680 Revert "Check if a stream has a valid fd before read_start"
uv_stream_t.fd is a private field which exists only on unix.
This reverts commit 8d5c1201f2.
2012-06-16 20:14:21 +02:00
isaacs
a90bc78534 Revert "DNS: Support NAPTR queries"
This reverts commit 91bf18fcc5.
2012-06-16 11:02:49 -07:00
ssuda
91bf18fcc5 DNS: Support NAPTR queries
Adding support for NAPTR records
fixes #3170
2012-06-16 10:56:49 -07:00
Felix Böhm
3a5798b097 querystring: improved speed and code cleanup 2012-06-16 10:43:17 -07:00
isaacs
e74a733024 Fix #3448 Use listen callback in test-regress-GH-1697 2012-06-16 10:19:34 -07:00
Charlie McConnell
8a068ce849 s/exit/close/ in test-child-process-stdout-flush, fixes #3449 2012-06-16 09:43:04 -07:00
isaacs
bc18bf4ec0 Add test-stdin-pause-resume-sync
This is the last bit needed to Close #3346
2012-06-16 09:05:28 -07:00
Karl Skomski
8d5c1201f2 Check if a stream has a valid fd before read_start
Closes #3118
2012-06-16 09:00:20 -07:00
isaacs
bdd57f0756 Makefile: Refuse to build release from unclean repo
Root cause of an error during the 0.7.11 release
2012-06-16 08:51:33 -07:00
Charlie McConnell
145612c2f5 test: skip test-http-full-response on ab errors
If we get errors from ab or apr, skip the test and move on.

Fix #3451
2012-06-16 08:38:47 -07:00
isaacs
c49f3b5df6 email footer: Change Windows msi paths for x86 and x64 2012-06-15 12:50:37 -07:00
isaacs
2b15cf57dd Now working on 0.7.12 2012-06-15 12:47:08 -07:00
isaacs
de2eb600b3 Merge branch 'v0.7.11-release' 2012-06-15 12:46:55 -07:00
isaacs
1f93aa5d5d 2012.06.15, Version 0.7.11 (unstable)
* V8: Upgrade to v3.11.10

* npm: Upgrade to 1.1.26

* doc: Improve cross-linking in API docs markdown (Ben Kelly)

* Fix #3425: removeAllListeners should delete array (Reid Burke)

* cluster: don't silently drop messages when the write queue gets big (Bert Belder)

* Add Buffer.concat method (isaacs)

* windows: make symlinks tolerant to forward slashes (Bert Belder)

* build: Add node.d and node.1 to installer (isaacs)

* cluster: rename worker.unqiueID to worker.id (Andreas Madsen)

* Windows: Enable ETW events on Windows for existing DTrace probes. (Igor Zinkovsky)

* test: bundle node-weak in test/gc so that it doesn't need to be downloaded (Nathan Rajlich)

* Make many tests pass on Windows (Bert Belder)

* Fix #3388 Support listening on file descriptors (isaacs)

* Fix #3407 Add os.tmpDir() (isaacs)

* Unbreak the snapshotted build on Windows (Bert Belder)

* Clean up child_process.kill throws (Bert Belder)

* crypto: make cipher/decipher accept buffer args (Ben Noordhuis)
2012-06-15 12:10:43 -07:00
isaacs
911b0fddd3 Upgrade npm to 1.1.26 2012-06-15 10:00:30 -07:00
Andreas Madsen
1e0ce5d1bd domain: the EventEmitter constructor is now always called in nodecore 2012-06-15 09:49:05 -07:00
Ben Kelly
c6185c8484 doc: Improve cross-linking in API docs markdown
Cross-link EventEmitter references in API docs to events.html

Fix broken cross-reference links with wrong anchor names in API docs.
2012-06-15 09:44:37 -07:00
isaacs
a111390c56 zlib: use Buffer.concat() 2012-06-15 09:44:37 -07:00
Bert Belder
8ccb3cbdba test-domain-implicit-fs: make it pass on windows
The error message is slightly different on windows. However there was no
need to verify the exact error message - there are assert()s that check
all the properties of the error object.
2012-06-15 18:34:27 +02:00
isaacs
283d735e2b doc: Include zlib constants 2012-06-14 22:17:39 -07:00
isaacs
e72addcf8e event: Document the mutability of listeners() 2012-06-14 17:26:51 -07:00
Nathan Rajlich
032fc42e64 readline: don't cache the "keypress" listeners
it's not safe to since `removeAllListeners()` will detach the returned
Array from the stream instance if that's ever called by the user.
2012-06-14 17:26:50 -07:00
Reid Burke
c9a1b5d162 Fix #3425: removeAllListeners should delete array
When removeAllListeners is called, the listeners array
is deleted to maintain compatibility with v0.6.

Reverts "events: don't delete the listeners array"

This reverts commit 78dc13fbf9.

Conflicts:

	test/simple/test-event-emitter-remove-all-listeners.js
2012-06-14 17:26:50 -07:00
Bert Belder
13400e3e58 windows: make symlinks tolerant to forward slashes
Closes #3440
2012-06-15 01:37:24 +02:00
isaacs
412c1ab5bc Fix test-fs-realpath on Windows
Also, in the process, fix a bug in fs.realpath on Windows.

If the user has permission to create symlinks, then use symlinks.  If
not, then skip over all the tests that cannot be run using Junctions
instead.
2012-06-14 16:15:12 -07:00
danno@chromium.org
00247d53db Fix Kraken regression due to optimistic monomorphic element transitions
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10539141

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-15 00:40:35 +02:00
mstarzinger@chromium.org
c231321cd3 Fix assertion for map code cache of shared maps.
R=danno@chromium.org
TEST=mjsunit/compare-known-objects-slow

Review URL: https://chromiumcodereview.appspot.com/10548046

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-15 00:35:37 +02:00
Bert Belder
7f896889ba uv: upgrade to b1649b6f 2012-06-14 21:23:37 +02:00
isaacs
a0a5c4c5af doc: update v8-options in man page 2012-06-14 10:39:05 -07:00
isaacs
8bec3febd8 build: Add node.d and node.1 to installer 2012-06-14 10:39:05 -07:00
isaacs
f70fa3bae6 v8: Replace 'echo -n' with 'echo' in build commands 2012-06-14 10:11:55 -07:00
Bert Belder
58b8b3fa07 uv: upgrade to 5d5688f2 2012-06-14 18:36:49 +02:00
Bert Belder
ca003f4f3e license2rtf: collapse whitespace 2012-06-14 18:36:49 +02:00
Andreas Madsen
c2c08196d8 cluster: rename worker.unqiueID to worker.id 2012-06-14 09:32:56 -07:00
isaacs
dd85a8c183 Update message test for new v8 behavior 2012-06-14 08:37:44 -07:00
Bert Belder
34b0b6a613 test-bad-unicode: update to reflect V8 3.11 behavior 2012-06-14 16:06:53 +02:00
Igor Zinkovsky
39d2337859 Windows: don't fire GC ETW events without ETW consumers 2012-06-14 15:26:47 +02:00
Nathan Rajlich
05fe70b582 test: use the debug build of node-weak when necessary 2012-06-13 17:58:28 -07:00
Nathan Rajlich
c752f6c013 test: add a .gitignore file to ignore weak's compiled "build" dir 2012-06-13 17:58:28 -07:00
Bert Belder
511e328727 LICENSE: add node-weak 2012-06-14 02:52:57 +02:00
Bert Belder
4a1698c6ba LICENSE: punctuation fixes 2012-06-14 02:52:55 +02:00
yangguo@chromium.org
54b74b8e85 Remove faster ticks for debug mode.
This solves the problem that code runs very slow when the debugger is enabled.

BUG=v8:2179
TEST=

Review URL: https://chromiumcodereview.appspot.com/10544135

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 02:16:27 +02:00
Bert Belder
2701a6bd48 Unbreak the snapshotted build on Windows
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.

In the long run it would be good for node to send all build
output to ./build too, on all platforms.
2012-06-14 01:51:13 +02:00
Fedor Indutny
fac6c69456 v8: fix postmortem debugging tools build 2012-06-14 01:37:15 +02:00
Bert Belder
ac64c9e546 v8: reapply floating patches
Note that 26f754d9 ('fix error handling in SendConnectMessage') is no
longer necessary; it was properly fixed upstream in V8 r11609.
2012-06-14 01:37:14 +02:00
mstarzinger@chromium.org
48893af7bb Fix performance regression caused by r11202.
R=erik.corry@gmail.com
BUG=v8:2156,v8:2034
TEST=mjsunit/regress/regress-2156,mjsunit/regress/regress-2034

Review URL: https://chromiumcodereview.appspot.com/10539131

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11800 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 01:37:14 +02:00
Bert Belder
50464cd4f4 v8: upgrade to v3.11.10 2012-06-14 01:37:13 +02:00
Bert Belder
09be360a0f Inherited FDs should not accidentally be inherited by child processes
This makes test-child-process-detached pass on Windows.
2012-06-14 01:28:51 +02:00
Bert Belder
37d75ba241 uv: upgrade to 4d7f1e18 2012-06-14 01:27:31 +02:00
Bert Belder
029e01bb80 vcbuild.bat: add duplicate arg-ok label to work around cmd.exe bug 2012-06-14 00:56:43 +02:00
Nathan Rajlich
6a8b5b36b4 test: bundle node-weak in test/gc so that it doesn't need to be downloaded 2012-06-14 00:56:35 +02:00
Igor Zinkovsky
35a1421e96 Windows: Enable ETW events.
This commit enables ETW events to be fired on Windows for existing
DTrace probes.  ETW instrumentation is enabled by default.  It
is possible to build node.exe without ETW instrumentation by
using --without-etw option with configure script.
2012-06-13 15:36:08 -07:00
Bert Belder
74c8041fb6 test-child-process-spawn-loop: make it pass on Windows.
It wasn't waiting for the child process' stderr to close, so not an
assertion was made *before* all the data that the child process sent
was received by node.
2012-06-13 22:12:30 +02:00
isaacs
e733dc3bc3 Fix #3388 Support listening on file descriptors
This implements server.listen({ fd: <filedescriptor> }).  The fd should
refer to an underlying resource that is already bound and listening, and
causes the new server to also accept connections on it.

Not supported on Windows.  Raises ENOTSUP.
2012-06-13 12:24:45 -07:00
Bert Belder
0187b657ae Move resource files to src/res.
tools/msvs/res is not an appropriate place.
2012-06-13 17:40:50 +02:00
isaacs
a11bf99ce0 Fix #3407 os.tmpDir() 2012-06-12 19:08:47 -07:00
Bert Belder
0dba4ad0f9 tests: make all message tests pass on Windows 2012-06-13 03:02:53 +02:00
Bert Belder
5209dad907 test-net-timeout: make it pass on Windows
The test didn't take into account that some time might pass before
libuv makes close callbacks. This is now fixed.
2012-06-13 02:49:33 +02:00
Bert Belder
e4f4c63370 uv: upgrade to 9f44b0e3 2012-06-13 01:35:51 +02:00
Bert Belder
b866a96cfa test-child-process-kill: make it pass on windows
The test would fail if the child process writes anything to the stdout.
This doesn't happen on unix, since `cat` is spawned. However, on Windows
`cmd` is started, which *does* write stuff to it's stdout. This
meanlingless assert is now removed.
2012-06-12 23:30:57 +02:00
Bert Belder
10f85fadfe Fix child_process.kill oddities
* When the process is already dead, but the `exit` signal wasn't raised
  yet, the ESRCH error should be ignored.

* When an invalid signal is specified, kill() should throw.

* Like process.kill(), child_process.kill() now preserves a `0` signal
  which can be used to check the liveliness of the child process.

* process.kill() and child_process.kill() will now return true if the
  signal was actually delivered, and false otherwise.

* When an `exec`-ed process is automatically killed because a time or
  buffer limit is exceeded, and the kill() fails, this error should be
  reported through the `exec` callback.

Fixes: #3409
2012-06-12 23:30:56 +02:00
Bert Belder
b53b8b8ae7 test-exec: make it work on Windows 2012-06-12 23:30:54 +02:00
Ben Noordhuis
8963a5228d doc: update crypto cipher/decipher docs 2012-06-12 22:02:35 +02:00
Ben Noordhuis
900196e135 crypto: make cipher/decipher accept buffer args 2012-06-12 21:50:05 +02:00
Bert Belder
a55faeac18 uv: upgrade to b7e150ee 2012-06-12 19:54:56 +02:00
Bert Belder
cbeeea62cf Revert "uv: upgrade to b7e150ee"
Upgrade wasn't done correctly.
This reverts commit b615077bab.
2012-06-12 19:52:38 +02:00
Bert Belder
b615077bab uv: upgrade to b7e150ee 2012-06-12 17:06:54 +02:00
Ben Noordhuis
0385b17ce0 fs: fix infinite loop in fs.readFileSync()
Fix an infinite loop in the case where the file got truncated by a concurrent
writer while fs.readFileSync() was busy reading in the file.
2012-06-12 16:31:49 +02:00
Ben Noordhuis
408bfece51 fs: fix infinite loop in fs.readFile()
Fix an infinite loop in the case where the file got truncated by a concurrent
writer while fs.readFile() was busy reading in the file.
2012-06-12 16:31:44 +02:00
Bert Belder
bb2ce1a108 cluster: don't silently drop messages when the write queue gets big 2012-06-12 15:57:27 +02:00
Shigeki Ohtsu
e3a2dd1b13 fs: fix fs.readFileSync to work on real empty file 2012-06-12 15:02:39 +02:00
Shigeki Ohtsu
4eb2804db9 fs: fix typo in fs.readFile of lying size=0 stat 2012-06-12 15:02:39 +02:00
Bert Belder
517cea3636 test-net-connect-econnrefused: don't take forever to complete 2012-06-12 02:22:30 +02:00
Bert Belder
b27a4cbe2a test-module-loading: convert backslashes to forward slashes
This makes the test pass on Windows.
2012-06-12 02:04:44 +02:00
Bert Belder
094f742657 test-http-get-pipeline-problem: don't fail if there are stray files in the temp dir 2012-06-12 01:56:48 +02:00
Bert Belder
00ba1cbce1 test-net-write-slow: increase the socket timeout period
In Windows the callbacks arrive in slightly different order. A bunch
of write operations complete immediately, and after that there is a
gap of a few hundred ms. This causes the timeout timer to fire, which
is not really warranted; the first few write operations just finished a
little quicker than expected.
2012-06-12 01:43:45 +02:00
isaacs
6ce013dd4b fix fs.readFile with lying size=0 stat results 2012-06-11 15:54:28 -07:00
isaacs
d53cdc5378 Add Buffer.concat method
We write out this loop a lot of places throughout node.
It clearly needs to be an API method.
2012-06-11 15:51:23 -07:00
Bert Belder
cfa28690db cluster: don't silently drop messages when the write queue gets big 2012-06-11 23:46:17 +02:00
Bert Belder
2301eb69b1 v8: force inlining of v8::internal::DescriptorArray methods 2012-06-11 21:24:29 +02:00
yangguo@chromium.org
33be3016fb Force inlining CopyChars and String::Get.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10332054

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 21:24:27 +02:00
Charlie McConnell
2eb181d28c child_process: fix test implementation for options.detached 2012-06-11 10:27:51 -07:00
isaacs
25e8ea17e1 Do not gitignore npm's node_modules 2012-06-11 09:54:39 -07:00
isaacs
1358632e67 Remove auto-unref
cc: @AvianFlu @AndreasMadsen
2012-06-11 09:07:42 -07:00
isaacs
e9aa57e8bd Now working on 0.7.11 2012-06-11 08:58:33 -07:00
isaacs
4f235ef87f Merge branch 'v0.7.10-release' 2012-06-11 08:57:32 -07:00
isaacs
8d9766a9df 2012.06.11, Version 0.7.10 (unstable)
* Roll V8 back to 3.9.24.31

* build: x64 target should always pass -m64 (Robert Mustacchi)

* add NODE_EXTERN to node::Start (Joel Brandt)

* repl: Warn about running npm commands (isaacs)

* slab_allocator: fix crash in dtor if V8 is dead (Ben Noordhuis)

* slab_allocator: fix leak of Persistent handles (Shigeki Ohtsu)

* windows/msi: add node.js prompt to startmenu (Jeroen Janssen)

* windows/msi: fix adding node to PATH (Jeroen Janssen)

* windows/msi: add start menu links when installing (Jeroen Janssen)

* windows: don't install x64 version into the 'program files (x86)' folder (Matt Gollob)

* domain: Fix #3379 domain.intercept no longer passes error arg to cb (Marc Harter)

* fs: make callbacks run in global context (Ben Noordhuis)

* fs: enable fs.realpath on windows (isaacs)

* child_process: expose UV_PROCESS_DETACHED as options.detached (Charlie McConnell)

* child_process: new stdio API for .spawn() method (Fedor Indutny)

* child_process: spawn().ref() and spawn().unref() (Fedor Indutny)

* Upgrade npm to 1.1.25
- Enable npm link on windows
- Properly remove sh-shim on Windows
- Abstract out registry client and logger
2012-06-11 08:19:55 -07:00
isaacs
76f6a4abb4 Remove dep symlinks from tarball 2012-06-11 08:19:55 -07:00
Bert Belder
5432a1d985 process_wrap: set duplex flags when creating a pipe 2012-06-11 08:13:36 -07:00
isaacs
54a4f99c4e lint 2012-06-11 08:13:36 -07:00
isaacs
13198357e9 Upgrade npm to 1.1.25 2012-06-11 08:13:36 -07:00
Nuno Job
284816ee9f test: add test for bad unicode sequences
This was a regression in 0.7.9.
2012-06-09 20:30:16 +02:00
isaacs
65242abc3b Fix fs.realpath tests so that they actually run 2012-06-09 09:43:47 -07:00
isaacs
131a67e7ef Fix #3394 fs.realpath: Properly cache symlink targets 2012-06-09 09:43:47 -07:00
isaacs
424bca15c8 Fix fs.realpath to work on Windows
1. Make the isRoot check valid
2. Don't cache results based on dev/ino, since those are alwasy 0 on
windows.
2012-06-09 09:43:46 -07:00
isaacs
6332a4cf00 Expose posix realpath on windows as well 2012-06-09 09:43:46 -07:00
Andreas Madsen
60b45dcbb6 domain: document and test dispose event 2012-06-09 18:15:38 +02:00
Andreas Madsen
535e109a3a domain: run now return callback result
both domain.bind and domain.intercept act this way
2012-06-09 18:15:38 +02:00
Andreas Madsen
77cfbd9f2d domain: dry decorate using util._extend 2012-06-09 18:15:38 +02:00
Ben Noordhuis
26f754d9dd v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-06-09 08:10:03 -07:00
isaacs
c08357c32f v8: Floating patches 2012-06-09 08:09:58 -07:00
isaacs
940a6863ea Roll V8 back to 3.9.24.31 2012-06-09 08:09:42 -07:00
Marc Harter
569acea0ee Fix #3379 prevent domain.intercept passing 1st arg to cb 2012-06-08 23:32:13 -07:00
Charlie McConnell
4b021a3541 child_process: expose UV_PROCESS_DETACHED as options.detached 2012-06-08 22:57:22 -07:00
Bert Belder
5046f8501c Revert "Unbreak the Windows build"
It is not needed for v8 3.10, and actually breaks the build.
This reverts commit bd33fea732.
2012-06-08 20:46:34 +02:00
Robert Mustacchi
f62441367f x64 target should always pass -m64 2012-06-07 17:54:56 -07:00
isaacs
0435f9b28c v8: Don't use 'echo -n' in configure script 2012-06-07 17:54:22 -07:00
Bert Belder
bd33fea732 Unbreak the Windows build
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.

In the long run it would be good for node to send all build
output to ./build too, on all platforms.

Conflicts:

	deps/v8/build/common.gypi
2012-06-07 17:54:22 -07:00
Ben Noordhuis
1fb9cfcdb1 v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-06-07 17:54:21 -07:00
isaacs
43ff46becf v8: Floating patches 2012-06-07 17:54:21 -07:00
isaacs
46b09e4190 Roll V8 back to 3.10.8.13 2012-06-07 17:54:21 -07:00
Fedor Indutny
3116522e7c child_process: spawn().ref() and spawn().unref() 2012-06-07 23:20:56 +04:00
Bert Belder
f482236665 windows: don't print error when GetConsoleTitleW returns an empty string 2012-06-07 19:44:31 +02:00
isaacs
c45522df4c build: Prevent duplication of doc/api folder 2012-06-06 15:02:23 -07:00
isaacs
f9abf5e0e2 build: Prevent duplication of doc/api folder 2012-06-06 15:01:47 -07:00
Ben Noordhuis
463d6bac8b fs: make callbacks run in global context
Callbacks that were passed to the binding layer ran in the context of the
(internal) binding object. Make sure they run in the global context.

Before:

  fs.symlink('a', 'b', function() {
    console.log(this); // prints "{ oncomplete: [Function] }"
  });

After:

  fs.symlink('a', 'b', function() {
    console.log(this); // prints "{ <global object> }"
  });
2012-06-06 21:49:39 +02:00
Ben Noordhuis
c381662cac fs: make fs.symlink() with no callback async
Fix a bug where fs.symlink('foo', 'bar') executed symlink(2) synchronously.
2012-06-06 21:08:38 +02:00
isaacs
1285cd9011 Now working on 0.6.20 2012-06-06 09:58:46 -07:00
isaacs
79d77cfd81 Merge branch 'v0.6.19-release' into v0.6 2012-06-06 09:58:24 -07:00
Joel Brandt
b9c5eee7d9 add NODE_EXTERN to node::Start 2012-06-06 05:31:09 +02:00
Ben Noordhuis
5f41140535 deps: upgrade libuv to 649ad50 2012-06-06 05:31:08 +02:00
isaacs
debf552ed2 2012.06.06 Version 0.6.19 (stable)
* npm: upgrade to 1.1.24

* fs: no end emit after createReadStream.pause() (Andreas Madsen)

* vm: cleanup module memory leakage (Marcel Laverdet)

* unix: fix loop starvation under high network load (Ben Noordhuis)

* unix: remove abort() in ev_unref() (Ben Noordhuis)

* windows/tty: never report error after forcibly aborting line-buffered read (Bert Belder)

* windows: skip GetFileAttributes call when opening a file (Bert Belder)
2012-06-05 17:46:27 -07:00
isaacs
e5d3ea7771 Upgrade npm to 1.1.24 2012-06-05 17:46:27 -07:00
isaacs
28e851c169 Warn about running npm in the repl 2012-06-05 12:35:49 -07:00
Nathan Rajlich
c69d7f1a6c test: make the node-weak install build agaist this repo
This prevents node-gyp from attempting to download dev header files from
nodejs.org. Instead, the files in this repo will be used to build the module.
2012-06-05 10:25:39 -07:00
Ben Noordhuis
cb76999bad deps: upgrade libuv to 06e0319 2012-06-05 17:07:43 +02:00
Ben Noordhuis
0a2076b26a deps: upgrade libuv to c8c9fe1 2012-06-05 16:48:17 +02:00
Ben Noordhuis
27061cc9f4 udp_wrap, stream_wrap: lazy init slab allocator
Create slab allocator when binding is initialized.

Add an AtExit handler to destroy the slab before the VM shuts down, it can't be
disposed when V8 is dead and Valgrind will complain about memory leaks.
2012-06-05 16:48:17 +02:00
Ben Noordhuis
cc0e7efb37 slab_allocator: fix crash in dtor if V8 is dead
Don't try to dispose the persistent handles if the VM is already dead, it
triggers an assertion inside V8.
2012-06-05 16:27:57 +02:00
Shigeki Ohtsu
208d1715a7 slab_allocator: fix leak of Persistent handles 2012-06-05 15:45:08 +02:00
koichik
0742f5629c Revert "punycode: Update to v1.0.0"
This reverts commit 483edbdf1a.
Fixes #3359.
2012-06-05 22:10:37 +09:00
isaacs
b9e40fbaac Upgrade npm to 1.1.24 2012-06-04 17:32:59 -07:00
isaacs
cc36cc5999 build: Don't clobber symlinked npm 2012-06-04 17:32:59 -07:00
Bert Belder
4f6882e898 windows/msi: minor installer tweaks 2012-06-04 21:39:58 +02:00
Jeroen Janssen
01432403af windows/msi: add node.js prompt to startmenu 2012-06-04 21:39:51 +02:00
isaacs
04e484c484 v8: Don't use 'echo -n' in configure script 2012-06-04 11:10:31 -07:00
Ben Noordhuis
f0a561fe67 net: rename flag FLAG_SHUTDOWNQUED 2012-06-04 15:02:09 +02:00
Jeroen Janssen
7161ecd31b windows/msi: fix adding node to PATH
Closes #3366
2012-06-04 14:16:39 +02:00
Bert Belder
0699f5bfb4 Improve child process stdio documentation 2012-06-04 14:12:59 +02:00
Jeroen Janssen
943448772e windows/msi: add start menu links when installing 2012-06-03 00:45:39 +02:00
Jeroen Janssen
e2126e05e7 windows/msi: cleanup WiX project files
The current WiX project files do some manual processing and generation
which WiX supports doing out of the box. This patch will use the
HeatDirectory task to generate the npm.wxs file and use the auto GUID
generation. I also changed the msi filename generation to include the
version number to match the currently used name for released msi files.

Closes #3360
2012-06-02 18:39:41 +02:00
Bert Belder
3b6a00b664 Unbreak the Windows build
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.

In the long run it would be good for node to send all build
output to ./build too, on all platforms.
2012-06-02 16:06:00 +02:00
isaacs
e0f5d8e86d test: v8 stack trace messages changed slightly 2012-06-01 22:31:05 -07:00
Ben Noordhuis
eabf3c8d0f v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-06-01 22:31:04 -07:00
isaacs
7946ad2634 v8: Floating patches 2012-06-01 22:31:04 -07:00
isaacs
cbdf3393a2 Upgrade v8 to 3.11.7 2012-06-01 22:31:04 -07:00
Fedor Indutny
0262b6d2a5 child_process: new stdio API for .spawn() method 2012-06-02 12:12:48 +07:00
Simon Sturmer
9a998d5e24 http: don't lowercase http req header until later
Don't lowercase the request header until we're in the _addHeaderLine method,
makes it easier to intercept the raw request headers.
2012-06-02 03:07:43 +02:00
Matt Gollob
9fe39ede9f windows: don't install x64 version into the 'program files (x86)' folder
* Update nodemsi.sln and .wixproj to include support for x64 platform
  - Add ProgramFilesFolderId to the DefineConstants property for each
    configuration/platform's property group with the appropriate value
    (ProgramFilesFolder for x86 builds, ProgramFiles64Folder for x64
    builds)

* Update product.wxs:
  - update the Id value for the "Program Files" Directory element to
    use a preprocessor constant.
  - remove hard-coded platform from the Package element.  MSI platform
    will be automatically detected based on MSBuild's Platform property.
    (This was already supported in the Wix MSBuild targets, we just
    weren't taking advantage of it.)

*  Update vcbuild.bat to set MSBuild's Platform property appropriately,
   defaulting to x86 if not explicitly supplied by the user. Note that
   creating an x64 build requires that vcbuild.bat be run from a VS
   64-bit command prompt.

Closes #3312
Closes #3356
2012-06-02 02:18:09 +02:00
Bert Belder
8a52a16847 windows: add icon to node.exe
The icon could definitely be nicer, patches welcome.
Credits to Nathan Rajlich for putting together this one.
2012-06-02 02:01:57 +02:00
isaacs
434404e3bb website: Add nodejs.es to localized sites 2012-06-01 10:21:02 -07:00
Fedor Indutny
af98fc9d5f child_process: new stdio API for .spawn() method 2012-06-01 20:52:13 +04:00
Bert Belder
30a0e58d63 uv: upgrade to 87dbffbd 2012-06-01 20:19:42 +04:00
Erwin van der Koogh
ccc854d14e doc: remove all references to setsid
Fixes #2299.
2012-05-31 15:38:05 +02:00
Ben Noordhuis
b337577cf1 test: update pummel/test-exec
ChildProcess.prototype._internal is called ChildProcess.prototype._handle now.
2012-05-31 01:46:56 +02:00
isaacs
dc8b488bbe Now working on 0.7.10 2012-05-29 10:08:24 -07:00
isaacs
a9e40281e7 Merge branch 'v0.7.9-release' 2012-05-29 10:07:44 -07:00
Fedor Indutny
761e0c460a deps: upgrade libuv to 7556590 2012-05-29 18:26:40 +04:00
Andreas Madsen
2ae9b69871 fs: no end emit after createReadStream.pause()
In case a fd option is given to fs.createReadStream a read will instantly
happen. But in the edge case where fd point to an empty file and .pause()
was executed instantly, the end event would emit since no async wait was
between fs.createReadStream and the file read there emits end.

This is a cherry-pick of commit 1f3e4a7 into the v0.6 branch.
2012-05-29 15:34:01 +02:00
Ben Noordhuis
fa9aa1c961 net: fix 'close' event emit order
The server 'close' event was emitted before the last client 'close' event. Not
exactly fatal but potentially confusing.

Before this commit the order looked something like [client, server, client],
now it looks like [client, client, server].

See #3340 for more details.
2012-05-29 13:05:51 +02:00
isaacs
782277f11a 2012.05.28, Version 0.7.9 (unstable)
* Upgrade V8 to 3.11.1

* Upgrade npm to 1.1.23

* uv: rework reference counting scheme (Ben Noordhuis)

* uv: add interface for joining external event loops (Bert Belder)

* repl, readline: Handle Ctrl+Z and SIGCONT better (Nathan Rajlich)

* fs: 64bit offsets for fs calls (Igor Zinkovsky)

* fs: add sync open flags 'rs' and 'rs+' (Kevin Bowman)

* windows: enable creating directory junctions with fs.symlink (Igor Zinkovsky, Bert Belder)

* windows: fix fs.lstat to properly detect symlinks. (Igor Zinkovsky)

* Fix #3270 Escape url.parse delims (isaacs)

* http: make http.get() accept a URL (Adam Malcontenti-Wilson)

* Cleanup vm module memory leakage (Marcel Laverdet)

* Optimize writing strings with Socket.write (Bert Belder)

* add support for CESU-8 and UTF-16LE encodings (koichik)

* path: add path.sep to get the path separator. (Yi, EungJun)

* net, http: add backlog parameter to .listen() (Erik Dubbelboer)

* debugger: support mirroring Date objects (Fedor Indutny)

* addon: add AtExit() function (Ben Noordhuis)

* net: signal localAddress bind failure in connect (Brian Schroeder)

* util: handle non-string return value in .inspect() (Alex Kocharin)
2012-05-28 20:03:03 -07:00
isaacs
8a411bae66 Revert "tests: kill process group on failure"
This reverts commit 0cebfc8ddb.
2012-05-28 20:02:49 -07:00
isaacs
719376730d upgrade npm to 1.1.23
This also upgrades node-gyp to 0.4.3
2012-05-28 20:02:39 -07:00
Ben Noordhuis
0bd410a66a deps: cherry-pick libuv commit 4690204
libuv cannot be upgraded right now (API change in upstream libuv) but this
commit fixes a segmentation fault on SunOS systems, hence the cherry-pick.
2012-05-28 22:10:38 +00:00
Shigeki Ohtsu
f721d02c8a http: fix duplicated variable declaration 2012-05-28 23:26:02 +02:00
Maciej Małecki
c96df0e37a stream: don't call cleanup twice on end and close 2012-05-28 01:35:36 +02:00
Ben Noordhuis
0fd2834539 deps: upgrade libuv to 2ec0986 2012-05-28 00:32:16 +02:00
Andreas Madsen
1f3e4a76f9 fs: no end emit after createReadStream.pause()
In case a fd option is given to fs.createReadStream a read will instantly
happen. But in the edge case where fd point to an empty file and .pause()
was executed instantly, the end event would emit since no async wait was
between fs.createReadStream and the file read there emits end.
2012-05-27 20:00:19 +02:00
Jeroen Janssen
82bcdbb8aa doc: add npm search to appendix
Fixes #3327.
2012-05-26 19:41:37 +09:00
Jeroen Janssen
1fc2c3823c doc: updated JavaScript casing where relevant
Fixes #3326.
2012-05-26 19:34:13 +09:00
Ben Noordhuis
578f69bcf4 deps: upgrade libuv to 28766dc 2012-05-25 14:02:35 +02:00
Ben Noordhuis
5ff2ae8389 bench: start a worker for each CPU 2012-05-25 00:35:10 +02:00
Ben Noordhuis
7535e3930a bench: add http_simple_auto benchmark
Starts a server and benchmarks it with ab.
2012-05-25 00:35:07 +02:00
isaacs
24de89bd0e Upgrade uv to 604802a 2012-05-24 14:26:32 -07:00
Igor Zinkovsky
b4ed3c1969 remove NODE_USE_64BIT_UV_FS_API 2012-05-24 11:49:51 -07:00
Jeroen Janssen
66e12dbd69 doc: update possible values for process.platform 2012-05-24 18:55:08 +02:00
Ben Noordhuis
078763a94c test: update addons .gitignore 2012-05-24 14:07:09 +02:00
Igor Zinkovsky
39e25528eb windows: enable creating directory junctions with fs.symlink 2012-05-24 01:15:15 -07:00
Mathias Bynens
a2fcc47772 doc: add punycode.js documentation 2012-05-23 04:04:12 +02:00
Jeroen Janssen
f079c0bd9f doc: process get/setuid and get/setgid are POSIX only
Fixes #3302
2012-05-23 04:01:45 +02:00
Ben Noordhuis
1358bac6d1 deps: upgrade libuv to 5b9c451 2012-05-23 04:01:19 +02:00
Igor Zinkovsky
dff467d982 update uv to 2df831723fad25d2d97b824b2e52c65082af2723 2012-05-22 16:49:19 -07:00
Igor Zinkovsky
6e435da7f9 remove race from test-child-process-fork-exec-argv test 2012-05-22 13:59:40 -07:00
Ben Noordhuis
0888cdd412 test: fix bad comment 2012-05-22 16:14:30 +02:00
Ben Noordhuis
989ae81c71 test: fix simple/test-process-active-wraps
Said test relies a great deal on internals and implementation details (I should
know, I wrote it). Patch it up to work with libuv's new refcounting scheme.
2012-05-22 16:14:30 +02:00
Ben Noordhuis
039fac633e deps: upgrade libuv to a478847
The event loop's reference counting scheme in this version of libuv has changed.
Update the libuv bindings to reflect that fact.
2012-05-22 16:14:24 +02:00
Nathan Rajlich
a608f65b24 repl: preserve the cursor when redisplaying the prompt on SIGCONT
Otherwise the cursor position was being reset to 0, even when there was
already part of a line, which was strange.

Part of #3295.
2012-05-21 21:09:46 -03:00
Nathan Rajlich
3f69c71157 readline: explicitly disable and re-enable "raw mode" on Ctrl+Z
Fixes #3295.
2012-05-21 21:09:46 -03:00
Nathan Rajlich
2b9967fbcc readline: move the "setRawMode" logic into a private function 2012-05-21 21:09:46 -03:00
Oleg Efimov
45de259b43 Make UNWRAP macro generic. 2012-05-21 23:29:06 +02:00
Andreas Madsen
81a4edcf6a cluster: remove NODE_UNIQUE_ID from env on startup
In case a worker would spawn a new subprocess with process.env, NODE_UNIQUE_ID
would have been a part of the env. Making the new subprocess believe it is a
worker, this would result in some confusion if the subprocess where to listen to
a port, since the server handle request would then be relayed to the worker.

This patch removes the NODE_UNIQUE_ID flag from process.env on startup so any
subprocess spawned by a worker is a normal process with no cluster stuff.
2012-05-21 23:27:44 +02:00
Oleg Efimov
968b49ba0a Check for tabs in source line in DisplayExceptionLine
Fix for joyent/node#3280
2012-05-21 18:30:16 +02:00
Marcel Laverdet
7865c5c51d vm: cleanup module memory leakage
There are some paths here that led to dangling contexts. By being smarter with
handle management we can get rid of all the cleanup code and fix those issues.

This is a backport of commit 7063575.
2012-05-21 01:30:58 +02:00
Ben Noordhuis
ca642b020d test: add http 'data after timeout' test
See #3234. TDB if this is or is not the desired behavior.
2012-05-21 00:31:28 +02:00
isaacs
75670d3f63 test: wait for 'close' event for stdout
At the 'exit' event, it is sometimes not done writing to stdout.
2012-05-20 09:40:10 -03:00
isaacs
d0c010e39b test: root can connect to chmod'd pipes 2012-05-20 09:24:47 -03:00
isaacs
b48f7f7eac test: Solaris is not as granular with rename fs watch events 2012-05-20 00:17:18 -03:00
Andreas Madsen
a039bad299 fs.watch should not require a listener arguments
Since fs.watch returns an event emitter where the change event is exactly
the same as the listener callback, the argument should be required
2012-05-19 18:58:28 -03:00
Ben Noordhuis
18b94ea838 doc: improve fs.open() docs 2012-05-17 06:18:25 +02:00
Kevin Bowman
ccc4e547ea doc: document fs 'rs+' open mode 2012-05-17 06:05:33 +02:00
isaacs
1a2255ab44 Faster fs.readFile and fs.readFileSync 2012-05-16 20:04:44 -07:00
isaacs
ee6c11876a benchmark for fs.readfile 2012-05-16 20:04:44 -07:00
isaacs
a3753b496e Revert "Fix #3242 Actually deprecate 'binary' buffer encoding"
This reverts commit 5979f096d1.

Related:
- #3279
- #3278
2012-05-16 16:32:37 -07:00
isaacs
9fc7283a40 Fix #3270 Escape url.parse delims
Rather than omitting them.
2012-05-16 15:41:28 -07:00
isaacs
c393853b4e build: Set strict_aliasing on SunOS always
A build failure was introduced on c9676c9147
in SmartOS systems.  This makes it build properly.
2012-05-16 14:49:51 -07:00
isaacs
564172510d Revert "test: stack overflow output"
This reverts commit f8519e10b8.

Recent update to V8 fixes the problem where it incorrectly reports the
line number as 0 for thrown RangeErrors.
2012-05-16 14:44:15 -07:00
isaacs
3b95d88bf2 v8: s/echo -n/echo/. Not all sh's are bash. 2012-05-16 14:22:57 -07:00
isaacs
2cca7488bf Patches floating on V8 2012-05-16 14:22:57 -07:00
isaacs
3f3f958c14 Upgrade V8 to 3.11.1 2012-05-16 14:22:33 -07:00
Adam Malcontenti-Wilson
4099d1eeba http: make http.get() accept a URL
http.get() now accepts either a URL (as a string) or an options object.
2012-05-16 16:43:18 +02:00
Ben Noordhuis
05b81f333c doc: clarify stream 'close' event 2012-05-16 16:08:18 +02:00
isaacs
1665b4a2a3 lint 2012-05-15 18:04:43 -07:00
Kevin Bowman
dfcdd5b8aa fs: add sync open flags 'rs' and 'rs+' 2012-05-16 00:14:46 +02:00
isaacs
643f00d3f9 Merge branch 'master' into v0.6-merge
Conflicts:
	src/node.cc
2012-05-15 14:21:22 -07:00
isaacs
faa4d9ff5f Re-apply http fixes from v0.6 branch properly 2012-05-15 14:19:46 -07:00
Sadique Ali
c9676c9147 build: improve c compiler detection 2012-05-15 22:51:17 +02:00
Ben Noordhuis
9ae6d8fee3 http: fix client request.end() EPIPE race
request.end() would sometimes try to write a zero-length buffer to the socket.
Don't do that, it triggers an unnecessary EPIPE when the other end has closed
the connection.

Fixes #3257.
2012-05-15 22:05:36 +02:00
isaacs
f8519e10b8 test: stack overflow output 2012-05-15 13:03:56 -07:00
isaacs
9611354f08 lint 2012-05-15 13:03:43 -07:00
Ben Noordhuis
e813e3491e node: make _getActiveHandles() return user objects
Before this commit, process._getActiveHandles() returned a list of internal
handles. Now, it returns the user objects that handles are attached to.

For example, a tcp_wrap handle will now return its parent net.Socket object.

It works for all handle types except timers because timer handles are shared
across multiple user objects.
2012-05-15 21:01:36 +02:00
Ben Noordhuis
88d7a10128 test: verify that connect reqs are cleaned up 2012-05-15 21:00:27 +02:00
Ben Noordhuis
5f0406534c process: add _getActiveHandles(), _getActiveRequests()
* process._getActiveHandles() returns a list containing all active handles
  (timers, sockets, etc.) that have not been unref'd.

* process._getActiveRequests() returns a list of active requests (in-flight
  actions like connecting to a remote host, writing data to a socket, etc.).
2012-05-15 21:00:27 +02:00
Ben Noordhuis
636add246c req_wrap: share process_symbol, domain_symbol
Share persistent strings process_symbol and domain_symbol across compilation
units. Avoids redefinition errors when src/node.cc includes src/req_wrap.h.
2012-05-15 20:59:43 +02:00
isaacs
5164ae3838 Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	ChangeLog
	deps/uv/include/uv-private/uv-unix.h
	deps/uv/src/unix/core.c
	deps/uv/src/unix/sunos.c
	deps/v8/src/runtime.cc
	doc/api/crypto.markdown
	lib/http.js
	src/node_version.h
	test/gc/test-http-client-timeout.js
	wscript
2012-05-15 11:37:34 -07:00
isaacs
01103d077b Guard against emitting 'end' twice on http responses
Conflicts:

	lib/http.js
2012-05-15 11:29:32 -07:00
isaacs
a98e845516 Break up huge function in ClientRequest.onSocket
Conflicts:

	lib/http.js
2012-05-15 11:26:47 -07:00
isaacs
f19f980724 Now working on 0.6.19 2012-05-15 10:21:57 -07:00
isaacs
2498d15dde Merge branch 'v0.6.18-release' into v0.6 2012-05-15 10:21:40 -07:00
Ben Noordhuis
a3908f47f1 child_process: hook up handle wrap to owning object 2012-05-15 16:59:01 +02:00
Ben Noordhuis
4ec77e2e28 child_process: rename field _internal to _handle
Consistent with how other classes that are built around HandleWraps call it.
2012-05-15 16:59:01 +02:00
Ben Noordhuis
f66f793c07 net: hook up handle wrap to owning object 2012-05-15 16:59:00 +02:00
Ben Noordhuis
25aea2a072 fs: hook up handle wrap to owning object 2012-05-15 16:56:49 +02:00
Ben Noordhuis
d2eaabd0df dgram: hook up handle wrap to owning object 2012-05-15 16:56:48 +02:00
isaacs
4bc1d395de 2012.05.15 Version 0.6.18 (stable)
* windows: skip GetFileAttributes call when opening a file (Bert Belder)

* crypto: add PKCS12/PFX support (Sambasiva Suda)

* #3240: child_process: delete NODE_CHANNEL_FD from env in spawn (Ben Noordhuis)

* windows: add test for path.normalize with UNC paths (Bert Belder)

* windows: make path.normalize convert all slashes to backslashes (Bert Belder)

* fs: Automatically close FSWatcher on error (Bert Belder)

* #3258: fs.ReadStream.pause() emits duplicate data event (koichik)

* pipe_wrap: don't assert() on pipe accept errors (Ben Noordhuis)

* Better exception output for module load and process.nextTick (Felix Geisendörfer)

* zlib: fix error reporting (Ben Noordhuis)

* http: Don't destroy on timeout (isaacs)

* #3231: http: Don't try to emit error on a null'ed req object (isaacs)

* #3236: http: Refactor ClientRequest.onSocket (isaacs)
2012-05-14 17:30:00 -07:00
isaacs
8068f9bf38 Escape leading # signs in 'make email.md' 2012-05-14 17:29:47 -07:00
isaacs
14a5b45c06 Guard against emitting 'end' twice on http responses 2012-05-14 17:22:45 -07:00
isaacs
ea4b1c1c0c Upgrade libuv to bc4126b 2012-05-14 12:01:38 -07:00
Ben Noordhuis
9b42d7daaf test: add https + .pfx client/server test 2012-05-14 17:34:33 +02:00
ssuda
fb7348ae06 crypto: add PKCS12/PFX support
Fixes #2845.
2012-05-14 17:12:59 +02:00
Andreas Madsen
dceebbfa31 child_process: allow sending a net Socket and Server object using child.send
child_process.fork() support sending native hander object, this patch add support for sending
net.Server and net.Socket object by converting the object to a native handle object and back
to a useful object again.

Note when sending a Socket there was emitted by a net Server object, the server.connections
property becomes null, because it is no longer possible to known when it is destroyed.
2012-05-14 07:47:52 -07:00
Andreas Madsen
49f16c4575 doc: move child.send details from child_process.fork to child.send 2012-05-14 07:47:52 -07:00
rsolomo
d40415912f net: make isIP() return 0 on empty input 2012-05-14 16:09:04 +02:00
Ben Noordhuis
bd907174e8 node: delete NODE_CHANNEL_FD from env
Prevents accidental inheritance by child processes. If the child process is a
node process, it would try to set up a channel with the parent and consequently
never quit because the channel kept the event loop alive.

Fixes #3240.
2012-05-14 07:19:11 +02:00
Bert Belder
a475e62a3e Windows: add test for path.normalize with UNC paths 2012-05-13 03:29:44 +02:00
Bert Belder
d91004a73d Windows: make path.normalize convert all slashes to backslashes
Closes #3066
2012-05-13 03:18:09 +02:00
Bert Belder
d8351a2ef4 Automatically close FSWatcher on error
Closes #3250
2012-05-13 03:16:19 +02:00
koichik
5f9ffa17b1 fs: fix ReadStream.pause() emits duplicate data event
Fixes #3258.
2012-05-12 10:24:46 +09:00
Nathan Rajlich
38542f76a9 buffer: make SlowBuffer inherit from Buffer
This frees us from manually having to copy over functions to SlowBuffer's
prototype (which has bitten us multiple times in the past).

As an added bonus, the `inspect()` function is now shared between Buffer
and SlowBuffer, removing some duplicate code.

Closes #3228.
2012-05-11 17:27:40 -07:00
isaacs
9239088e87 500 is a magic number for the GC for some reason 2012-05-11 15:01:38 -07:00
isaacs
07d8a4650e Break up huge function in ClientRequest.onSocket 2012-05-11 15:01:38 -07:00
Ben Noordhuis
884499d37e build: fix cross-compiling
Take arch cflags in account when building libuv.
2012-05-11 19:01:30 +02:00
isaacs
a811a4a130 Fix #3058 querystring: Fix incorrect handling of empty keys 2012-05-11 08:49:03 -07:00
Shigeki Ohtsu
cc8cfb145a doc: fix typo in buffer documentation
Fixes #3253.
2012-05-11 20:00:53 +09:00
Ben Noordhuis
12fc9fa8a7 test: add failing dgram refcount test
Idle UDP sockets (reading nor writing) should not keep the event loop alive.
This will get fixed in v0.8 one way or the other.
2012-05-11 04:39:23 +02:00
Ben Noordhuis
68f63fe9ec child_process: make copy of options arg
Make a copy of the options object that the user passes in, we modify it.
2012-05-10 16:54:19 +02:00
Ben Noordhuis
928d28a7b3 util: make _extend() more robust
Add a better 'is object?' check, the old one let values like true slip through.
2012-05-10 16:49:37 +02:00
vegorov@chromium.org
52f0c37d09 Runtime_NotifyDeoptimized should search for function activation in all thread stacks.
R=fschneider@chromium.org
BUG=v8:1763

Review URL: http://codereview.chromium.org/8240004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@9588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-10 01:05:10 +02:00
isaacs
07be9fc3a6 Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	Makefile
	lib/zlib.js
	src/node.cc
	src/node.js
2012-05-09 15:12:13 -07:00
Philip Tellis
493beb23f2 doc: fs.ReadableStream does not have a destroySoon method 2012-05-09 23:32:50 +02:00
Ben Noordhuis
3883f22ad1 pipe_wrap: don't assert() on pipe accept errors
Pass errors to the onconnection callback.
2012-05-09 23:30:48 +02:00
Felix Geisendörfer
bf9d8e9214 Fix exception output for module load exceptions
So instead of:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^

You will now see:

path/to/foo.js:1
throw new Error('bar');
      ^

This is a sub-set of isaacs patch here:

https://github.com/joyent/node/issues/3235

The difference is that this patch purely adresses the exception output,
but does not try to make any behavior changes / improvements.
2012-05-09 11:54:43 -07:00
Felix Geisendörfer
814033365b Fix process.nextTick throw call sites
This patch now reports the proper throw call site for exceptions
triggered within process.nextTick. So instead of this:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^

You will now see:

mydir/myscript.js:15
  throw new Error('My Error');
          ^

From my testing this patch causes no performance regressions, but does
greatly simplify processing the nextTickQueue.
2012-05-09 11:54:43 -07:00
isaacs
5979f096d1 Fix #3242 Actually deprecate 'binary' buffer encoding 2012-05-09 10:08:54 -07:00
Alex Kocharin
e85927119c util: handle non-string return value in .inspect() 2012-05-09 16:44:44 +02:00
Ben Noordhuis
7d2e68fdbd stream_wrap: fix compilation errors 2012-05-09 06:06:42 +02:00
Bert Belder
b673d0670f Net.js: fix UCS2 write crash due to inconsistent naming 2012-05-09 04:58:26 +02:00
Ben Noordhuis
ee437c0557 zlib: fix error reporting
This commit is a back-port of the changes on the master branch.

Fixes #3230.
2012-05-09 04:44:04 +02:00
Bert Belder
4624cf1214 stream_wrap.cc: fix typo 2012-05-09 04:34:41 +02:00
Bert Belder
27ddd14e9f net.js: make Socket.bytesWritten work again
Earlier string write optimizations broke it.
2012-05-09 04:00:07 +02:00
Bert Belder
726ebad9bc StreamWrap::WriteBuffer: remove superfluous arguments 2012-05-09 04:00:02 +02:00
Bert Belder
0e57aafbb1 Optimize writing strings with Socket.write 2012-05-09 03:56:19 +02:00
Bert Belder
4ddafbd563 Benchmark: add /unicode/nnn bench to http_simple.js 2012-05-09 03:56:09 +02:00
Bert Belder
7f68f256cf Benchmark: clean up http_simple.js 2012-05-09 03:56:07 +02:00
Bert Belder
bb675baaa9 net.js: don't pretend that everything is okay when unwrapping fails
In case of an UNWRAP failure, the binding returns -1, which is truthy.
2012-05-09 03:56:06 +02:00
yangguo@chromium.org
29b2fdb0c5 Force inlining CopyChars and String::Get.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10332054

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-09 03:56:04 +02:00
Ben Noordhuis
78e831a31c Don't use _snprintf() on Windows, it's not safe.
_snprintf() doesn't zero-terminate the buffer on overflow. Use the hand-rolled
version that lives in src/node_internals.h.
2012-05-08 16:02:14 +02:00
isaacs
8c758e127c Don't destroy on timeout 2012-05-07 14:19:16 -07:00
isaacs
b4fbf6d275 Fix #3231. Don't try to emit error on a null'ed req object 2012-05-07 14:17:17 -07:00
Ben Noordhuis
e02af94947 test: add failing HTTP client timeout test
See #3231.
2012-05-07 22:53:32 +02:00
Kevin Gadd
1eb9fc5f33 docs: add warning to vm module docs
Add a clear warning about known issues with the module and a pointer to the
GitHub issues list for the module. Describe some of the biggest known issues
with the module.
2012-05-07 21:39:08 +02:00
James Koval
34f05a3195 docs: update var names in readline docs to be consistent
Closes #3201.
2012-05-06 11:23:09 -07:00
isaacs
33a9ac6087 Upgrade npm to 1.1.21
Somehow this got downgraded in the last v0.6 merge.  Very strange.
2012-05-05 22:33:12 -07:00
isaacs
1858d1c340 Document http.STATUS_CODES
This is an incredibly useful thing to know about, and it
will likely never change.  I can't remember why we
didn't ever document it, and people keep suggesting we
do so.
2012-05-05 19:27:42 -07:00
isaacs
3d84c3db25 More cluster event consistency
Regarding discussion in #3198.  Passing the worker as an argument
to an event emitted on the worker is redundant, and an unnecessary
break in consistency vs the events on the ChildProcess objects.

It was removed from 'exit', but 'listening' and others were
overlooked.  This corrects that oversight.
2012-05-05 15:20:10 -07:00
isaacs
1930772693 Move test-fs-largefile into pummel
It's too slow.
2012-05-05 15:05:14 -07:00
Javier Hernández
792d9a921d build: print error message if no compiler found
Make the configure script warn the user about the lack of an acceptable
C compiler on the system.
2012-05-05 16:31:27 +02:00
koichik
9f3c639a9c doc: fix setEncoding()
Fixes #3209.
2012-05-05 23:10:36 +09:00
koichik
40c4beeb57 string_decoder: added support for UTF-16LE
Fixes #3223.
2012-05-05 22:47:24 +09:00
Mark Cavage
5871c81181 Add HTTP Status codes from RFC 6585
See: http://tools.ietf.org/html/rfc6585
2012-05-04 21:51:24 -07:00
koichik
ceb51ddaa1 string_decoder: add support for CESU-8
Fixes #3217.
2012-05-05 12:24:01 +09:00
isaacs
eaf607e88b test: No need for weak in 'make test' 2012-05-04 18:30:38 -07:00
isaacs
8cd2b0e778 test: No need for weak in 'make test' 2012-05-04 18:29:56 -07:00
J. Lee Coltrane
a62dd44b20 cluster: worker exit event to match child_process
test: fixes due to new cluster api.

- changed worker `death` to `exit`.
- corrected argument type expected by worker `exit` handler.

test: more tests of cluster.worker death

cluster: fixed arguments on worker 'exit' event

worker 'exit' event now emits arguments consistent with the
corresponding event in child_process module.
2012-05-04 17:28:21 -07:00
isaacs
c1bf810108 Merge branch 'v0.6-merge' 2012-05-04 17:24:30 -07:00
isaacs
cd8f82c007 Fix incorrect merge choices 2012-05-04 17:24:21 -07:00
Brian Schroeder
436a9b69f3 net: signal localAddress bind failure in connect 2012-05-05 01:30:32 +02:00
Marcel Laverdet
c33d3174b8 node: un-revert 9a6012e
The crashes in debug mode after adding Locker are *not* caused by
Locker. Locker is merely exposing issues that already existed. Some of
these issues have since been fixed in 70635753.

This reverts commit 407181538b.
This reapplies commit 9a6012edd9.

Conflicts:
	src/node.cc
2012-05-05 00:56:17 +02:00
isaacs
01d146c29f Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	ChangeLog
	Makefile
	deps/npm/AUTHORS
	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/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/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/list.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/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/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/package.json
	doc/api/url.markdown
	lib/http.js
	src/node_version.h
	test/simple/test-fs-sync-fd-leak.js
2012-05-04 15:12:47 -07:00
isaacs
1de43149bb http: Clean up parser usage
Move parsers.free(parser) to a single function, which also
nulls all of the various references we hang on them.

Also, move the parser.on* methods out of the closure, so that
there's one shared definition of each, instead of re-defining
for each parser in a spot where they can close over references
to other request-specific objects.

Conflicts:

	lib/http.js
2012-05-04 14:58:30 -07:00
isaacs
a9fc63f7a1 Clean up gc tests
This fixes the additional issues brought up in #3179.
2012-05-04 14:31:13 -07:00
isaacs
0abe42a0f4 http: .once() usage in setTimeout 2012-05-04 14:31:08 -07:00
isaacs
e63c7821d5 Tests for memory leaks
Conflicts:

	Makefile
2012-05-04 14:30:54 -07:00
isaacs
e4dd8dc28e http leak: Null links from parser to req/res 2012-05-04 14:27:47 -07:00
vvo
5eac8d6739 Fix #3179 HTTP memory leak using ClientRequest. 2012-05-04 14:27:41 -07:00
isaacs
2f93eb6102 http client: Destroy on timeout 2012-05-04 14:27:35 -07:00
isaacs
0a414f4caa http: Remove socket ondata/onend in parser cleanup 2012-05-04 14:27:30 -07:00
isaacs
9164fa6aaa Null references to request object on socket errors.
Regarding #3199 and #3179 and issues seen in production.
Hopefully this fixes them.
2012-05-04 14:27:24 -07:00
isaacs
992e3464b8 Now working on 0.6.18 2012-05-04 13:34:33 -07:00
isaacs
fbe143d9cb Merge branch 'v0.6.17-release' into v0.6 2012-05-04 13:34:08 -07:00
isaacs
4ced23deaf 2012.05.04 Version 0.6.17 (stable)
* Upgrade npm to 1.1.21

* uv: Add support for EROFS errors (Ben Noordhuis, Maciej Małecki)

* uv: Add support for EIO and ENOSPC errors (Fedor Indutny)

* windows: Add support for EXDEV errors (Bert Belder)

* http: Fix client memory leaks (isaacs, Vincent Voyer)

* fs: fix file descriptor leak in sync functions (Ben Noordhuis)

* fs: fix ReadStream / WriteStream double close bug (Ben Noordhuis)
2012-05-04 13:12:52 -07:00
isaacs
711ecdd54f test: Run weak install with --unsafe-perm
This way it doesn't die when running as root.
2012-05-04 12:52:59 -07:00
isaacs
aaf0453b7c Upgrade npm to 1.1.21 2012-05-04 12:52:55 -07:00
isaacs
719cd461d3 Upgrade uv to 936795a2c 2012-05-04 11:00:39 -07:00
isaacs
ab60efb535 Update Authors 2012-05-04 10:57:33 -07:00
isaacs
d1effbb338 Merge branch 'http-memleak' into v0.6 2012-05-04 10:54:24 -07:00
isaacs
2fc528ce00 http: Clean up parser usage
Move parsers.free(parser) to a single function, which also
nulls all of the various references we hang on them.

Also, move the parser.on* methods out of the closure, so that
there's one shared definition of each, instead of re-defining
for each parser in a spot where they can close over references
to other request-specific objects.
2012-05-04 10:40:50 -07:00
isaacs
62c12d2161 Clean up gc tests
This fixes the additional issues brought up in #3179.
2012-05-04 10:40:38 -07:00
ANDO Takahiro
ebd0f98e2b doc: fix callback argument of child_process.exec, execFile
Fixes #3196.
2012-05-04 19:15:30 +09:00
isaacs
e3ceee2dce http: .once() usage in setTimeout 2012-05-03 10:39:16 -07:00
isaacs
91120e0429 Tests for memory leaks 2012-05-03 10:36:17 -07:00
isaacs
b7e8e35c0e http leak: Null links from parser to req/res 2012-05-03 10:20:45 -07:00
koichik
ebbd4039bc buffer: add UTF-16LE encoding name. 2012-05-03 23:56:17 +09:00
vvo
75f2365558 Fix #3179 HTTP memory leak using ClientRequest. 2012-05-03 07:45:46 -07:00
Ben Noordhuis
e4a8d2617b addon: add AtExit() function
Lets native addons register exit hooks that run after the event loop has quit
but before the VM is killed.

Fixes #3147.
2012-05-03 16:11:42 +02:00
Igor Zinkovsky
6f82b9f482 64bit offsets for fs calls 2012-05-02 22:39:23 -07:00
Ben Noordhuis
df2c5fa81d fs: fix file descriptor leak in sync functions
Fixes #3202. This is a back-port of commit 4e290e4.
2012-05-03 02:49:36 +02:00
Ben Noordhuis
4e290e48b2 fs: fix file descriptor leak in sync functions
Fixes #3202.
2012-05-03 01:08:46 +02:00
Ben Noordhuis
47d6a94656 fs: fix ReadStream / WriteStream double close bug
* Calling fs.ReadStream.destroy() or fs.WriteStream.destroy() twice would close
  the file descriptor twice. That's bad because the file descriptor may have
  been repurposed in the mean time.

* A bad value check in fs.ReadStream.prototype.destroy() would prevent a stream
  created with fs.createReadStream({fd:0}) from getting closed.
2012-05-03 01:01:46 +02:00
Ben Noordhuis
6b426a2edd Revert "v8: fix "pure virtual method called" runtime error"
It makes mksnapshot die with a segmentation fault on sunos with gcc 4.5.2.

This reverts commit c21c51a6fc.
2012-05-02 22:53:45 +00:00
isaacs
c9be1d5ffd http client: Destroy on timeout 2012-05-02 12:13:54 -07:00
Ben Noordhuis
880219645e tcp, udp: share sockaddr-to-object function
Share AddressToJS() function between tcp_wrap.cc and udp_wrap.cc.
2012-05-02 18:03:25 +02:00
Fedor Indutny
c3898f3c1f debugger: support mirroring Date objects
* fixes #3203
2012-05-02 15:48:23 +07:00
Yoshihiro Kikuchi
ee2291eb0d test: add a child domain explicitly 2012-05-02 02:51:28 +02:00
isaacs
fb400b4868 Return after emitting error in tty.js 2012-05-01 15:51:29 -07:00
isaacs
bce68134b6 http: Remove socket ondata/onend in parser cleanup 2012-05-01 15:25:59 -07:00
isaacs
bfe9cdb7f2 Null references to request object on socket errors.
Regarding #3199 and #3179 and issues seen in production.
Hopefully this fixes them.
2012-05-01 14:26:18 -07:00
Nathan Rajlich
b894521bd2 process: ensure that "exit" doesn't get emitted twice on a natural exit
Fixes "test/simple/test-process-exit.js".
2012-05-01 14:09:31 -07:00
isaacs
acf19500ee Now working on 0.6.17 2012-05-01 13:31:26 -07:00
Fedor Indutny
9f9c333cbc vm: accept only object as arg of .createContext()
Converting strings and others to objects is very slow and essentially
wrong.
2012-05-02 01:59:59 +07:00
Yi, EungJun
4bd54dad33 path: add path.sep to get the path separator. 2012-05-01 15:19:37 +02:00
Kyle Robinson Young
6ba3e68bd2 doc: correct return value of string-based fs.readSync
Closes #2330
2012-05-01 15:19:36 +02:00
Ben Noordhuis
b45a10818e udp: slightly optimize address family property 2012-05-01 15:19:30 +02:00
Ben Noordhuis
e747daf604 udp: make variable names consistent 2012-05-01 14:52:00 +02:00
Shigeki Ohtsu
94f1feeb59 udp: make getsockname() return address family name 2012-05-01 14:50:17 +02:00
Nathan Rajlich
f4403f90f8 tty: emit "error" instead of throwing when getWindowSize() fails 2012-04-30 18:51:20 -07:00
Garen Torikian
6cacb9a21e doc: add Cloud9 links to docs 2012-05-01 02:25:08 +02:00
Kyle Robinson Young
e02d5c9d41 doc: add args to console methods 2012-05-01 02:25:08 +02:00
Kyle Robinson Young
c9e6d3696c doc: typo fixes 2012-05-01 02:25:08 +02:00
Nathan Rajlich
f1f5de1c8d tty: throw an Error when getWindowSize() fails 2012-04-30 16:20:27 -07:00
Michael Thomas
4e4860579e test: rebuild keys without asking for password 2012-05-01 01:08:31 +02:00
Ben Noordhuis
75c6255d16 deps: remove libuv sanity check
Remove reference count check. Unbreaks test suite. This needs to be addressed.
2012-05-01 00:55:46 +02:00
Ben Noordhuis
89e311b1ae deps: back-port openssl patch
Check for potentially exploitable overflows in asn1_d2i_read_bio
BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
in CRYPTO_realloc_clean.

Taken from OpenSSL CVS. Addresses CVE-2012-2110.
2012-05-01 00:40:38 +02:00
isaacs
518d28c23a Merge branch 'v0.6.16-release' into v0.6 2012-04-30 13:15:40 -07:00
isaacs
a1d193963d 2012.04.30 Version 0.6.16 (stable)
* Upgrade V8 to 3.6.6.25

* Upgrade npm to 1.1.19

* Windows: add mappings for UV_ENOENT (Bert Belder)

* linux: add IN_MOVE_SELF to inotify event mask (Ben Noordhuis)

* unix: call pipe handle connection cb on accept() error (Ben Noordhuis)

* unix: handle EWOULDBLOCK (Ben Noordhuis)

* map EWOULDBLOCK to UV_EAGAIN (Ben Noordhuis)

* Map ENOMEM to UV_ENOMEM (isaacs)

* Child process: support the `gid` and `uid` options (Bert Belder)

* test: cluster: add worker death event test (Ben Noordhuis)

* typo in node_http_parser (isaacs)

* http_parser: Eat CRLF between requests, even on connection:close. (Ben Noordhuis)

* don't check return value of unsetenv (Ben Noordhuis)
2012-04-30 13:09:50 -07:00
isaacs
e5ef103b05 Fix #3194 correct url documentation 2012-04-30 13:09:31 -07:00
isaacs
35bcb1d6a9 Indentation fix 2012-04-30 13:09:31 -07:00
isaacs
1ac05cc5ad Upgrade npm to 1.1.18 2012-04-30 13:09:31 -07:00
Nathan Rajlich
248f552ab4 process: ensure that the "exit" event always has "code" given
Upon "normal" exiting of Node (i.e. the event loop completes naturally),
the "code" parameter was not being passed to the "exit" event listeners.

Be consistent. Tests included.
2012-04-30 10:42:13 -07:00
Maciej Małecki
77c18d1e1b console: throw when no such label exists in console.timeEnd
Test included.
2012-04-29 22:27:45 +02:00
Bert Belder
3bcbd14bb1 process_wrap: don't use uv_spawn2
It was a temporary thing for the 0.6 branch only.
2012-04-29 00:24:51 +02:00
Bert Belder
d2dd9d108d uv: upgrade to e2cae340a6 2012-04-29 00:22:01 +02:00
Bert Belder
c8a10e97c8 Merge branch 'v0.6'
Conflicts:
	deps/uv/include/uv-private/uv-unix.h
	deps/uv/include/uv-private/uv-win.h
	deps/uv/src/uv-common.c
	deps/uv/src/win/fs.c
	src/process_wrap.cc
2012-04-29 00:17:23 +02:00
ssuda
db844b152a process: don't use strdup()
file and cwd can be directly used from Utf8Value.

Conflicts:

	src/process_wrap.cc
2012-04-28 23:51:41 +02:00
Bert Belder
3546383cf0 process_wrap: avoid leaking memory when throwing due to invalid arguments 2012-04-28 23:36:47 +02:00
Andreas Madsen
ab072ee416 doc: document the address object in the cluster listening event 2012-04-28 16:42:55 +02:00
Ben Noordhuis
12a90e98bf bench: add continuous stress test
Useful in tracking down or at least demonstrating memory leaks.
2012-04-27 23:11:32 +02:00
Bert Belder
55e4d54927 Child process: support the gid and uid options 2012-04-27 22:13:00 +02:00
Bert Belder
51e66ec410 Windows: turn off /Gm
Otherwise multicode compile doesn't work.
2012-04-27 22:06:12 +02:00
Bert Belder
0b75eee364 uv: upgrade to d41cc9118d 2012-04-27 22:00:44 +02:00
Bert Belder
e221cd4a53 uv: upgrade to aea5db5da1 2012-04-27 21:28:56 +02:00
Ben Noordhuis
4e84dfa683 bench: run GC and dump stats if --expose-gc is set 2012-04-27 20:38:58 +02:00
Marcel Laverdet
70635753a3 Cleanup vm module memory leakage
There are some paths here that led to dangling contexts. By being
smarter with handle management we can get rid of all the cleanup code
and fix those issues.
2012-04-27 10:32:40 -07:00
isaacs
76de7c0c26 Add customary 'fork me on github' banner to website 2012-04-27 07:58:38 -07:00
Nathan Rajlich
f405daa922 repl: make tab completion read up the prototype of "global"
For example, there's a global "toString()" function, so the REPL's
tab completion should pick that up.
2012-04-25 20:34:34 -07:00
Nathan Rajlich
98b4596a46 process: lint 2012-04-25 20:10:50 -07:00
Ben Noordhuis
5648d95c4a Remove unused local variable. 2012-04-25 04:10:31 -07:00
Kyle Robinson Young
df6c12cdcc doc: update string_decoder stability index to 3
Ref #3140
2012-04-25 01:13:08 +02:00
Nathan Rajlich
6292df659f process: comment for consistency 2012-04-24 11:31:26 -07:00
Nathan Rajlich
ef3a874f41 process: set _print_eval even when --eval is not passed
This is for scripts being fed from stdin:

  $ echo "{ foo: 'bar' }" | node -p
2012-04-24 11:31:02 -07:00
Nathan Rajlich
0b5235e68c process: make --eval and reading scripts from stdin act the same
Reusing the same logic for both places for the behavior is consistent.

For example:

  $ ./node -p -e "'Hello World'"
  Hello World

  $ echo "'Hello World'" | ./node -p
  Hello World
2012-04-24 11:30:14 -07:00
Kyle Robinson Young
d9bad09ede doc: util: add args to format and methods error, puts, print 2012-04-24 05:25:09 +02:00
Ben Noordhuis
48cdbffd24 v8: posix: try to send() whole buffer
Retry the send() syscall after a partial write.
2012-04-24 04:11:29 +02:00
Ben Noordhuis
ebfb8a5613 v8: posix: handle EINTR in socket functions
The socket functions did not handle EINTR (syscall interrupted by signal) which
tripped up the debug agent.
2012-04-24 04:11:22 +02:00
Ben Noordhuis
4359e8154d v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-04-24 04:11:11 +02:00
Kyle Robinson Young
491c8d92b8 doc: add deprecated function http.createClient()
Appears in a lot of old code and core tests. Documented to show it
is deprecated.

Closes #1613.
2012-04-23 16:30:28 +02:00
Ben Noordhuis
a64acd8baa test: cluster: add worker death event test 2012-04-23 15:58:48 +02:00
Malte-Thorben Bruns
ea50ebd36d build: support make install "DESTDIR=/path" 2012-04-23 01:52:26 +02:00
Nathan Rajlich
e16021340d repl: use Object.getPrototypeOf on functions for tab complete() 2012-04-21 13:53:49 -07:00
isaacs
c0a9985da7 domain: Document explicit binding, and d.run() 2012-04-21 10:32:03 -07:00
Kyle Robinson Young
525253d50e doc: add args for rl.write and rl.prompt 2012-04-21 05:31:47 +02:00
Kyle Robinson Young
da56c72f59 readline: remove unused vars in _ttyWrite 2012-04-21 05:30:24 +02:00
isaacs
27dfb1d4c0 doc: typo in child_process documentation 2012-04-20 07:46:42 -07:00
isaacs
77c1cc0482 doc: typo in cluster documentation 2012-04-20 07:43:19 -07:00
Kyle Robinson Young
d91ef153e7 doc: add string_decoder doc 2012-04-20 16:17:41 +02:00
Brian White
642945cc00 docs: Remove duplicate socket.write() description 2012-04-20 16:16:17 +02:00
Ben Noordhuis
c21c51a6fc v8: fix "pure virtual method called" runtime error
Fixes #2912.
2012-04-20 01:29:02 +02:00
Kyle Robinson Young
e67a0f80e0 readline: _normalWrite() doesn't take a key modifier arg 2012-04-18 23:36:46 +02:00
isaacs
c9a231db0e typo in node_http_parser 2012-04-18 13:01:33 -07:00
Kyle Robinson Young
57148f54e1 readline: change char to ch to avoid reserved word 2012-04-18 21:57:39 +02:00
Ben Noordhuis
c56d1559fc test: use the new net.listen(backlog=x) API 2012-04-18 21:55:36 +02:00
Erik Dubbelboer
12f77440ef doc: improve dns module docs 2012-04-18 21:51:16 +02:00
Erik Dubbelboer
ecfe32e3a0 dns: add more error codes 2012-04-18 21:50:52 +02:00
isaacs
605927fbd9 Fix test/ jslint failures (by not linting tests)
In practice, it's not important to lint tests.  We lint src/
and lib/, which is where we're more prone to make mistakes that
affect real-world situations in subtle ways, and where more
changes are made that ought to be kept in a consistent style.

Tests are a mess anyways, and no one cares.
2012-04-18 12:44:28 -07:00
Erik Dubbelboer
3d69bbfa87 net, http: add backlog parameter to .listen() 2012-04-18 21:40:25 +02:00
isaacs
b12b2b83fc Merge remote-tracking branch 'ry/v0.6' 2012-04-18 12:25:32 -07:00
isaacs
33c76f19de net.js: lint 2012-04-18 12:24:41 -07:00
Dane Springmeyer
e5b787e84d deps: fix v8 build error
Pull in build error fix from http://code.google.com/p/v8/source/detail?r=9505
Missed in 5d69bbfbd.
2012-04-18 21:15:09 +02:00
isaacs
ecca7525cc Merge remote-tracking branch 'ry/v0.6' into master
Conflicts:
	AUTHORS
	ChangeLog
	LICENSE
	Makefile
	deps/http_parser/test.c
	deps/npm/AUTHORS
	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/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/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/list.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/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/lib/npm.js
	deps/npm/man/man1/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/node_modules/fstream-npm/fstream-npm.js
	deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
	deps/npm/node_modules/fstream-npm/package.json
	deps/npm/node_modules/node-gyp/LICENSE
	deps/npm/node_modules/node-gyp/lib/build.js
	deps/npm/node_modules/node-gyp/lib/install.js
	deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
	deps/npm/node_modules/node-gyp/node_modules/glob/package.json
	deps/npm/node_modules/node-gyp/package.json
	deps/npm/package.json
	deps/uv/test/test-fs.c
	deps/v8/src/regexp-macro-assembler-tracer.cc
	deps/v8/src/version.cc
	src/node_version.h
	src/platform_sunos.cc
	test/simple/test-net-write-after-close.js
	wscript
2012-04-18 11:57:54 -07:00
isaacs
0fcb124602 Now working on 0.7.9 2012-04-18 11:17:29 -07:00
isaacs
889cbf9ada Merge branch 'v0.7.8-release' 2012-04-18 11:17:15 -07:00
isaacs
c2b47097c0 2012.04.18, Version 0.7.8, (unstable)
* Upgrade V8 to 3.9.24.9

* Upgrade OpenSSL to 1.0.0f

* Upgrade npm to 1.1.18

* Show licenses in Binary installers

* Domains (isaacs)

* readline: rename "end" to "close" (Nathan Rajlich)

* tcp: make getsockname() return address family as string (Shigeki Ohtsu)

* http, https: fix .setTimeout() (ssuda)

* os: add cross platform EOL character (Mustansir Golawala)

* typed arrays: unexport SizeOfArrayElementForType() (Aaron Jacobs)

* net: honor 'enable' flag in .setNoDelay() (Ben Noordhuis)

* child_process: emit error when .kill fails (Andreas Madsen)

* gyp: fix 'argument list too long' build error (Ben Noordhuis)

* fs.WriteStream: Handle modifications to fs.open (isaacs)

* repl, readline: Handle newlines better (Nathan Rajlich, Nathan Friedly)

* build: target OSX 10.5 when building on darwin (Nathan Rajlich)

* Fix #3052 Handle errors properly in zlib (isaacs)

* build: add support for DTrace and postmortem (Dave Pacheco)

* core: add reusable Slab allocator (Ben Noordhuis)
2012-04-18 09:37:18 -07:00
isaacs
7b3fb22290 typo in node_http_parser 2012-04-18 09:36:45 -07:00
isaacs
6bb9868271 Reapply patches floating on V8 2012-04-18 09:36:44 -07:00
isaacs
6ed5ef5fe0 Upgrade V8 to 3.9.24.9 2012-04-18 09:36:44 -07:00
isaacs
c8bbd13ea8 Upgrade npm to 1.1.17 2012-04-18 09:36:40 -07:00
Josh W
d2860a6c7d doc: make readline example filter shorter 2012-04-18 15:21:56 +02:00
Josh W
20143b359c doc: add some headers to make it more legible 2012-04-18 15:21:51 +02:00
isaacs
d8b33dc147 lint 2012-04-17 15:52:57 -07:00
isaacs
37fd953378 uv: Cherry-pick joyent/libuv@3c41597 2012-04-17 15:45:48 -07:00
isaacs
079b81358b test: Minor change to message/undefined_reference_in_new_context 2012-04-17 15:30:22 -07:00
Dave Pacheco
8559a4ae0f Fix 64-bit SmartOS build 2012-04-17 14:34:12 -07:00
isaacs
8673a4aa25 Merge branch 'domains3' 2012-04-17 13:36:29 -07:00
isaacs
d4ed2e61f7 Add Todo comments about domain-ifying crypto 2012-04-17 13:14:55 -07:00
isaacs
45c1d4f96f Add switches to http_simple bench to use domains 2012-04-17 13:14:55 -07:00
isaacs
10ce3d129d Domain hooks in ReqWrap<T> and MakeCallback 2012-04-17 13:14:55 -07:00
isaacs
963459d736 Domain feature
This is a squashed commit of the main work done on the domains-wip branch.

The original commit messages are preserved for posterity:

* Implicitly add EventEmitters to active domain
* Implicitly add timers to active domain
* domain: add members, remove ctor cb
* Don't hijack bound callbacks for Domain error events
* Add dispose method
* Add domain.remove(ee) method
* A test of multiple domains in process at once
* Put the active domain on the process object
* Only intercept error arg if explicitly requested
* Typo
* Don't auto-add new domains to the current domain

    While an automatic parent/child relationship is sort of neat,
    and leads to some nice error-bubbling characteristics, it also
    results in keeping a reference to every EE and timer created,
    unless domains are explicitly disposed of.

* Explicitly adding one domain to another is still fine, of course.
* Don't allow circular domain->domain memberships
* Disposing of a domain removes it from its parent
* Domain disposal turns functions into no-ops
* More documentation of domains
* More thorough dispose() semantics
* An example using domains in an HTTP server
* Don't handle errors on a disposed domain
* Need to push, even if the same domain is entered multiple times
* Array.push is too slow for the EE Ctor
* lint domain
* domain: docs
* Also call abort and destroySoon to clean up event emitters
* domain: Wrap destroy methods in a try/catch
* Attach tick callbacks to active domain
* domain: Only implicitly bind timers, not explicitly
* domain: Don't fire timers when disposed.
* domain: Simplify naming so that MakeCallback works on Timers
* Add setInterval and nextTick to domain test
* domain: Make stack private
2012-04-17 13:14:55 -07:00
isaacs
a26bee8fa1 MakeCallback: Consistent symbol usage 2012-04-17 13:14:54 -07:00
isaacs
db45b2ca02 MakeCallback: Use in node_signal_watcher 2012-04-17 12:00:58 -07:00
isaacs
e1dd570585 MakeCallback: Use in node_io_watcher 2012-04-17 12:00:58 -07:00
isaacs
35c0cd219d MakeCallback: Use in node_crypto 2012-04-17 12:00:58 -07:00
isaacs
91701c2db1 MakeCallback: Use in node_file.cc 2012-04-17 12:00:58 -07:00
isaacs
88f94fa28c MakeCallback: abort() if not a function 2012-04-17 12:00:58 -07:00
isaacs
ac1aaddc00 MakeCallback: Return the callback return value 2012-04-17 11:56:33 -07:00
isaacs
7407be896e MakeCallback: Accept Function or Symbol argument 2012-04-17 11:56:32 -07:00
isaacs
80a55e9c83 Report errors thrown from uncaughtException handers 2012-04-17 11:56:32 -07:00
Nathan Rajlich
e621250116 test: lowercase setRawMode() test case filename 2012-04-17 11:53:50 -07:00
Nathan Rajlich
e28eb6de30 doc: update the readline docs for the "close" event behavior 2012-04-17 11:53:50 -07:00
Nathan Rajlich
327286dbcd repl: update the repl for the new readline behavior
This fixes the failing REPL tests.
2012-04-17 11:53:50 -07:00
Nathan Rajlich
c5d35aca33 test: check for multiple "emit" calls in repl-end-emits-exit.js 2012-04-17 11:53:50 -07:00
Nathan Rajlich
9c3559f0ad readline: re-add the Interface#close() method; rename "end" to "close"
The idea here is to reduce the number of times that `setRawMode()` is called
on the `input` stream, since it is expensive, and simply pause()/resume()
should not call it.

So now `setRawMode()` only gets called at the beginning of the Interface
instance, and then when `Interface#close()` is called.

Test case included.
2012-04-17 11:53:50 -07:00
Nathan Rajlich
86bd9b6e70 doc: change in to input in the readline docs
Also compacting some long lines.
2012-04-17 11:53:49 -07:00
Kyle Robinson Young
718aa505c4 doc: add require.extensions to globals
Closes #3028
2012-04-17 17:10:42 +02:00
Kyle Robinson Young
7cd1690f3d doc: add cache argument to fs.realpath() 2012-04-17 14:17:41 +02:00
domenic
5bc07cc90b doc: note that stream.pause is advisory 2012-04-17 14:14:09 +02:00
ssuda
70005be4ff Fixing ClientRequest setTimeout EventEmitter Leak
This will fix #3068
2012-04-16 23:36:18 +02:00
Zachary Scott
540a441259 docs: fix broken links in zlib docs 2012-04-16 23:06:52 +02:00
Zachary Scott
b4626afb61 docs: url.format uses host for hostname and port, not auth
Fixes #3062.
2012-04-16 22:28:02 +02:00
Zachary Scott
59e6b14395 docs: url.host doesn't include auth
Fixes #3062.
2012-04-16 22:27:54 +02:00
fukayatsu
0f95a93a2c tls: remove duplicate line 2012-04-16 21:38:26 +02:00
Shigeki Ohtsu
0d13142332 tcp: make getsockname() return address family as string 2012-04-16 18:00:47 +02:00
Ben Noordhuis
21d2683976 test: don't make request until server is listening
Preemptively fixes simple/test-https-timeout on platforms where binding to an
interface is not an instantaneous action.
2012-04-16 18:00:47 +02:00
ssuda
48d52d85c3 http, https: fix .setTimeout()
Fixes #3107.
2012-04-16 18:00:38 +02:00
lrn@chromium.org
5d69bbfbdb Fix bug in x64 RegExp detecting start of string.
Also add missing MIPS case in regexp tracer.

Fixes issues v8:1748 and v8:1746

BUG=v8:1748, v8:1746
TEST=mjsunit/regress/regress-1748.js

Review URL: http://codereview.chromium.org/8116001

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@9504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-16 17:40:17 +02:00
Dave Pacheco
0f74729758 disable omit-frame-pointer on solaris systems 2012-04-16 17:28:45 +02:00
isaacs
0c0f13eda4 Patches floating on v8 2012-04-16 17:28:33 +02:00
Bert Belder
69ca83f755 Upgrade V8 to 3.6.6.25 2012-04-16 17:27:16 +02:00
Kyle Robinson Young
0a83b78ba8 docs: more explicit argument names in fs 2012-04-16 16:31:02 +02:00
Ben Noordhuis
3f4261276e node: don't check return value of unsetenv()
It returns void on some platforms, notably FreeBSD.
2012-04-16 14:16:48 +02:00
Maciej Małecki
f065c87bcf events: remove misleading comment 2012-04-15 15:52:56 +02:00
Ben Noordhuis
c945eae942 deps: fix -DOPENSSL_NO_SOCK on sunos
The OPENSSL_NO_SOCK macro in OpenSSL missed a couple of networking functions
that called other functions that OPENSSL_NO_SOCK *had* filtered out. None of
the functions (filtered or not) were actually used but it was enough to trip
up the Solaris linker.
2012-04-14 22:05:17 +00:00
Mustansir Golawala
7ee15457ed os: add cross platform EOL character 2012-04-14 23:17:38 +02:00
Ben Noordhuis
d03b80bc12 deps: upgrade http_parser to joyent/http-parser@da91852 2012-04-14 23:12:36 +02:00
isaacs
93cefab1a3 Set errno in fake-failing child-process kill test 2012-04-13 16:53:51 -07:00
Ben Noordhuis
b7b7b29f50 dns: remove unused functions 2012-04-13 14:46:35 +02:00
Zachary Scott
46acb09ed8 docs: rewrite "addons" docs to use node-gyp
Closes #3100.
Closes #3101.
2012-04-12 18:32:01 -07:00
Aaron Jacobs
1444801374 typed arrays: unexport SizeOfArrayElementForType()
It isn't used anywhere else, so made it an implementation detail in
v8_typed_array.cc.
2012-04-12 23:48:49 +02:00
Ben Noordhuis
16fca262be net: honor 'enable' flag in .setNoDelay()
Fixes #3096.
2012-04-12 19:15:32 +02:00
Andreas Madsen
5b43c63c88 child_process: emit error when .kill fails 2012-04-12 08:17:42 -07:00
isaacs
04271a5e93 gyp: Apply 'argument too long' fix in another place
For some reason, aa5961a445 caused
'make test' to rebuild the entire project every time.  Applying
the fix to the other place where gyp chops up the argument list
makes it behave properly.
2012-04-11 18:26:52 -07:00
Bert Belder
1c88c3b3b5 Disable OpenSSL UI 2012-04-12 01:34:05 +02:00
Ben Noordhuis
916b5d1fff test: merge tls-ext-key-usage into tls-securepair-client 2012-04-12 01:34:05 +02:00
Ben Noordhuis
6cbed959e6 test: fix openssl tests
Don't assume that the libcrypto and libssl that we're linked against is the same
version as the openssl command line tool. This is important because the tool has
a bug in all pre-1.0.0 versions that makes it unusable for these tests.
2012-04-12 01:34:05 +02:00
Ben Noordhuis
2639566c6e build: configure openssl
* compile with -DOPENSSL_NO_SOCK and -DOPENSSL_NO_DGRAM, we don't need it
* compile with -DOPENSSL_NO_GOST and -DOPENSSL_NO_HW_PADLOCK, works around the
  brain dead linker on solaris and maybe others
* compile with -DTERMIOS, OS X doesn't have <termio.h>
* compile with -D__EXTENSIONS__ on solaris, makes siginfo_t available
* compile without -ansi on linux, it hides a number of POSIX declarations
  (sigaction, NI_MAXHOST, etc.)
2012-04-12 01:34:05 +02:00
Ben Noordhuis
3694b6914a deps: reapply 0a34755 to bundled openssl 2012-04-12 01:34:05 +02:00
Ben Noordhuis
0f9d201183 deps: reapply 0110c90 to bundled openssl 2012-04-12 01:34:05 +02:00
Ben Noordhuis
30e7fb7307 deps: upgrade openssl to 1.0.0f 2012-04-12 01:34:05 +02:00
Ben Noordhuis
aa5961a445 gyp: fix 'argument list too long' build error 2012-04-12 01:34:04 +02:00
Ben Noordhuis
e9dcfd4bd2 Revert "deps: upgrade libuv to 3c41597"
This reverts commit 0db4dc0024.

This commit makes a lot of tests fail due to reference counting errors. It's
not worth it to debug because the reference counting scheme is due to change
soon anyway.
2012-04-12 00:59:38 +02:00
Bert Belder
3ec84a11f8 Slab allocator: don't attempt to shrink a non-buffer 2012-04-11 22:02:12 +02:00
Nathan Rajlich
9b7a6c5238 configure: output a newline at the end of config.gypi 2012-04-11 11:16:47 -07:00
Nathan Rajlich
fdeeabba78 configure: don't use "with" for Python 2.5 and older 2012-04-11 11:16:11 -07:00
isaacs
e0660740d9 Fix #3089 Build changelog.html for website 2012-04-10 18:35:01 -07:00
isaacs
3ba9519faf Makefile: minor nit 2012-04-10 18:34:57 -07:00
isaacs
8b82abb953 Fix #3089 Build changelog.html for website 2012-04-10 18:31:12 -07:00
isaacs
d0365fd21f Makefile: minor nit 2012-04-10 18:22:42 -07:00
Nathan Rajlich
7b71fd0c68 build: add comment explaining MACOSX_DEPLOYMENT_TARGET. 2012-04-10 14:39:29 -07:00
Nathan Rajlich
70a5b53e03 Re-apply "build: target OSX 10.5 when building on darwin"
This reverts commit 93eca95aec.

Fixes #3072 (once again).
2012-04-10 14:38:47 -07:00
Ben Noordhuis
0db4dc0024 deps: upgrade libuv to 3c41597 2012-04-10 23:32:47 +02:00
isaacs
e8067cb685 Now working on v0.6.16 2012-04-09 10:34:54 -07:00
isaacs
163d3cdf14 Merge branch 'v0.6.15-release' into v0.6 2012-04-09 10:34:32 -07:00
isaacs
f160a45b25 2012.04.09 Version 0.6.15 (stable)
* Update npm to 1.1.16

* Show licenses in binary installers.

* unix: add uv_fs_read64, uv_fs_write64 and uv_fs_ftruncate64 (Ben Noordhuis)

* add 64bit offset fs functions (Igor Zinkovsky)

* windows: don't report ENOTSOCK when attempting to bind an udp handle twice (Bert Belder)

* windows: backport pipe-connect-to-file fixes from master (Bert Belder)

* windows: never call fs event callbacks after closing the watcher (Bert Belder)

* fs.readFile: don't make the callback before the fd is closed (Bert Belder)

* windows: use 64bit offsets for uv_fs apis (Igor Zinkovsky)

* Fix #2061: segmentation fault on OS X due to stat size mismatch (Ben Noordhuis)
2012-04-09 09:03:00 -07:00
isaacs
c75f71dd72 fs.WriteStream: Handle modifications to fs.open
If the fs.open method is modified via AOP-style extension, in between
the creation of an fs.WriteStream and the processing of its action
queue, then the test of whether or not the method === fs.open will fail,
because fs.open has been replaced.

The solution is to save a reference to fs.open on the stream itself when
the action is placed in the queue.

This fixes isaacs/node-graceful-fs#6.
2012-04-09 09:03:00 -07:00
isaacs
06ada03ed9 fs.WriteStream: Handle modifications to fs.open
If the fs.open method is modified via AOP-style extension, in between
the creation of an fs.WriteStream and the processing of its action
queue, then the test of whether or not the method === fs.open will fail,
because fs.open has been replaced.

The solution is to save a reference to fs.open on the stream itself when
the action is placed in the queue.

This fixes isaacs/node-graceful-fs#6.
2012-04-09 08:39:13 -07:00
isaacs
93eca95aec Revert "build: target OSX 10.5 when building on darwin"
This reverts commit b6d6a54f80,
which fixed #3072, so we'll have to figure out another way
to make that work.
2012-04-08 22:31:28 -07:00
isaacs
45b772d8cb fs.readFile: Emit 'close' if we don't expect a close later
This fixes a regression introduced by 40b7302
2012-04-07 16:53:18 -07:00
isaacs
08e2e570a7 Make rules for release blog post and email message 2012-04-07 16:37:44 -07:00
isaacs
57d722011a website: Add October Sky JS and Node.js Hispano 2012-04-07 16:29:37 -07:00
isaacs
e81a5e9c9c Remove stray comment from LICENSE file 2012-04-07 16:20:42 -07:00
Bert Belder
ba055115e0 Windows: installer shows license agreement dialog 2012-04-06 16:15:55 -07:00
Bert Belder
1330419446 Windows: add build step that generates license.rtf from LICENSE 2012-04-06 16:15:51 -07:00
Ryan Dahl
c9f17305e6 Mac installer shows license
ref #3056
2012-04-06 16:15:43 -07:00
Ryan Dahl
cf75619bc3 Include text of licenses in LICENSE file
For easy inclusion in binary distributions. ref #3056
2012-04-06 16:15:33 -07:00
Ryan Dahl
331cd7c251 Fix links to libev and libeio licenses 2012-04-06 16:15:24 -07:00
Nathan Rajlich
78eb174ea2 readline: use StringDecoder for decoding "normal" data
The fix from #3059 was not handling multi-byte utf8 data properly.
2012-04-06 16:13:40 -07:00
Nathan Rajlich
8652c11031 test: make the ArrayStream in repl tests write a '\n'
This is more correct.
Fixes them from failing with the updated readline behavior.
2012-04-06 16:13:40 -07:00
Nathan Rajlich
8752ceef13 test: make repl-autolibs check that the callback was invoked 2012-04-06 16:13:40 -07:00
Nathan Rajlich
ca8dea83a9 repl: make the completer use newlines
Fixes the repl.complete() function when terminal is false, since it
is now explicitly looking for a '\n' char.
2012-04-06 16:13:40 -07:00
Nathan Rajlich
aab7cb7dfe test: fix failing test-repl.js 2012-04-06 16:13:40 -07:00
Nathan Friedly
e28f77cbad readline: buffer data to only emit 'line' on '\n'
In "terminal: false" mode.

(And fire it multiple times if multiple lines arrive at once.)

This is necessary because the Windows telnet client sends every single
keystroke as it's typed.

See: http://stackoverflow.com/questions/9962197/node-js-readline-not-waiting-for-a-full-line-on-socket-connections

Closes #3059.
2012-04-06 16:13:40 -07:00
isaacs
37ac5e52bf Update npm to 1.1.16 2012-04-06 14:42:19 -07:00
isaacs
b9bfb1bc91 child_process: Emit err rather than throw for IPC write failure 2012-04-06 14:16:09 -07:00
Igor Zinkovsky
0b57fee3f8 enable test-fs-largefile.js test 2012-04-05 18:18:48 -07:00
Bert Belder
1042a8d887 Please the compiler 2012-04-06 03:14:07 +02:00
Bert Belder
40b7302af8 fs.readFile: don't make the callback before the fd is closed
On Windows it is not possible to unlink() the read file in the callback.
This fixes #3051. A test is included.
2012-04-06 03:13:56 +02:00
Igor Zinkovsky
f178f2ae3f upgrade libuv to d68b3d960b6d95bfc16027cecca2f3fa48bcc36f 2012-04-05 17:10:39 -07:00
Zachary Scott
d73b257d65 docs: grammar and spelling on lib/cluster.js 2012-04-06 01:44:03 +02:00
Nathan Rajlich
b6d6a54f80 build: target OSX 10.5 when building on darwin 2012-04-05 16:30:33 -07:00
Igor Zinkovsky
052aaa4c4d windows: use 64bit offsets for uv_fs apis 2012-04-05 16:03:11 -07:00
Bert Belder
3e8857271b Windows: installer shows license agreement dialog 2012-04-04 18:14:30 +02:00
Bert Belder
2728dcc95b Windows: add build step that generates license.rtf from LICENSE 2012-04-04 18:14:21 +02:00
Bert Belder
930fabe43f Disable V8 postmortem debugging on Windows
It is not supported by V8.
2012-04-03 03:07:47 +02:00
Ryan Dahl
30994aad30 Mac installer shows license
ref #3056
2012-04-02 16:49:03 -07:00
Ryan Dahl
55e971e33d Include text of licenses in LICENSE file
For easy inclusion in binary distributions. ref #3056
2012-04-02 16:49:03 -07:00
Ben Noordhuis
92c0c6953a build: define _DARWIN_USE_64_BIT_INODE=1 on OS X
Fixes a segmentation fault on some OS X systems due to sizeof(struct stat)
mismatches.

Fixes #2061.
2012-04-02 23:53:05 +02:00
Ben Noordhuis
ffee873941 build: define _DARWIN_USE_64_BIT_INODE=1 on OS X
Fixes a segmentation fault on some OS X systems due to sizeof(struct stat)
mismatches.

Fixes #2061.
2012-04-02 23:44:38 +02:00
Ryan Dahl
08109367e8 Fix links to libev and libeio licenses 2012-04-02 14:39:46 -07:00
isaacs
01d46f3a20 Fix #3052 Handle errors properly in zlib 2012-04-02 13:48:10 -07:00
Dave Pacheco
cc15299c32 build: add support for DTrace and postmortem
* fixes #2110
* includes V8 postmortem metadata in Solaris builds
* adds GYP support for DTrace probes and ustack helper
* ustack helper derives constants dynamically from libv8_base.a
* build with DTrace support by default on SunOS
2012-04-01 00:14:36 +00:00
Ben Noordhuis
7bdeed2039 zlib: fix uninitialized variable compiler warning 2012-03-31 23:50:02 +00:00
Nathan Rajlich
0965d2d9f6 js2c: fix to support files other than ones ending with 2 char extensions
Previously this was basically hard-coded for *.js files, but now we
need to include the 'config.gypi' file in there as well.
2012-04-01 01:44:54 +02:00
Ben Noordhuis
a4a04f932e node: provide snprintf implementation on windows
_snprintf() doesn't zero-terminate the buffer on overflow.
2012-04-01 01:17:25 +02:00
Ben Noordhuis
dee8c51547 node: don't check return value of unsetenv()
It returns void on some platforms, notably FreeBSD.
2012-03-31 23:23:48 +02:00
Ben Noordhuis
bc834c395b Alias _snprintf to snprintf, fix Windows build. 2012-03-31 22:37:51 +02:00
isaacs
1e577f347b website: Consistency in the industry logos 2012-03-30 18:21:50 -07:00
isaacs
2726c22f0b Revert "tty: add keypress event for backwards-compat"
In this case, backwards compatibility is not worth the API
inconsistency.  We can just document the change.

This reverts commit b521ff3b4f.
2012-03-30 17:37:35 -07:00
Ben Noordhuis
c26a0b5aab doc: fix grammar error in cluster docs 2012-03-30 22:54:13 +02:00
isaacs
90ce5b3d41 cluster: Rename 'death' back to 'exit' 2012-03-30 12:59:24 -07:00
Bert Belder
407181538b Revert "Re-add top-level v8::Locker"
The locker makes node crash in debug mode sometimes.
For example, test/simple/test-repl.js triggers it.

This reverts commit 9a6012edd9.

Conflicts:

	src/node.cc
2012-03-30 21:50:15 +02:00
Ben Noordhuis
7c02b5a58d udp_wrap: simplify AddressToJS() function 2012-03-30 21:24:02 +02:00
Ben Noordhuis
1ab95a536a udp_wrap: use new slab allocator 2012-03-30 21:24:02 +02:00
Ben Noordhuis
1e13a2d242 stream_wrap: use new slab allocator 2012-03-30 21:24:02 +02:00
Ben Noordhuis
08032efed0 core: add reusable slab allocator 2012-03-30 21:24:02 +02:00
Ben Noordhuis
a58659cd4a core: add ROUND_UP() macro 2012-03-30 21:24:01 +02:00
Ben Noordhuis
9d1fde7519 typed arrays: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
036d907df7 tcp: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
3005965266 stat_watcher: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
1a49df5fa9 http: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
9eacf93928 crypto: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
f86359cc3f udp: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
32b2964eed udp: remove slab allocator 2012-03-30 21:24:01 +02:00
isaacs
8d3278b962 Now working on 0.7.8 2012-03-30 11:54:39 -07:00
isaacs
69ae75c66c Merge branch 'v0.7.7-release' 2012-03-30 11:54:08 -07:00
Igor Zinkovsky
6aa7f6f732 upgrade libuv to ab8c3b85c1 2012-03-30 10:25:07 -07:00
Ben Noordhuis
17524432ff Fix Engrish in error messages. 2012-03-30 16:07:05 +02:00
Ben Noordhuis
db0a1dc7d9 node: remove unused function 2012-03-30 14:52:39 +02:00
Ben Noordhuis
8c97ad4c30 node: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
Ben Noordhuis
6986d9316c crypto: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
Ben Noordhuis
b82b4f2993 buffer: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
Ben Noordhuis
0f0557d78d stream_wrap: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
isaacs
5cda2542fd 2012.03.30, Version 0.7.7 (unstable)
* Upgrade V8 to 3.9.24.7

* Upgrade npm to 1.1.15

* Handle Emoji characters properly (Erik Corry, Bert Belder)

* readline: migrate ansi/vt100 logic from tty to readline (Nathan Rajlich)

* readline: Fix multiline handling (Alex Kocharin)

* add a -i/--interactive flag to force the REPL (Nathan Rajlich)

* debugger: add breakOnException command (Fedor Indutny)

* cluster: kill workers when master dies (Andreas Madsen)

* cluster: add graceful disconnect support (Andreas Madsen)

* child_process: Separate 'close' event from 'exit' (Charlie McConnell)

* typed arrays: add Uint8ClampedArray (Mikael Bourges-Sevenier)

* buffer: Fix byte alignment issues (Ben Noordhuis, Erik Lundin)

* tls: fix CryptoStream.setKeepAlive() (Shigeki Ohtsu)

* Expose http parse error codes (Felix Geisendörfer)

* events: don't delete the listeners array (Ben Noordhuis, Nathan Rajlich)

* process: add process.config to view node's ./configure settings (Nathan Rajlich)

* process: process.execArgv to see node's arguments (Micheil Smith)

* process: fix process.title setter (Ben Noordhuis)

* timers: handle negative or non-numeric timeout values (Ben Noordhuis)
2012-03-29 20:20:23 -07:00
isaacs
9a70d99980 Upgrade npm to 1.1.15 2012-03-29 20:20:23 -07:00
isaacs
7abbda8ba2 Make rules for release blog post and email message 2012-03-29 16:04:48 -07:00
isaacs
6ebe9e0c1d Upgrade V8 to 3.9.24.7 2012-03-29 16:04:48 -07:00
Nathan Rajlich
304f1fcf86 tty: clarify that tty.setRawMode() has moved to process.stdin
Technically saying `tty.ReadStream#setRawMode()` is correct,
but since a typical use cannot instantiate `tty.ReadStream` themselves,
and 99% of the time the only instance is `process.stdin`,
then a little clarification seemed necessary.
2012-03-29 13:15:24 -07:00
isaacs
6aa755070a More logging in simple/test-eio-race
Travis-CI is failing on this test repeatedly, but other Linux systems
seem to be fine with it.  Alter the logging so it's more clear which
part is timing out.
2012-03-29 08:41:51 -07:00
Ben Noordhuis
11770bf5e2 test: move pummel/test-tls-fragmentation to benchmark/
Said test takes over 90 seconds on my Core 2 Duo which is too long, even for
the pummel tests.
2012-03-29 17:25:37 +02:00
Yosef Dinerstein
d7c96cf289 tls: reduce memory overhead, reuse buffer
Instead of allocating a new 64KB buffer each time when checking if there is
something to transform, continue to use the same buffer. Once the buffer is
exhausted, allocate a new buffer. This solves the problem of huge allocations
when small fragments of data are processed, but will also continue to work
well with big pieces of data.
2012-03-29 17:17:15 +02:00
Ben Noordhuis
daa6b95b08 test: move simple/test-crypto-dh to pummel/
The test is too slow / CPU intensive for the main test harness.
2012-03-29 17:12:26 +02:00
Ben Noordhuis
5e7cb68be9 test: remove simple/test-module-load-list
Said test adds little value and only serves to annoy me when moving around
modules. It was broken anyway: it passed inside the test runner and failed
when run from the command line thanks to the environment sniffing it did.
2012-03-29 17:11:37 +02:00
ssuda
44eb279ef8 zlib: don't use C++ templates
Reduces the executable's size by a few kilobytes.
2012-03-29 14:22:37 +02:00
Shigeki Ohtsu
26b6da134f doc: change stability index of tty and readline to Unstable 2012-03-28 20:13:28 -07:00
Shigeki Ohtsu
238e12af22 tty: show deprecated warn of tty.setRawMode() 2012-03-28 20:13:23 -07:00
Shigeki Ohtsu
b521ff3b4f tty: add keypress event for backwards-compat 2012-03-28 20:12:38 -07:00
isaacs
af90faf198 Patches floating on V8 2012-03-28 19:54:01 -07:00
isaacs
4b64542fe0 Upgrade V8 to 3.9.24.6 2012-03-28 19:51:38 -07:00
isaacs
8a15147bc5 Reapply "debug: Wait 50ms before running the main module"
This reapplies commit c781f17742
This reverts commit 00224771e3
2012-03-28 19:41:29 -07:00
isaacs
cda3b6ff52 Upgrade npm to 1.1.14 2012-03-28 19:36:44 -07:00
Ben Noordhuis
b031671138 tty, readline: fix style errors 2012-03-29 01:36:46 +02:00
Erik Lundin
973bbecf1a typed arrays: prevent unaligned typed array views on top of buffers 2012-03-29 01:36:45 +02:00
Ben Noordhuis
285d8c6589 buffer: align fast buffers on 8 byte boundary
Prevents alignment issues when people create a typed array from a buffer.
Unaligned loads or stores are less efficent and (on some architectures) unsafe.
2012-03-29 01:31:31 +02:00
Mikael Bourges-Sevenier
67fc1dafd0 typed arrays: add Uint8ClampedArray 2012-03-28 22:57:15 +02:00
Nathan Rajlich
48bbdde66b repl: don't write a newline on the readline 'end' event
In the case of the input stream *actually* having been closed, then we
can't write to a closed socket.

Fixes test/simple/test-repl.js
2012-03-28 08:42:40 -07:00
mstarzinger@chromium.org
eb1ff03418 v8: Fix missing initialization of mark-compact flags.
R=svenpanne@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9662056

Cherry-pick of https://v8.googlecode.com/svn/branches/bleeding_edge@11006
2012-03-28 13:04:56 +02:00
Nathan Rajlich
208b230744 repl: add a 'useColors' option to the repl
This should only be minimally used, since the `terminal` value will usually be
what you are expecting. This option is specifically for the case where `terminal`
is false, but you still want colors to be output (or vice-versa).
2012-03-27 18:00:59 -07:00
Nathan Rajlich
a33d1c959a repl: add test case verifying the repl options usage 2012-03-27 17:49:10 -07:00
Nathan Rajlich
b187e96ec9 repl: add a 'writer' option to the repl
Previously this was a module-level setting, meaning that all REPL instances
had to share the same writer function. Turning it into one of the options
allows individual REPL instances to use their own writer function.
2012-03-27 17:39:14 -07:00
Nathan Rajlich
228ddddc1c repl: ensure that 'repl.ignoreUndefined' is a boolean 2012-03-27 17:35:33 -07:00
Nathan Rajlich
e7065eaa93 repl: ensure that 'repl.useGlobal' is a boolean 2012-03-27 17:34:55 -07:00
Nathan Rajlich
f41901cdf6 repl: make ^D emit an 'end' event on the readline instance
Also emit 'exit' on the repl when 'end' is emitted on the readline.

Fixes `node debug test/fixtures/breakpoints.js` when ^D is pressed.
2012-03-27 13:54:49 -07:00
Fedor Indutny
00224771e3 Revert "debug: Wait 50ms before running the main module"
This reverts commit c781f17742.
2012-03-28 01:40:45 +07:00
Fedor Indutny
5e8c2b0768 debugger: use v8 api to wait for a connection
Use v8::Debug::EnableAgent(_, _, true) to wait for incoming
debugger-client connection before emitting any break (or other) events.

This commit should fix test/simple/test-debugger-repl faults.
2012-03-28 01:37:54 +07:00
Nathan Rajlich
698e795a5f repl: fix 'terminal' mode autodetection on global repls
Fixes test/simple/test-force-repl.js
2012-03-26 19:06:58 -07:00
Nathan Rajlich
aad12d0b26 readline: migrate ansi/vt100 logic from tty to readline
The overall goal here is to make readline more interoperable with other node
Streams like say a net.Socket instance, in "terminal" mode.

See #2922 for all the details.
Closes #2922.
2012-03-26 15:21:25 -07:00
Alex Kocharin
ab518ae50e readline: fix for terminals that insert newlines automatically
Fixes #2985.
2012-03-26 09:21:55 -07:00
Shigeki Ohtsu
e7792e5d46 test: add test of tls.createServer(honorCipherOrder=true) 2012-03-26 05:03:51 -07:00
Zachary Scott
0dd8e0167d doc: document fs.createReadStream() encodings
Fixes #2700.
2012-03-26 00:25:45 +02:00
Andreas Madsen
83aae35b8e doc: fix markup in cluster docs 2012-03-26 00:20:17 +02:00
isaacs
066789a6e3 Fix #3001 website update 'latest' links on publish 2012-03-24 01:39:39 -07:00
isaacs
a7dce47854 Now working on v0.6.15 2012-03-23 11:17:08 -07:00
isaacs
dbd0e2b386 Merge branch 'v0.6.14-release' into v0.6 2012-03-23 11:16:31 -07:00
Shigeki Ohtsu
4515987058 doc: fix default dgram multicast ttl to 1 2012-03-23 17:24:10 +01:00
Shigeki Ohtsu
75face6139 doc: fix TLS cipher names 2012-03-23 17:11:13 +01:00
Shigeki Ohtsu
8727e5f2be test: add test of cleartextStream.getCipher() in tls 2012-03-23 17:09:50 +01:00
Shigeki Ohtsu
2cf5f040a5 doc: add cleartextStream.getCipher() in tls 2012-03-23 17:09:50 +01:00
isaacs
e513ffef75 2012.03.22 Version 0.6.14 (stable)
* net: don't crash when queued write fails (Igor Zinkovsky)

* sunos: fix EMFILE on process.memoryUsage() (Bryan Cantrill)

* crypto: fix compile-time error with openssl 0.9.7e (Ben Noordhuis)

* unix: ignore ECONNABORTED errors from accept() (Ben Noordhuis)

* Add UV_ENOSPC and mappings to it (Bert Belder)

* http-parser: Fix response body is not read (koichik)

* Upgrade npm to 1.1.12
  - upgrade node-gyp to 0.3.7
  - work around AV-locked directories on Windows
  - Fix isaacs/npm#2293 Don't try to 'uninstall' /
  - Exclude symbolic links from packages.
  - Fix isaacs/npm#2275 Spurious 'unresolvable cycle' error.
  - Exclude/include dot files as if they were normal files
2012-03-23 08:01:22 -07:00
isaacs
d497bf845b doc: Remove extraneous index.html's from hyperlinks 2012-03-22 17:31:23 -07:00
isaacs
76f31faa3b Remove hard-coded version number from docs 2012-03-22 17:31:15 -07:00
Igor Zinkovsky
0dcc43316f don't crash when queued write fails 2012-03-22 17:09:22 -07:00
ssuda
249c3c165a Avoiding unnecessary ToString() calls
String::Utf8Value and String::AsciiValue constructors take Handle<Value>
So no need to convert to Handle<String>
2012-03-23 01:02:59 +01:00
isaacs
d227084339 Upgrade libuv to 8409a67 2012-03-22 16:44:04 -07:00
isaacs
a7cd76bb3b Remove unused fast-list module from npm 2012-03-22 16:43:28 -07:00
isaacs
67f1778065 Upgrade npm to 1.1.12 2012-03-22 16:38:58 -07:00
Shigeki Ohtsu
e1199fa335 tls: fix CryptoStream.setKeepAlive() 2012-03-23 00:20:46 +01:00
Bryan Cantrill
d1255914df sunos: fix EMFILE on process.memoryUsage() 2012-03-22 16:18:11 -07:00
Lal Jérémy
ef046bf4f6 test: generate 1024-bit keys, pacify openssl 1.0.1 2012-03-22 23:35:22 +01:00
Ben Noordhuis
ea44d3031d crypto: fix compile-time error with openssl <= 0.9.7e 2012-03-22 15:52:12 +01:00
Nathan Rajlich
feaa8a41c7 cmd: add a -i / --interactive flag to force the REPL
This is the only way to spawn a node child process in REPL mode, and will
also be needed to be able to use the REPL in MinTTY.
2012-03-21 00:05:25 -07:00
isaacs
d2389f8fab debug repl tests: Add visibility, remove test that times out
The 'Can't backtrace now' message takes over 10 seconds to return.
That's too much time to have to wait for a test, and when it times
out, it was causing an orphaned node process.

This cleans up the node process, and also removes the test that's
timing out, so that the case is hit less often.

Todo: Make the backtrace message come back faster.
2012-03-20 19:48:07 -07:00
isaacs
c781f17742 debug: Wait 50ms before running the main module 2012-03-20 19:46:36 -07:00
isaacs
81cd3a3cd6 lint readline.js - single-quotes preferred 2012-03-20 19:42:34 -07:00
Erik Lundin
4b1d492561 test: merge typed arrays tests
Merge simple/test-typed-arrays-typenames into simple/test-typed-arrays.
2012-03-21 01:59:40 +01:00
Erik Lundin
f2ebf2469b test: fix simple/test-typed-arrays
* It incorrectly uses assert(a, b) instead of assert.equal(a, b), meaning all
  relevant assertions will pass regardless of whether they're supposed to when
  a == true.

* It makes the assumption that elements in typed arrays for numerical types
  spanning more than one byte, like Uint32Array, are stored little-endian first
  on all machines.

* It contains assorted mistakes like assert(Int32Array, typeof v4) (that one
  only passes thanks to point 1).
2012-03-21 01:59:33 +01:00
Johannes Wüller
7817f48322 fixed booleans being treated as strings, resulting in missing node-waf and npm 2012-03-20 17:46:08 -07:00
Alex Kocharin
06a058d731 readline: row-agnostic multiline readline implementation
Fixes #2959.
2012-03-20 15:37:06 -07:00
Nathan Rajlich
8517089b3e Revert "readline: add multiline support"
This reverts commit 443071db57.

Patch was overly compilicated and made some incorrect assumptions about the
position of the cursor being at the bottom of the screen. @rlidwka and I are
working on getting a proper implementation written.
2012-03-20 15:37:06 -07:00
ssuda
253ec6a63d process: don't use strdup()
file and cwd can be directly used from Utf8Value.
2012-03-20 17:59:21 +01:00
Alex Kocharin
415bff26fe repl: fix space autocompletion bug
Tapping <SP> + <TAB> would exit the REPL.
2012-03-20 12:27:59 +01:00
Felix Geisendörfer
18240193ba Expose http parse error codes
Currently http parse errors do not expose the error details available
from http_parser. This patch exposes the error code as `err.code`.
2012-03-19 19:00:16 -07:00
Shigeki Ohtsu
891f9defeb No need to have NativeModule.require('fs') in Module._findPath() 2012-03-19 18:58:58 -07:00
isaacs
dce8682827 cluster: English language fixing 2012-03-19 14:28:39 -07:00
Andreas Madsen
94d337eb0f cluster: kill workers when master dies
This patch will kill the worker once it has lost its connection with the parent.
However if the worker are doing a suicide, other measures will be used.
2012-03-19 14:22:36 -07:00
Andreas Madsen
d927fbc9ab cluster: add graceful disconnect support
This patch add a worker.disconnect() method there will stop the worker from accepting
new connections and then stop the IPC. This allow the worker to die graceful.
When the IPC has been disconnected a 'disconnect' event will emit.

The patch also add a cluster.disconnect() method, this will call worker.disconnect() on
all connected workers. When the workers are disconneted it will then close all server
handlers. This allow the cluster itself to self terminate in a graceful way.
2012-03-19 13:29:01 -07:00
Andreas Madsen
ab32e9e043 child_process: emit 'channel closed' error instead of throwing 2012-03-19 11:55:41 -07:00
isaacs
89653cb32f Upgrade npm to 1.1.10 2012-03-19 09:59:57 -07:00
Fedor Indutny
7418905aef debugger: breakOnException
Do not break automatically on exception, fixes #2926
2012-03-19 22:21:29 +06:00
Fedor Indutny
b6cb6ce0d3 debugger: remove 'repl' command from builtinLibs
* It was displaying useless warning
2012-03-19 22:21:28 +06:00
Fedor Indutny
f61d4b7a87 debugger: exit process on repl exit
* When entering repl - clone 'SIGINT' listeners array (instead of using
existing), as it will be spliced in .removeAllListeners() call later.
2012-03-19 22:21:28 +06:00
Ben Noordhuis
d8c4ecea0b test: fix race in simple/test-cluster-master-error
Said test checks that the workers shut down when the master errors but it failed
intermittently. Insert a small delay before doing the 'is dead?' check to give
the workers a chance to shut down.
2012-03-19 17:12:52 +01:00
Your Name
fb47a337ba test: changed instances of == to === 2012-03-19 14:24:46 +01:00
Nathan Rajlich
70e68893fe build: make --openssl-use-sys a boolean option
Before you had to enter a truthy value like: --openssl-use-sys=1
2012-03-17 12:57:24 -07:00
isaacs
815169383e Fix include logic was replacing https include with http 2012-03-17 11:11:07 -07:00
isaacs
7bee98bae2 Ignore 'making a build' artifacts 2012-03-17 11:11:03 -07:00
isaacs
851b3970e7 Fix include logic was replacing https include with http 2012-03-17 11:07:35 -07:00
isaacs
d980620010 Ignore 'making a build' artifacts 2012-03-17 11:07:35 -07:00
koichik
03077db45d test: HTTP responses with no content-length
Refs: #2952.
2012-03-18 00:50:47 +09:00
Ben Noordhuis
44527e6023 deps: upgrade http_parser to joyent/http-parser@b47c44d 2012-03-17 16:22:39 +01:00
Alex Xu
5abcdc9671 build: fix configure with spaces in CC 2012-03-16 16:01:53 -07:00
isaacs
76a771b749 doc: Remove extraneous index.html's from hyperlinks 2012-03-16 08:19:26 -07:00
isaacs
46376888cd Remove hard-coded version number from docs 2012-03-16 08:13:41 -07:00
isaacs
ec735cbce0 Merge remote-tracking branch 'ry/v0.6' into merge-v0.6
Conflicts:
	ChangeLog
	deps/npm/AUTHORS
	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/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/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/list.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/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/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/node_modules/node-gyp/README.md
	deps/npm/node_modules/node-gyp/lib/build.js
	deps/npm/node_modules/node-gyp/lib/configure.js
	deps/npm/node_modules/node-gyp/lib/install.js
	deps/npm/node_modules/node-gyp/lib/node-gyp.js
	deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
	deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
	deps/npm/node_modules/node-gyp/node_modules/glob/package.json
	deps/npm/node_modules/node-gyp/package.json
	deps/npm/package.json
	doc/about/index.html
	doc/api/path.markdown
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	src/node_version.h
2012-03-16 08:06:54 -07:00
Shigeki Ohtsu
534264d209 doc: Add condition to emit close event of net.Server 2012-03-16 16:01:18 +01:00
Rod Vagg
90b785c09a doc: fix # links from (and within) api/fs 2012-03-16 15:51:33 +01:00
Rod Vagg
6628a3b6ea doc: fix # links from (and within) api/fs 2012-03-16 15:42:26 +01:00
isaacs
0fb4fb4797 Document ChildProcess exit/close event difference 2012-03-15 17:23:39 -07:00
Nathan Rajlich
7cb0f5f84a install: update install.js to use process.config
Now that the node_prefix is available from within node, we can use it :)
2012-03-15 17:15:49 -07:00
Nathan Rajlich
11d8823791 process: add process.config
This is the JS representation of the `config.gypi` file that was used when
compiling node. With this information, you can tell whether the current node
binary has shared or static dependencies, or any other configuration options
that may have been used.
2012-03-15 17:15:18 -07:00
Nathan Rajlich
95fd517431 node.gyp: include the config.gypi file in the js2c inputs list 2012-03-15 17:12:45 -07:00
Nathan Rajlich
bea2e15864 js2c: fix to support files other than ones ending with 2 char extensions
Previously this was basically hard-coded for *.js files, but now we
need to include the 'config.gypi' file in there as well.
2012-03-15 17:12:37 -07:00
Charlie McConnell
c7b8073afc child_process: Separate 'close' event from 'exit'
Currently, a child process does not emit the 'exit' event until 'close' events
have been received on all three of the child's stdio streams.  This change makes
the child object emit 'exit' when the child exits, and a new 'close' event when
all stdio streams are closed.
2012-03-15 17:07:11 -07:00
Nathan Rajlich
928ea564d1 events: don't delete the listeners array in removeListener() 2012-03-15 17:01:29 -07:00
Ben Noordhuis
761a82bc9a test: make .removeAllListeners() test more exhaustive
Also test removal of multiple listeners, it's a separate code path.
2012-03-16 00:25:42 +01:00
Ben Noordhuis
78dc13fbf9 events: don't delete the listeners array
The documentation implies that .removeAllListeners() leaves the listeners array
untouched. Make it so.
2012-03-16 00:20:10 +01:00
Ben Noordhuis
f9aa01de32 test: don't let debugger listen on common.PORT
simple/test-debugger-repl has a tendency to fail and leave behind a stray
process that listens on common.PORT, making later tests fail with EADDRINUSE.
2012-03-16 00:20:10 +01:00
Nathan Rajlich
dc752327bb vcbuild: run the 'configure' script in vcbuild.bat
So that a 'config.gypi' file gets generated, which is
required for the `process.config` object (see #2928).
2012-03-15 16:12:19 -07:00
Ben Noordhuis
1a97998644 process: fix process.title setter
Commit 19fd530 broke the argv initialization logic that's used on linux and
freebsd to update the process name (as displayed in tools like `top`).

Fixes test/simple/test-setproctitle.js.
2012-03-15 23:10:32 +01:00
isaacs
702b46c80d Fix invalid timer test
Previously, setTimeout(fn, 0) would create a new Timer() object,
which has a close() method (and is a bit slower).  The recent
change to more closely emulate browser setTimeout behavior dodges
this path, so this assertion is no longer valid.
2012-03-15 14:53:17 -07:00
Ben Noordhuis
7fc835afe3 timers: handle negative or non-numeric timeout values
Follows browser behaviour by scheduling the callback on the next tick.

Fixes #593.
2012-03-15 13:56:30 -07:00
Maciej Małecki
9a35656210 test: test if forks are spawned with parent's process.execArgv 2012-03-15 13:48:06 -07:00
Maciej Małecki
0113f5a72d test: test process.execArgv 2012-03-15 13:48:05 -07:00
Micheil Smith
19fd5301bf Expose original argv as process.execArgv for cluster and child_process.fork() 2012-03-15 13:47:43 -07:00
Matt Ezell
96e3be3aa3 Added trailing backslash to npm path
Fix #2377: $PATH issues reported for MSI installer
2012-03-15 13:28:01 -07:00
isaacs
b9bd2d3eb9 Now working on v0.6.14 2012-03-15 10:33:33 -07:00
isaacs
9726a259bf Merge branch 'v0.6.13-release' into v0.6 2012-03-15 10:32:58 -07:00
isaacs
9f7f86b534 2012.03.15 Version 0.6.13 (stable)
* Windows: Many libuv test fixes (Bert Belder)

* Windows: avoid uv_guess_handle crash in when fd < 0 (Bert Belder)

* Map EBUSY and ENOTEMPTY errors (Bert Belder)

* Windows: include syscall in fs errors (Bert Belder)

* Fix fs.watch ENOSYS on Linux kernel version mismatch (Ben Noordhuis)

* Update npm to 1.1.9
  - upgrade node-gyp to 0.3.5 (Nathan Rajlich)
  - Fix isaacs/npm#2249 Add cache-max and cache-min configs
  - Properly redirect across https/http registry requests
  - log config usage if undefined key in set function (Kris Windham)
  - Add support for os/cpu fields in package.json (Adam Blackburn)
  - Automatically node-gyp packages containing a binding.gyp
  - Fix failures unpacking in UNC shares
  - Never create un-listable directories
  - Handle cases where an optionalDependency fails to build
2012-03-15 08:45:35 -07:00
isaacs
06bf0707f7 makefile: Fix 'make doc' 2012-03-15 08:22:36 -07:00
isaacs
571a51989e Upgrade libuv to 66a959c4052 2012-03-15 08:18:37 -07:00
isaacs
f631c1d73b Update npm to 1.1.9 2012-03-14 16:44:36 -07:00
isaacs
ad5a108dfd Update uv to 5d21056 2012-03-14 16:44:36 -07:00
Artur Adib
c834ef409e Doc highlight fix 2012-03-14 16:44:36 -07:00
Rod Vagg
c12a1dc5d8 path.exists*() as 2nd level head not 3rd 2012-03-14 16:20:40 -07:00
Shigeki Ohtsu
d2fba2bf35 test: Fix path to require hello-world module 2012-03-14 11:00:52 -07:00
Nathan Rajlich
35043ad8ac process: use NODE_STRINGIFY macro to set process.versions.uv 2012-03-14 01:40:29 +01:00
isaacs
bda08bfa04 Now working on 0.7.7 2012-03-13 14:03:51 -07:00
isaacs
73c874698b Merge branch 'v0.7.6-release' 2012-03-13 14:03:07 -07:00
isaacs
f06abda6f5 2012.03.13, Version 0.7.6 (unstable)
* Upgrade v8 to 3.9.17

* Upgrade npm to 1.1.8
  - Add support for os/cpu fields in package.json (Adam Blackburn)
  - Automatically node-gyp packages containing a binding.gyp
  - Fix failures unpacking in UNC shares
  - Never create un-listable directories
  - Handle cases where an optionalDependency fails to build

* events: newListener emit correct fn when using 'once' (Roly Fentanes)

* url: Ignore empty port component (Łukasz Walukiewicz)

* module: replace 'children' array (isaacs)

* tls: parse multiple values of a key in ssl certificate (Sambasiva Suda)

* cluster: support passing of named pipes (Ben Noordhuis)

* Windows: include syscall in fs errors (Bert Belder)

* http: #2888 Emit end event only once (Igor Zinkovsky)

* readline: add multiline support (Rlidwka)

* process: add `process.hrtime()` (Nathan Rajlich)

* net, http, https: add localAddress option (Dmitry Nizovtsev)

* addon improvements (Nathan Rajlich)

* build improvements (Ben Noordhuis, Sadique Ali, T.C. Hollingsworth, Nathan Rajlich)

* add support for "SEARCH" request methods (Nathan Rajlich)

* expose the zlib and http_parser version in process.versions (Nathan Rajlich)
2012-03-13 13:02:38 -07:00
isaacs
10dc129a4b Update npm to 1.1.8 2012-03-13 13:02:02 -07:00
Nathan Rajlich
884a209ccf docs: document the repl "exit" event 2012-03-13 19:58:54 +01:00
Nathan Rajlich
f9da776b33 process: listen for the "exit" even on the main repl 2012-03-13 19:58:53 +01:00
Nathan Rajlich
f214758dd1 repl: better SIGINT handling behavior
Before:

☮ ~ (master)  node
> asdf
(^C again to quit)
> sdcasd☮ ~ (master) 

Now:

☮ ~/node (repl)  ./node
> asfs
> sda
>
(^C again to quit)
> scdsdc
> sdcsdc
>
(^C again to quit)
> sdc
>
(^C again to quit)
>
☮ ~/node (repl) 

^ note that each new line above is a ctrl+c sequence
2012-03-13 19:58:52 +01:00
Nathan Rajlich
6b5a34cdf3 repl: remove redundant check of rli.rine.length
It get's set to '' 1 line above, so we know that that's always 0.
2012-03-13 19:58:52 +01:00
Nathan Rajlich
b7ddd30181 repl: make sure the REPL always flushes with a newline 2012-03-13 19:58:51 +01:00
Nathan Rajlich
659d449460 repl: make REPLServer emit an "exit" event
This can happen when "SIGINT" is processed by the readline interface,
or when the user types ".exit" into the REPL.
2012-03-13 19:58:50 +01:00
Nathan Rajlich
4f63f9f327 repl: make REPLServer inherit from EventEmitter
This is because it should emit an "exit" event when "SIGINT" is received
from the readline interface, or when ".exit" is typed by the user.
2012-03-13 19:58:50 +01:00
Nathan Rajlich
109b16d488 repl: use path.resolve() for the module.filename
Windows was seeing: "C:\\path\\to\\cwd/repl"
2012-03-13 19:58:49 +01:00
isaacs
8b79a31333 shebang should make file executable as well 2012-03-13 10:00:59 -07:00
Trent Mick
1cdadb1e3b issue #2697: have 'make install' set npm shebang to use its node 2012-03-13 09:35:42 -07:00
Artur Adib
1cecfee634 Doc highlight fix 2012-03-13 09:30:32 -07:00
isaacs
943c396b86 Fix merge conflict in doc/api/readline.markdown 2012-03-13 09:16:48 -07:00
Christian Ress
c15e6905c4 Added destroy method to Zlib object in zlib.js module 2012-03-13 08:24:09 -07:00
isaacs
4e85257c6e Patches floating on V8 2012-03-12 21:50:31 -07:00
isaacs
e4fc2cbfd3 Upgrade v8 to 3.9.17 2012-03-12 21:46:36 -07:00
isaacs
bcb0cc0b18 Upgrade npm to 1.1.6
* Fix #472 Adds support for os/cpu fields in package.json (Adam Blackburn)
* Don't use existing pkg if explicit
* Install missing deps, even if they are in bundleDependencies
* bundle node-gyp
* Automatically node-gyp build stuff with a bindings.gyp
* Fix #2230 Unpack in place. No folder renaming malarky
* Never create un-listable directories
* Fix cases where an optionalDependency fails to build
* Always ignore .wafpickle-7 files
* fix shrinkwrap test
* Fix: bundleDependencies being re-installed unnecessarily
2012-03-12 21:34:07 -07:00
Nathan Rajlich
9701f1c4b2 process: expose the zlib version in use in process.versions 2012-03-12 23:29:20 +01:00
Ben Noordhuis
531eba18a6 zlib: fix include of zlib.h
Including <zlib.h> may lead to false positives when the user specifies a bad
path in `./configure --shared-zlib --shared-zlib-includes=/path/to/zlib`. If
a zlib.h exists somewhere on the system include path (common on UNIX systems),
the compiler will include that instead, possibly leading to header mismatch
errors that are hard to debug.
2012-03-12 23:22:48 +01:00
Łukasz Walukiewicz
677c2c112c Ignore an empty port component when parsing URLs. 2012-03-12 12:46:56 -07:00
isaacs
a10cfba766 module: remove 'exited', replace 'children' array 2012-03-12 10:27:11 -07:00
Yoshihiro Kikuchi
c450ac343f docs: fix using legacy api in the buffer doc 2012-03-12 15:04:53 +01:00
Nao Iizuka
f8ce384446 docs: correct the description of assert.ok() 2012-03-12 02:27:55 +01:00
Ben Noordhuis
4472f7bbc3 http: use HTTP_METHOD_MAP macro 2012-03-12 02:23:34 +01:00
Ben Noordhuis
79cbe1fdbb deps: upgrade http_parser to 8bec3ea 2012-03-12 02:20:52 +01:00
Ben Noordhuis
407ecc6b5f docs: console.dir() prints to stdout, not stderr 2012-03-12 01:37:34 +01:00
ssuda
9b672bcaa2 tls: parsing multiple values of a key in ssl certificate
Fixes #2864.
2012-03-10 23:43:16 +09:00
Nathan Rajlich
36761b2055 process: expose the http_parser version in process.versions 2012-03-10 00:22:42 +01:00
Ben Noordhuis
ff4a9d381d core: use proper #include directives 2012-03-10 00:14:14 +01:00
Ben Noordhuis
8c02f9b7c8 buffer: throw from constructor if length > kMaxLength
Throw, don't abort. `new Buffer(0x3fffffff + 1)` used to bring down the process
with the following error message:

  FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData() length
  exceeds max acceptable value

Fixes #2280.
2012-03-09 23:57:03 +01:00
Ben Noordhuis
2589d55611 core: add ThrowError(), ThrowTypeError(), ThrowRangeError() 2012-03-09 23:31:03 +01:00
Ben Noordhuis
296b7a580b cluster: support passing of named pipes
Fixes triggered assertion:

  Assertion failed: (0 && "bad address family"), function GetPeerName,
  file ../src/tcp_wrap.cc, line 237.

Fixes #2870.
2012-03-09 09:42:13 -08:00
Ben Noordhuis
9d72a742e3 uv: upgrade 8c78cb4 2012-03-09 09:42:12 -08:00
Igor Zinkovsky
0c68604823 add jslint to vcbuild.bat 2012-03-08 11:39:39 -08:00
Bert Belder
31ad1d29c7 Merge branch 'v0.6' 2012-03-08 03:14:48 +01:00
Bert Belder
3733a85d8d Windows: include syscall in fs errors 2012-03-08 02:57:44 +01:00
Bert Belder
daaccc7cb7 uv: upgrade to 1ac71a31 2012-03-08 02:57:37 +01:00
Igor Zinkovsky
5ad0140f48 Emit end event only once
fixes #2888

Previously a pair of end events would be emitted if a response was
paused/resumed, and the underlying socket was closed while the
response was paused
2012-03-07 13:37:39 -08:00
Yoshihiro Kikuchi
f82ef0f7c3 http: remove ClientRequest.prototype.pause()
ClientRequest.prototype.pause() is not needed. ClientRequest is a writable
stream and deferring to OutgoingMessage.prototype.pause() is broken, the method
does not exist.
2012-03-07 20:17:36 +01:00
Shea Levy
024451c65c fork: don't clear environment by default
- Set options.env to process.env instead of {} by default.
- Shallow clone the passed options.env in case the user passed process.env directly.
2012-03-07 17:25:59 +01:00
Colton Baker
c84b3c4b73 readline: ignore stray escape sequence
Fixes #2876.
2012-03-07 15:05:34 +01:00
Bert Belder
408f450286 client latency benchmark: don't require('request') 2012-03-07 04:52:29 +01:00
isaacs
150053b3fa Typo in http_server_lag.js script
Thanks, @mscdex
2012-03-06 19:31:16 -08:00
isaacs
fb53986a80 Bash script for running http-simple benchmarks 2012-03-06 18:19:17 -08:00
isaacs
17da4242b0 A server with configurable lag for testing 2012-03-06 18:19:17 -08:00
isaacs
d5fca08da4 A benchmark script for measuring client latency 2012-03-06 18:19:17 -08:00
ssuda
b72d43cbf9 dgram: fix when we call .close() inside 'listening' 2012-03-06 22:20:23 +01:00
Ming Liu
b6023905ff docs: correct repl eval callback signature 2012-03-06 20:46:27 +01:00
Nathan Rajlich
07c886f944 process: add process.hrtime()
This commit adds a high-resolution timer function.
2012-03-06 20:43:55 +01:00
Ben Noordhuis
544e5ee1fb bench: add http_simple_auto benchmark
Starts a server and benchmarks it with ab.
2012-03-06 18:11:53 +01:00
Rlidwka
443071db57 readline: add multiline support 2012-03-06 13:37:42 +01:00
Dmitry Nizovtsev
1e9bcf26ce net, http, https: add localAddress option
Binds to a local address before making the outgoing connection.
2012-03-06 13:35:49 +01:00
Igor Zinkovsky
9ea5a4c468 fix simple/test-process-argv-0 on windows 2012-03-05 16:51:04 -08:00
Shigeki Ohtsu
59c3923672 process: show detailed error message in process.dlopen() 2012-03-06 01:34:39 +01:00
Nathan Rajlich
39ce94276a addon: use absolute paths for the node include dirs
This fixes running gyp_addon from across filesystems on Windows.

This is essentially a gyp bug where it's not relativizing properly
across filesystems. See TooTallNate/node-gyp#15 for the gory details.
2012-03-05 22:53:16 +01:00
Nathan Rajlich
1520c7bf5b addon: add module_root_dir gyp variable
For native modules to use in their gyp files.

It gives the absolute path to the root of the module directory, i.e. where your
main binding.gyp file is located.

This seems helpful for some modules where the build system is more advanced and
using absolute paths is a requirement.
2012-03-05 22:39:12 +01:00
Igor Zinkovsky
e10bd5177f disable simple/test-signal-handler on Windows 2012-03-05 13:20:13 -08:00
isaacs
33f9074a62 Mention marked, and add license to doc generator 2012-03-05 10:59:14 -08:00
isaacs
8258bd467a doc: 'filename' arg not guaranteed ever. 2012-03-05 10:28:47 -08:00
Ben Noordhuis
5ebc05f560 build: disable -fvisibility=hidden if gcc < 4.0.0 2012-03-05 17:03:27 +01:00
Ben Noordhuis
5062741bd7 build: make CC command in -fstrict-aliasing check configurable 2012-03-05 17:03:15 +01:00
Sadique Ali
707863c1fb build: make CC command in host check configurable 2012-03-05 16:56:52 +01:00
Ben Noordhuis
c97b4f1971 build: remove unnecessary link flags from node.gyp 2012-03-05 16:41:51 +01:00
Ben Noordhuis
e0796b6f1f uv: upgrade to a93dc7e 2012-03-05 15:38:43 +01:00
isaacs
959a19e118 lint 2012-03-03 23:48:57 -08:00
isaacs
1d5b6f26fe Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	ChangeLog
	Makefile
	deps/npm/AUTHORS
	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/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/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/list.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/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/lib/install.js
	deps/npm/lib/ls.js
	deps/npm/man/man1/npm.1
	deps/npm/man/man1/shrinkwrap.1
	deps/npm/man/man3/npm.3
	deps/npm/man/man3/shrinkwrap.3
	deps/npm/node_modules/request/main.js
	deps/npm/node_modules/request/package.json
	deps/npm/package.json
	deps/uv/src/unix/core.c
	deps/v8/src/conversions-inl.h
	deps/v8/src/elements.cc
	deps/v8/src/version.cc
	doc/about/index.html
	doc/api/assert.markdown
	doc/api/child_process.markdown
	doc/api/cluster.markdown
	doc/api/crypto.markdown
	doc/api/debugger.markdown
	doc/api/dgram.markdown
	doc/api/dns.markdown
	doc/api/documentation.markdown
	doc/api/events.markdown
	doc/api/fs.markdown
	doc/api/globals.markdown
	doc/api/http.markdown
	doc/api/https.markdown
	doc/api/modules.markdown
	doc/api/net.markdown
	doc/api/os.markdown
	doc/api/path.markdown
	doc/api/process.markdown
	doc/api/querystring.markdown
	doc/api/readline.markdown
	doc/api/stdio.markdown
	doc/api/stream.markdown
	doc/api/timers.markdown
	doc/api/tls.markdown
	doc/api/tty.markdown
	doc/api/url.markdown
	doc/api/util.markdown
	doc/api/vm.markdown
	doc/api/zlib.markdown
	doc/api_assets/style.css
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	doc/template.html
	src/node_version.h
	tools/doc/html.js
	tools/gyp/test/mac/app-bundle/empty.c
2012-03-03 23:38:52 -08:00
isaacs
5ca5ec33cc doc: css consistency on anchor links 2012-03-03 22:58:47 -08:00
isaacs
f1742c93d7 doc: Don't prune Stability indicators 2012-03-03 22:58:29 -08:00
isaacs
a42b4ad44e doc: Typo'd some stability indicators. 2012-03-03 22:12:43 -08:00
isaacs
1d59a73fef doc: Change 'file_system' module to 'fs' as it should be 2012-03-03 17:14:06 -08:00
isaacs
cf6e4d82e7 Use shorter url for /docs/latest/api 2012-03-03 17:08:46 -08:00
isaacs
2e487379ad doc: Stability and Caveats for fs.watch/watchFile 2012-03-03 17:04:02 -08:00
isaacs
f70be203e4 doc: indentation and structure in fs.markdown 2012-03-03 17:04:02 -08:00
isaacs
c368e46e7f doc: Document JSON docs 2012-03-03 17:03:59 -08:00
isaacs
3dfa98c991 doc: Add link to JSON version of doc 2012-03-03 17:03:56 -08:00
isaacs
2d44dcc8be doc: Add stability indicators to documentation 2012-03-03 17:03:52 -08:00
isaacs
4053c01b53 First arg to fs.fchown is an int, not a string
Bug introduced by 26bfb6bea4

Fix isaacs/npm#2225
2012-03-03 14:40:29 -08:00
Igor Zinkovsky
61be6844aa disable fs.watchFile tests on windows 2012-03-03 14:35:21 -08:00
ssuda
578ba76e6c util: fix util.format() formatting of %% 2012-03-03 18:22:34 +01:00
Shigeki Ohtsu
d6f0ecc622 build: fix gcc version check 2012-03-03 18:07:39 +01:00
Shigeki Ohtsu
b6595c4d60 build: remove unused import from configure script 2012-03-03 18:07:22 +01:00
Jimb Esser
78db18739a tls: proxy set(Timeout|NoDelay|KeepAlive) methods
- fix crash calling ClientRequest::setKeepAlive if the underlying request is
  HTTPS.
- fix discarding of callback parameter when calling ClientRequest::setTimeout on
  HTTPS requests.
- fix discarding of noDelay parameter when calling ClientRequest::setNoDelay on
  HTTPS requests.
2012-03-03 00:28:43 +01:00
isaacs
2f256af412 Now working on v0.6.13 2012-03-02 13:09:09 -08:00
isaacs
353bfbaf93 Merge branch 'v0.6.12-release' into v0.6 2012-03-02 13:09:00 -08:00
Ben Noordhuis
30b29d8f87 build: disable -fstrict-aliasing if gcc < 4.6.0
A compiler bug in older versions of gcc makes it do unsafe optimizations at -O1
and higher. This manifested itself with (at least) gcc 4.5.2 on SmartOS because
it made V8 hang in a busy loop.

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45883
2012-03-02 09:26:35 -08:00
Ben Noordhuis
0613af0a20 build: remove --shared-cares configure switch
c-ares is a) bundled with libuv now, and b) contains out-of-tree patches. It no
longer makes sense to link against a shared library.

Fixes #2117.
2012-03-02 16:24:37 +01:00
Igor Zinkovsky
5e803219d8 update libuv to 702f905f73 2012-03-01 14:40:04 -08:00
Igor Zinkovsky
9be20afeb5 update libuv to 6bbccf1fe0 2012-03-01 14:12:19 -08:00
Igor Zinkovsky
67b10f816c fix test-net-pipe-connect-errors for windows 2012-03-01 14:09:10 -08:00
Vincent Ollivier
8cdbf014bd test: fix typo in test-child-process-stdout-flush 2012-03-01 16:52:46 +01:00
Ben Noordhuis
bab59f33e7 uv: upgrade to 0459097 2012-02-29 16:16:13 +01:00
Ben Noordhuis
ebb79cdaba Revert "test-fs-watch: Add faster failure, and link to #2813"
This reverts commit 9a6f936c8a.
2012-02-29 14:26:04 +01:00
Blake Miner
7343f8e776 tls: add honorCipherOrder option to tls.createServer()
Documented how to mitigate BEAST attacks.
2012-02-29 02:16:08 +01:00
Joshua Holbrook
56cfcea4b4 child_process: remove dummy "setsid" option setting 2012-02-29 02:10:56 +01:00
Ben Noordhuis
af7960b295 uv: upgrade to 2f886c8 2012-02-28 18:11:48 +01:00
Shigeki Ohtsu
18acdff8d3 build: fix the help output of vcbuild.bat 2012-02-28 17:27:52 +01:00
koichik
cd5d2473a4 net: fix race write() before and after connect()
Fixes #2827.
2012-02-28 19:57:13 +09:00
isaacs
44daa9836b Wrap NodeScript binding class in JavaScript layer
This makes it easy to prevent errors where Script methods
are called on non-script objects, resulting in Assertion failures.
2012-02-27 17:28:42 -08:00
isaacs
29463cb60c Update argv0 test to verify correct behavior 2012-02-27 16:41:30 -08:00
AJ ONeal
493a6bb19a [ISSUE #2554 #2567] throw if fs args for 'start' or 'end' are strings 2012-02-27 14:18:51 -08:00
Nathan Rajlich
ba0892ba91 build: build addons into the "build" dir instead of "out"
This matches the old node-waf system. Having two different dirs for this stuff
is dumb.
2012-02-27 14:04:46 -08:00
Mathias Bynens
cacd651ec6 punycode: Update to v1.0.0 2012-02-27 14:00:18 -08:00
isaacs
50cfeef65e Remove -Wall from v8 build 2012-02-27 13:55:23 -08:00
isaacs
412cebec9e v8: Remove OutputDirectory from build/common.gypi 2012-02-27 13:43:58 -08:00
isaacs
2e24ded6d2 Upgrade v8 to 3.9.11 2012-02-27 13:43:31 -08:00
isaacs
fde26002f1 v8: Remove OutputDirectory from build/common.gypi 2012-02-27 12:11:10 -08:00
isaacs
f4641bd4de Update v8 to 3.9.9 2012-02-27 12:11:09 -08:00
Shigeki Ohtsu
82ad1f87fa Fix #2830 for the old gcc bug on SmartOS 2012-02-27 12:02:25 -08:00
isaacs
0e7dad3f6e Merge branch 'json-api-docs' 2012-02-27 12:00:27 -08:00
isaacs
7af2d6b985 Handle miscs better 2012-02-27 11:44:36 -08:00
isaacs
909ea3008e Debugger should be a misc, not 'concept' 2012-02-27 11:44:30 -08:00
isaacs
5571c1aaa4 'Events' is a module, not an event named 's' 2012-02-27 11:37:26 -08:00
isaacs
f9df88c6da s/streams/stream/ 2012-02-27 11:18:10 -08:00
isaacs
f9e464f95a s/buffers/buffer/ 2012-02-27 11:14:38 -08:00
isaacs
9fe92590b2 doc refactor: zlib 2012-02-27 11:14:38 -08:00
isaacs
f4720d8dbd doc refactor: vm 2012-02-27 11:14:38 -08:00
isaacs
8e6086b403 doc refactor: util 2012-02-27 11:14:37 -08:00
isaacs
a54b70a355 doc refactor: url 2012-02-27 11:14:37 -08:00
isaacs
cf4700aff4 doc refactor: tty 2012-02-27 11:14:37 -08:00
isaacs
c9b35b9923 doc refactor: tls 2012-02-27 11:14:37 -08:00
isaacs
c4d6c7f829 doc refactor: timers 2012-02-27 11:14:37 -08:00
isaacs
f0694e1e0c doc refactor: synopsis 2012-02-27 11:14:36 -08:00
isaacs
03968739c5 doc refactor: streams 2012-02-27 11:14:36 -08:00
isaacs
94c6bcfdad doc refactor: stdio 2012-02-27 11:14:36 -08:00
isaacs
dfdf09d43d doc refactor: repl 2012-02-27 11:14:36 -08:00
isaacs
728386bfb2 doc refactor: readline 2012-02-27 11:14:35 -08:00
isaacs
628bc835ae doc refactor: querystring 2012-02-27 11:14:35 -08:00
isaacs
a52254d0d7 doc refactor: process 2012-02-27 11:14:35 -08:00
isaacs
aef61ee367 doc refactor: path 2012-02-27 11:14:35 -08:00
isaacs
0e752246d3 doc refactor: os 2012-02-27 11:14:35 -08:00
isaacs
2fd5cb3d2e doc refactor: net 2012-02-27 11:14:34 -08:00
isaacs
0cf7156f08 doc refactor: modules 2012-02-27 11:14:34 -08:00
isaacs
2806c6ce28 doc refactor: https 2012-02-27 11:14:34 -08:00
isaacs
02e288b640 doc refactor: http 2012-02-27 11:14:34 -08:00
isaacs
af7314e190 doc refactor: globals 2012-02-27 11:14:34 -08:00
isaacs
40190b7c92 doc refactor: fs 2012-02-27 11:14:33 -08:00
isaacs
ec02e82760 doc refactor: events 2012-02-27 11:14:33 -08:00
isaacs
2f148845e8 doc refactor: dns 2012-02-27 11:14:33 -08:00
isaacs
9a0495a4b0 doc refactor: dgram 2012-02-27 11:14:33 -08:00
isaacs
dd1b3b6dfd doc refactor: debugger 2012-02-27 11:14:33 -08:00
isaacs
ab294ad93d doc refactor: crypto 2012-02-27 11:14:32 -08:00
isaacs
6e51db1268 doc refactor: cluster 2012-02-27 11:14:32 -08:00
isaacs
60aa852a03 doc refactor: buffers 2012-02-27 11:14:32 -08:00
isaacs
97ee38707b doc refactor: assert 2012-02-27 11:14:32 -08:00
isaacs
44559a3211 doc refactor: appendix_1 2012-02-27 11:14:32 -08:00
isaacs
24a2706a3b doc refactor: addons 2012-02-27 11:14:31 -08:00
isaacs
11d27367cd Add 'about these docs' section 2012-02-27 11:14:31 -08:00
isaacs
bd880e7f3f s/child_processes/child_process/ 2012-02-27 11:14:24 -08:00
isaacs
3bec62b012 Remove empty sections 2012-02-27 11:14:16 -08:00
isaacs
3d5f7594b5 Increase contrast of links, decrease contrast of bullets 2012-02-27 11:01:53 -08:00
isaacs
ac5e7072c9 Update styles to reflect changed api doc html structure 2012-02-27 11:01:33 -08:00
isaacs
7aee49d967 Update template to use new token style 2012-02-27 10:59:51 -08:00
isaacs
7d6d5e263e Use new doc generation tool 2012-02-27 10:59:35 -08:00
isaacs
964d03bc3f New documentation generation tool 2012-02-27 10:59:01 -08:00
Ben Noordhuis
90fd70d284 docs: fix http.ClientRequest.write() documentation
'an array of integers' == very, very deprecated
2012-02-27 04:00:22 +01:00
Nathan Rajlich
aa35564ca1 Use NODE_MODULE in the hello-world addon example.
Fixes Windows throwing "unknown error" when trying to require the .node file.
2012-02-27 02:44:33 +01:00
Nathan Rajlich
3f1f2d1497 addon: write gyp generated files to the 'out' dir 2012-02-27 02:40:09 +01:00
T.C. Hollingsworth
d03b8487c6 build: support shared zlib 2012-02-27 02:31:23 +01:00
Nathan Rajlich
3c68c85f18 build: use -pthreads (not -pthread) on Solaris 2012-02-27 02:28:06 +01:00
T.C. Hollingsworth
2d7b43f466 build: use else instead of node_shared_v8==false 2012-02-26 00:32:36 +01:00
koichik
ae762b620e docs: add ciphers option to https.request() 2012-02-25 23:17:05 +09:00
koichik
2f5e084147 docs: remove duplicate option of tls.connect() 2012-02-25 23:07:30 +09:00
Roly Fentanes
db8940dae2 newListener emits correct fn when using once
Fixes #2826.
2012-02-25 15:37:38 +09:00
isaacs
d4d45a1757 Update npm to 1.1.2 2012-02-24 18:51:22 -08:00
Maciej Małecki
27a937bcf8 Revert "startup: use path.resolve instead of path.join(cwd, ...)"
This reverts commit b0c1541227.

Reverted commit introduced a regression causing `process.argv[0]` to be
invalid in node processes spawned from `PATH` (without explicit path to
executable file - for example when using global node installation).

Instead of finding a correct path to the executable, `process.cwd()`
would be prepended to `process.argv[0]`.
2012-02-23 20:23:26 -08:00
Maciej Małecki
b73ec84ce1 test: test for process.argv[0] correctness
joyent/node@b0c1541227 introduced a
regression causing `process.argv[0]` to be invalid in node processes
spawned from `PATH` (without explicit path to executable file - for
example when using global node installation).

Instead of finding a correct path to the executable, `process.cwd()`
would be prepended to `process.argv[0]`.
2012-02-23 20:23:24 -08:00
Nathan Rajlich
a84adad078 Default node_shared_v8 to false.
Fixes #2818.
2012-02-23 14:52:39 -08:00
isaacs
59ecf2ccf7 Revert "Revert "build: support shared V8 properly""
This reverts commit a9130222bd.
2012-02-23 14:52:18 -08:00
isaacs
f492baa61d Now working on 0.7.6 2012-02-23 14:41:36 -08:00
isaacs
c5cbc3db47 Merge branch 'v0.7.5-release' 2012-02-23 14:39:58 -08:00
isaacs
d384b8b0d2 2012.02.23, Version 0.7.5 (unstable)
* startup speed improvements (Maciej Małecki)

* crypto: add function getDiffieHellman() (Tomasz Buchert)

* buffer: support decoding of URL-safe base64 (Ben Noordhuis)

* Make QueryString.parse() even faster (Brian White)

* url: decode url entities in auth section (Ben Noordhuis)

* http: support PURGE request method (Ben Noordhuis)

* http: Generate Date headers on responses (Mark Nottingham)

* Fix #2762: Add callback to close function. (Mikeal Rogers)

* dgram: fix out-of-bound memory read (Ben Noordhuis)

* repl: add automatic loading of built-in libs (Brandon Benvie)

* repl: remove double calls where possible (Fedor Indutny)

* Readline improvements. Related: #2737 #2756 (Colton Baker)

* build: disable -fomit-frame-pointer on solaris (Dave Pacheco)

* build: arch detection improvements (Nathan Rajlich)

* build: Make a fat binary for the OS X `make pkg`. (Nathan Rajlich)

* jslint src/ and lib/ on 'make test' (isaacs)
2012-02-23 14:12:39 -08:00
isaacs
a9130222bd Revert "build: support shared V8 properly"
This reverts commit 3d1b670640.

Breaks build on windows.
https://gist.github.com/1895279
2012-02-23 14:12:14 -08:00
Shigeki Ohtsu
c1fcb1db99 build: change default BUILDTYPE of vcbuild.bat
From Debug to Release.
2012-02-23 14:11:26 +01:00
Shigeki Ohtsu
491ec171ec build: change default BUILDTYPE of gyp to Release 2012-02-23 14:11:26 +01:00
Shigeki Ohtsu
58e5d69250 build: fix the case where config.gypi doesn't exist 2012-02-23 14:11:26 +01:00
Shigeki Ohtsu
680d75af34 build: make default_configuration consistent with BUILDTYPE 2012-02-23 14:11:26 +01:00
Ben Noordhuis
b92a919500 Remove unused variables. 2012-02-23 04:11:07 -08:00
isaacs
1b5048b288 doc: refer to modules doc rather than src/node.js 2012-02-23 00:18:17 -08:00
isaacs
d3b8372615 lint, missed in QS speed merge 2012-02-22 20:58:24 -08:00
isaacs
73806b56e5 Add new authors 2012-02-22 20:58:24 -08:00
isaacs
9a6f936c8a test-fs-watch: Add faster failure, and link to #2813 2012-02-22 20:57:55 -08:00
isaacs
92cb684e78 Change test fixture from symlink to regular file
The only test using this is test/simple/test-fs-chmod.js, and it was
treating a.js and a1.js as two separate files, resulting in a race
condition.  (Interestingly enough, it was *not* using the symlink file to
test lchmod, which uses a different temp file.)
2012-02-22 20:57:43 -08:00
Ben Noordhuis
3502e45b6c dgram: defer send error to next tick 2012-02-23 02:07:39 +01:00
Ben Noordhuis
defa637378 dgram: fix out-of-bound memory read 2012-02-23 02:07:39 +01:00
Colton Baker
fd61bfc731 readline: ^Z (SIGSTP) handling
Bugfix and update.

- Fixed bug where Node's REPL wouldn't continue when returning from ^Z
  (SIGTSTP)
- Removed old readline callback

Readline API update with docs.

- ^Z (SIGTSTP) is now bypassed on Windows systems.
- SIGCONT is now bypassed on Windows systems.
- Docs updated to reflect above.
2012-02-22 16:07:23 -08:00
Colton Baker
ac9fa2b846 Removed rl.on('close', ...) callback 2012-02-22 16:05:55 -08:00
Nathan Rajlich
e60b18bbdf Make a fat binary for the OS X make pkg. 2012-02-22 14:27:08 -08:00
Cam Pedersen
7f94b5ccca docs: remove duplicate socket.write 2012-02-22 22:20:57 +01:00
T.C. Hollingsworth
3d1b670640 build: support shared V8 properly
-don't pull in bundled v8 as a dependency when node_shared_v8==true
-use node_shared_v8_includes for v8.h and v8-debug.h
2012-02-22 15:20:23 +01:00
Myles Byrne
21374c3903 build: remove unused makefile target 2012-02-22 14:25:56 +01:00
isaacs
27d8b059fa Pause process.stdin in stdin getter
Otherwise, it'll be ref'ed, and keep the process hanging.
2012-02-21 15:26:35 -08:00
Brian White
5e3ca98155 Make QueryString.parse() even faster 2012-02-21 12:17:26 -08:00
isaacs
3817b12fec Add Håvard Stranden to AUTHORS file 2012-02-21 12:03:15 -08:00
isaacs
bae4018b30 Run jslint after tests, not before 2012-02-21 12:02:57 -08:00
Fedor Indutny
080ffb8b2c docs: remove server.pause
This functionality was removed when libuv landed in node. It is useless
and can be easily implemented in user-land.
2012-02-21 20:50:01 +06:00
Ben Noordhuis
b9127eb0a5 buffer: support decoding of URL-safe base64 2012-02-21 15:33:14 +01:00
Andreas Madsen
feff9bbb67 docs: remove setSecure() from net module docs
socket.setSecure() was removed in v0.3 and there are no deprecated warning in
code it should be removed from the documentation in 0.7
2012-02-21 15:18:16 +01:00
Tomasz Buchert
c6a04ce78f crypto: add function getDiffieHellman()
Returns a well known, predefined RFC group.
2012-02-21 14:07:25 +01:00
Nathan Rajlich
19133cac02 build: better host_arch() definition in configure
On one of my OS X Lion machines, it always reports i386, even though 64-bit
is supported. This lookup better matches how WAF determines the host arch,
which was correctly getting 64-bit even on this screwy machine.
2012-02-20 22:14:23 +01:00
Maciej Małecki
da908364a8 tls http https: don't pollute user's options object 2012-02-20 21:58:00 +01:00
Maciej Małecki
c6c6f98f1c util: add util._extend for extending objects
There were 2 duplicates with such functionality in `cluster` and
`child_process` modules which were replaced by this function.
2012-02-20 21:58:00 +01:00
Andreas Madsen
3f4062309e core: ignore too many arguments, don't assert 2012-02-20 21:55:35 +01:00
Ben Noordhuis
f116e17a23 test: update HTTP basic auth test
Verify that URL-encoded entities are properly encoded into the Authorization
header.
2012-02-20 17:24:14 +01:00
Ben Noordhuis
86f4846c21 url: decode url entities in auth section
Fixes #2736.
2012-02-20 17:11:21 +01:00
Fedor Indutny
0cebfc8ddb tests: kill process group on failure
Test suite is often leaving `stray` processes on failure. They are
harmless, but may cause future test runs fail because those `stray`
processes are occupying `common.PORT` or due to some other reasons.

Killing whole process group on test suite failure should help in such
cases.
2012-02-20 22:07:19 +06:00
Ben Noordhuis
de5e3f6a6f http: support PURGE request method 2012-02-20 16:12:48 +01:00
Ben Noordhuis
f0c5165f81 http_parser: upgrade to 62110ef 2012-02-20 16:12:33 +01:00
Maciej Małecki
b0c1541227 startup: use path.resolve instead of path.join(cwd, ...) 2012-02-20 16:04:44 +01:00
Maciej Małecki
1109c8fc4e startup: move EventEmitter closer to the lookup
This makes startup faster by ~0.2 ms on my computer.
2012-02-20 16:04:44 +01:00
Maciej Małecki
c3a9733ac1 startup: use .hasOwnProperty instead of in
Benchmarks show that `.hasOwnProperty` is faster than `in` in V8. It
makes startup ~0.5 ms faster on my computer.
2012-02-20 16:04:44 +01:00
Brandon Benvie
b72277183f repl: add automatic loading of built-in libs 2012-02-20 13:56:27 +01:00
Luke Gallagher
8d3c46daa8 util: fix typo in lib/util.js 2012-02-20 13:42:27 +01:00
Ben Noordhuis
999757983c test: don't let debugger listen on common.PORT
simple/test-debugger-repl-utf8 has a tendency to fail and leave behind a stray
process that listens on common.PORT, making later tests fail with EADDRINUSE.
2012-02-20 13:31:00 +01:00
Ben Noordhuis
7f4aba91d3 test: include common.js in all tests 2012-02-20 13:29:11 +01:00
Nathan Rajlich
028043dd02 build: map i686 to ia32 2012-02-20 11:49:57 +01:00
Nathan Rajlich
546870edd8 build: use proper -arch for target_arch on OS X 2012-02-20 11:49:32 +01:00
Nathan Rajlich
af4a96ce6e build: test uname -m first, then uname -p
Prevent false i386 on 64-bit OS X.
2012-02-20 11:49:25 +01:00
Ben Noordhuis
4af673e161 gyp: update to r1214 2012-02-20 11:47:03 +01:00
koichik
7ae0d473a6 test: fix test-tls-over-http-tunnel with v0.7 2012-02-19 11:46:58 -08:00
Mikeal Rogers
d530ee62cd Issue #2762. Add callback to close function. 2012-02-18 17:46:28 -08:00
isaacs
96338432e2 jslint src/ and lib/ on 'make test' 2012-02-18 16:04:10 -08:00
isaacs
0cdf85e28d Lint all the JavaScripts. 2012-02-18 15:34:57 -08:00
isaacs
31721da4b1 Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	AUTHORS
	ChangeLog
	Makefile
	doc/about/index.html
	doc/api/tls.markdown
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	doc/template.html
	lib/http.js
	lib/tls.js
	src/node_version.h
	src/platform_win32.cc
	test/simple/test-tls-connect-given-socket.js
2012-02-18 09:46:58 -08:00
Nathan Rajlich
0787287021 build: remove 'config.mk' during make distclean 2012-02-18 00:34:19 +01:00
Dave Pacheco
7864bb9eb8 build: disable -fomit-frame-pointer on solaris
This "optimization" cripples debuggability and has dubious performance value,
so we want to disable it at least on SmartOS.
2012-02-18 00:30:00 +01:00
Maciej Małecki
977e211421 debugger: rename process.debug_port to process.debugPort
We should comply to to camelCase naming convention.
2012-02-18 00:45:56 +06:00
Fedor Indutny
ae5e23310e repl: remove double calls where possible
Repl is doing double evaluation of code: wrapped in parens and without
them. That's needed to allow users typing multiline chunks of code by
handling syntax errors on repl side. However if function declaration is
wrapped in parens (`(function a() {})`) calling it will be impossible,
so we're evaluating functions twice. That works fine for declaration,
but if entered code chunk returns function - it should not be called
twice.

fix #2773
2012-02-18 00:30:52 +06:00
Colton Baker
ce485791db Readline proposal and bugfixes. Related: #2737 #2756
- Removed extra newline from .question(); Users can input a
  newline if it they require it.
- Removed .close() due to it only emulating closing, causing a bug where
  readline is left open to trigger events such as .on('line', ...').
- Removed ._attemptClose()
- .pause() now triggers event .on('pause', ...)
- .resume() now triggers event .on('resume', ...)
- CTRL-C (SIGINT) in readline will now default to .pause() if no SIGINT event
  is present.
- CTRL-D (delete right) will also default to .pause() if there is nothing to
  delete (signaling the end of the file).
- Added new event `SIGTSTP`
- Added new event `SIGCONT`
- Added `resume` to `write` to resume the stream if paused.
- Docs updated.
- Updated repl.js
2012-02-16 12:12:03 +06:00
Maciej Małecki
3bc3af0276 process: remove old notices about removed methods
These methods were removed a long time ago. Keeping these notices here
makes no sense anymore.

Also, removing this part of code slightly speeds up the startup.
2012-02-15 19:45:33 -08:00
Nathan Rajlich
71e975669c Default to static linking CRT on Windows. 2012-02-15 13:32:46 -08:00
Mark Nottingham
1e425e3fa7 Generate Date headers on responses when not already present. 2012-02-15 12:35:34 -08:00
isaacs
d653732157 Merge branch 'v0.7.4-release' 2012-02-15 11:37:48 -08:00
isaacs
6a2cb6c506 Now working on 0.7.5 2012-02-15 11:37:34 -08:00
Ben Noordhuis
6141386f7e http: allow multiple WWW-Authenticate headers 2012-02-15 17:04:10 +01:00
isaacs
de21de920c 2012.02.14, Version 0.7.4 (unstable)
* Upgrade V8 to 3.9.5

* Upgrade npm to 1.1.1

* build: Detect host_arch better (Karl Skomski)

* debugger: export `debug_port` to `process` (Fedor Indutny)

* api docs: CSS bug fixes (isaacs)

* build: use -fPIC for native addons on UNIX (Nathan Rajlich)

* Re-add top-level v8::Locker (Marcel Laverdet)

* Move images out of the dist tarballs (isaacs)

* libuv: Remove uv_export and uv_import (Ben Noordhuis)

* build: Support x64 build on Windows (Igor Zinkovsky)
2012-02-14 14:34:43 -08:00
isaacs
0a4f5e8473 robots.txt 2012-02-14 14:34:43 -08:00
isaacs
9a0d90793e doc: Wrap API doc content in div#apicontent 2012-02-13 15:27:41 -08:00
isaacs
df236e75a2 css: Restrict li fix to #apicontent only. 2012-02-13 15:27:32 -08:00
isaacs
a7af84f988 docs: Move images out of the dist tarball
This puts all images in doc/images/ and references them via
http://nodejs.org/images/.

Any complaints about copyright usage etc. can thus be node/joyent's
problem, rather than the problem of a downstream distribution channel.
2012-02-13 15:27:06 -08:00
Fedor Indutny
e7e4f2f3aa Fix linker error on some gcc version on osx
* See: http://codereview.chromium.org/9382033/
2012-02-14 02:36:08 +06:00
isaacs
3a915b02e8 Upgrade uv to 1d942e2a 2012-02-13 11:10:12 -08:00
isaacs
5041bc1b6c Patches floating on V8
Only SConstruct and build/common.gypi at this point.  All
others are accepted upstream, which greatly simplifies things.
2012-02-13 10:11:28 -08:00
isaacs
68a0c56a7d Upgrade V8 to 3.9.5 2012-02-13 10:05:16 -08:00
Karl Skomski
09ccbef3bb build: detect host_arch better 2012-02-13 17:43:30 +01:00
Fedor Indutny
3f43b1c039 debugger: export debug_port to process
`process.debug_port` is useful for changing debugger port in runtime,
before starting it (via SIGUSR1).

Using `--port=` argument for debugger repl, tests will run debugger
server on a `common.PORT` (as it usually does for any other servers).

`process._debugEnd()` stops debugger and its server.

* debugger: implemented process._debugEnd(), `node debug --port=5858 app.js`
* test: start debugger repl on common.PORT
* fixes #2613
* fixes #2614
2012-02-12 22:27:12 +06:00
Ben Noordhuis
8a6576f764 Merge remote-tracking branch 'origin/v0.6'
Conflicts:
	common.gypi
2012-02-12 16:12:26 +01:00
Ben Noordhuis
a27320e00f uv: upgrade to 4e1f2b1 2012-02-12 16:12:04 +01:00
isaacs
e9adb7fbbc apidoc css: Footer li's should be sans-serif 2012-02-10 20:55:21 -08:00
isaacs
830d0fe95a Fix #2690 css: Set font size in apidoc LIs to match Ps 2012-02-10 19:38:34 -08:00
Nathan Rajlich
d4ccdeaf00 build: use -fPIC for native addons on UNIX
No -fPIC on 32 bits Linux but do enable for the other UNIX flavors.
2012-02-09 14:34:30 +01:00
Andreas Madsen
9da830e895 child_process: stop .disconnect() call if channel is diconnected 2012-02-08 11:42:38 -08:00
isaacs
02c1cb54aa Makefile: Don't use ** in globs
Many shells don't have GLOBSTAR turned on by default.  This is
why uv and v8 so often don't get cleaned out properly.
2012-02-08 09:59:53 -08:00
Marcel Laverdet
9a6012edd9 Re-add top-level v8::Locker
11d1eca9 added a v8 locker to ease development of 3rd party threading
extensions but it created a condition which would cause node to exit
uncleanly while in debug mode; it was reverted in 7543c38d.

The problem here is that the Locker was being disposed after V8 was torn
down. Adding some scoping fixes that.
2012-02-08 14:40:33 +01:00
isaacs
e612143a89 Now working on 0.7.4 2012-02-07 16:44:57 -08:00
isaacs
99059aad8d 2012.02.07, Version 0.7.3 (unstable)
* Upgrade V8 to 3.9.2

* Revert support for isolates. (Ben Noordhuis)

* cluster: Cleanup docs, event handling, and process.disconnect (Andreas Madsen)

* gyp_addon: link with node.lib on Windows (Nathan Rajlich)

* http: fix case where http-parser is freed twice (koichik)

* Windows: disable RTTI and exceptions (Bert Belder)
2012-02-07 15:42:33 -08:00
isaacs
349cab0b48 Check the version before building tarball
I keep forgetting to do this.  It's such a stupid thing.
2012-02-07 15:41:21 -08:00
isaacs
986785c9d2 Fix merge-conflicts in HTML
Thanks, @AndreasMadsen
2012-02-06 23:01:17 -08:00
isaacs
116835561d Merge remote-tracking branch 'ry/v0.6'
Conflicts:
	ChangeLog
	deps/v8/src/version.cc
	deps/v8/tools/gyp/v8.gyp
	doc/about/index.html
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	doc/template.html
	lib/path.js
	lib/querystring.js
	src/node_version.h
2012-02-06 15:43:21 -08:00
isaacs
e5db01ee29 v8: Remove OutputDirectory from build/common.gypi 2012-02-06 15:22:52 -08:00
isaacs
8be699494e Upgrade V8 to 3.9.2 2012-02-06 15:21:49 -08:00
Andreas Madsen
23514fc946 [doc] cluster: remove part about autoFork since this do not exist 2012-02-06 14:54:11 -08:00
Andreas Madsen
1595a6e885 cluster: use process.disconnect method
After adding a .disconect method and connected flag in child_process
we should no longer use the process._channel object.
2012-02-06 14:54:11 -08:00
Andreas Madsen
a20872045a cluster: simplify process event handling
This simplify the internalMessage and exit event handling
And simply relay message and error event to the worker object
Note that the error event was not relayed before
2012-02-06 14:54:11 -08:00
Nathan Rajlich
5e1471c806 gyp_addon: link with node.lib on Windows
Closes GH-2685
2012-02-06 19:02:45 +01:00
koichik
c2dc673eb5 http: fix http-parser is freed twice
after response to CONNECT/Upgrade request.

Fixes #2704.
2012-02-07 02:29:28 +09:00
Ben Noordhuis
832efb1e01 test: remove deprecated isolates test 2012-02-06 17:47:09 +01:00
Bert Belder
2e2df04b35 Windows: disable RTTI and exceptions 2012-02-06 15:59:08 +01:00
Ben Noordhuis
74a8215a86 Revert support for isolates.
It was decided that the performance benefits that isolates offer (faster spin-up
times for worker processes, faster inter-worker communication, possibly a lower
memory footprint) are not actual bottlenecks for most people and do not outweigh
the potential stability issues and intrusive changes to the code base that
first-class support for isolates requires.

Hence, this commit backs out all isolates-related changes.

Good bye, isolates. We hardly knew ye.
2012-02-06 15:44:42 +01:00
Ben Noordhuis
a9723df1b7 Revert "Process symlinked shared library as .node"
This reverts commit 7e0bf7d57d.

It's possible to make GYP generate an XCode project that produces a .node file,
hence this commit is no longer needed.
2012-02-01 22:28:23 +01:00
isaacs
ec79acb3a6 working on 0.7.3 now 2012-02-01 13:05:04 -08:00
isaacs
a3efcd2006 2012.02.01, Version 0.7.2 (unstable)
* Update V8 to 3.8.9

* Support for sharing streams across Isolates (Igor Zinkovsky)

* #2636 - Fix case where http_parsers are freed too early (koichik)

* url: Support for IPv6 addresses in URLs (Łukasz Walukiewicz)

* child_process: Add disconnect() method to child processes (Andreas Madsen)

* fs: add O_EXCL support, exclusive open file (Ben Noordhuis)

* fs: more specific error messages (Tj Holowaychuk)

* tty: emit 'unknown' key event if key sequence not found (Dan VerWeire, Nathan Rajlich)

* build: compile release build too if BUILDTYPE=Debug (Ben Noordhuis)

* module: fix --debug-brk on symlinked scripts (Fedor Indutny)

* zlib: fix `Failed to set dictionary` issue (Fedor Indutny)

* waf: predict target arch for OS X (Fedor Indutny)
2012-02-01 11:37:12 -08:00
isaacs
05471f5c2a Update v8 to 3.8.9 2012-01-31 18:35:04 -08:00
isaacs
bd21038078 Merge remote-tracking branch 'ry/master' into merge-v0.6 2012-01-31 18:22:10 -08:00
isaacs
18d179c2d8 Merge remote-tracking branch 'ry/v0.6' into master
Conflicts:
	ChangeLog
	deps/uv/src/unix/udp.c
	deps/uv/src/win/fs.c
	deps/uv/src/win/udp.c
	deps/uv/test/test-fs.c
	doc/index.html
	doc/logos/index.html
	doc/template.html
	src/node_version.h
2012-01-31 18:18:00 -08:00
Igor Zinkovsky
db3c4efd1d support for sharing streams accross isolates 2012-01-31 17:45:50 -08:00
Andreas Madsen
33b7fc250f child_process: do not disconnect on exit emit
When using isolate the .fork would break because it had
no .disconnect method. This remove the exit handler there
would call .disconnect since it was not required.
It also change .disconnect to throw if the channel is closed,
this was not possible before because .disconnect would be called
twice.
2012-01-31 17:22:21 -08:00
Ben Noordhuis
03c4aa6aef build: don't set -mmacosx-version-min
It sets __MAC_OS_X_VERSION_MIN_REQUIRED__, which is what we use for feature
detection.
2012-01-31 15:12:12 +01:00
Andreas Madsen
42ea068a1a Test for ChildProcess.disconnect() 2012-01-31 14:47:12 +01:00
Ben Noordhuis
279e7e7341 fs: add O_EXCL support, exclusive open file 2012-01-31 14:29:32 +01:00
Ben Noordhuis
88b919ea56 fs, test: add file open mode tests 2012-01-31 14:29:27 +01:00
Łukasz Walukiewicz
a94ffdaec5 url: Support for IPv6 addresses in URLs.
Fixes #1138, #2610.
2012-01-31 16:58:41 +09:00
Tj Holowaychuk
26bfb6bea4 more specific fs error messages 2012-01-30 22:11:19 -08:00
Igor Zinkovsky
ff40253566 upgrade uv to 812e410772 2012-01-30 15:57:08 -08:00
Roman Shtylman
e97b961815 add node::SetMethod and node::SetPrototypeMethod
defines cannot be used if the callback is a templated and has
multiple template arguments. The comma separating the arguments
breaks the preprocessor argument handling. Using a templated function
is clearer and more idiomatic in c++.
2012-01-30 20:22:38 +01:00
Andreas Madsen
836344c90e Add disconnect method to forked child processes
This disconnect method allows the child to exit gracefully.
This also adds a disconnect event and connect property.
2012-01-30 16:35:27 +01:00
Brandon Benvie
52bd0f93bb core: make .deprecate() warn only once 2012-01-30 14:10:18 +01:00
Brandon Benvie
5403a8ce4c core: add NativeModule.prototype.deprecate
Formalize and cleanup handling of deprecated core methods.
2012-01-30 00:27:07 +01:00
Brandon Benvie
e3c0c86b28 Change removed process methods to be non-enumerable. 2012-01-29 22:17:31 +01:00
Dan VerWeire
e4afb2f724 tty: emit 'unknown' key event if key sequence not found
Add key.code and key.sequence -mad props go out to @TooTallNate
2012-01-28 17:01:04 +01:00
Ben Noordhuis
14b7c4327f uv: upgrade to 3de0411 2012-01-27 22:32:02 +01:00
Fedor Indutny
85a86b5fd6 waf: predict target arch for OSX 2012-01-27 20:37:30 +06:00
Ben Noordhuis
f89beaf3ac build: compile release build too if BUILDTYPE=Debug
It's backwards compatible with the old waf build system. If you want to compile
just the debug build, run `make -C out BUILDTYPE=Debug` instead.

Fixes #2615.
2012-01-26 23:49:57 +01:00
Fedor Indutny
c80abfa0e4 zlib: fix Failed to set dictionary issue 2012-01-25 23:35:35 +06:00
Fedor Indutny
27c85727ed module: fix --debug-brk on symlinked scripts
* fixes #1519
2012-01-24 23:13:37 +06:00
Ben Noordhuis
e806ad39d0 net, tls, http: remove socket.ondrain
Replace the ondrain hack with a regular 'drain' listener. Speeds up the
bytes/1024 http benchmark by about 1.2%.
2012-01-24 15:57:50 +01:00
isaacs
5988872ff1 Merge branch 'v0.7.1-release' 2012-01-24 00:11:59 -08:00
koichik
a6f3451e25 http: fix test-http-should-keepalive.js is fail
3df7c90 was removed when conflict was resolved.
2012-01-24 13:57:20 +09:00
isaacs
77f2cb66d1 Now working on 0.7.2 2012-01-23 17:27:08 -08:00
isaacs
a74354735a 2012.01.23, Version 0.7.1 (unstable)
* Update V8 to 3.8.8

* Install node-waf by default (Fedor Indutny)

* crypto: Add ability to turn off PKCS padding (Ingmar Runge)

* v8: implement VirtualMemory class on SunOS (Ben Noordhuis)

* Add cluster.setupMaster (Andreas Madsen)

* move `path.exists*` to `fs.exists*` (Maciej Małecki)

* typed arrays: set class name (Ben Noordhuis)

* libuv bug fixes (Igor Zinkovsky, Ben Noordhuis, Dan VerWeire)
2012-01-23 17:26:20 -08:00
isaacs
40879f33cd Upgrade V8 to 3.8.8 2012-01-23 17:16:27 -08:00
isaacs
b1b16d117e udp: 'interface' is reserved word on windows. 2012-01-23 15:44:53 -08:00
Fedor Indutny
667aae596c Merge branch 'v0.6'
Conflicts:
	ChangeLog
	doc/template.html
	lib/cluster.js
	lib/http.js
	lib/tls.js
	src/node.h
	src/node_version.h
	test/simple/test-cluster-kill-workers.js
2012-01-24 00:30:28 +06:00
Ben Noordhuis
2433eeb385 uv: upgrade to 1cca230 2012-01-23 13:35:36 +01:00
Maciej Małecki
ff512634ac version: bump NODE_PATCH_VERSION
Patch version hasn't been bumped correctly in
72cbb7492c.
2012-01-22 23:10:32 +01:00
Igor Zinkovsky
6d00c089e3 only ref non-default isolate loops 2012-01-21 14:44:48 -08:00
Maciej Małecki
e10ed097cb path fs: move path.exists* to fs.exists*
`path.exists*` functions show a deprecation warning and call functions
from `fs`. They should be removed later.

test: fix references to `path.exists*` in tests

test fs: add test for `fs.exists` and `fs.existsSync`

doc: reflect moving `path.exists*` to `fs`
2012-01-21 14:37:14 +01:00
Ben Noordhuis
56e34c2f81 http: fix deprecation warning module ID
Mea culpa, I told @mmalecki wrong
2012-01-21 14:34:33 +01:00
Igor Zinkovsky
de78922b12 ref isolate loop 2012-01-20 18:03:05 -08:00
Andreas Madsen
f9a47debfc Add cluster.setupMaster
Fixes #2470
2012-01-20 13:09:56 -08:00
Ben Noordhuis
6b5853794d build: disable NDEBUG in release builds for now
assert() sanity checks are a good thing.
2012-01-20 16:00:27 +01:00
Ben Noordhuis
4e5247772d fs, handle_wrap: use Loop(), not uv_default_loop()
Using the default loop will fail in unexpected and interesting ways when
isolates are used.
2012-01-20 15:57:50 +01:00
Shigeki Ohtsu
2156e5eca1 fs: don't assert on uv_fs_*() errors
Pass errors to the JS callbacks, don't assert in C++ land.

Fixes among other things the case where Node aborts because uv_fs_futimes()
returns ENOSYS.
2012-01-20 14:46:07 +01:00
Ben Noordhuis
0f33768059 v8: link against libsocket and libnsl on sunos
The V8 debugger requires BSD socket support. Solaris-like systems obviously
support that but you need to link against the right libraries, it's not part of
libc.
2012-01-19 23:09:00 +00:00
Ben Noordhuis
90587b1ccb v8: implement VirtualMemory class on SunOS
Unbreaks build on SunOS. Re-applies 4908e5bf7a.
2012-01-19 22:46:20 +00:00
Ingmar Runge
0ca30187cf Crypto: adding ability to turn off automatic PKCS padding 2012-01-18 21:20:25 +01:00
Ben Noordhuis
ad42a82df5 build: remove node_debug from config.gypi 2012-01-18 02:00:43 +01:00
Dan Williams
29ce743385 docs: fix syntax error on cluster api docs 2012-01-17 23:29:16 +01:00
Ben Noordhuis
e493b29598 build: respect --debug configure switch 2012-01-17 23:03:21 +01:00
Andreas Madsen
4a38795b6f Add failing test case: parent on('exit')
Fixes #2564
2012-01-17 11:43:21 -08:00
Andreas Madsen
70884875c9 Allow calling fork() without args or options
Closes GH-2424
2012-01-17 19:07:57 +01:00
Ryan Dahl
21dd53f9d3 Makefile: Don't force user to run ./configure first 2012-01-16 23:28:29 -08:00
Fedor Indutny
6e76a7cb45 installer: install node-waf
* added --without-waf flag for configure script
2012-01-16 21:56:05 -08:00
Ryan Dahl
72cbb7492c Now working on v0.7.1-pre 2012-01-16 19:46:36 -08:00
Ryan Dahl
9cc55dca6f Bump version to v0.7.0 2012-01-16 19:00:41 -08:00
Ryan Dahl
716f5bc66b Add make dist-upload 2012-01-16 18:52:36 -08:00
Ryan Dahl
317ba9fb64 Fix 'make dist' 2012-01-16 18:40:29 -08:00
Igor Zinkovsky
2c1025706b upgrade libuv to 52511b9ddc 2012-01-16 17:24:53 -08:00
Igor Zinkovsky
ab18d72b35 fix windows build 2012-01-16 16:46:23 -08:00
Ryan Dahl
ca2a047b8e Merge remote branch 'origin/v0.6'
Conflicts:
	deps/uv/src/win/util.c
	src/udp_wrap.cc
2012-01-16 15:20:26 -08:00
Ryan Dahl
7584225873 Upgrade libuv to joyent/libuv@f5bd21f 2012-01-16 15:15:34 -08:00
Igor Zinkovsky
95844451b6 fix windows build 2012-01-16 14:44:49 -08:00
Ryan Dahl
60040a4f36 Upgrade V8 to 3.8.6 2012-01-16 14:37:57 -08:00
Ryan Dahl
1afd0b52fe Revert "gyp: install node-gyp"
No.

This reverts commit 3d1476a316.
2012-01-16 14:07:35 -08:00
Fedor Indutny
3d1476a316 gyp: install node-gyp
* fixes #2480
2012-01-17 02:44:26 +06:00
Maciej Małecki
d5047f5fe6 http: use util._deprecationWarning for deprecation warning 2012-01-16 19:45:14 +01:00
Fedor Indutny
f0c629a36b uv: upgrade to e7758e1 2012-01-16 20:18:37 +06:00
Fedor Indutny
03e689fae4 Revert "util: always display a warning for module in debug mode"
This reverts commit df62005ece.
2012-01-16 19:33:16 +06:00
Maciej Małecki
df62005ece util: always display a warning for module in debug mode 2012-01-16 19:19:56 +06:00
Fedor Indutny
23de33968f querystring: fix maxKeys = 0 is ignored 2012-01-16 16:36:24 +06:00
Fedor Indutny
f1678bfc65 http: do not accept headers if limit is exceeded
* fix limiting when parser was reused
* fix maxHeadersCount = 0 is ignored ( credit to @koichik )
* add test-http-max-headers-count.js ( credit to @koichik )
2012-01-16 16:36:23 +06:00
Ben Noordhuis
03cb903e7e isolates: remove references to uv_thread_self()
uv_thread_self() is difficult to implement on Windows in a way where the return
value is valid across threads. It's already been removed from upstream libuv.
2012-01-16 01:41:29 +01:00
Fedor Indutny
8a98c2f1d8 http, querystring: added limits to prevent DoS 2012-01-16 02:45:05 +06:00
Ben Noordhuis
93465d3051 build: support --dest-cpu configure switch again 2012-01-15 16:50:58 +01:00
Fedor Indutny
220288725f test-eio-limit: add missing copyright headers 2012-01-14 23:51:53 +06:00
Fedor Indutny
e03b42d1bb Add failing test-eio-limit.js 2012-01-14 23:48:56 +06:00
Nathan Rajlich
f2ba4cef2a build: remove the old -DPLATFORM="mac" define
To prevent redefinition warnings.
2012-01-12 15:11:02 +01:00
Nathan Rajlich
9ff86a2848 build: set process.platform to "darwin" on OS X
This is consistent with the old waf build system, and doesn't break old scripts
that are expecting the value to be "darwin".

Fixes #2518.
2012-01-12 15:10:11 +01:00
koichik
7dffbaf2ce http: Upgrade/CONNECT request should detach its socket earlier
With Upgrade or CONNECT request, http.ClientRequest emits 'close' event
after its socket is closed. However, after receiving a response, the socket
is not under management by the request.

http.ClientRequest should detach the socket before 'upgrade'/'connect'
event is emitted to pass the socket to a user. After that, it should
emit 'close' event immediately without waiting for closing of the socket.

Fixes #2510.
2012-01-12 14:17:19 +09:00
Fedor Indutny
71ae175319 zlib: reset() method for deflate/inflate streams
* ammended test-zlib-dictionary to cover reusing streams
2012-01-12 03:19:19 +06:00
Fedor Indutny
89556f5a2f zlib: C++ style fixes for dictionary 2012-01-12 03:11:31 +06:00
Fedor Indutny
9e6957b0a5 Merge branch 'v0.6'
Conflicts:
	src/handle_wrap.cc
	src/node_zlib.cc
	src/process_wrap.cc
2012-01-12 02:17:44 +06:00
Mathias Bynens
8abb73ef58 punycode: Update to v0.3.0 2012-01-11 10:42:39 +01:00
Andreas Madsen
c8108aad83 child_process: fix typo in internal message event name 2012-01-11 09:59:50 +01:00
Maciej Małecki
4d49469d0d child_process: fix typo in internal message event name 2012-01-10 23:16:07 +01:00
Ryan Dahl
e1b829d2a5 Add broken test-isolates3.js 2012-01-10 12:04:19 -08:00
Ryan Dahl
d4ee61ffc7 Add failing test-isolates2.js 2012-01-10 11:48:02 -08:00
Fedor Indutny
4cbcdb4b2c test: make debugger-repl tests work with isolates 2012-01-10 16:48:45 +01:00
Ben Noordhuis
7cee968c21 isolates: add process-global list of isolates 2012-01-10 16:46:41 +01:00
Fedor Indutny
6b2091b58a debug threads 2012-01-10 02:28:49 +01:00
Fedor Indutny
99679c6430 IsolateDebugger C++ 2012-01-10 02:28:42 +01:00
Fedor Indutny
44e7033279 fixed debugger segfaults 2012-01-10 02:19:14 +01:00
Fedor Indutny
a5f74b4da7 added isolates support 2012-01-10 02:19:14 +01:00
Ben Noordhuis
97e4b3a7bf isolates: drain message queue completely 2012-01-10 02:09:08 +01:00
Andreas Madsen
787f62de8c Improve test-child-process-silent 2012-01-09 13:04:13 -08:00
Ryan Dahl
b28e700ebd require('sys') now throws
To be removed in v0.9
2012-01-09 12:59:28 -08:00
Ryan Dahl
8b28d599a7 Merge remote branch 'origin/v0.6'
Conflicts:
	Makefile
	configure
	src/node_version.h
2012-01-09 11:20:22 -08:00
koichik
08a91acd76 http: better support for CONNECT method.
Introduces 'connect' event on both client (http.ClientRequest) and
server (http.Server).

Refs: #2259, #2474.
Fixes #1576.
2012-01-09 03:51:06 +01:00
koichik
c1a63a9e90 tls: Allow establishing secure connection on the existing socket
This is necessary to use SSL over HTTP tunnels.

Refs #2259, #2474.
Fixes #2489.
2012-01-09 02:31:46 +01:00
koichik
70033bd960 net: make connect() accept options
This makes API even with tls.connect().
Refs #1983.

See also:
http://groups.google.com/group/nodejs-dev/msg/3b6dbcc4a9a82d99

Fixes #2487.
2012-01-09 02:18:39 +01:00
Maciej Małecki
0321adbcf4 tls doc: update docs to reflect API change
Refs #1983.
2012-01-08 11:13:36 +01:00
Maciej Małecki
39484f49ef test tls: make tests use new tls.connect API
Refs #1983.
2012-01-08 11:13:28 +01:00
Maciej Małecki
df0edf5fe6 https: make https use new tls.connect API
Refs #1983.
2012-01-08 11:13:18 +01:00
Maciej Małecki
4b4d059791 tls: make tls.connect accept port and host in options
Previous API used form:

    tls.connect(443, "google.com", options, ...)

now it's replaced with:

    tls.connect({port: 443, host: "google.com", ...}, ...)

It simplifies argument parsing in `tls.connect` and makes the API
consistent with other parts.

Fixes #1983.
2012-01-08 11:12:56 +01:00
Ryan Dahl
8e5674fb5c Upgrade V8 to 3.8.5 2012-01-06 13:03:06 -08:00
Ben Noordhuis
42281124d4 child_process: add isolates support
Passing an options object with {thread:true} to .fork() or .spawn() will run the
target script in a thread instead of a separate process.
2012-01-06 00:47:14 +01:00
Ben Noordhuis
1e73e4c62f isolates: remove global isolates list
No longer necessary, each isolate now waits until its subordinate isolates have
exited.
2012-01-06 00:45:27 +01:00
Ben Noordhuis
dadc30318f isolates: implement message passing
Parent and child isolates can now pass arbitrary binary messages between each
other. The messages are sent and received through a thread-safe queue that
wakes up the event loop of the receiving thread.
2012-01-06 00:42:55 +01:00
Ben Noordhuis
075acfa2d6 uv: upgrade to 56a31f0 2012-01-06 00:00:40 +01:00
Emerson Macedo
aa67b1f375 fs: add appendFile() and appendFileSync() functions 2012-01-05 21:39:57 +01:00
Mikael Bourges-Sevenier
5b05429bf0 typed arrays: add Buffer -> TypedArray constructor
- create a typed array from a node::Buffer object
- update TypedArray::set() to spec
- add TypedArray::get() method
2012-01-05 20:56:41 +01:00
Shigeki Ohtsu
55c21970fd build: compile without -fvisibility=hidden
Fixes symbol lookup errors when loading an addon module on Linux.
2012-01-05 16:50:55 +01:00
Shigeki Ohtsu
a993d22c0f build: set product_prefix to empty for Linux 2012-01-05 16:50:44 +01:00
Andreas Madsen
e2f1e50c60 typos
fixes #2465
2012-01-05 00:31:49 -08:00
Andreas Madsen
5f08c3cfa1 cluster improvements: Worker class and isolate internal messages
Fixes #2388
2012-01-04 18:30:19 -08:00
Ben Noordhuis
e21643d618 build: fix npm-cli.js install 2012-01-04 16:36:08 +01:00
Ryan Dahl
557fc396b4 Upgrade V8 to 3.8.4 2012-01-03 11:46:53 -08:00
Ben Noordhuis
c123ac05dc Merge remote-tracking branch 'origin/v0.6'
Conflicts:
	src/udp_wrap.cc
2012-01-02 12:29:39 +01:00
Ryan Dahl
4b3824b682 Merge remote branch 'origin/isolates2' 2011-12-29 11:57:40 -08:00
Ben Noordhuis
c24276f008 net: defer net.Server 'close' event to next tick 2011-12-29 19:30:07 +01:00
Ben Noordhuis
0c3b357985 Merge branch 'isolates2' 2011-12-29 01:56:58 +01:00
Ben Noordhuis
add4cfcf5f Merge branch 'v0.6'
Conflicts:
	src/platform_win32.cc
2011-12-29 01:56:44 +01:00
Ben Noordhuis
fa43f04f6a Include ngx-queue.h, fix Windows build. 2011-12-29 01:56:11 +01:00
Ben Noordhuis
25ca13ec1a uv: upgrade to 85f6b79 2011-12-29 01:56:11 +01:00
Ben Noordhuis
cdb5864fc3 Make msbuild run in parallel. 2011-12-29 01:56:11 +01:00
Ryan Dahl
4428b70cba Add isolate version of test-child-process-fork 2011-12-29 01:56:11 +01:00
Ryan Dahl
649dbbbd83 Add process.features.isolates 2011-12-29 01:56:11 +01:00
Ryan Dahl
5fc0c27d5c move isolate V8 functions out of node.cc 2011-12-29 01:56:11 +01:00
Ryan Dahl
20ba454ef9 Add node::Loop() and don't inc node_isolate.h in *.cc
node::Loop() replaces the NODE_LOOP macro. This avoids hitting
v8::Isolate::GetCurrent() for each loop lookup when HAVE_ISOLATE==0
2011-12-29 01:56:11 +01:00
Ben Noordhuis
dd0188ec08 uv: upgrade to d6a06b8 2011-12-29 01:56:11 +01:00
Ryan Dahl
40c98a977b Add shared-buffer isolate addon test 2011-12-29 01:56:11 +01:00
Ryan Dahl
f168f7d702 Remove node_isolate.h from node.h 2011-12-29 01:56:10 +01:00
Ryan Dahl
2c560c5405 Change isolate test to demo EIO bug 2011-12-29 01:56:10 +01:00
Ryan Dahl
a0f3eb015a node_file.cc should use NODE_LOOP() 2011-12-29 01:56:10 +01:00
Ryan Dahl
268476549e Join all threads at end of main thread
Require reorganizing the isolates somewhat.

Add a very simple test.
2011-12-29 01:56:10 +01:00
Ryan Dahl
4d02e77f44 Move prog_start_time init after isolate assigned 2011-12-29 01:56:10 +01:00
Ryan Dahl
4f46ee4400 Add link-list of all isolates 2011-12-29 01:56:10 +01:00
Ryan Dahl
863f17f68c Move uv loop initialization into isolate 2011-12-29 01:56:10 +01:00
Ryan Dahl
45bb10cc32 move thread_id to node_isolate.cc 2011-12-29 01:56:10 +01:00
Ben Noordhuis
6eeb59abf6 isolates: replace SLIST with ngx_queue_t 2011-12-29 01:56:10 +01:00
Ben Noordhuis
809fdf26fb isolates: add process.tid property, pass args to isolate 2011-12-29 01:56:10 +01:00
Ben Noordhuis
ca19e792c6 isolates: have node::Isolate manage the v8::Context 2011-12-29 01:56:10 +01:00
Ben Noordhuis
ea97d6ed5f isolates: rename node::Isolate member isolate_ to v8_isolate_ 2011-12-29 01:56:10 +01:00
Ben Noordhuis
5866f1a9aa Separate per-process and per-thread init logic. 2011-12-29 01:56:10 +01:00
Ben Noordhuis
2df81c57f6 Remove per-process globals from per-thread context. 2011-12-29 01:56:10 +01:00
Ryan Dahl
828bf50a0e isolates have globals stored in struct globals 2011-12-29 01:56:09 +01:00
Ben Noordhuis
eb6e60432b isolates: add _newIsolate() and _joinIsolate() to process object 2011-12-29 01:56:09 +01:00
Ben Noordhuis
09dc577931 build: move internals to separate header file 2011-12-29 01:56:09 +01:00
Ben Noordhuis
b3d4938e3e build: add --without-isolates configure switch 2011-12-29 01:56:09 +01:00
Ben Noordhuis
66116924ed isolates: add atexit() functionality for isolates 2011-12-29 01:56:09 +01:00
Ben Noordhuis
356992fe4d isolates: isolate-ify the main loop 2011-12-29 01:56:09 +01:00
Ben Noordhuis
e9f8e28426 uv: upgrade to f5c2a4a 2011-12-29 01:56:09 +01:00
Ben Noordhuis
bc7bae1d6b Merge remote-tracking branch 'origin/v0.6'
Conflicts:
	src/platform_win32.cc
2011-12-29 01:49:10 +01:00
Ben Noordhuis
5427311ae6 uv: upgrade to 0db56ea 2011-12-29 01:43:24 +01:00
Ben Noordhuis
9143b43e98 Include ngx-queue.h, fix Windows build. 2011-12-29 00:59:06 +01:00
Ben Noordhuis
2afd20b542 uv: upgrade to 85f6b79 2011-12-29 00:18:23 +01:00
Ben Noordhuis
59faab4330 Make msbuild run in parallel. 2011-12-28 23:56:53 +01:00
Ryan Dahl
b7c05e1b75 Upgrade V8 to 3.8.3 2011-12-28 14:13:50 -08:00
koichik
b037c16f55 test: fix test-sys.js fails if the time zone is not CET
Fixes #2423.
2011-12-28 15:18:11 +09:00
Ryan Dahl
b319699132 Add isolate version of test-child-process-fork 2011-12-27 18:11:32 -08:00
Ryan Dahl
036e59394a Add process.features.isolates 2011-12-27 13:06:25 -08:00
Ryan Dahl
533a455274 move isolate V8 functions out of node.cc 2011-12-27 12:54:25 -08:00
Ryan Dahl
9d792f3183 Add node::Loop() and don't inc node_isolate.h in *.cc
node::Loop() replaces the NODE_LOOP macro. This avoids hitting
v8::Isolate::GetCurrent() for each loop lookup when HAVE_ISOLATE==0
2011-12-27 12:54:25 -08:00
Ben Noordhuis
c481f97a9c uv: upgrade to d6a06b8 2011-12-27 12:54:24 -08:00
Ryan Dahl
02f24f54ba Add shared-buffer isolate addon test 2011-12-27 12:54:24 -08:00
Ryan Dahl
87bb848268 Remove node_isolate.h from node.h 2011-12-27 12:54:23 -08:00
Ryan Dahl
8c476371f5 Change isolate test to demo EIO bug 2011-12-27 12:54:23 -08:00
Ryan Dahl
a8506c41c6 node_file.cc should use NODE_LOOP() 2011-12-27 12:54:23 -08:00
Ryan Dahl
41062e71a7 Join all threads at end of main thread
Require reorganizing the isolates somewhat.

Add a very simple test.
2011-12-27 12:54:23 -08:00
Ryan Dahl
2d8c1fe1ed Move prog_start_time init after isolate assigned 2011-12-27 12:54:23 -08:00
Ryan Dahl
1a433b9637 Add link-list of all isolates 2011-12-27 12:54:23 -08:00
Ryan Dahl
78a25696f1 Move uv loop initialization into isolate 2011-12-27 12:54:23 -08:00
Ryan Dahl
39a492799d move thread_id to node_isolate.cc 2011-12-27 12:54:22 -08:00
Ben Noordhuis
469cb1b7b7 isolates: replace SLIST with ngx_queue_t 2011-12-27 12:54:22 -08:00
Ben Noordhuis
d329fc7b09 isolates: add process.tid property, pass args to isolate 2011-12-27 12:54:22 -08:00
Ben Noordhuis
3063ba0800 isolates: have node::Isolate manage the v8::Context 2011-12-27 12:54:22 -08:00
Ben Noordhuis
9d71e74491 isolates: rename node::Isolate member isolate_ to v8_isolate_ 2011-12-27 12:54:22 -08:00
Ben Noordhuis
3aadd4fe76 Separate per-process and per-thread init logic. 2011-12-27 12:54:22 -08:00
Ben Noordhuis
8a538ce372 Remove per-process globals from per-thread context. 2011-12-27 12:54:22 -08:00
Ryan Dahl
9caeceef6d isolates have globals stored in struct globals 2011-12-27 12:54:21 -08:00
Ben Noordhuis
edbec3f8f3 isolates: add _newIsolate() and _joinIsolate() to process object 2011-12-27 12:54:21 -08:00
Ben Noordhuis
a778a25cab build: move internals to separate header file 2011-12-27 12:54:21 -08:00
Ben Noordhuis
39e2c469db build: add --without-isolates configure switch 2011-12-27 12:54:20 -08:00
Ben Noordhuis
2a7a2ca986 isolates: add atexit() functionality for isolates 2011-12-27 12:54:20 -08:00
Ben Noordhuis
c3346f6760 isolates: isolate-ify the main loop 2011-12-27 12:54:20 -08:00
Ben Noordhuis
0d5a6b2d9d uv: upgrade to f5c2a4a 2011-12-27 12:54:19 -08:00
koichik
b962ff35dd tls: fix test-https-client-reject fails
Fixes #2417.
2011-12-27 17:33:23 +09:00
koichik
e6b6075024 http: Avoid 'data'/'end' events after pause()
Fixes #1040.
2011-12-26 16:14:47 +01:00
Ryan Dahl
48a9a2d355 Add deprecation message for http.Client 2011-12-23 17:42:27 -08:00
Ryan Dahl
c2d9e62f16 Merge remote branch 'origin/v0.6'
Conflicts:
	deps/v8/src/version.cc
2011-12-23 15:58:11 -08:00
Ryan Dahl
e4731f8168 Upgrade V8 to 3.8.2.1 2011-12-23 15:57:10 -08:00
Ryan Dahl
624f70e88f GYP: rename options.gypi to config.gypi
Sounds more familiar to unix users used to config.h
2011-12-23 14:25:17 -08:00
Ryan Dahl
6ac22bfb04 Add gitignore file for addon tests 2011-12-21 14:18:56 -08:00
Ryan Dahl
60a9e1e40f Upgrade GYP to r1115 2011-12-21 12:39:36 -08:00
Ryan Dahl
f7f8af8420 Merge remote branch 'origin/v0.6'
Conflicts:
	Makefile
	lib/_debugger.js
2011-12-21 12:17:23 -08:00
Ryan Dahl
4eaf4ce26a Upgrade V8 to 3.8.2 2011-12-21 10:54:24 -08:00
Ben Noordhuis
a82f5389d9 deps: fix openssl build on x86_64 2011-12-21 18:35:50 +01:00
Ben Noordhuis
b24c515dbf uv: upgrade to 10de090 2011-12-21 16:59:53 +01:00
Ryan Dahl
18b92201be Support addons with gyp
Initial pass.
2011-12-20 22:03:35 -08:00
Ryan Dahl
7edfb02984 Remove visibility=hidden options from common.gypi
Not necessary and preventing addon loading.
2011-12-20 22:02:50 -08:00
Ryan Dahl
6c5f1f58f3 Remove unnecessary stuff from node.gyp 2011-12-20 20:26:13 -08:00
Ryan Dahl
b603578b53 Fix 'make install'
Broken in 45605c because configure does not spit out proper JavaScript.
Needed to change single quotes to double.
2011-12-19 18:06:21 -08:00
Ben Noordhuis
aac717da8d Add missing return statement in _debugPause() binding. 2011-12-20 00:34:19 +01:00
jbergstroem
45605c9b39 gyp: switch json for pprint when generating config 2011-12-20 00:10:57 +01:00
jbergstroem
f9994114ab build: remove unused cmakelist 2011-12-20 00:10:49 +01:00
Maciej Małecki
5c7532e5b3 assert: test RegExp's properties when checking for equality
Previous code ignored the fact that `/a/ != /a/g`.

Test case included.
2011-12-20 00:10:49 +01:00
Pedro Teixeira
a805012d6f assert: .deepEqual() support for RegExp objects 2011-12-20 00:10:38 +01:00
Ben Noordhuis
213b8af2f6 gyp: include opensslconf.h on x64
Good news, it means we don't have to compile with OPENSSL_NO_ASM=1 after all.
2011-12-19 23:24:29 +01:00
Ben Noordhuis
15d0fa6dc1 gyp: compile openssl with OPENSSL_NO_ASM=1
Fixes linker error "undefined reference to `OPENSSL_ia32_cpuid'". This is
sub-optimal and needs to be revisited, the plain C implementations are often
much slower.
2011-12-19 22:55:11 +01:00
Ryan Dahl
c65a91c96f GYP: don't build V8 twice 2011-12-19 13:41:04 -08:00
Fedor Indutny
802c4c6a61 debugger: document pause and setBreakpoint(line)
Fixes #2381
2011-12-19 13:29:21 -08:00
Andreas Madsen
3966e4e7a5 Remove debug console.log and optimize object copy
Fixes #2380
2011-12-19 13:25:19 -08:00
Ryan Dahl
21e7292ea0 Upgrade V8 to 3.8.1 2011-12-19 13:06:37 -08:00
Andreas Madsen
07b1997388 Add env argument to cluster.fork
Fixes 2378
2011-12-19 12:34:59 -08:00
Fedor Indutny
80858761a8 break on exception
Fixes #2304
2011-12-19 11:09:40 -08:00
Fedor Indutny
a239ea0d40 use inlineRefs, as it's already impl 2011-12-19 11:09:16 -08:00
Fedor Indutny
b00b2f08bf pass noRefs as arguments 2011-12-19 11:09:16 -08:00
Fedor Indutny
b0388ccad0 pause command 2011-12-19 11:09:16 -08:00
Fedor Indutny
07ad11916f allow setBreakpoint(line) 2011-12-19 11:09:16 -08:00
Fedor Indutny
c07edd90f5 preserve cursor pos
* configurable via .prompt()'s preserveCursor argument (false by default)
2011-12-19 11:09:16 -08:00
Fedor Indutny
d9377f5eb0 request backtrace w/o refs, see #1745 2011-12-19 11:09:16 -08:00
Nathan Rajlich
855f46677c test: Add test case for MODULE_NOT_FOUND. 2011-12-19 23:47:07 +09:00
Nathan Rajlich
ec11525d33 docs: Add docs for MODULE_NOT_FOUND error. 2011-12-19 23:47:02 +09:00
Nathan Rajlich
3f987cd925 module: Set the error.code to 'MODULE_NOT_FOUND' when a bad path is given to require.
Fixes #2358.
2011-12-19 23:46:41 +09:00
Ryan Dahl
bb8f73419c Fix make targets so they detect changes
Broken in 10d92b3
2011-12-18 15:12:25 -08:00
Avi Flax
ee0a7b928b util: output Dates with Date.toString not Date.toUTCString 2011-12-18 23:07:47 +01:00
Andreas Madsen
b084322f52 Add silent option to child_process.fork
Fixes #2354.
2011-12-17 12:53:44 -08:00
Ryan Dahl
10d92b3dcd saner targets 2011-12-17 03:23:17 -08:00
Fedor Indutny
a9f2c4aa30 --without-npm option
Fixes #2353.
2011-12-17 00:39:04 -08:00
Ryan Dahl
e61de70c96 gyp: use built-in openssl by default 2011-12-16 15:00:23 -08:00
Ryan Dahl
64de69c1a4 Upgrade GYP to r1107 2011-12-16 14:06:29 -08:00
Ryan Dahl
1865b11dcb Merge remote branch 'origin/v0.6'
Conflicts:
	wscript
2011-12-16 13:57:36 -08:00
Ryan Dahl
67e12a0f84 Remove UVTEST from makefile 2011-12-16 13:46:42 -08:00
Ryan Dahl
01e4fe5fbc upgrade libuv to cb70db1 2011-12-16 13:35:08 -08:00
Igor Zinkovsky
45822da46a fix windows build 2011-12-15 18:42:03 -08:00
Igor Zinkovsky
500c8f45f5 Remove platform files, and use uv platform api 2011-12-15 18:01:22 -08:00
Igor Zinkovsky
88cc688731 fix windows build 2011-12-15 17:20:49 -08:00
Igor Zinkovsky
da3356bb38 upgrade libuv to 8e50b6043da7b3221f51b3158033255c9a210d08 2011-12-15 15:56:42 -08:00
Ryan Dahl
de5ba2db25 Don't print args from gyp_node 2011-12-15 13:19:36 -08:00
Robert Mustacchi
2240486d3d Add process.abort 2011-12-14 17:02:15 -08:00
Ryan Dahl
b3a7de15b7 Upgrade V8 to 3.8.0 2011-12-14 15:02:32 -08:00
Fedor Indutny
be23c51f69 Implement make install
Fixes #2331, #2197, #2283
2011-12-14 14:41:44 -08:00
Ben Noordhuis
bdd19ab40b build: update 'make install' warning message 2011-12-14 02:49:34 +01:00
Igor Zinkovsky
06a22e2ea1 fix windows build 2011-12-09 17:24:37 -08:00
Ryan Dahl
c5e51cead8 Move lock back to node_crypto.cc 2011-12-08 15:58:29 -08:00
Ryan Dahl
3d3f29cf06 Remove wscript 2011-12-08 15:10:26 -08:00
Ryan Dahl
cced79d4a8 Move a few more global vars into struct 2011-12-08 15:09:47 -08:00
Ryan Dahl
e10fd321e4 move global vars from platfrom, node_signal_watcher to struct 2011-12-07 18:03:18 -08:00
Ryan Dahl
59055b227a Move node_buffer.cc globals to struct 2011-12-07 16:01:46 -08:00
Ryan Dahl
e53e9c72cb move global vars for node_file.cc, node_zlib.cc, and node_crypto.cc 2011-12-07 15:44:33 -08:00
Ryan Dahl
06d86ebe84 Move node_http_parser.cc global vars into node_vars.h 2011-12-07 13:31:55 -08:00
koichik
f8c335d0ca tls: enable rejectUnauthorized option to client
Fiexes #2247.
2011-12-07 22:47:06 +09:00
Ryan Dahl
e0a207c27a Begin moving static vars into struct for isolates.
Only node.cc, stream_wrap.cc, and tcp_wrap.cc have been done. The rest still
need work.
2011-12-07 01:14:54 -08:00
Ryan Dahl
ebe0fb697a Merge remote branch 'origin/v0.6' 2011-12-06 17:04:51 -08:00
Ryan Dahl
2003593143 Merge remote branch 'origin/v0.6'
Conflicts:
	deps/v8/src/debug.cc
	deps/v8/src/version.cc
	src/node_version.h
2011-12-06 11:50:54 -08:00
Fedor Indutny
e609195202 [zlib] added dictionary support 2011-12-05 17:58:31 -08:00
Ryan Dahl
21d081fd7f Upgrade V8 to 3.7.12 2011-12-05 16:29:01 -08:00
Ben Noordhuis
e90623edc2 gyp: upgrade to r1103 2011-12-03 21:28:17 +01:00
Ben Noordhuis
49ba55b100 Merge branch 'v0.6'
Conflicts:
	src/node_version.h
2011-12-02 16:34:33 +01:00
Ben Noordhuis
f44d0b9044 crypto: throw exception on unknown digest method
Fixes #2227.
2011-11-30 14:27:53 +01:00
Ben Noordhuis
bbd976b8c4 build: always compile with large file support
Fixes a nasty sizeof(struct stat) mismatch bug that caused random crashes and
silent memory corruption.
2011-11-30 02:28:12 +01:00
eddy_me08@yahoo.com
eda15387a0 build: regenerate out/Makefile from within the main Makefile
Fixes #2147.
2011-11-29 19:35:58 +01:00
Ben Noordhuis
a033261f39 build: DRY configure script 2011-11-29 16:30:35 +01:00
Ben Noordhuis
2445fb8bdd Fix double #define of NODE_VERSION_IS_RELEASE 2011-11-27 02:09:15 +01:00
Ben Noordhuis
1cf13bca19 build: compile with -D__DARWIN_64_BIT_INO_T on OS X
Fixes a struct stat size mismatch on 64 bits machines that made Node crash with
a EXC_BAD_ACCESS on startup.

Fixes #2061 for gyp builds. Solution proposed by Paddy Byers.
2011-11-25 16:53:38 +01:00
Bert Belder
cffd0bb68d Merge branch 'v0.6'
Conflicts:
	Makefile
	src/node_version.h
	test/simple/test-http-response-no-headers.js
2011-11-25 12:34:29 +01:00
Ben Noordhuis
1db9a2adbe build: print "not yet implemented" warning on make install 2011-11-23 13:27:53 +01:00
Ryan Dahl
8595981195 Merge remote branch 'origin/v0.6'
Conflicts:
	Makefile
	src/node_version.h
	test/simple/test-crypto.js
2011-11-22 13:01:10 -08:00
Felix Geisendörfer
b3f91f15b2 Remove support for multi-source pipe()
This reverts 6c5b31bd which had too few use cases, too much complexity,
and can be handled in user-land by using `{end: false}`.

Closes #1996
2011-11-22 08:51:19 -08:00
isaacs
e543b0e95e zlib: Fix invalidly failing test 2011-11-22 08:51:19 -08:00
Maciej Małecki
3f862cf179 test: stdin isn't closed after resume() and pause()
This works on `node v0.4.12`, but doesn't work on `node v0.6.2`
2011-11-21 12:34:19 +01:00
Ryan Dahl
585936157c Add missing rm 2011-11-18 12:03:35 -08:00
Ben Noordhuis
a808ab4ac4 crypto: use the libuv rwlock API 2011-11-18 13:07:13 +01:00
Ben Noordhuis
1b2d333ee3 uv: upgrade to e4680cc 2011-11-18 13:07:01 +01:00
Ryan Dahl
48d21dd541 Force makefile generation in gyp 2011-11-17 17:30:30 -08:00
Paddy Byers
4f8d6d0834 build: fix gyp xcode project generator
Only attempt to generate FrameworkPhase output for code targets.
2011-11-17 23:49:55 +01:00
Ben Noordhuis
29d8ff51c8 build: remove v8-node.gyp 2011-11-17 23:48:40 +01:00
Ben Noordhuis
534e41b474 crypto: make verify() return true or false, not 1 or 0
It's what the documentation says it should return.
2011-11-17 21:17:21 +01:00
Ben Noordhuis
bed405cfea Merge remote branch 'origin/v0.6' 2011-11-17 20:06:50 +00:00
E. Azer Koçulu
e258169666 util: remove the line requiring events 2011-11-17 20:21:48 +01:00
Ben Noordhuis
4f38c5ece3 test: add 'response body with no headers' http test
HTTP/0.9 - fails with a parse error
HTTP/1.0 - works
HTTP/1.1 - fails with an empty response body

See #1711.
2011-11-17 16:32:09 +01:00
Ben Noordhuis
8f15582ef3 test: add 'no response headers' http parser test 2011-11-17 13:36:29 +01:00
Ryan Dahl
40cb398867 Working on v0.7.0 2011-11-16 13:38:04 -08:00
Ryan Dahl
93dc713670 Merge remote branch 'origin/v0.6' 2011-11-16 13:37:20 -08:00
Łukasz Walukiewicz
5d0b5a00aa buffer: fix minimum values for writeInt*() functions 2011-11-16 21:27:26 +01:00
Ben Noordhuis
cf2ee19049 crypto: fix 'var may be used uninitialized' compiler warnings 2011-11-15 22:56:11 +01:00
Ben Noordhuis
b9e1bb3d92 build: auto-run tools/gyp_node after ./configure 2011-11-15 17:17:05 +01:00
Ryan Dahl
14b04b06b4 Remove SCONS deprecate WAF
We keep around WAF for node-waf only.

We need great diligence by people over the next couple weeks to work out all
the kinks in the GYP build system. We realize that it is currently several
times slower than the WAF build. Please lend a hand.

Fixes #1504
Fixes #1500
2011-11-14 19:17:42 -08:00
5734 changed files with 624314 additions and 240761 deletions

8
.gitignore vendored
View File

@@ -18,6 +18,7 @@ node_g
# various stuff that VC++ produces/uses
Debug/
Release/
!doc/blog/**
*.sln
!nodemsi.sln
*.suo
@@ -31,9 +32,14 @@ ipch/
*.sdf
*.opensdf
/options.gypi
/config.mk
/config.gypi
*-nodegyp*
/gyp-mac-tool
/dist-osx
/npm.wxs
/tools/msvs/npm.wixobj
email.md
deps/v8-*
./node_modules
.svn/

104
.mailmap Normal file
View File

@@ -0,0 +1,104 @@
Aaron Heckmann <aaron.heckmann@gmail.com> <aaron.heckmann+github@gmail.com>
Abe Fettig <abefettig@gmail.com> <abe@fettig.net>
Alex Kocharin <rlidwka@kocharin.ru>
Alex Kocharin <rlidwka@kocharin.ru> <alex@kocharin.ru>
Alexis Sellier <self@cloudhead.net>
Alexis Sellier <self@cloudhead.net> <alexis@cloudhead.io>
Arlo Breault <arlolra@gmail.com>
Artem Zaytsev <a.arepo@gmail.com>
Atsuo Fukaya <fukayatsu@gmail.com>
Ben Noordhuis <info@bnoordhuis.nl> <bnoordhuis@bender.(none)>
Bert Belder <bertbelder@gmail.com> <bert@piscisaureus2.(none)>
Bert Belder <bertbelder@gmail.com> <piscisaureus@Berts-MacBook-Pro.local>
Brandon Benvie <brandon@bbenvie.com> <brandon@brandonbenvie.com>
Brian White <mscdex@mscdex.net>
Brian White <mscdex@mscdex.net> <mscdex@gmail.com>
Chew Choon Keat <choonkeat@gmail.com>
Christopher Lenz <cmlenz@gmail.com> <chris@lamech.local>
Daniel Berger <code+node@dpbis.net>
Daniel Chcouri <333222@gmail.com>
Daniel Gröber <darklord@darkboxed.org>
Daniel Gröber <darklord@darkboxed.org> <dxld@darkboxed.org>
Daniel Pihlström <sciolist.se@gmail.com>
David Siegel <david@artcom.de> <david.siegel@artcom.de>
Domenic Denicola <domenic@domenicdenicola.com>
Eduard Burtescu <eddy_me08@yahoo.com>
Einar Otto Stangvik <einaros@gmail.com>
Elliott Cable <me@ell.io>
EungJun Yi <semtlenori@gmail.com>
Evan Larkin <evan.larkin.il.com> <evan.larkin.iit@gmail.com>
Farid Neshat <FaridN_SOAD@yahoo.com>
Felix Geisendörfer <felix@debuggable.com>
Felix Geisendörfer <felix@debuggable.com>
Friedemann Altrock <frodenius@gmail.com>
Fuji Goro <gfuji@cpan.org>
Gabriel de Perthuis <g2p.code@gmail.com>
Herbert Vojčík <herby@mailbox.sk>
Igor Zinkovsky <igorzi@microsoft.com>
Isaac Z. Schlueter <i@izs.me>
Isaac Z. Schlueter <i@izs.me> <i@foohack.com>
Jérémy Lal <kapouer@melix.org>
Jérémy Lal <kapouer@melix.org> <holisme@gmail.com>
Jered Schmidt <tr@nslator.jp>
Joe Shaw <joe@joeshaw.org> <joeshaw@litl.com>
Johan Bergström <bugs@bergstroem.nu>
Johan Dahlberg <jfd@distrop.com> <dahlberg.johan@gmail.com>
Jonas Pfenniger <jonas@pfenniger.name> <jonas@stvs.ch>
Jonathan Rentzsch <jwr.git@redshed.net>
Joshua S. Weinstein <josher19@users.sf.net>
Koichi Kobayashi <koichik@improvement.jp>
Kris Kowal <kris.kowal@cixar.com>
Kyle Robinson Young <kyle@dontkry.com>
Mathias Pettersson <mape@mape.me>
Michael Bernstein <michaelrbernstein@gmail.com>
Michael Wilber <gcr@sneakygcr.net>
Micheil Smith <micheil@brandedcode.com> <micheil@yettobebranded.net>
Mikael Bourges-Sevenier <mikeseven@gmail.com> <msevenier@motorola.com>
Nebu Pookins<nebu@nebupookins.net>
Nicholas Kinsey <pyrotechnick@feistystudios.com>
Onne Gorter <onne@onnlucky.com>
Paul Querna <pquerna@apache.org> <paul@querna.org>
Ray Morgan <rmorgan@zappos.com>
Ray Solomon <raybsolomon@gmail.com>
Rick Olson <technoweenie@gmail.com>
Ryan Dahl <ry@tinyclouds.org>
Ryan Emery <seebees@gmail.com>
Sam Shull <brickysam26@gmail.com> <brickysam26@samuel-shulls-computer.local>
Sam Shull <brickysam26@gmail.com> <sshull@squaremouth.com>
Sambasiva Suda <sambasivarao@gmail.com>
San-Tai Hsu <v@fatpipi.com>
Sergey Kryzhanovsky <skryzhanovsky@gmail.com> <another@dhcp199-223-red.yandex.net>
Shannen Saez <shannenlaptop@gmail.com>
Shigeki Ohtsu <ohtsu@d.jp> <ohtsu@iij.ad.jp>
Siddharth Mahendraker <siddharth_mahen@hotmail.com> <siddharth_mahen@me.com>
Simon Willison <simon@simonwillison.net>
Stanislav Opichal <opichals@gmail.com>
Stefan Bühler <stbuehler@web.de>
Tadashi SAWADA <cesare@mayverse.jp>
Takahiro ANDO <takahiro.ando@gmail.com>
Ted Young <ted@radicaldesigns.org>
Thomas Lee <thomas.lee@shinetech.com> <tom@tom-debian.sensis.com.au>
Tim Caswell <tim@creationix.com> <tim@0-26-8-e9-4c-e1.dyn.utdallas.edu>
Tim Smart <timehandgod@gmail.com> <tim@fostle.com>
Tim Smart <timehandgod@gmail.com> <timehandgod@gmail.com>
TJ Holowaychuk <tj@vision-media.ca>
TJ Holowaychuk <tj@vision-media.ca> <tjholowayhuk@gmail.com>
Trevor Burnham <trevor@databraid.com> <trevorburnham@gmail.com>
Tyler Larson <talltyler@gmail.com>
Vincent Voyer <v@fasterize.com>
Yoshihiro KIKUCHI <yknetg@gmail.com>
Yuichiro MASUI <masui@masuidrive.jp>
Zachary Scott <zachary@zacharyscott.net> <zachary.s.scott@gmail.com>
Zoran Tomicic <ztomicic@gmail.com>
# These people didn't contribute patches to node directly,
# but we've landed their v8 patches in the node repository:
Daniel Clifford <danno@chromium.org>
Erik Corry <erik.corry@gmail.com>
Jakob Kummerow <jkummerow@chromium.org>
Kevin Millikin <kmillikin@chromium.org>
Lasse R.H. Nielsen <lrn@chromium.org>
Michael Starzinger <mstarzinger@chromium.org>
Toon Verwaest <verwaest@chromium.org>
Vyacheslav Egorov <vegorov@chromium.org>
Yang Guo <yangguo@chromium.org>

165
AUTHORS
View File

@@ -59,7 +59,7 @@ Arlo Breault <arlolra@gmail.com>
Kris Kowal <kris.kowal@cixar.com>
Jacek Becela <jacek.becela@gmail.com>
Rob Ellis <kazoomer@gmail.com>
Tim Smart <timehAndGod@gmail.com>
Tim Smart <timehandgod@gmail.com>
Herbert Vojčík <herby@mailbox.sk>
Krishna Rajendran <krishna@emptybox.org>
Nicholas Kinsey <pyrotechnick@feistystudios.com>
@@ -98,8 +98,7 @@ Jerome Etienne <jerome.etienne@gmail.com>
Dmitriy Shalashov <skaurus@gmail.com>
Adam Wiggins <adam@heroku.com>
Rick Olson <technoweenie@gmail.com>
David Siegel <david.siegel@artcom.de>
Sergey Kzyzhanovsky <skryzhanovsky@gmail.com>
Sergey Kryzhanovsky <skryzhanovsky@gmail.com>
Marco Rogers <marco.rogers@gmail.com>
Benjamin Fritsch <beanie@benle.de>
Jan Kassens <jan@kassens.net>
@@ -144,13 +143,13 @@ Daniel Gröber <darklord@darkboxed.org>
Travis Swicegood <development@domain51.com>
Oleg Slobodskoi <oleg008@gmail.com>
Jeremy Martin <jmar777@gmail.com>
Michael W <gcr@sneakygcr.net>
Michael Wilber <gcr@sneakygcr.net>
Sean Braithwaite <brapse@gmail.com>
Anders Conbere <aconbere@gmail.com>
Devin Torres <devin@devintorres.com>
Theo Schlossnagle <jesus@omniti.com>
Kai Chen <kaichenxyz@gmail.com>
Daniel C <333222@gmail.com>
Daniel Chcouri <333222@gmail.com>
Mihai Călin Bazon <mihai@bazon.net>
Ali Farhadi <a.farhadi@gmail.com>
Daniel Ennis <aikar@aikar.co>
@@ -159,59 +158,69 @@ Greg Hughes <greg@ghughes.com>
David Trejo <david.daniel.trejo@gmail.com>
Joe Walnes <joe@walnes.com>
Koichi Kobayashi <koichik@improvement.jp>
Daniel Gröber <dxld@darkboxed.org>
Konstantin Käfer <github@kkaefer.com>
Richard Rodger <richard@ricebridge.com>
Andreas Reich <andreas@reich.name>
Tony Huang <cnwzhjs@gmail.com>
Dean McNamee <dean@gmail.com>
Trevor Burnham <trevor@databraid.com>
Zachary Scott <zachary@zacharyscott.net>
Arnout Kazemier <info@3rd-Eden.com>
George Stagas <gstagas@gmail.com>
Ben Weaver <ben@orangesoda.net>
Scott McWhirter <scott.mcwhirter@joyent.com>
Jakub Lekstan <jakub.lekstan@dreamlab.pl>
Nick Campbell <nicholas.j.campbell@gmail.com>
Nebu Pookins <nebu@nebupookins.net>
Tim Baumann <tim@timbaumann.info>
Robert Mustacchi <rm@joyent.com>
Håvard Stranden <havard.stranden@gmail.com>
George Miroshnykov <george.miroshnykov@gmail.com>
Mark Cavage <mark.cavage@joyent.com>
Håvard Stranden <havard.stranden@gmail.com>
Marcel Laverdet <marcel@laverdet.com>
Alexandre Marangone <a.marangone@gmail.com>
Mark Cavage <mark.cavage@joyent.com>
Ryan Petrello <lists@ryanpetrello.com>
Fuji Goro <gfuji@cpan.org>
Siddharth Mahendraker <siddharth_mahen@hotmail.com>
Dave Pacheco <dap@joyent.com>
Mathias Buus <m@ge.tt>
Henry Rawas <henryr@schakra.com>
Yoshihiro KIKUCHI <yknetg@gmail.com>
Brett Kiefer <kiefer@gmail.com>
Mariano Iglesias <mariano@cricava.com>
Jörn Horstmann <git@jhorstmann.net>
Joe Shaw <joeshaw@litl.com>
Alex Xu <alex_y_xu@yahoo.ca>
Kip Gebhardt <kip.gebhardt@voxer.com>
Stefan Rusu <saltwaterc@gmail.com>
Wojciech Wnętrzak <w.wnetrzak@gmail.com>
Reid Burke <me@reidburke.com>
Joe Shaw <joe@joeshaw.org>
Niklas Fiekas <niklas.fiekas@googlemail.com>
Adam Luikart <me@adamluikart.com>
avz <a.arepo@gmail.com>
Artem Zaytsev <a.arepo@gmail.com>
Alex Xu <alex_y_xu@yahoo.ca>
Jeremy Selier <jeremy@jolicloud.com>
Igor Zinkovsky <igorzi@microsoft.com>
Kip Gebhardt <kip.gebhardt@voxer.com>
Stefan Rusu <saltwaterc@gmail.com>
Shigeki Ohtsu <ohtsu@d.jp>
vegorov@chromium.org <vegorov@chromium.org>
Wojciech Wnętrzak <w.wnetrzak@gmail.com>
Devon Govett <devongovett@gmail.com>
Steve Engledow <steve.engledow@proxama.com>
Pierre-Alexandre St-Jean <pierrealexandre.stjean@gmail.com>
Reid Burke <me@reidburke.com>
Vicente Jimenez Aguilar <googuy@gmail.com>
SAWADA Tadashi <cesare@mayverse.jp>
Logan Smyth <loganfsmyth@gmail.com>
Christopher Wright <christopherwright@gmail.com>
Mickaël Delahaye <mickael.delahaye@gmail.com>
Tadashi SAWADA <cesare@mayverse.jp>
Jeroen Janssen <jeroen.janssen@gmail.com>
Daniel Pihlström <sciolist.se@gmail.com>
Stefan Bühler <stbuehler@web.de>
Alexander Uvarov <alexander.uvarov@gmail.com>
Aku Kotkavuo <aku@hibana.net>
Peter Bright <drpizza@quiscalusmexicanus.org>
Logan Smyth <loganfsmyth@gmail.com>
Christopher Wright <christopherwright@gmail.com>
Glen Low <glen.low@pixelglow.com>
Thomas Shinnick <tshinnic@gmail.com>
Mickaël Delahaye <mickael.delahaye@gmail.com>
Antranig Basman <antranig.basman@colorado.edu>
Maciej Małecki <maciej.malecki@notimplemented.org>
Evan Martin <martine@danga.com>
Peter Lyons <pete@peterlyons.com>
jkummerow@chromium.org <jkummerow@chromium.org>
Jann Horn <jannhorn@googlemail.com>
Abimanyu Raja <abimanyuraja@gmail.com>
Karl Skomski <karl@skomski.com>
@@ -219,7 +228,9 @@ Niclas Hoyer <niclas@verbugt.de>
Michael Jackson <mjijackson@gmail.com>
Ashok Mudukutore <ashok@lineratesystems.com>
Sean Cunningham <sean.cunningham@mandiant.com>
Vitor Balocco <vitorbal@gmail.com>
Ben Leslie <benno@benno.id.au>
Eric Lovett <etlovett@gmail.com>
Christian Tellnes <christian@tellnes.no>
Colton Baker <github@netrefuge.net>
Tyler Larson <talltyler@gmail.com>
@@ -229,7 +240,6 @@ Simen Brekken <simen.brekken@gmail.com>
Guglielmo Ferri <44gatti@gmail.com>
Thomas Parslow <tom@almostobsolete.net>
Ryan Emery <seebees@gmail.com>
Zachary Scott <zachary@zacharyscott.net>
Jordan Sissel <jls@semicomplete.com>
Matt Robenolt <matt@ydekproductions.com>
Jacob H.C. Kragh <jhckragh@gmail.com>
@@ -240,13 +250,18 @@ Mathias Bynens <mathias@qiwi.be>
Łukasz Walukiewicz <lukasz@walukiewicz.eu>
Artur Adib <arturadib@gmail.com>
E. Azer Koçulu <azer@kodfabrik.com>
Paddy Byers <paddy.byers@gmail.com>
Roman Shtylman <shtylman@gmail.com>
Kyle Robinson Young <kyle@dontkry.com>
Tim Oxley <secoif@gmail.com>
Eduard Burtescu <eddy_me08@yahoo.com>
Ingmar Runge <ingmar@irsoft.de>
Russ Bradberry <rbradberry@gmail.com>
Andreas Madsen <amwebdk@gmail.com>
Adam Malcontenti-Wilson <adman.com@gmail.com>
Avi Flax <avi@aviflax.com>
Pedro Teixeira <pedro.teixeira@gmail.com>
Johan Bergström <bugs@bergstroem.nu>
James Hartig <james.hartig@grooveshark.com>
Shannen Saez <shannenlaptop@gmail.com>
Seong-Rak Choi <ragiragi@hanmail.net>
@@ -254,6 +269,8 @@ Dave Irvine <davman99@gmail.com>
Ju-yeong Park <interruptz@gmail.com>
Phil Sung <psung@dnanexus.com>
Damon Oehlman <damon.oehlman@sidelab.com>
Mikael Bourges-Sevenier <mikeseven@gmail.com>
Emerson Macedo <emerleite@gmail.com>
Ryunosuke SATO <tricknotes.rs@gmail.com>
Michael Bernstein <michaelrbernstein@gmail.com>
Guillermo Rauch <rauchg@gmail.com>
@@ -262,8 +279,110 @@ Brandon Benvie <brandon@bbenvie.com>
Nicolas LaCasse <nlacasse@borderstylo.com>
Dan VerWeire <dverweire@gmail.com>
Matthew Fitzsimmons <matt@joyent.com>
Paddy Byers <paddy.byers@gmail.com>
Philip Tellis <philip.tellis@gmail.com>
Christopher Jeffrey <chjjeffrey@gmail.com>
Seth Fitzsimmons <seth@mojodna.net>
Einar Otto Stangvik <einaros@gmail.com>
Paul Vorbach <paul@vorb.de>
Luke Gallagher <notfornoone@gmail.com>
Tomasz Buchert <tomek.buchert@gmail.com>
Myles Byrne <myles@myles.id.au>
T.C. Hollingsworth <tchollingsworth@gmail.com>
Cam Pedersen <diffference@gmail.com>
Roly Fentanes <roly426@gmail.com>
Ted Young <ted@radicaldesigns.org>
Joshua Holbrook <josh.holbrook@gmail.com>
Blake Miner <miner.blake@gmail.com>
Vincent Ollivier <contact@vincentollivier.com>
Jimb Esser <jimb@railgun3d.com>
Sambasiva Suda <sambasivarao@gmail.com>
Sadique Ali <sadiqalikm@gmail.com>
Dmitry Nizovtsev <dmitry@ukrteam.com>
Alex Kocharin <rlidwka@kocharin.ru>
Ming Liu <vmliu1@gmail.com>
Shea Levy <shea@shealevy.com>
Nao Iizuka <iizuka@kyu-mu.net>
Christian Ress <christian@ressonline.de>
Rod Vagg <rod@vagg.org>
Matt Ezell <ezell.matt@gmail.com>
Charlie McConnell <charlie@charlieistheman.com>
Farid Neshat <FaridN_SOAD@yahoo.com>
Johannes Wüller <johanneswueller@gmail.com>
Erik Lundin <mjor.himself@gmail.com>
Bryan Cantrill <bryan@joyent.com>
Yosef Dinerstein <yosefd@microsoft.com>
Nathan Friedly <nathan@nfriedly.com>
Aaron Jacobs <jacobsa@google.com>
Mustansir Golawala <mgolawala@gmail.com>
Atsuo Fukaya <fukayatsu@gmail.com>
Domenic Denicola <domenic@domenicdenicola.com>
Joshua S. Weinstein <josher19@users.sf.net>
Dane Springmeyer <dane@dbsgeo.com>
Erik Dubbelboer <erik@dubbelboer.com>
Malte-Thorben Bruns <skenqbx@googlemail.com>
Michael Thomas <aelmalinka@gmail.com>
Garen Torikian <gjtorikian@gmail.com>
EungJun Yi <semtlenori@gmail.com>
Vincent Voyer <v@fasterize.com>
Takahiro ANDO <takahiro.ando@gmail.com>
Erwin van der Koogh <github@koogh.com>
Brian Schroeder <bts@gmail.com>
J. Lee Coltrane <lee@projectmastermind.com>
Javier Hernández <jhernandez@emergya.com>
James Koval <james.ross.koval@gmail.com>
Kevin Gadd <kevin.gadd@gmail.com>
Ray Solomon <raybsolomon@gmail.com>
Kevin Bowman <github@magicmonkey.org>
Matt Gollob <mattgollob@gmail.com>
Simon Sturmer <sstur@me.com>
Joel Brandt <joelrbrandt@gmail.com>
Marc Harter <wavded@gmail.com>
Nuno Job <nunojobpinto@gmail.com>
Ben Kelly <ben@wanderview.com>
Felix Böhm <felixboehm55@googlemail.com>
Gabriel de Perthuis <g2p.code@gmail.com>
Tim Macfarlane <timmacfarlane@gmail.com>
Jonas Westerlund <jonas.westerlund@me.com>
Dominic Tarr <dominic.tarr@gmail.com>
Justin Plock <jplock@gmail.com>
Toshihiro Nakamura <toshihiro.nakamura@gmail.com>
Ivan Torres <mexpolk@gmail.com>
Philipp Hagemeister <phihag@phihag.de>
George Shank <shankga@gmail.com>
Mike Morearty <mike@morearty.com>
Peter Rybin <peter.rybin@gmail.com>
Eugen Dueck <eugen@dueck.org>
Gil Pedersen <git@gpost.dk>
Tyler Neylon <tylerneylon@gmail.com>
Golo Roden <webmaster@goloroden.de>
Ron Korving <rkorving@wizcorp.jp>
Brandon Wilson <chlavois@gmail.com>
Bearice Ren <bearice@gmail.com>
Ankur Oberoi <aoberoi@gmail.com>
Atsuya Takagi <atsuya.takagi@gmail.com>
Pooya Karimian <pkarimian@sencha.com>
Frédéric Germain <frederic.germain@gmail.com>
Robin Lee <cheeselee@fedoraproject.org>
Adam Blackburn <regality@gmail.com>
Willi Eggeling <email@wje-online.de>
Andrew Paprocki <andrew@ishiboo.com>
Max Ogden <max@maxogden.com>
Olivier Lalonde <olalonde@gmail.com>
Francois Marier <francois@mozilla.com>
Trevor Norris <trev.norris@gmail.com>
Joshua Erickson <josh@snoj.us>
Kai Sasaki Lewuathe <sasaki_kai@lewuathe.sakura.ne.jp>
Nicolas Chambrier <naholyr@gmail.com>
Tim Bradshaw <tfb@cley.com>
Johannes Ewald <mail@johannesewald.de>
Chris Dent <chris.dent@gmail.com>
Dan Milon <danmilon@gmail.com>
Jacob Gable <jacob.gable@gmail.com>
Rick Yakubowski <richard@orpha-systems.com>
Dan Kohn <dan@dankohn.com>
Timothy J Fontaine <tjfontaine@gmail.com>
Eugene Girshov <eugene.girshov@nixu.com>
Raymond Feng <enjoyjava@gmail.com>
Tobias Müllerleile <tobias@muellerleile.net>
Daniel Chatfield <chatfielddaniel@gmail.com>
cjihrig <cjihrig@gmail.com>

145
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,145 @@
# CONTRIBUTING
The node.js project welcomes new contributors. This document will guide you
through the process.
### FORK
Fork the project [on GitHub](https://github.com/joyent/node) and check out
your copy.
```
$ git clone git@github.com:username/node.git
$ cd node
$ git remote add upstream git://github.com/joyent/node.git
```
Now decide if you want your feature or bug fix to go into the master branch
or the stable branch. As a rule of thumb, bug fixes go into the stable branch
while new features go into the master branch.
The stable branch is effectively frozen; patches that change the node.js
API/ABI or affect the run-time behavior of applications get rejected.
The rules for the master branch are less strict; consult the
[stability index page][] for details.
In a nutshell, modules are at varying levels of API stability. Bug fixes are
always welcome but API or behavioral changes to modules at stability level 3
and up are off-limits.
Node.js has several bundled dependencies in the deps/ and the tools/
directories that are not part of the project proper. Any changes to files
in those directories or its subdirectories should be sent to their respective
projects. Do not send your patch to us, we cannot accept it.
In case of doubt, open an issue in the [issue tracker][], post your question
to the [node.js mailing list][] or contact one of the [project maintainers][]
on [IRC][].
Especially do so if you plan to work on something big. Nothing is more
frustrating than seeing your hard work go to waste because your vision
does not align with that of a project maintainer.
### BRANCH
Okay, so you have decided on the proper branch. Create a feature branch
and start hacking:
```
$ git checkout -b my-feature-branch -t origin/v0.8
```
(Where v0.8 is the latest stable branch as of this writing.)
### COMMIT
Make sure git knows your name and email address:
```
$ git config --global user.name "J. Random User"
$ git config --global user.email "j.random.user@example.com"
```
Writing good commit logs is important. A commit log should describe what
changed and why. Follow these guidelines when writing one:
1. The first line should be 50 characters or less and contain a short
description of the change.
2. Keep the second line blank.
3. Wrap all other lines at 72 columns.
A good commit log looks like this:
```
Header line: explaining the commit in one line
Body of commit message is a few lines of text, explaining things
in more detail, possibly giving some background about the issue
being fixed, etc etc.
The body of the commit message can be several paragraphs, and
please do proper word-wrap and keep columns shorter than about
72 characters or so. That way `git log` will show things
nicely even when it is indented.
```
The header line should be meaningful; it is what other people see when they
run `git shortlog` or `git log --oneline`.
Have a look at `git log` for inspiration.
### REBASE
Use `git rebase` (not `git merge`) to sync your work from time to time.
```
$ git fetch upstream
$ git rebase upstream/v0.8 # or upstream/master
```
### TEST
Bug fixes and features should come with tests. Add your tests in the
test/simple/ directory. Look at other tests to see how they should be
structured (license boilerplate, common includes, etc.).
```
$ make jslint test
```
Make sure the linter is happy and that all tests pass. Please, do not submit
patches that fail either check.
### PUSH
```
$ git push origin my-feature-branch
```
Go to https://github.com/username/node and select your feature branch. Click
the 'Pull Request' button and fill out the form.
Pull requests are usually reviewed within a few days. If there are comments
to address, apply your changes in a separate commit and push that to your
feature branch. Post a comment in the pull request afterwards; GitHub does
not send out notifications when you add commits.
### CONTRIBUTOR LICENSE AGREEMENT
Please visit http://nodejs.org/cla.html and sign the Contributor License
Agreement. You only need to do that once.
[stability index page]: https://github.com/joyent/node/blob/master/doc/api/documentation.markdown
[issue tracker]: https://github.com/joyent/node/issues
[node.js mailing list]: http://groups.google.com/group/nodejs
[IRC]: http://webchat.freenode.net/?channels=node.js
[project maintainers]: https://github.com/joyent/node/wiki/Project-Organization

1213
ChangeLog

File diff suppressed because it is too large Load Diff

603
LICENSE
View File

@@ -24,63 +24,580 @@ IN THE SOFTWARE.
====
This license applies to all parts of Node that are not externally
maintained libraries.
maintained libraries. The externally maintained libraries used by Node are:
The externally maintained libraries used by Node are:
- V8, located at deps/v8. V8's license follows:
"""
This license applies to all parts of V8 that are not externally
maintained libraries. The externally maintained libraries used by V8
are:
- v8, located at deps/v8. v8 is copyright Google, Inc, and released
under a BSD license.
- PCRE test suite, located in
test/mjsunit/third_party/regexp-pcre.js. This is based on the
test suite from PCRE-7.3, which is copyrighted by the University
of Cambridge and Google, Inc. The copyright notice and license
are embedded in regexp-pcre.js.
- libev, located at deps/libev, and libeio, located at deps/libeio. libev
and libeio are copyright Marc Alexander Lehmann, and dual-licensed
under the MIT license and GPL2.
- Layout tests, located in test/mjsunit/third_party. These are
based on layout tests from webkit.org which are copyrighted by
Apple Computer, Inc. and released under a 3-clause BSD license.
- WAF build system, located at tools/waf. WAF is copyright Thomas Nagy,
and released under the MIT license.
- Strongtalk assembler, the basis of the files assembler-arm-inl.h,
assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h,
assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h,
assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h,
assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h.
This code is copyrighted by Sun Microsystems Inc. and released
under a 3-clause BSD license.
- The SCONS build system, located at tools/scons. SCONS is copyright
the SCONS Foundation and released under the MIT license.
- Valgrind client API header, located at third_party/valgrind/valgrind.h
This is release under the BSD license.
- C-Ares, an asynchronous DNS client, located at deps/c-ares. C-Ares is
copyright the Massachusetts Institute of Technology, authored by
Greg Hudson, Daniel Stenberg and others, and released under the MIT
license.
These libraries have their own licenses; we recommend you read them,
as their terms may differ from the terms below.
- Node, optionally, links to OpenSSL, it is located at deps/openssl.
OpenSSL is cryptographic software written by Eric Young
(eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL is copyright
The OpenSSL Project and released under the OpenSSL license.
Copyright 2006-2012, the V8 project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
- tools/doctool/markdown.js is copyright 2009-2010 Dominic Baggott and Ash
Berli and released under the MIT license.
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
- HTTP Parser, located at deps/http_parser, is a small C library
copyright Ryan Lienhart Dahl and released under the MIT license.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- src/platform_darwin_proctitle.cc, has code taken from the Chromium
project copyright Google Inc. and released under a BSD license.
- libev, located at deps/uv/src/unix/ev. libev's license follows:
"""
All files in libev are Copyright (C)2007,2008,2009 Marc Alexander Lehmann.
- tools/closure_linter is copyright The Closure Linter Authors and
Google Inc. and released under the Apache License, version 2.0.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
- tools/cpplint.py is copyright Google Inc. and released under a
BSD license.
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- lib/buffer_ieee754.js is copyright 2008 Fair Oaks Labs, Inc. and released
under the New BSD license.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- lib/punycode.js is copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
and released under the MIT license.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- tools/gyp GYP is a meta-build system copyright 2009 Google Inc and
licensed under the three clause BSD license. See tools/gyp/LICENSE.
Alternatively, the contents of this package may be used under the terms
of the GNU General Public License ("GPL") version 2 or any later version,
in which case the provisions of the GPL are applicable instead of the
above. If you wish to allow the use of your version of this package only
under the terms of the GPL and not to allow others to use your version of
this file under the BSD license, indicate your decision by deleting the
provisions above and replace them with the notice and other provisions
required by the GPL in this and the other files of this package. If you do
not delete the provisions above, a recipient may use your version of this
file under either the BSD or the GPL.
"""
- deps/zlib copyright 1995-2010 Jean-loup Gailly and Mark Adler
licensed under a permissive free software license. See
deps/zlib/LICENSE.
- libeio, located at deps/uv/src/unix/eio. libeio's license follows:
"""
All files in libeio are Copyright (C)2007,2008 Marc Alexander Lehmann.
- deps/npm npm is a package manager program copyright 2009, 2010, 2011
Isaac Z. Schlueter and licensed under MIT. npm includes several
subpackages MIT or Apache licenses, see deps/npm/LICENSE for more
information. npm is included in the Node .msi and .pkg distributions
but not in the Node binary itself.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Alternatively, the contents of this package may be used under the terms
of the GNU General Public License ("GPL") version 2 or any later version,
in which case the provisions of the GPL are applicable instead of the
above. If you wish to allow the use of your version of this package only
under the terms of the GPL and not to allow others to use your version of
this file under the BSD license, indicate your decision by deleting the
provisions above and replace them with the notice and other provisions
required by the GPL in this and the other files of this package. If you do
not delete the provisions above, a recipient may use your version of this
file under either the BSD or the GPL.
"""
- WAF build system, located at tools/waf*. WAF's license follows:
"""
Copyright Thomas Nagy, 2005-2011
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
"""
- C-Ares, an asynchronous DNS client, located at deps/uv/src/ares. C-Ares license
follows:
"""
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
"""
- OpenSSL located at deps/openssl. OpenSSL is cryptographic software written
by Eric Young (eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL's
license follows:
"""
/* ====================================================================
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
"""
- HTTP Parser, located at deps/http_parser. HTTP Parser's license follows:
"""
http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright
Igor Sysoev.
Additional changes are licensed under the same terms as NGINX and
copyright Joyent, Inc. and other Node contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
"""
- Closure Linter is located at tools/closure_linter. Closure's license
follows:
"""
# Copyright (c) 2007, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- tools/cpplint.py is a C++ linter. Its license follows:
"""
# Copyright (c) 2009 Google Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- lib/buffer_ieee754.js. Its license follows:
"""
// Copyright (c) 2008, Fair Oaks Labs, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
"""
- lib/punycode.js is copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
and released under the MIT license.
"""
* Punycode.js <http://mths.be/punycode>
* Copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
* Available under MIT license <http://mths.be/mit>
"""
- tools/gyp. GYP is a meta-build system. GYP's license follows:
"""
Copyright (c) 2009 Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- Zlib at deps/zlib. zlib's license follows:
"""
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.4, March 14th, 2010
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly
Mark Adler
*/
"""
- npm is a package manager program located at deps/npm.
npm's license follows:
"""
Copyright 2009-2012, Isaac Z. Schlueter (the "Original Author")
All rights reserved.
MIT +no-false-attribs License
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
Distributions of all or part of the Software intended to be used
by the recipients as they would use the unmodified Software,
containing modifications that substantially alter, remove, or
disable functionality of the Software, outside of the documented
configuration mechanisms provided by the Software, shall be
modified such that the Original Author's bug reporting email
addresses and urls are either replaced with the contact information
of the parties responsible for the changes, or removed entirely.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except where noted, this license applies to any and all software
programs and associated documentation files created by the
Original Author, when distributed with the Software.
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
part of the Node.js project, and is neither owned by nor
officially affiliated with Joyent, Inc.
Packages published in the npm registry are not part of npm
itself, are the sole property of their respective maintainers,
and are not covered by this license.
"npm Logo" created by Mathias Pettersson and Brian Hammond,
used with permission.
"Gubblebum Blocky" font
Copyright (c) 2007 by Tjarda Koster, http://jelloween.deviantart.com
included for use in the npm website and documentation,
used with permission.
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
according to the terms of the MIT license.
This program uses "request", Copyright (c) 2011 Mikeal Rogers,
according to the terms of the Apache license.
This program uses "mkdirp", Copyright (c) 2010 James Halliday,
according to the terms of the MIT/X11 license.
"""
- tools/doc/node_modules/marked. Marked is a Markdown parser. Marked's
license follows:
"""
Copyright (c) 2011-2012, Christopher Jeffrey (https://github.com/chjj/)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
"""
- test/gc/node_modules/weak. Node-weak is a node.js addon that provides garbage
collector notifications. Node-weak's license follows:
"""
Copyright (c) 2011, Ben Noordhuis <info@bnoordhuis.nl>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
"""
- src/ngx-queue.h. ngx-queue.h is taken from the nginx source tree. nginx's
license follows:
"""
Copyright (C) 2002-2012 Igor Sysoev
Copyright (C) 2011,2012 Nginx, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
"""

229
Makefile
View File

@@ -1,39 +1,65 @@
-include config.mk
BUILDTYPE ?= Release
PYTHON ?= python
WAF = $(PYTHON) tools/waf-light
DESTDIR ?=
SIGN ?=
web_root = node@nodejs.org:~/web/nodejs.org/
# Default to verbose builds.
# To do quiet/pretty builds, run `make V=` to set V to an empty string,
# or set the V environment variable to an empty string.
V ?= 1
#
# Because we recursively call make from waf we need to make sure that we are
# using the correct make. Not all makes are GNU Make, but this likely only
# works with gnu make. To deal with this we remember how the user invoked us
# via a make builtin variable and use that in all subsequent operations
#
export NODE_MAKE := $(MAKE)
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
ifeq ($(BUILDTYPE),Release)
all: out/Makefile node
else
all: out/Makefile node node_g
endif
all: program
@-[ -f out/Release/node ] && ls -lh out/Release/node
# The .PHONY is needed to ensure that we recursively use the out/Makefile
# to check for changes.
.PHONY: node node_g
all-progress:
@$(WAF) -p build
node: config.gypi out/Makefile
$(MAKE) -C out BUILDTYPE=Release V=$(V)
ln -fs out/Release/node node
program:
@$(WAF) --product-type=program build
node_g: config.gypi out/Makefile
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
ln -fs out/Debug/node node_g
staticlib:
@$(WAF) --product-type=cstaticlib build
config.gypi: configure
./configure
dynamiclib:
@$(WAF) --product-type=cshlib build
out/Debug/node:
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
install:
@$(WAF) install
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
$(PYTHON) tools/gyp_node -f make
install: all
$(PYTHON) tools/install.py $@ $(DESTDIR)
uninstall:
@$(WAF) uninstall
$(PYTHON) tools/install.py $@ $(DESTDIR)
clean:
-rm -rf out/Makefile node node_g out/$(BUILDTYPE)/node blog.html email.md
-find out/ -name '*.o' -o -name '*.a' | xargs rm -rf
-rm -rf node_modules
distclean:
-rm -rf out
-rm -f config.gypi
-rm -f config.mk
-rm -rf node node_g blog.html email.md
-rm -rf node_modules
test: all
$(PYTHON) tools/test.py --mode=release simple message
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
test-http1: all
$(PYTHON) tools/test.py --mode=release --use-http1 simple message
@@ -41,7 +67,16 @@ test-http1: all
test-valgrind: all
$(PYTHON) tools/test.py --mode=release --valgrind simple message
test-all: all
test/gc/node_modules/weak/build:
@if [ ! -f node ]; then make all; fi
./node deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
--directory="$(shell pwd)/test/gc/node_modules/weak" \
--nodedir="$(shell pwd)"
test-gc: all test/gc/node_modules/weak/build
$(PYTHON) tools/test.py --mode=release gc
test-all: all test/gc/node_modules/weak/build
$(PYTHON) tools/test.py --mode=debug,release
make test-npm
@@ -69,19 +104,17 @@ test-pummel: all
test-internet: all
$(PYTHON) tools/test.py internet
test-npm: all
test-npm: node
./node deps/npm/test/run.js
test-npm-publish: all
test-npm-publish: node
npm_package_config_publishtest=true ./node deps/npm/test/run.js
out/Release/node: all
apidoc_sources = $(wildcard doc/api/*.markdown)
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
$(addprefix out/,$(apidoc_sources:.markdown=.json))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/logos out/doc/images
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/download out/doc/logos out/doc/images
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
@@ -99,10 +132,18 @@ website_files = \
out/doc/pipe.css \
out/doc/about/index.html \
out/doc/community/index.html \
out/doc/download/index.html \
out/doc/logos/index.html \
out/doc/changelog.html \
$(doc_images)
doc: node $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ blog node
blogclean:
rm -rf out/blog
blog: doc/blog out/Release/node tools/blog
out/Release/node tools/blog/generate.js doc/blog/ out/blog/ doc/blog.html doc/rss.xml
$(apidoc_dirs):
mkdir -p $@
@@ -110,19 +151,40 @@ $(apidoc_dirs):
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
cp $< $@
out/doc/changelog.html: ChangeLog doc/changelog-head.html doc/changelog-foot.html tools/build-changelog.sh node
bash tools/build-changelog.sh
out/doc/%.html: doc/%.html node
cat $< | sed -e 's|__VERSION__|'$(VERSION)'|g' > $@
out/doc/%: doc/%
cp -r $< $@
out/doc/api/%.json: doc/api/%.markdown
out/doc/api/%.json: doc/api/%.markdown node
out/Release/node tools/doc/generate.js --format=json $< > $@
out/doc/api/%.html: doc/api/%.markdown
out/doc/api/%.html: doc/api/%.markdown node
out/Release/node tools/doc/generate.js --format=html --template=doc/template.html $< > $@
out/doc/%:
email.md: ChangeLog tools/email-footer.md
bash tools/changelog-head.sh | sed 's|^\* #|* \\#|g' > $@
cat tools/email-footer.md | sed -e 's|__VERSION__|'$(VERSION)'|g' >> $@
blog.html: email.md
cat $< | ./node tools/doc/node_modules/.bin/marked > $@
blog-upload: blog
rsync -r out/blog/ node@nodejs.org:~/web/nodejs.org/blog/
website-upload: doc
rsync -r out/doc/ node@nodejs.org:~/web/nodejs.org/
ssh node@nodejs.org '\
rm -f ~/web/nodejs.org/dist/latest &&\
ln -s $(VERSION) ~/web/nodejs.org/dist/latest &&\
rm -f ~/web/nodejs.org/docs/latest &&\
ln -s $(VERSION) ~/web/nodejs.org/docs/latest &&\
rm -f ~/web/nodejs.org/dist/node-latest.tar.gz &&\
ln -s $(VERSION)/node-$(VERSION).tar.gz ~/web/nodejs.org/dist/node-latest.tar.gz'
docopen: out/doc/api/all.html
-google-chrome out/doc/api/all.html
@@ -130,41 +192,63 @@ docopen: out/doc/api/all.html
docclean:
-rm -rf out/doc
clean:
$(WAF) clean
-find tools -name "*.pyc" | xargs rm -f
distclean: docclean
-find tools -name "*.pyc" | xargs rm -f
-rm -rf dist-osx
-rm -rf out/ node node_g
check:
@tools/waf-light check
VERSION=v$(shell $(PYTHON) tools/getnodeversion.py)
RELEASE=$(shell $(PYTHON) tools/getnodeisrelease.py)
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
DESTCPU ?= x64
else
DESTCPU ?= ia32
endif
ifeq ($(DESTCPU),x64)
ARCH=x64
else
ARCH=x86
endif
TARNAME=node-$(VERSION)
TARBALL=$(TARNAME).tar.gz
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
BINARYTAR=$(BINARYNAME).tar.gz
PKG=out/$(TARNAME).pkg
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
#dist: doc/node.1 doc/api
dist: $(TARBALL) $(PKG)
dist: doc $(TARBALL) $(PKG)
PKGDIR=out/dist-osx
release-only:
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
exit 0 ; \
else \
echo "" >&2 ; \
echo "The git repository is not clean." >&2 ; \
echo "Please commit changes before building release tarball." >&2 ; \
echo "" >&2 ; \
git status --porcelain | egrep -v '^\?\?' >&2 ; \
echo "" >&2 ; \
exit 1 ; \
fi
@if [ "$(RELEASE)" = "1" ]; then \
exit 0; \
else \
echo "" >&2 ; \
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
echo "Did you remember to update src/node_version.cc?" >&2 ; \
echo "" >&2 ; \
exit 1 ; \
fi
pkg: $(PKG)
$(PKG):
-rm -rf $(PKGDIR)
# Need to remove deps between architecture changes.
rm -rf out/*/deps
$(WAF) configure --prefix=/usr/local --without-snapshot --dest-cpu=ia32
CFLAGS=-m32 DESTDIR=$(PKGDIR)/32 $(WAF) install
rm -rf out/*/deps
$(WAF) configure --prefix=/usr/local --without-snapshot --dest-cpu=x64
CFLAGS=-m64 DESTDIR=$(PKGDIR) $(WAF) install
$(PKG): release-only
rm -rf $(PKGDIR)
rm -rf out/deps out/Release
./configure --prefix=$(PKGDIR)/32/usr/local --without-snapshot --dest-cpu=ia32
$(MAKE) install V=$(V)
rm -rf out/deps out/Release
./configure --prefix=$(PKGDIR)/usr/local --without-snapshot --dest-cpu=x64
$(MAKE) install V=$(V)
SIGN="$(APP_SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
lipo $(PKGDIR)/32/usr/local/bin/node \
$(PKGDIR)/usr/local/bin/node \
-output $(PKGDIR)/usr/local/bin/node-universal \
@@ -172,21 +256,39 @@ $(PKG):
mv $(PKGDIR)/usr/local/bin/node-universal $(PKGDIR)/usr/local/bin/node
rm -rf $(PKGDIR)/32
$(packagemaker) \
--id "org.nodejs.NodeJS-$(VERSION)" \
--id "org.nodejs.Node" \
--doc tools/osx-pkg.pmdoc \
--out $(PKG)
SIGN="$(INT_SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
$(TARBALL): out/doc
$(TARBALL): release-only node doc
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
mkdir -p $(TARNAME)/doc
mkdir -p $(TARNAME)/doc/api
cp doc/node.1 $(TARNAME)/doc/node.1
cp -r out/doc/api $(TARNAME)/doc/api
cp -r out/doc/api/* $(TARNAME)/doc/api/
rm -rf $(TARNAME)/deps/v8/test # too big
rm -rf $(TARNAME)/doc/images # too big
find $(TARNAME)/ -type l | xargs rm # annoying on windows
tar -cf $(TARNAME).tar $(TARNAME)
rm -rf $(TARNAME)
gzip -f -9 $(TARNAME).tar
tar: $(TARBALL)
$(BINARYTAR): release-only
rm -rf $(BINARYNAME)
rm -rf out/deps out/Release
./configure --prefix=/ --without-snapshot --dest-cpu=$(DESTCPU) $(CONFIG_FLAGS)
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
cp README.md $(BINARYNAME)
cp LICENSE $(BINARYNAME)
cp ChangeLog $(BINARYNAME)
tar -cf $(BINARYNAME).tar $(BINARYNAME)
rm -rf $(BINARYNAME)
gzip -f -9 $(BINARYNAME).tar
binary: $(BINARYTAR)
dist-upload: $(TARBALL) $(PKG)
ssh node@nodejs.org mkdir -p web/nodejs.org/dist/$(VERSION)
scp $(TARBALL) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARBALL)
@@ -200,12 +302,15 @@ bench-idle:
sleep 1
./node benchmark/idle_clients.js &
jslintfix:
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/fixjsstyle.py --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
jslint:
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/ --exclude_files lib/punycode.js
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
cpplint:
@$(PYTHON) tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
lint: jslint cpplint
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean dist-upload check uninstall install all program staticlib dynamiclib test test-all website-upload
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all website-upload pkg blog blogclean tar binary release-only

View File

@@ -1,319 +0,0 @@
BUILDTYPE ?= Release
all: out/Makefile
tools/gyp_node -f make
$(MAKE) -C out BUILDTYPE=$(BUILDTYPE)
-ln -fs out/Release/node node
-ln -fs out/Debug/node node_g
out/Release/node: all
out/Makefile: node.gyp deps/uv/uv.gyp
clean:
rm -rf out
distclean:
rm -rf out
test: all
python tools/test.py --mode=release simple message
test-http1: all
python tools/test.py --mode=release --use-http1 simple message
test-valgrind: all
python tools/test.py --mode=release --valgrind simple message
test-all: all
python tools/test.py --mode=debug,release
test-all-http1: all
python tools/test.py --mode=debug,release --use-http1
test-all-valgrind: all
python tools/test.py --mode=debug,release --valgrind
test-release: all
python tools/test.py --mode=release
test-debug: all
python tools/test.py --mode=debug
test-message: all
python tools/test.py message
test-simple: all
python tools/test.py simple
test-pummel: all
python tools/test.py pummel
test-internet: all
python tools/test.py internet
UVTEST += simple/test-assert
UVTEST += simple/test-buffer
UVTEST += simple/test-c-ares
UVTEST += simple/test-chdir
UVTEST += simple/test-delayed-require
UVTEST += simple/test-eio-race2
UVTEST += simple/test-eio-race4
UVTEST += simple/test-event-emitter-add-listeners
UVTEST += simple/test-event-emitter-modify-in-emit
UVTEST += simple/test-event-emitter-num-args
UVTEST += simple/test-event-emitter-once
UVTEST += simple/test-event-emitter-remove-all-listeners
UVTEST += simple/test-event-emitter-remove-listeners
UVTEST += simple/test-exception-handler
UVTEST += simple/test-exception-handler2
UVTEST += simple/test-exception-handler
UVTEST += simple/test-executable-path
UVTEST += simple/test-file-read-noexist
UVTEST += simple/test-file-write-stream
UVTEST += simple/test-fs-fsync
UVTEST += simple/test-fs-open
UVTEST += simple/test-fs-readfile-empty
UVTEST += simple/test-fs-read-file-sync
UVTEST += simple/test-fs-read-file-sync-hostname
UVTEST += simple/test-fs-sir-writes-alot
UVTEST += simple/test-fs-write
UVTEST += simple/test-fs-write-buffer
UVTEST += simple/test-fs-write-file
UVTEST += simple/test-fs-write-file-buffer
UVTEST += simple/test-fs-write-stream
UVTEST += simple/test-fs-write-stream-end
UVTEST += simple/test-fs-write-sync
UVTEST += simple/test-global
UVTEST += simple/test-http
UVTEST += simple/test-http-1.0
UVTEST += simple/test-http-abort-client
UVTEST += simple/test-http-allow-req-after-204-res
UVTEST += simple/test-http-blank-header
UVTEST += simple/test-http-buffer-sanity
UVTEST += simple/test-http-cat
UVTEST += simple/test-http-chunked
UVTEST += simple/test-http-client-abort
UVTEST += simple/test-http-client-parse-error
UVTEST += simple/test-http-client-race
UVTEST += simple/test-http-client-race-2
UVTEST += simple/test-http-client-upload
UVTEST += simple/test-http-client-upload-buf
UVTEST += simple/test-http-contentLength0
UVTEST += simple/test-http-default-encoding
UVTEST += simple/test-http-dns-fail
UVTEST += simple/test-http-eof-on-connect
UVTEST += simple/test-http-exceptions
UVTEST += simple/test-http-expect-continue
UVTEST += simple/test-http-extra-response
UVTEST += simple/test-http-head-request
UVTEST += simple/test-http-head-response-has-no-body
UVTEST += simple/test-http-keep-alive
UVTEST += simple/test-http-keep-alive-close-on-header
UVTEST += simple/test-http-malformed-request
UVTEST += simple/test-http-many-keep-alive-connections
UVTEST += simple/test-http-mutable-headers
UVTEST += simple/test-http-parser
UVTEST += simple/test-http-proxy
UVTEST += simple/test-http-request-end
UVTEST += simple/test-http-response-close
UVTEST += simple/test-http-response-readable
UVTEST += simple/test-http-unix-socket
UVTEST += simple/test-http-server
UVTEST += simple/test-http-server-multiheaders
UVTEST += simple/test-http-set-cookies
UVTEST += simple/test-http-set-timeout
UVTEST += simple/test-http-set-trailers
UVTEST += simple/test-http-upgrade-agent
UVTEST += simple/test-http-upgrade-client
UVTEST += simple/test-http-upgrade-client2
UVTEST += simple/test-http-upgrade-server
UVTEST += simple/test-http-upgrade-server2
UVTEST += simple/test-http-wget
UVTEST += simple/test-http-write-empty-string
UVTEST += simple/test-http-wget
UVTEST += simple/test-mkdir-rmdir
UVTEST += simple/test-net-binary
UVTEST += simple/test-net-pingpong
UVTEST += simple/test-net-can-reset-timeout
UVTEST += simple/test-net-connect-buffer
UVTEST += simple/test-net-connect-timeout
UVTEST += simple/test-net-create-connection
UVTEST += simple/test-net-eaddrinuse
UVTEST += simple/test-net-isip
UVTEST += simple/test-net-keepalive
UVTEST += simple/test-net-pingpong
UVTEST += simple/test-net-reconnect
UVTEST += simple/test-net-remote-address-port
UVTEST += simple/test-net-server-bind
UVTEST += simple/test-net-server-max-connections
UVTEST += simple/test-net-server-try-ports
UVTEST += simple/test-net-stream
UVTEST += simple/test-net-socket-timeout
UVTEST += simple/test-next-tick
UVTEST += simple/test-next-tick-doesnt-hang
UVTEST += simple/test-next-tick-errors
UVTEST += simple/test-next-tick-ordering
UVTEST += simple/test-next-tick-ordering2
UVTEST += simple/test-next-tick-starvation
UVTEST += simple/test-module-load-list
UVTEST += simple/test-path
UVTEST += simple/test-pipe-stream
UVTEST += simple/test-pump-file2tcp
UVTEST += simple/test-pump-file2tcp-noexist
UVTEST += simple/test-punycode
UVTEST += simple/test-querystring
UVTEST += simple/test-readdir
UVTEST += simple/test-readdouble
UVTEST += simple/test-readfloat
UVTEST += simple/test-readint
UVTEST += simple/test-readuint
UVTEST += simple/test-regress-GH-819
UVTEST += simple/test-regress-GH-897
UVTEST += simple/test-regression-object-prototype
UVTEST += simple/test-require-cache
UVTEST += simple/test-require-cache-without-stat
UVTEST += simple/test-require-exceptions
UVTEST += simple/test-require-resolve
UVTEST += simple/test-script-context
UVTEST += simple/test-script-new
UVTEST += simple/test-script-static-context
UVTEST += simple/test-script-static-new
UVTEST += simple/test-script-static-this
UVTEST += simple/test-script-this
UVTEST += simple/test-stream-pipe-cleanup
UVTEST += simple/test-stream-pipe-error-handling
UVTEST += simple/test-stream-pipe-event
UVTEST += simple/test-stream-pipe-multi
UVTEST += simple/test-string-decoder
UVTEST += simple/test-sys
UVTEST += simple/test-tcp-wrap
UVTEST += simple/test-tcp-wrap-connect
UVTEST += simple/test-tcp-wrap-listen
UVTEST += simple/test-timers-linked-list
UVTEST += simple/test-tty-stdout-end
UVTEST += simple/test-url
UVTEST += simple/test-utf8-scripts
UVTEST += simple/test-vm-create-context-circular-reference
UVTEST += simple/test-writedouble
UVTEST += simple/test-writefloat
UVTEST += simple/test-writeint
UVTEST += simple/test-writeuint
UVTEST += simple/test-zerolengthbufferbug
UVTEST += pummel/test-http-client-reconnect-bug
UVTEST += pummel/test-http-upload-timeout
UVTEST += pummel/test-net-many-clients
UVTEST += pummel/test-net-pause
UVTEST += pummel/test-net-pingpong-delay
UVTEST += pummel/test-net-timeout
UVTEST += pummel/test-timers
UVTEST += pummel/test-timer-wrap
UVTEST += pummel/test-timer-wrap2
UVTEST += pummel/test-vm-memleak
UVTEST += internet/test-dns
UVTEST += simple/test-tls-client-abort
UVTEST += simple/test-tls-client-verify
UVTEST += simple/test-tls-connect
#UVTEST += simple/test-tls-ext-key-usage # broken
UVTEST += simple/test-tls-junk-closes-server
UVTEST += simple/test-tls-npn-server-client
UVTEST += simple/test-tls-request-timeout
#UVTEST += simple/test-tls-securepair-client # broken
UVTEST += simple/test-tls-securepair-server
#UVTEST += simple/test-tls-server-verify # broken
UVTEST += simple/test-tls-set-encoding
# child_process
UVTEST += simple/test-child-process-exit-code
UVTEST += simple/test-child-process-buffering
UVTEST += simple/test-child-process-exec-cwd
UVTEST += simple/test-child-process-cwd
UVTEST += simple/test-child-process-env
UVTEST += simple/test-child-process-stdin
UVTEST += simple/test-child-process-ipc
UVTEST += simple/test-child-process-deprecated-api
test-uv: all
NODE_USE_UV=1 python tools/test.py $(UVTEST)
test-uv-debug: all
NODE_USE_UV=1 python tools/test.py --mode=debug $(UVTEST)
apidoc_sources = $(wildcard doc/api/*.markdown)
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
website_files = \
out/doc/index.html \
out/doc/v0.4_announcement.html \
out/doc/cla.html \
out/doc/sh_main.js \
out/doc/sh_javascript.min.js \
out/doc/sh_vim-dark.css \
out/doc/logo.png \
out/doc/sponsored.png \
out/doc/favicon.ico \
out/doc/pipe.css
doc: out/Release/node $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs)
$(apidoc_dirs):
mkdir -p $@
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
cp $< $@
out/doc/%: doc/%
cp $< $@
out/doc/api/%.html: doc/api/%.markdown out/Release/node $(apidoc_dirs) $(apiassets) tools/doctool/doctool.js
out/Release/node tools/doctool/doctool.js doc/template.html $< > $@
out/doc/%:
website-upload: doc
scp -r out/doc/* $(web_root)
docopen: out/doc/api/all.html
-google-chrome out/doc/api/all.html
docclean:
-rm -rf out/doc
VERSION=$(shell git describe)
TARNAME=node-$(VERSION)
#dist: doc/node.1 doc/api
dist: doc
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
mkdir -p $(TARNAME)/doc
cp doc/node.1 $(TARNAME)/doc/node.1
cp -r out/doc/api $(TARNAME)/doc/api
rm -rf $(TARNAME)/deps/v8/test # too big
rm -rf $(TARNAME)/doc/logos # too big
tar -cf $(TARNAME).tar $(TARNAME)
rm -rf $(TARNAME)
gzip -f -9 $(TARNAME).tar
bench:
benchmark/http_simple_bench.sh
bench-idle:
./node benchmark/idle_server.js &
sleep 1
./node benchmark/idle_clients.js &
jslint:
PYTHONPATH=tools/closure_linter/ python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/
cpplint:
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
lint: jslint cpplint
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install all program staticlib dynamiclib test test-all website-upload

View File

@@ -3,12 +3,26 @@ Evented I/O for V8 javascript. [![Build Status](https://secure.travis-ci.org/joy
### To build:
Unix/Macintosh (requires python 2.6 or 2.7):
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

View File

@@ -0,0 +1,80 @@
// first start node http_simple.js
var http = require('http');
var latency = [];
var numRequests = parseInt(process.argv[2], 10) || 100;
var maxSockets = parseInt(process.argv[3], 10) || 100;
var runs = parseInt(process.argv[4], 10) || 100;
var prefix = process.argv[5] || '';
if (prefix) prefix += '_';
var r = 0;
var port = parseInt(process.env.PORT, 10) || 8000;
var host = process.env.HOST || '127.0.0.1';
http.globalAgent.maxSockets = maxSockets;
run();
function run() {
if (r++ === runs) {
return finish();
}
// make numRequests in parallel
// retain the order in which they are *made*. This requires trapping
// each one in a closure, since otherwise, we'll of course end
// up mostly sorting them in ascending order, since the cb from a
// fast request will almost always be called before the cb from a
// slow one.
var c = numRequests;
var lat = [];
latency.push(lat);
for (var i = 0; i < numRequests; i++) (function (i) {
makeRequest(function(l) {
lat[i] = l;
c--;
if (c === 0) run();
});
})(i);
}
function makeRequest(cb) {
var opts = { host: host,
port: port,
uri: 'http://'+host+':'+port+'/bytes/12',
forever: true,
path: '/bytes/12' };
var pre = Date.now();
var req = http.get(opts, function(res) {
return cb(Date.now() - pre);
});
}
function finish() {
var data = [];
latency.forEach(function(run, i) {
run.forEach(function(l, j) {
data[j] = data[j] || [];
data[j][i] = l;
});
});
data = data.map(function (l, i) {
return l.join('\t')
}).join('\n') + '\n';
var fname = prefix +
'client_latency_' +
numRequests + '_' +
maxSockets + '_' +
runs + '.tab';
var path = require('path');
fname = path.resolve(__dirname, '..', 'out', fname);
fname = path.relative(process.cwd(), fname);
require('fs').writeFile(fname, data, function(er) {
if (er) throw er;
console.log('written: %s', fname);
});
}

72
benchmark/fs-readfile.js Normal file
View File

@@ -0,0 +1,72 @@
// Call fs.readFile over and over again really fast.
// Then see how many times it got called.
// Yes, this is a silly benchmark. Most benchmarks are silly.
var path = require('path');
var filename = path.resolve(__dirname, 'http.sh');
var fs = require('fs');
var count = 0;
var go = true;
var len = -1;
var assert = require('assert');
var concurrency = 1;
var encoding = null;
var time = 10;
for (var i = 2; i < process.argv.length; i++) {
var arg = process.argv[i];
if (arg.match(/^-e$/)) {
encoding = process.argv[++i] || null;
} else if (arg.match(/^-c$/)) {
concurrency = ~~process.argv[++i];
if (concurrency < 1) concurrency = 1;
} else if (arg === '-t') {
time = ~~process.argv[++i];
if (time < 1) time = 1;
}
}
setTimeout(function() {
go = false;
}, time * 1000);
function round(n) {
return Math.floor(n * 100) / 100;
}
var start = process.hrtime();
while (concurrency--) readFile();
function readFile() {
if (!go) {
process.stdout.write('\n');
console.log('read the file %d times (higher is better)', count);
var end = process.hrtime();
var elapsed = [end[0] - start[0], end[1] - start[1]];
var ns = elapsed[0] * 1E9 + elapsed[1];
var nsper = round(ns / count);
console.log('%d ns per read (lower is better)', nsper);
var readsper = round(count / (ns / 1E9));
console.log('%d reads per sec (higher is better)', readsper);
process.exit(0);
return;
}
if (!(count % 1000)) {
process.stdout.write('.');
}
if (encoding) fs.readFile(filename, encoding, then);
else fs.readFile(filename, then);
function then(er, data) {
assert.ifError(er);
count++;
// basic sanity test: we should get the same number of bytes each time.
if (count === 1) len = data.length;
else assert(len === data.length);
readFile();
}
}

43
benchmark/http.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
cd "$(dirname "$(dirname $0)")"
if type sysctl &>/dev/null; then
# darwin and linux
sudo sysctl -w net.ipv4.ip_local_port_range="12000 65535"
sudo sysctl -w net.inet.ip.portrange.first=12000
sudo sysctl -w net.inet.tcp.msl=1000
sudo sysctl -w kern.maxfiles=1000000 kern.maxfilesperproc=1000000
elif type /usr/sbin/ndd &>/dev/null; then
# sunos
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 12000
/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65535
/usr/sbin/ndd -set /dev/tcp tcp_max_buf 2097152
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 1048576
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 1048576
fi
ulimit -n 100000
k=${KEEPALIVE}
if [ "$k" = "no" ]; then
k=""
else
k="-k"
fi
node=${NODE:-./node}
$node benchmark/http_simple.js &
npid=$!
sleep 1
if [ "$k" = "-k" ]; then
echo "using keepalive"
fi
for i in a a a a a a a a a a a a a a a a a a a a; do
ab $k -t 10 -c 100 http://127.0.0.1:8000/${TYPE:-bytes}/${LENGTH:-1024} \
2>&1 | grep Req | egrep -o '[0-9\.]+'
done
kill $npid

127
benchmark/http_bench.js Normal file
View File

@@ -0,0 +1,127 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var spawn = require('child_process').spawn;
var cluster = require('cluster');
var http = require('http');
var options = {
mode: 'master',
host: '127.0.0.1',
port: 22344,
path: '/',
servers: 1,
clients: 1
};
for (var i = 2; i < process.argv.length; ++i) {
var args = process.argv[i].split('=', 2);
var key = args[0];
var val = args[1];
options[key] = val;
}
switch (options.mode) {
case 'master': startMaster(); break;
case 'server': startServer(); break;
case 'client': startClient(); break;
default: throw new Error('Bad mode: ' + options.mode);
}
process.title = 'http_bench[' + options.mode + ']';
// monkey-patch the log functions so they include name + pid
console.log = patch(console.log);
console.trace = patch(console.trace);
console.error = patch(console.error);
function patch(fun) {
var prefix = process.title + '[' + process.pid + '] ';
return function() {
var args = Array.prototype.slice.call(arguments);
args[0] = prefix + args[0];
return fun.apply(console, args);
};
}
function startMaster() {
if (!cluster.isMaster) return startServer();
for (var i = ~~options.servers; i > 0; --i) cluster.fork();
for (var i = ~~options.clients; i > 0; --i) {
var cp = spawn(process.execPath, [__filename, 'mode=client']);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
}
}
function startServer() {
http.createServer(onRequest).listen(options.port, options.host);
var body = Array(1024).join('x');
var headers = {'Content-Length': '' + body.length};
function onRequest(req, res) {
req.on('error', onError);
res.on('error', onError);
res.writeHead(200, headers);
res.end(body);
}
function onError(err) {
console.error(err.stack);
}
}
function startClient() {
// send off a bunch of concurrent requests
// TODO make configurable
sendRequest();
sendRequest();
function sendRequest() {
var req = http.request(options, onConnection);
req.on('error', onError);
req.end();
}
// add a little back-off to prevent EADDRNOTAVAIL errors, it's pretty easy
// to exhaust the available port range
function relaxedSendRequest() {
setTimeout(sendRequest, 1);
}
function onConnection(res) {
res.on('error', onError);
res.on('data', onData);
res.on('end', relaxedSendRequest);
}
function onError(err) {
console.error(err.stack);
relaxedSendRequest();
}
function onData(data) {
// this space intentionally left blank
}
}

View File

@@ -0,0 +1,13 @@
var http = require('http');
var port = parseInt(process.env.PORT, 10) || 8000;
var defaultLag = parseInt(process.argv[2], 10) || 100;
http.createServer(function(req, res) {
res.writeHead(200, { 'content-type': 'text/plain',
'content-length': '2' });
var lag = parseInt(req.url.split("/").pop(), 10) || defaultLag;
setTimeout(function() {
res.end('ok');
}, lag);
}).listen(port, 'localhost');

View File

@@ -1,94 +1,124 @@
path = require("path");
exec = require("child_process").exec;
http = require("http");
var path = require('path'),
exec = require('child_process').exec,
http = require('http');
port = parseInt(process.env.PORT || 8000);
var port = parseInt(process.env.PORT || 8000);
console.log('pid ' + process.pid);
fixed = ""
for (var i = 0; i < 20*1024; i++) {
fixed += "C";
var fixed = makeString(20 * 1024, 'C'),
storedBytes = {},
storedBuffer = {},
storedUnicode = {};
var useDomains = process.env.NODE_USE_DOMAINS;
// set up one global domain.
if (useDomains) {
var domain = require('domain');
var gdom = domain.create();
gdom.on('error', function(er) {
console.log('Error on global domain', er);
throw er;
});
gdom.enter();
}
stored = {};
storedBuffer = {};
var server = http.createServer(function (req, res) {
var commands = req.url.split("/");
if (useDomains) {
var dom = domain.create();
dom.add(req);
dom.add(res);
}
var commands = req.url.split('/');
var command = commands[1];
var body = "";
var body = '';
var arg = commands[2];
var n_chunks = parseInt(commands[3], 10);
var status = 200;
if (command == "bytes") {
var n = parseInt(arg, 10)
if (command == 'bytes') {
var n = ~~arg;
if (n <= 0)
throw "bytes called with n <= 0"
if (stored[n] === undefined) {
console.log("create stored[n]");
stored[n] = "";
for (var i = 0; i < n; i++) {
stored[n] += "C"
}
throw new Error('bytes called with n <= 0')
if (storedBytes[n] === undefined) {
console.log('create storedBytes[n]');
storedBytes[n] = makeString(n, 'C');
}
body = stored[n];
body = storedBytes[n];
} else if (command == "buffer") {
var n = parseInt(arg, 10)
if (n <= 0) throw new Error("bytes called with n <= 0");
} else if (command == 'buffer') {
var n = ~~arg;
if (n <= 0)
throw new Error('buffer called with n <= 0');
if (storedBuffer[n] === undefined) {
console.log("create storedBuffer[n]");
console.log('create storedBuffer[n]');
storedBuffer[n] = new Buffer(n);
for (var i = 0; i < n; i++) {
storedBuffer[n][i] = "C".charCodeAt(0);
storedBuffer[n][i] = 'C'.charCodeAt(0);
}
}
body = storedBuffer[n];
} else if (command == "quit") {
res.connection.server.close();
body = "quitting";
} else if (command == 'unicode') {
var n = ~~arg;
if (n <= 0)
throw new Error('unicode called with n <= 0');
if (storedUnicode[n] === undefined) {
console.log('create storedUnicode[n]');
storedUnicode[n] = makeString(n, '\u263A');
}
body = storedUnicode[n];
} else if (command == "fixed") {
} else if (command == 'quit') {
res.connection.server.close();
body = 'quitting';
} else if (command == 'fixed') {
body = fixed;
} else if (command == "echo") {
res.writeHead(200, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
} else if (command == 'echo') {
res.writeHead(200, { 'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked' });
req.pipe(res);
return;
} else {
status = 404;
body = "not found\n";
body = 'not found\n';
}
// example: http://localhost:port/bytes/512/4
// sends a 512 byte body in 4 chunks of 128 bytes
if (n_chunks > 0) {
res.writeHead(status, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
res.writeHead(status, { 'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked' });
// send body in chunks
var len = body.length;
var step = ~~(len / n_chunks) || len;
var step = Math.floor(len / n_chunks) || 1;
for (var i = 0; i < len; i += step) {
res.write(body.slice(i, i + step));
for (var i = 0, n = (n_chunks - 1); i < n; ++i) {
res.write(body.slice(i * step, i * step + step));
}
res.end();
res.end(body.slice((n_chunks - 1) * step));
} else {
var content_length = body.length.toString();
res.writeHead(status, { "Content-Type": "text/plain",
"Content-Length": content_length });
res.writeHead(status, { 'Content-Type': 'text/plain',
'Content-Length': content_length });
res.end(body);
}
});
function makeString(size, c) {
var s = '';
while (s.length < size) {
s += c;
}
return s;
}
server.listen(port, function () {
console.log('Listening at http://127.0.0.1:'+port+'/');
});

View File

@@ -0,0 +1,127 @@
//
// Usage:
// node benchmark/http_simple_auto.js <args> <target>
//
// Where:
// <args> Arguments to pass to `ab`.
// <target> Target to benchmark, e.g. `bytes/1024` or `buffer/8192`.
//
var path = require("path");
var http = require("http");
var spawn = require("child_process").spawn;
var port = parseInt(process.env.PORT || 8000);
var fixed = ""
for (var i = 0; i < 20*1024; i++) {
fixed += "C";
}
var stored = {};
var storedBuffer = {};
var server = http.createServer(function (req, res) {
var commands = req.url.split("/");
var command = commands[1];
var body = "";
var arg = commands[2];
var n_chunks = parseInt(commands[3], 10);
var status = 200;
if (command == "bytes") {
var n = parseInt(arg, 10)
if (n <= 0)
throw "bytes called with n <= 0"
if (stored[n] === undefined) {
stored[n] = "";
for (var i = 0; i < n; i++) {
stored[n] += "C"
}
}
body = stored[n];
} else if (command == "buffer") {
var n = parseInt(arg, 10)
if (n <= 0) throw new Error("bytes called with n <= 0");
if (storedBuffer[n] === undefined) {
storedBuffer[n] = new Buffer(n);
for (var i = 0; i < n; i++) {
storedBuffer[n][i] = "C".charCodeAt(0);
}
}
body = storedBuffer[n];
} else if (command == "quit") {
res.connection.server.close();
body = "quitting";
} else if (command == "fixed") {
body = fixed;
} else if (command == "echo") {
res.writeHead(200, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
req.pipe(res);
return;
} else {
status = 404;
body = "not found\n";
}
// example: http://localhost:port/bytes/512/4
// sends a 512 byte body in 4 chunks of 128 bytes
if (n_chunks > 0) {
res.writeHead(status, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
// send body in chunks
var len = body.length;
var step = Math.floor(len / n_chunks) || 1;
for (var i = 0, n = (n_chunks - 1); i < n; ++i) {
res.write(body.slice(i * step, i * step + step));
}
res.end(body.slice((n_chunks - 1) * step));
} else {
var content_length = body.length.toString();
res.writeHead(status, { "Content-Type": "text/plain",
"Content-Length": content_length });
res.end(body);
}
});
server.listen(port, function () {
var url = 'http://127.0.0.1:' + port + '/';
var n = process.argv.length - 1;
process.argv[n] = url + process.argv[n];
var cp = spawn('ab', process.argv.slice(2));
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
cp.on('exit', function() {
server.close();
process.nextTick(dump_mm_stats);
});
});
function dump_mm_stats() {
if (typeof gc != 'function') return;
var before = process.memoryUsage();
for (var i = 0; i < 10; ++i) gc();
var after = process.memoryUsage();
setTimeout(print_stats, 250); // give GC time to settle
function print_stats() {
console.log('\nBEFORE / AFTER GC');
['rss', 'heapTotal', 'heapUsed'].forEach(function(key) {
var a = before[key] / (1024 * 1024);
var b = after[key] / (1024 * 1024);
console.log('%sM / %sM %s', a.toFixed(2), b.toFixed(2), key);
});
}
}

View File

@@ -3,7 +3,7 @@ var os = require('os');
if (cluster.isMaster) {
console.log('master running on pid %d', process.pid);
for (var i = 1, n = os.cpus().length; i < n; ++i) cluster.fork();
for (var i = 0, n = os.cpus().length; i < n; ++i) cluster.fork();
} else {
require(__dirname + '/http_simple.js');
}

View File

@@ -62,7 +62,7 @@ function readtest(size, bsize) {
function wt(tsize, bsize, done) {
var start = Date.now();
s = writetest(tsize, bsizes[0]);
s = writetest(tsize, bsize);
s.addListener('close', function() {
var end = Date.now();
var diff = end - start;
@@ -73,7 +73,7 @@ function wt(tsize, bsize, done) {
function rt(tsize, bsize, done) {
var start = Date.now();
s = readtest(tsize, bsizes[0]);
s = readtest(tsize, bsize);
s.addListener('close', function() {
var end = Date.now();
var diff = end - start;

86
benchmark/tls-connect.js Normal file
View File

@@ -0,0 +1,86 @@
var assert = require('assert'),
fs = require('fs'),
path = require('path'),
tls = require('tls');
var target_connections = 10000,
concurrency = 10;
for (var i = 2; i < process.argv.length; i++) {
switch (process.argv[i]) {
case '-c':
concurrency = ~~process.argv[++i];
break;
case '-n':
target_connections = ~~process.argv[++i];
break;
default:
throw new Error('Invalid flag: ' + process.argv[i]);
}
}
var cert_dir = path.resolve(__dirname, '../test/fixtures'),
options = { key: fs.readFileSync(cert_dir + '/test_key.pem'),
cert: fs.readFileSync(cert_dir + '/test_cert.pem'),
ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ] };
var server = tls.createServer(options, onConnection);
server.listen(8000);
var initiated_connections = 0,
server_connections = 0,
client_connections = 0,
start = Date.now();
for (var i = 0; i < concurrency; i++)
makeConnection();
process.on('exit', onExit);
function makeConnection() {
if (initiated_connections >= target_connections)
return;
initiated_connections++;
var conn = tls.connect(8000, function() {
client_connections++;
if (client_connections % 100 === 0)
console.log(client_connections + ' of ' + target_connections +
' connections made');
conn.end();
makeConnection();
});
}
function onConnection(conn) {
server_connections++;
if (server_connections === target_connections)
server.close();
}
function onExit() {
var end = Date.now(),
s = (end - start) / 1000,
persec = Math.round(target_connections / s);
assert.equal(initiated_connections, target_connections);
assert.equal(client_connections, target_connections);
assert.equal(server_connections, target_connections);
console.log('%d connections in %d s', target_connections, s);
console.log('%d connections per second', persec);
}

View File

@@ -0,0 +1,63 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
if (!process.versions.openssl) {
console.error('Skipping because node compiled without OpenSSL.');
process.exit(0);
}
var common = require('../common');
var assert = require('assert');
var tls = require('tls');
var fs = require('fs');
var path = require('path');
var options = {
key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')),
cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))
};
var fragment = 'fr';
var dataSize = 1024 * 1024;
var sent = 0;
var received = 0;
var server = tls.createServer(options, function (stream) {
for (sent = 0; sent <= dataSize; sent += fragment.length) {
stream.write(fragment);
}
stream.end();
});
server.listen(common.PORT, function () {
var client = tls.connect(common.PORT, function () {
client.on('data', function (data) {
received += data.length;
});
client.on('end', function () {
server.close();
});
});
});
process.on('exit', function () {
assert.equal(sent, received);
});

View File

@@ -1,13 +1,29 @@
{
'variables': {
'visibility%': 'hidden', # V8's visibility setting
'target_arch%': 'ia32', # set v8's target architecture
'host_arch%': 'ia32', # set v8's host architecture
'want_separate_host_toolset': 0, # V8 should not build target and host
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
'component%': 'static_library', # NB. these names match with what V8 expects
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
'gcc_version%': 'unknown',
'clang%': 0,
# Turn on optimizations that may trigger compiler bugs.
# Use at your own risk. Do *NOT* report bugs if this option is enabled.
'node_unsafe_optimizations%': 0,
# Enable V8's post-mortem debugging only on unix flavors.
'conditions': [
['OS != "win"', {
'v8_postmortem_support': 'true'
}]
],
},
'target_defaults': {
'default_configuration': 'Debug',
'default_configuration': 'Release',
'configurations': {
'Debug': {
'defines': [ 'DEBUG', '_DEBUG' ],
@@ -19,15 +35,9 @@
],
'msvs_settings': {
'VCCLCompilerTool': {
'target_conditions': [
['library=="static_library"', {
'RuntimeLibrary': 1, # static debug
}, {
'RuntimeLibrary': 3, # DLL debug
}],
],
'RuntimeLibrary': 1, # static debug
'Optimization': 0, # /Od, no optimization
'MinimalRebuild': 'true',
'MinimalRebuild': 'false',
'OmitFramePointers': 'false',
'BasicRuntimeChecks': 3, # /RTC1
},
@@ -37,22 +47,42 @@
},
},
'Release': {
'defines': [ 'NDEBUG' ],
'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ],
'conditions': [
['target_arch=="x64"', {
'msvs_configuration_platform': 'x64',
}],
['node_unsafe_optimizations==1', {
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
'ldflags': [ '-Wl,--gc-sections' ],
}, {
'cflags': [ '-O2', '-fno-strict-aliasing' ],
'cflags!': [ '-O3', '-fstrict-aliasing' ],
'conditions': [
# Required by the dtrace post-processor. Unfortunately,
# some gcc/binutils combos generate bad code when
# -ffunction-sections is enabled. Let's hope for the best.
['OS=="solaris"', {
'cflags': [ '-ffunction-sections', '-fdata-sections' ],
}, {
'cflags!': [ '-ffunction-sections', '-fdata-sections' ],
}],
['clang == 0 and gcc_version >= 40', {
'cflags': [ '-fno-tree-vrp' ],
}],
['clang == 0 and gcc_version <= 44', {
'cflags': [ '-fno-tree-sink' ],
}],
],
}],
['OS=="solaris"', {
'cflags': [ '-fno-omit-frame-pointer' ],
# pull in V8's postmortem metadata
'ldflags': [ '-Wl,-z,allextract' ]
}],
],
'msvs_settings': {
'VCCLCompilerTool': {
'target_conditions': [
['library=="static_library"', {
'RuntimeLibrary': 0, # static release
}, {
'RuntimeLibrary': 2, # debug release
}],
],
'RuntimeLibrary': 0, # static release
'Optimization': 3, # /Ox, full optimization
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
@@ -60,6 +90,8 @@
'OmitFramePointers': 'true',
'EnableFunctionLevelLinking': 'true',
'EnableIntrinsicFunctions': 'true',
'RuntimeTypeInfo': 'false',
'ExceptionHandling': '0',
'AdditionalOptions': [
'/MP', # compile across multiple CPUs
],
@@ -122,25 +154,35 @@
'BUILDING_V8_SHARED=1',
'BUILDING_UV_SHARED=1',
],
}, {
'defines': [
'_LARGEFILE_SOURCE',
'_FILE_OFFSET_BITS=64',
],
}],
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
'cflags': [ '-Wall', '-pthread', ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
'ldflags': [ '-pthread', ],
'ldflags': [ '-pthread', '-rdynamic' ],
'conditions': [
[ 'target_arch=="ia32"', {
'cflags': [ '-m32' ],
'ldflags': [ '-m32' ],
}],
[ 'OS=="linux"', {
'cflags': [ '-ansi' ],
[ 'target_arch=="x64"', {
'cflags': [ '-m64' ],
'ldflags': [ '-m64' ],
}],
[ 'visibility=="hidden"', {
'cflags': [ '-fvisibility=hidden' ],
[ 'OS=="solaris"', {
'cflags': [ '-pthreads' ],
'ldflags': [ '-pthreads' ],
'cflags!': [ '-pthread' ],
'ldflags!': [ '-pthread' ],
}],
],
}],
['OS=="mac"', {
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
'xcode_settings': {
'ALWAYS_SEARCH_USER_PATHS': 'NO',
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
@@ -149,14 +191,10 @@
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
# GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
'GCC_VERSION': '4.2',
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4
'PREBINDING': 'NO', # No -Wl,-prebind
'MACOSX_DEPLOYMENT_TARGET': '10.5', # -mmacosx-version-min=10.5
'USE_HEADERMAP': 'NO',
'OTHER_CFLAGS': [
'-fno-strict-aliasing',
@@ -173,6 +211,14 @@
'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
}],
],
'conditions': [
['target_arch=="ia32"', {
'xcode_settings': {'ARCHS': ['i386']},
}],
['target_arch=="x64"', {
'xcode_settings': {'ARCHS': ['x86_64']},
}],
],
}],
],
}

520
configure vendored
View File

@@ -1,25 +1,507 @@
#! /bin/sh
#!/usr/bin/env python
import optparse
import os
import pprint
import re
import subprocess
import sys
# v8 doesn't like ccache
if [ ! -z "`echo $CC | grep ccache`" ]; then
echo "Error: V8 doesn't like ccache. Please set your CC env var to 'gcc'"
echo " (ba)sh: export CC=gcc"
exit 1
fi
CC = os.environ.get('CC', 'cc')
if [ -z "$PYTHON" ]; then
PYTHON=python
fi
root_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
CUR_DIR=$PWD
# parse our options
parser = optparse.OptionParser()
#possible relative path
WORKINGDIR=`dirname $0`
cd "$WORKINGDIR"
#abs path
WORKINGDIR=`pwd`
cd "$CUR_DIR"
parser.add_option("--debug",
action="store_true",
dest="debug",
help="Also build debug build")
"$PYTHON" "${WORKINGDIR}/tools/waf-light" --jobs=1 configure $*
parser.add_option("--prefix",
action="store",
dest="prefix",
help="Select the install prefix (defaults to /usr/local)")
exit $?
parser.add_option("--without-npm",
action="store_true",
dest="without_npm",
help="Don\'t install the bundled npm package manager")
parser.add_option("--without-waf",
action="store_true",
dest="without_waf",
help="Don\'t install node-waf")
parser.add_option("--without-ssl",
action="store_true",
dest="without_ssl",
help="Build without SSL")
parser.add_option("--without-snapshot",
action="store_true",
dest="without_snapshot",
help="Build without snapshotting V8 libraries. You might want to set"
" this for cross-compiling. [Default: False]")
parser.add_option("--shared-v8",
action="store_true",
dest="shared_v8",
help="Link to a shared V8 DLL instead of static linking")
parser.add_option("--shared-v8-includes",
action="store",
dest="shared_v8_includes",
help="Directory containing V8 header files")
parser.add_option("--shared-v8-libpath",
action="store",
dest="shared_v8_libpath",
help="A directory to search for the shared V8 DLL")
parser.add_option("--shared-v8-libname",
action="store",
dest="shared_v8_libname",
help="Alternative lib name to link to (default: 'v8')")
parser.add_option("--shared-openssl",
action="store_true",
dest="shared_openssl",
help="Link to a shared OpenSSl DLL instead of static linking")
parser.add_option("--shared-openssl-includes",
action="store",
dest="shared_openssl_includes",
help="Directory containing OpenSSL header files")
parser.add_option("--shared-openssl-libpath",
action="store",
dest="shared_openssl_libpath",
help="A directory to search for the shared OpenSSL DLLs")
parser.add_option("--shared-openssl-libname",
action="store",
dest="shared_openssl_libname",
help="Alternative lib name to link to (default: 'crypto,ssl')")
# deprecated
parser.add_option("--openssl-use-sys",
action="store_true",
dest="shared_openssl",
help=optparse.SUPPRESS_HELP)
# deprecated
parser.add_option("--openssl-includes",
action="store",
dest="shared_openssl_includes",
help=optparse.SUPPRESS_HELP)
# deprecated
parser.add_option("--openssl-libpath",
action="store",
dest="shared_openssl_libpath",
help=optparse.SUPPRESS_HELP)
parser.add_option("--no-ssl2",
action="store_true",
dest="no_ssl2",
help="Disable OpenSSL v2")
parser.add_option("--shared-zlib",
action="store_true",
dest="shared_zlib",
help="Link to a shared zlib DLL instead of static linking")
parser.add_option("--shared-zlib-includes",
action="store",
dest="shared_zlib_includes",
help="Directory containing zlib header files")
parser.add_option("--shared-zlib-libpath",
action="store",
dest="shared_zlib_libpath",
help="A directory to search for the shared zlib DLL")
parser.add_option("--shared-zlib-libname",
action="store",
dest="shared_zlib_libname",
help="Alternative lib name to link to (default: 'z')")
parser.add_option("--with-dtrace",
action="store_true",
dest="with_dtrace",
help="Build with DTrace (default is true on supported systems)")
parser.add_option("--without-dtrace",
action="store_true",
dest="without_dtrace",
help="Build without DTrace")
parser.add_option("--with-etw",
action="store_true",
dest="with_etw",
help="Build with ETW (default is true on Windows)")
parser.add_option("--without-etw",
action="store_true",
dest="without_etw",
help="Build without ETW")
# CHECKME does this still work with recent releases of V8?
parser.add_option("--gdb",
action="store_true",
dest="gdb",
help="add gdb support")
parser.add_option("--dest-cpu",
action="store",
dest="dest_cpu",
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
parser.add_option("--dest-os",
action="store",
dest="dest_os",
help="Operating system to build for. Valid values are: "
"win, mac, solaris, freebsd, linux")
parser.add_option("--no-ifaddrs",
action="store_true",
dest="no_ifaddrs",
help="Use on deprecated SunOS systems that do not support ifaddrs.h")
parser.add_option("--with-arm-float-abi",
action="store",
dest="arm_float_abi",
help="Specifies which floating-point ABI to use. Valid values are: "
"soft, softfp, hard")
# Using --unsafe-optimizations voids your warranty.
parser.add_option("--unsafe-optimizations",
action="store_true",
dest="unsafe_optimizations",
help=optparse.SUPPRESS_HELP)
parser.add_option("--tag",
action="store",
dest="tag",
help="Custom build tag")
(options, args) = parser.parse_args()
def b(value):
"""Returns the string 'true' if value is truthy, 'false' otherwise."""
if value:
return 'true'
else:
return 'false'
def pkg_config(pkg):
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
libs = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
cflags = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
return (libs, cflags)
def cc_macros():
"""Checks predefined macros using the CC command."""
try:
p = subprocess.Popen(CC.split() + ['-dM', '-E', '-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
except OSError:
print '''Node.js configure error: No acceptable C compiler found!
Please make sure you have a C compiler installed on your system and/or
consider adjusting the CC environment variable if you installed
it in a non-standard prefix.
'''
sys.exit()
p.stdin.write('\n')
out = p.communicate()[0]
out = str(out).split('\n')
k = {}
for line in out:
import shlex
lst = shlex.split(line)
if len(lst) > 2:
key = lst[1]
val = lst[2]
k[key] = val
return k
def is_arch_armv7():
"""Check for ARMv7 instructions"""
cc_macros_cache = cc_macros()
return ('__ARM_ARCH_7__' in cc_macros_cache or
'__ARM_ARCH_7A__' in cc_macros_cache or
'__ARM_ARCH_7R__' in cc_macros_cache or
'__ARM_ARCH_7M__' in cc_macros_cache)
def arm_hard_float_abi():
"""Check for hardfloat or softfloat eabi on ARM"""
# GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
# the Floating Point ABI used (PCS stands for Procedure Call Standard).
# We use these as well as a couple of other defines to statically determine
# what FP ABI used.
# GCC versions 4.4 and below don't support hard-fp.
# GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
# __ARM_PCS_VFP.
if compiler_version() >= (4, 6, 0):
return '__ARM_PCS_VFP' in cc_macros()
elif compiler_version() < (4, 5, 0):
return False
elif '__ARM_PCS_VFP' in cc_macros():
return True
elif ('__ARM_PCS' in cc_macros() or
'__SOFTFP' in cc_macros() or
not '__VFP_FP__' in cc_macros()):
return False
else:
print '''Node.js configure error: Your version of GCC does not report
the Floating-Point ABI to compile for your hardware
Please manually specify which floating-point ABI to use with the
--with-arm-float-abi option.
'''
sys.exit()
def host_arch_cc():
"""Host architecture check using the CC command."""
k = cc_macros()
matchup = {
'__x86_64__' : 'x64',
'__i386__' : 'ia32',
'__arm__' : 'arm',
}
rtn = 'ia32' # default
for i in matchup:
if i in k and k[i] != '0':
rtn = matchup[i]
break
return rtn
def host_arch_win():
"""Host architecture check using environ vars (better way to do this?)"""
arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
matchup = {
'AMD64' : 'x64',
'x86' : 'ia32',
'arm' : 'arm',
}
return matchup.get(arch, 'ia32')
def compiler_version():
try:
proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE)
except WindowsError:
return (0, False)
is_clang = 'clang' in proc.communicate()[0].split('\n')[0]
proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE)
version = tuple(map(int, proc.communicate()[0].split('.')))
return (version, is_clang)
def configure_arm(o):
# V8 on ARM requires that armv7 is set. CPU Model detected by
# the presence of __ARM_ARCH_7__ and the like defines in compiler
if options.arm_float_abi:
hard_float = options.arm_float_abi == 'hard'
else:
hard_float = arm_hard_float_abi()
o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
armv7 = is_arch_armv7()
if armv7:
# CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
o['variables']['arm_fpu'] = 'vfpv3'
o['variables']['arm_neon'] = 0
o['variables']['armv7'] = int(armv7)
def configure_node(o):
# TODO add gdb
o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
o['variables']['node_install_npm'] = b(not options.without_npm)
o['variables']['node_install_waf'] = b(not options.without_waf)
o['variables']['node_unsafe_optimizations'] = (
1 if options.unsafe_optimizations else 0)
o['default_configuration'] = 'Debug' if options.debug else 'Release'
host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
target_arch = options.dest_cpu or host_arch
o['variables']['host_arch'] = host_arch
o['variables']['target_arch'] = target_arch
if target_arch == 'arm':
configure_arm(o)
cc_version, is_clang = compiler_version()
o['variables']['clang'] = 1 if is_clang else 0
if not is_clang and cc_version != 0:
o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
# clang has always supported -fvisibility=hidden, right?
if not is_clang and cc_version < (4,0,0):
o['variables']['visibility'] = ''
# By default, enable DTrace on SunOS systems. Don't allow it on other
# systems, since it won't work. (The MacOS build process is different than
# SunOS, and we haven't implemented it.)
if sys.platform.startswith('sunos'):
o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
elif b(options.with_dtrace) == 'true':
raise Exception('DTrace is currently only supported on SunOS systems.')
else:
o['variables']['node_use_dtrace'] = 'false'
if options.no_ifaddrs:
o['defines'] += ['SUNOS_NO_IFADDRS']
# By default, enable ETW on Windows.
if sys.platform.startswith('win32'):
o['variables']['node_use_etw'] = b(not options.without_etw);
elif b(options.with_etw) == 'true':
raise Exception('ETW is only supported on Windows.')
else:
o['variables']['node_use_etw'] = 'false'
if options.tag:
o['variables']['node_tag'] = '-' + options.tag
else:
o['variables']['node_tag'] = ''
def configure_libz(o):
o['variables']['node_shared_zlib'] = b(options.shared_zlib)
# assume shared_zlib if one of these is set?
if options.shared_zlib_libpath:
o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
if options.shared_zlib_libname:
o['libraries'] += ['-l%s' % options.shared_zlib_libname]
elif options.shared_zlib:
o['libraries'] += ['-lz']
if options.shared_zlib_includes:
o['include_dirs'] += [options.shared_zlib_includes]
def configure_v8(o):
o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
o['variables']['node_shared_v8'] = b(options.shared_v8)
# assume shared_v8 if one of these is set?
if options.shared_v8_libpath:
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
if options.shared_v8_libname:
o['libraries'] += ['-l%s' % options.shared_v8_libname]
elif options.shared_v8:
o['libraries'] += ['-lv8']
if options.shared_v8_includes:
o['include_dirs'] += [options.shared_v8_includes]
def configure_openssl(o):
o['variables']['node_use_openssl'] = b(not options.without_ssl)
o['variables']['node_shared_openssl'] = b(options.shared_openssl)
if options.without_ssl:
return
if options.no_ssl2:
o['defines'] += ['OPENSSL_NO_SSL2=1']
if options.shared_openssl:
(libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
if options.shared_openssl_libpath:
o['libraries'] += ['-L%s' % options.shared_openssl_libpath]
if options.shared_openssl_libname:
libnames = options.shared_openssl_libname.split(',')
o['libraries'] += ['-l%s' % s for s in libnames]
else:
o['libraries'] += libs.split()
if options.shared_openssl_includes:
o['include_dirs'] += [options.shared_openssl_includes]
else:
o['cflags'] += cflags.split()
output = {
'variables': {},
'include_dirs': [],
'libraries': [],
'defines': [],
'cflags': [],
}
configure_node(output)
configure_libz(output)
configure_v8(output)
configure_openssl(output)
# variables should be a root level element,
# move everything else to target_defaults
variables = output['variables']
del output['variables']
output = {
'variables': variables,
'target_defaults': output
}
pprint.pprint(output, indent=2)
def write(filename, data):
filename = os.path.join(root_dir, filename)
print "creating ", filename
f = open(filename, 'w+')
f.write(data)
write('config.gypi', "# Do not edit. Generated by the configure script.\n" +
pprint.pformat(output, indent=2) + "\n")
write('config.mk', "# Do not edit. Generated by the configure script.\n" +
("BUILDTYPE=%s\n" % ('Debug' if options.debug else 'Release')))
if os.name == 'nt':
gyp_args = ['-f', 'msvs', '-G', 'msvs_version=2010']
elif options.dest_os:
gyp_args = ['-f', 'make-' + options.dest_os]
else:
gyp_args = ['-f', 'make']
subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)

View File

@@ -1,247 +0,0 @@
#!/usr/bin/env python
import optparse
import os
import json
import sys
root_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
import utils # GuessArchitecture
# parse our options
parser = optparse.OptionParser()
parser.add_option("--debug",
action="store_true",
dest="debug",
help="Also build debug build")
parser.add_option("--prefix",
action="store",
dest="prefix",
help="Select the install prefix (defaults to /usr/local)")
parser.add_option("--without-ssl",
action="store_true",
dest="without_ssl",
help="Build without SSL")
parser.add_option("--without-snapshot",
action="store_true",
dest="without_snapshot",
help="Build without snapshotting V8 libraries. You might want to set"
" this for cross-compiling. [Default: False]")
parser.add_option("--shared-v8",
action="store_true",
dest="shared_v8",
help="Link to a shared V8 DLL instead of static linking")
parser.add_option("--shared-v8-includes",
action="store",
dest="shared_v8_includes",
help="Directory containing V8 header files")
parser.add_option("--shared-v8-libpath",
action="store",
dest="shared_v8_libpath",
help="A directory to search for the shared V8 DLL")
parser.add_option("--shared-v8-libname",
action="store",
dest="shared_v8_libname",
help="Alternative lib name to link to (default: 'v8')")
parser.add_option("--openssl-includes",
action="store",
dest="openssl_includes",
help="A directory to search for the OpenSSL includes")
parser.add_option("--openssl-libpath",
action="store",
dest="openssl_libpath",
help="A directory to search for the OpenSSL libraries")
parser.add_option("--no-ssl2",
action="store_true",
dest="no_ssl2",
help="Disable OpenSSL v2")
parser.add_option("--shared-cares",
action="store_true",
dest="shared_cares",
help="Link to a shared C-Ares DLL instead of static linking")
parser.add_option("--shared-cares-includes",
action="store",
dest="shared_cares_includes",
help="Directory containing C-Ares header files")
parser.add_option("--shared-cares-libpath",
action="store",
dest="shared_cares_libpath",
help="A directory to search for the shared C-Ares DLL")
parser.add_option("--with-dtrace",
action="store_true",
dest="with_dtrace",
help="Build with DTrace (experimental)")
# CHECKME does this still work with recent releases of V8?
parser.add_option("--gdb",
action="store_true",
dest="gdb",
help="add gdb support")
parser.add_option("--dest-cpu",
action="store",
dest="dest_cpu",
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
(options, args) = parser.parse_args()
def pkg_config(pkg):
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
libs = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
cflags = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
return (libs, cflags)
def uname(switch):
f = os.popen('uname %s' % switch)
s = f.read().strip()
f.close()
return s
def host_arch():
"""Host architecture. One of arm, ia32 or x64."""
arch = uname('-p')
if arch == 'unknown':
arch = uname('-m')
return {
'arm': 'arm',
'x86': 'ia32',
'i386': 'ia32',
'x86_64': 'x64',
}.get(arch, 'ia32')
def target_arch():
# TODO act on options.dest_cpu
return host_arch()
def configure_node(o):
# TODO add gdb and dest_cpu
o['variables']['node_debug'] = 'true' if options.debug else 'false'
o['variables']['node_prefix'] = options.prefix if options.prefix else ''
o['variables']['node_use_dtrace'] = 'true' if options.with_dtrace else 'false'
o['variables']['host_arch'] = host_arch()
o['variables']['target_arch'] = target_arch()
# TODO move to node.gyp
if sys.platform == 'sunos5':
o['variables']['visibility'] = '' # FIXME -fvisibility=hidden, should be a gcc check
def configure_libz(o):
o['libraries'] += ['-lz']
def configure_v8(o):
o['variables']['v8_use_snapshot'] = 'true' if not options.without_snapshot else 'false'
o['variables']['node_shared_v8'] = 'true' if options.shared_v8 else 'false'
# assume shared_v8 if one of these is set?
if options.shared_v8_libpath:
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
if options.shared_v8_libname:
o['libraries'] += ['-l%s' % options.shared_v8_libname]
if options.shared_v8_includes:
o['include_dirs'] += [options.shared_v8_includes]
def configure_cares(o):
o['variables']['node_shared_cares'] = 'true' if options.shared_cares else 'false'
# assume shared_cares if one of these is set?
if options.shared_cares_libpath:
o['libraries'] += ['-L%s' % options.shared_cares_libpath]
if options.shared_cares_includes:
o['include_dirs'] += [options.shared_cares_includes]
def configure_openssl(o):
o['variables']['node_use_openssl'] = 'false' if options.without_ssl else 'true'
if options.without_ssl:
return
if options.no_ssl2:
o['defines'] += ['OPENSSL_NO_SSL2=1']
out = pkg_config('openssl')
(libs, cflags) = out if out else ('', '')
if options.openssl_libpath:
o['libraries'] += ['-L%s' % options.openssl_libpath, '-lssl', '-lcrypto']
else:
o['libraries'] += libs.split()
if options.openssl_includes:
o['include_dirs'] += [options.openssl_includes]
else:
o['cflags'] += cflags.split()
if libs or cflags or options.openssl_libpath or options.openssl_includes:
o['variables']['node_use_system_openssl'] = 'true'
else:
o['variables']['node_use_system_openssl'] = 'false'
print "configure options:", options
output = {
'variables': {},
'include_dirs': [],
'libraries': [],
'defines': [],
'cflags': [],
}
configure_node(output)
configure_libz(output)
configure_v8(output)
configure_cares(output)
configure_openssl(output)
# variables should be a root level element,
# move everything else to target_defaults
variables = output['variables']
del output['variables']
output = {
'variables': variables,
'target_defaults': output
}
fn = os.path.join(root_dir, 'options.gypi')
print "creating ", fn
f = open(fn, 'w+')
f.write("# Do not edit. Generated by the configure script.\n")
json.dump(output, f, indent=2, skipkeys=True)
f.write("\n")
f.close()

View File

@@ -1,5 +1,8 @@
core
tags
*.o
test
test_g
test_fast
*.mk
*.Makefile

4
deps/http_parser/.mailmap vendored Normal file
View File

@@ -0,0 +1,4 @@
# update AUTHORS with:
# git log --all --reverse --format='%aN <%aE>' | perl -ne 'BEGIN{print "# Authors ordered by first contribution.\n"} print unless $h{$_}; $h{$_} = 1' > AUTHORS
Ryan Dahl <ry@tinyclouds.org>
Salman Haq <salman.haq@asti-usa.com>

32
deps/http_parser/AUTHORS vendored Normal file
View File

@@ -0,0 +1,32 @@
# Authors ordered by first contribution.
Ryan Dahl <ry@tinyclouds.org>
Jeremy Hinegardner <jeremy@hinegardner.org>
Sergey Shepelev <temotor@gmail.com>
Joe Damato <ice799@gmail.com>
tomika <tomika_nospam@freemail.hu>
Phoenix Sol <phoenix@burninglabs.com>
Cliff Frey <cliff@meraki.com>
Ewen Cheslack-Postava <ewencp@cs.stanford.edu>
Santiago Gala <sgala@apache.org>
Tim Becker <tim.becker@syngenio.de>
Jeff Terrace <jterrace@gmail.com>
Ben Noordhuis <info@bnoordhuis.nl>
Nathan Rajlich <nathan@tootallnate.net>
Mark Nottingham <mnot@mnot.net>
Aman Gupta <aman@tmm1.net>
Tim Becker <tim.becker@kuriositaet.de>
Sean Cunningham <sean.cunningham@mandiant.com>
Peter Griess <pg@std.in>
Salman Haq <salman.haq@asti-usa.com>
Cliff Frey <clifffrey@gmail.com>
Jon Kolb <jon@b0g.us>
Fouad Mardini <f.mardini@gmail.com>
Paul Querna <pquerna@apache.org>
Felix Geisendörfer <felix@debuggable.com>
koichik <koichik@improvement.jp>
Andre Caron <andre.l.caron@gmail.com>
Ivo Raisr <ivosh@ivosh.net>
James McLaughlin <jamie@lacewing-project.org>
David Gwynne <loki@animata.net>
LE ROUX Thomas <thomas@procheo.fr>
Randy Rizun <rrizun@ortivawireless.com>

View File

@@ -10,7 +10,7 @@ CPPFLAGS_FAST += $(CPPFLAGS_FAST_EXTRA)
CFLAGS += -Wall -Wextra -Werror
CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA)
CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA)
CFLAGS_LIB = $(CFLAGS_FAST) -fPIC
test: test_g test_fast
./test_g
@@ -40,6 +40,12 @@ test-run-timed: test_fast
test-valgrind: test_g
valgrind ./test_g
libhttp_parser.o: http_parser.c http_parser.h Makefile
$(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c http_parser.c -o libhttp_parser.o
library: libhttp_parser.o
$(CC) -shared -o libhttp_parser.so libhttp_parser.o
package: http_parser.o
$(AR) rcs libhttp_parser.a http_parser.o
@@ -47,6 +53,6 @@ tags: http_parser.c http_parser.h test.c
ctags $^
clean:
rm -f *.o *.a test test_fast test_g http_parser.tar tags
rm -f *.o *.a test test_fast test_g http_parser.tar tags libhttp_parser.so libhttp_parser.o
.PHONY: clean package test-run test-run-timed test-valgrind

View File

@@ -164,8 +164,15 @@ and apply following logic:
------------------------ ------------ --------------------------------------------
Parsing URLs
------------
A simplistic zero-copy URL parser is provided as `http_parser_parse_url()`.
Users of this library may wish to use it to parse URLs constructed from
consecutive `on_url` callbacks.
See examples of reading in headers:
* [partial example](http://gist.github.com/155877) in C
* [from http-parser tests](http://github.com/ry/http-parser/blob/37a0ff8928fb0d83cec0d0d8909c5a4abcd221af/test.c#L403) in C
* [from Node library](http://github.com/ry/node/blob/842eaf446d2fdcb33b296c67c911c32a0dabc747/src/http.js#L284) in Javascript
* [from http-parser tests](http://github.com/joyent/http-parser/blob/37a0ff8/test.c#L403) in C
* [from Node library](http://github.com/joyent/node/blob/842eaf4/src/http.js#L284) in Javascript

File diff suppressed because it is too large Load Diff

View File

@@ -28,7 +28,7 @@ extern "C" {
#define HTTP_PARSER_VERSION_MINOR 0
#include <sys/types.h>
#if defined(_WIN32) && !defined(__MINGW32__) && !defined(_MSC_VER)
#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600)
typedef __int8 int8_t;
typedef unsigned __int8 uint8_t;
typedef __int16 int16_t;
@@ -65,7 +65,6 @@ typedef int ssize_t;
typedef struct http_parser http_parser;
typedef struct http_parser_settings http_parser_settings;
typedef struct http_parser_result http_parser_result;
/* Callbacks should return non-zero to indicate an error. The parser will
@@ -86,36 +85,44 @@ typedef int (*http_cb) (http_parser*);
/* Request Methods */
#define HTTP_METHOD_MAP(XX) \
XX(0, DELETE, DELETE) \
XX(1, GET, GET) \
XX(2, HEAD, HEAD) \
XX(3, POST, POST) \
XX(4, PUT, PUT) \
/* pathological */ \
XX(5, CONNECT, CONNECT) \
XX(6, OPTIONS, OPTIONS) \
XX(7, TRACE, TRACE) \
/* webdav */ \
XX(8, COPY, COPY) \
XX(9, LOCK, LOCK) \
XX(10, MKCOL, MKCOL) \
XX(11, MOVE, MOVE) \
XX(12, PROPFIND, PROPFIND) \
XX(13, PROPPATCH, PROPPATCH) \
XX(14, SEARCH, SEARCH) \
XX(15, UNLOCK, UNLOCK) \
/* subversion */ \
XX(16, REPORT, REPORT) \
XX(17, MKACTIVITY, MKACTIVITY) \
XX(18, CHECKOUT, CHECKOUT) \
XX(19, MERGE, MERGE) \
/* upnp */ \
XX(20, MSEARCH, M-SEARCH) \
XX(21, NOTIFY, NOTIFY) \
XX(22, SUBSCRIBE, SUBSCRIBE) \
XX(23, UNSUBSCRIBE, UNSUBSCRIBE) \
/* RFC-5789 */ \
XX(24, PATCH, PATCH) \
XX(25, PURGE, PURGE) \
enum http_method
{ HTTP_DELETE = 0
, HTTP_GET
, HTTP_HEAD
, HTTP_POST
, HTTP_PUT
/* pathological */
, HTTP_CONNECT
, HTTP_OPTIONS
, HTTP_TRACE
/* webdav */
, HTTP_COPY
, HTTP_LOCK
, HTTP_MKCOL
, HTTP_MOVE
, HTTP_PROPFIND
, HTTP_PROPPATCH
, HTTP_UNLOCK
/* subversion */
, HTTP_REPORT
, HTTP_MKACTIVITY
, HTTP_CHECKOUT
, HTTP_MERGE
/* upnp */
, HTTP_MSEARCH
, HTTP_NOTIFY
, HTTP_SUBSCRIBE
, HTTP_UNSUBSCRIBE
/* RFC-5789 */
, HTTP_PATCH
{
#define XX(num, name, string) HTTP_##name = num,
HTTP_METHOD_MAP(XX)
#undef XX
};
@@ -143,10 +150,7 @@ enum flags
\
/* Callback-related errors */ \
XX(CB_message_begin, "the on_message_begin callback failed") \
XX(CB_path, "the on_path callback failed") \
XX(CB_query_string, "the on_query_string callback failed") \
XX(CB_url, "the on_url callback failed") \
XX(CB_fragment, "the on_fragment callback failed") \
XX(CB_header_field, "the on_header_field callback failed") \
XX(CB_header_value, "the on_header_value callback failed") \
XX(CB_headers_complete, "the on_headers_complete callback failed") \
@@ -177,6 +181,7 @@ enum flags
XX(INVALID_CONSTANT, "invalid constant string") \
XX(INVALID_INTERNAL_STATE, "encountered unexpected internal state")\
XX(STRICT, "strict mode assertion failed") \
XX(PAUSED, "parser is paused") \
XX(UNKNOWN, "an unknown error occurred")
@@ -201,20 +206,20 @@ enum http_errno {
struct http_parser {
/** PRIVATE **/
unsigned char type : 2;
unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */
unsigned char state;
unsigned char header_state;
unsigned char index;
unsigned char type : 2; /* enum http_parser_type */
unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */
unsigned char state; /* enum state from http_parser.c */
unsigned char header_state; /* enum header_state from http_parser.c */
unsigned char index; /* index into current matcher */
uint32_t nread;
int64_t content_length;
uint32_t nread; /* # bytes read in various scenarios */
uint64_t content_length; /* # bytes in body (0 if no Content-Length header) */
/** READ-ONLY **/
unsigned short http_major;
unsigned short http_minor;
unsigned short status_code; /* responses only */
unsigned char method; /* requests only */
unsigned char method; /* requests only */
unsigned char http_errno : 7;
/* 1 = Upgrade header was present and the parser has exited because of that.
@@ -244,6 +249,35 @@ struct http_parser_settings {
};
enum http_parser_url_fields
{ UF_SCHEMA = 0
, UF_HOST = 1
, UF_PORT = 2
, UF_PATH = 3
, UF_QUERY = 4
, UF_FRAGMENT = 5
, UF_MAX = 6
};
/* Result structure for http_parser_parse_url().
*
* Callers should index into field_data[] with UF_* values iff field_set
* has the relevant (1 << UF_*) bit set. As a courtesy to clients (and
* because we probably have padding left over), we convert any port to
* a uint16_t.
*/
struct http_parser_url {
uint16_t field_set; /* Bitmask of (1 << UF_*) values */
uint16_t port; /* Converted UF_PORT string */
struct {
uint16_t off; /* Offset into buffer in which field starts */
uint16_t len; /* Length of run in buffer */
} field_data[UF_MAX];
};
void http_parser_init(http_parser *parser, enum http_parser_type type);
@@ -270,6 +304,14 @@ const char *http_errno_name(enum http_errno err);
/* Return a string description of the given error */
const char *http_errno_description(enum http_errno err);
/* Parse a URL; return nonzero on failure */
int http_parser_parse_url(const char *buf, size_t buflen,
int is_connect,
struct http_parser_url *u);
/* Pause or un-pause the parser; a nonzero value pauses */
void http_parser_pause(http_parser *parser, int paused);
#ifdef __cplusplus
}
#endif

34
deps/npm/.npmignore vendored
View File

@@ -1,13 +1,25 @@
*.swp
test/bin
test/output.log
test/packages/*/node_modules
test/packages/npm-test-depends-on-spark/which-spark.log
test/packages/test-package/random-data.txt
test/root
node_modules/ronn
node_modules/.bin
.*.swp
npm-debug.log
./npmrc
.gitignore
release/
/test/bin
/test/output.log
/test/packages/*/node_modules
/test/packages/npm-test-depends-on-spark/which-spark.log
/test/packages/test-package/random-data.txt
/test/root
node_modules/ronn
node_modules/tap
node_modules/.bin
/npmrc
/release/
# don't need these in the npm package.
html/*.png
# don't ignore .npmignore files
# these are used in some tests.
!.npmignore
/npm-*.tgz
*.pyc

7
deps/npm/.tern-project vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"libs": [
],
"plugins": {
"node": {}
}
}

View File

@@ -1,4 +0,0 @@
language: node_js
before_install: "make &>out || cat out; rm out"
node_js:
- 0.6

31
deps/npm/AUTHORS vendored
View File

@@ -59,3 +59,34 @@ Rod Vagg <rod@vagg.org>
Christian Howe <coderarity@gmail.com>
Andrew Lunny <alunny@gmail.com>
Henrik Hodne <dvyjones@binaryhex.com>
Adam Blackburn <regality@gmail.com>
Kris Windham <kriswindham@gmail.com>
Jens Grunert <jens.grunert@gmail.com>
Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
Dalmais Maxence <github@maxired.fr>
Marcus Ekwall <marcus.ekwall@gmail.com>
Aaron Stacy <aaron.r.stacy@gmail.com>
Phillip Howell <phowell@cothm.org>
Domenic Denicola <domenic@domenicdenicola.com>
James Halliday <mail@substack.net>
Jeremy Cantrell <jmcantrell@gmail.com>
Ribettes <patlogan29@gmail.com>
Einar Otto Stangvik <einaros@gmail.com>
Don Park <donpark@docuverse.com>
Kei Son <heyacct@gmail.com>
Nicolas Morel <marsup@gmail.com>
Mark Dube <markisdee@gmail.com>
Nathan Rajlich <nathan@tootallnate.net>
Maxim Bogushevich <boga1@mail.ru>
Justin Beckwith <justbe@microsoft.com>
Meaglin <Meaglin.wasabi@gmail.com>
Ben Evans <ben@bensbit.co.uk>
Nathan Zadoks <nathan@nathan7.eu>
Brian White <mscdex@gmail.com>
Jed Schmidt <tr@nslator.jp>
Ian Livingstone <ianl@cs.dal.ca>
Patrick Pfeiffer <patrick@buzzle.at>
Paul Miller <paul@paulmillr.com>
seebees <seebees@gmail.com>
Carl Lange <carl@flax.ie>
Jan Lehnardt <jan@apache.org>

36
deps/npm/LICENSE vendored
View File

@@ -1,4 +1,4 @@
Copyright 2009, 2010, 2011 Isaac Z. Schlueter (the "Author")
Copyright (c) Isaac Z. Schlueter (the "Original Author")
All rights reserved.
MIT +no-false-attribs License
@@ -20,9 +20,9 @@ by the recipients as they would use the unmodified Software,
containing modifications that substantially alter, remove, or
disable functionality of the Software, outside of the documented
configuration mechanisms provided by the Software, shall be
modified such that the Author's bug reporting email addresses and
urls are either replaced with the contact information of the
parties responsible for the changes, or removed entirely.
modified such that the Original Author's bug reporting email
addresses and urls are either replaced with the contact information
of the parties responsible for the changes, or removed entirely.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
@@ -36,26 +36,30 @@ OTHER DEALINGS IN THE SOFTWARE.
Except where noted, this license applies to any and all software
programs and associated documentation files created by the
Author, when distributed with the Software.
Original Author, when distributed with the Software.
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
part of the Node.js project, and is neither owned by nor
officially affiliated with Joyent, Inc.
Packages published in the npm registry are not part of npm
itself, are the sole property of their respective maintainers,
and are not covered by this license.
Packages published in the npm registry (other than the Software and
its included dependencies) are not part of npm itself, are the sole
property of their respective maintainers, and are not covered by
this license.
"npm Logo" created by Mathias Pettersson and Brian Hammond,
used with permission.
This program includes a BSDTar/LibArchive version 2.8.3-1 binary,
originally distributed as part of the MinGW suite, compiled for
Win32, according to the terms of the BSD license.
See deps/basic-bsdtar-2.8.3-1-ming32-bin/basic-bsdtar.LICENSE.
"Gubblebum Blocky" font
Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com
included for use in the npm website and documentation,
used with permission.
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
according to the terms of the MIT license.
This program uses "request", Copyright (c) 2011 Mikeal Rogers,
This program uses "request", Copyright (c) Mikeal Rogers,
according to the terms of the Apache license.
This program uses "mkdirp", Copyright (c) James Halliday,
according to the terms of the MIT/X11 license.
This program uses "opener", Copyright (c) Domenic Denicola,
according to the terms of the DWTFPL2 license.

26
deps/npm/Makefile vendored
View File

@@ -92,7 +92,7 @@ doc/cli/index.md: $(markdowns) scripts/index-build.js scripts/doc-build.sh packa
node scripts/index-build.js > $@
node_modules/.bin/ronn:
node cli.js install https://github.com/isaacs/ronnjs/tarball/master
node cli.js install ronn
doc: man
@@ -101,16 +101,10 @@ man: $(cli_docs) $(api_docs)
test:
node cli.js test
version: link
git add package.json &&\
git ci -m v$(shell npm -v)
publish: link doc
@git tag -d v$(shell npm -v) || true
@git push origin :v$(shell npm -v) || true
@npm unpublish npm@$(shell npm -v) || true
git clean -fd
git tag -s -m v$(shell npm -v) v$(shell npm -v) &&\
git push origin --tags &&\
npm publish &&\
npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\
@@ -119,16 +113,26 @@ publish: link doc
docpublish: doc-publish
doc-publish: doc
rsync -vazu --stats --no-implied-dirs --delete html/doc/ npmjs.org:/var/www/npmjs.org/public/doc
rsync -vazu --stats --no-implied-dirs --delete html/api/ npmjs.org:/var/www/npmjs.org/public/api
rsync -vazu --stats --no-implied-dirs --delete \
html/doc/ \
node@npmjs.org:/home/node/npm-www/doc
rsync -vazu --stats --no-implied-dirs --delete \
html/api/ \
node@npmjs.org:/home/node/npm-www/api
rsync -vazu --stats --no-implied-dirs --delete \
html/static/webfonts/ \
node@npmjs.org:/home/node/npm-www/static/webfonts
rsync -vazu --stats --no-implied-dirs --delete \
html/static/style.css \
node@npmjs.org:/home/node/npm-www/static/
zip-publish: release
scp release/* npmjs.org:/var/www/npmjs.org/public/dist/
scp release/* node@nodejs.org:dist/npm/
release:
@bash scripts/release.sh
sandwich:
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || echo "make it yourself"
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || echo "make it yourself" && exit 13
.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish

63
deps/npm/README.md vendored
View File

@@ -9,7 +9,7 @@ Much more info available via `npm help` once it's installed.
## IMPORTANT
**You need node v0.6 or higher to run this program.**
**You need node v0.8 or higher to run this program.**
To install an old **and unsupported** version of npm that works on node 0.3
and prior, clone the git repo and dig through the old tags and branches.
@@ -35,31 +35,18 @@ paths, etc.) then read on.
## Fancy Install (Unix)
To install npm with one command, do this:
curl http://npmjs.org/install.sh | sh
To skip the npm 0.x cleanup, do this:
curl http://npmjs.org/install.sh | clean=no sh
To say "yes" to the 0.x cleanup, but skip the prompt:
curl http://npmjs.org/install.sh | clean=yes sh
If you get permission errors, you'll need to **run** the script as root.
(Note, just putting `sudo` in front of the `curl` will **fetch** the script
as root.)
There's a pretty robust install script at
<https://npmjs.org/install.sh>. You can download that and run it.
### Slightly Fancier
You can set any npm configuration params with that script:
curl http://npmjs.org/install.sh | npm_config_prefix=/some/path sh
npm_config_prefix=/some/path sh install.sh
Or, you can run it in uber-debuggery mode:
curl http://npmjs.org/install.sh | npm_debug=1 sh
npm_debug=1 sh install.sh
### Even Fancier
@@ -73,7 +60,7 @@ for testing, or running stuff without actually installing npm itself.)
## Fancy Windows Install
You can download a zip file from <http://npmjs.org/dist/>, and unpack it
You can download a zip file from <https://npmjs.org/dist/>, and unpack it
in the same folder where node.exe lives.
If that's not fancy enough for you, then you can fetch the code with
@@ -83,27 +70,6 @@ git, and mess with it directly.
No.
## Dev Install
To install the latest **unstable** development version from git:
git clone https://github.com/isaacs/npm.git
cd npm
git submodule update --init --recursive
sudo make install # (or: `node cli.js install -gf`)
If you're sitting in the code folder reading this document in your
terminal, then you've already got the code. Just do:
git submodule update --init --recursive
sudo make install
and npm will install itself.
Note that github tarballs **do not contain submodules**, so
those won't work. You'll have to also fetch the appropriate submodules
listed in the .gitmodules file.
## Permissions when Using npm to Install Other Stuff
**tl;dr**
@@ -169,6 +135,14 @@ you have chosen.
If you would like to use npm programmatically, you can do that.
It's not very well documented, but it *is* rather simple.
Most of the time, unless you actually want to do all the things that
npm does, you should try using one of npm's dependencies rather than
using npm itself, if possible.
Eventually, npm will be just a thin cli wrapper around the modules
that it depends on, but for now, there are some things that you must
use npm itself to do.
var npm = require("npm")
npm.load(myConfigObject, function (er) {
if (er) return handlError(er)
@@ -195,14 +169,13 @@ help config` to learn about all the options you can set there.
## More Docs
Check out the [docs](http://npmjs.org/doc/),
especially the [faq](http://npmjs.org/doc/faq.html).
Check out the [docs](https://npmjs.org/doc/),
especially the [faq](https://npmjs.org/doc/faq.html).
You can use the `npm help` command to read any of them.
If you're a developer, and you want to use npm to publish your program,
you should
[read this](http://npmjs.org/doc/developers.html)
you should [read this](https://npmjs.org/doc/developers.html)
## Legal Stuff
@@ -248,7 +221,7 @@ If this concerns you, inspect the source before using packages.
When you find issues, please report them:
* web:
<http://github.com/isaacs/npm/issues>
<https://github.com/isaacs/npm/issues>
* email:
<npm-@googlegroups.com>

2
deps/npm/bin/node-gyp-bin/node-gyp vendored Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env sh
node "`dirname "$0"`/../../node_modules/node-gyp/bin/node-gyp.js" "$@"

1
deps/npm/bin/node-gyp-bin/node-gyp.cmd vendored Executable file
View File

@@ -0,0 +1 @@
node "%~dp0\..\..\node_modules\node-gyp\bin\node-gyp.js" %*

13
deps/npm/bin/npm vendored
View File

@@ -1,6 +1,13 @@
#!/bin/sh
if [ -x "`dirname "$0"`/node.exe" ]; then
"`dirname "$0"`/node.exe" "`dirname "$0"`/node_modules/npm/bin/npm-cli.js" "$@"
basedir=`dirname "$0"`
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node.exe" ]; then
"$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
else
node "`dirname "$0"`/node_modules/npm/bin/npm-cli.js" "$@"
node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
fi

View File

@@ -15,17 +15,17 @@ if (typeof WScript !== "undefined") {
process.title = "npm"
var log = require("../lib/utils/log.js")
log.waitForConfig()
log.info("ok", "it worked if it ends with")
var log = require("npmlog")
log.pause() // will be unpaused when config is loaded.
log.info("it worked if it ends with", "ok")
var fs = require("graceful-fs")
, path = require("path")
, npm = require("../lib/npm.js")
, ini = require("../lib/utils/ini.js")
, npmconf = require("npmconf")
, errorHandler = require("../lib/utils/error-handler.js")
, configDefs = require("../lib/utils/config-defs.js")
, configDefs = npmconf.defs
, shorthands = configDefs.shorthands
, types = configDefs.types
, nopt = require("nopt")
@@ -36,7 +36,7 @@ if (path.basename(process.argv[1]).slice(-1) === "g") {
process.argv.splice(1, 1, "npm", "-g")
}
log.verbose(process.argv, "cli")
log.verbose("cli", process.argv)
var conf = nopt(types, shorthands)
npm.argv = conf.argv.remain
@@ -50,14 +50,13 @@ if (conf.version) {
}
if (conf.versions) {
var v = process.versions
v.npm = npm.version
console.log(v)
return
npm.command = "version"
conf.usage = false
npm.argv = []
}
log.info("npm@"+npm.version, "using")
log.info("node@"+process.version, "using")
log.info("using", "npm@%s", npm.version)
log.info("using", "node@%s", process.version)
// make sure that this version of node works with this version of npm.
var semver = require("semver")

View File

@@ -1,16 +0,0 @@
var argv = process.argv.slice(2)
, user = argv[0] || process.getuid()
, group = argv[1] || process.getgid()
if (!isNaN(user)) user = +user
if (!isNaN(group)) group = +group
console.error([user, group])
try {
process.setgid(group)
process.setuid(user)
console.log(JSON.stringify({uid:+process.getuid(), gid:+process.getgid()}))
} catch (ex) {
console.log(JSON.stringify({error:ex.message,errno:ex.errno}))
}

View File

@@ -6,7 +6,7 @@ if (argv.length < 3) {
var fs = require("fs")
, file = argv[2]
, readJson = require("../lib/utils/read-json")
, readJson = require("read-package-json")
readJson(file, function (er, data) {
if (er) throw er

View File

@@ -25,6 +25,8 @@ The 'args' parameter must have exactly two elements:
Note that you must be the package owner to deprecate something. See the
`owner` and `adduser` help topics.
To un-deprecate a package, specify an empty string (`""`) for the `message` argument.
## SEE ALSO
* npm-publish(3)

View File

@@ -4,7 +4,7 @@ npm(3) -- node package manager
## SYNOPSIS
var npm = require("npm")
npm.load(configObject, function (er, npm) {
npm.load([configObject,] function (er, npm) {
// use the npm object, now that it's loaded.
npm.config.set(key, val)
@@ -25,12 +25,13 @@ This is the API documentation for npm.
To find documentation of the command line
client, see `npm(1)`.
Prior to using npm's commands,
`npm.load()` must be called with an object hash of
top-level configs. In the npm command line client,
this set of configs is parsed from the command line options. Additional
configuration params are loaded from two configuration files. See
`npm-config(1)` for more information.
Prior to using npm's commands, `npm.load()` must be called.
If you provide `configObject` as an object hash of top-level
configs, they override the values stored in the various config
locations. In the npm command line client, this set of configs
is parsed from the command line options. Additional configuration
params are loaded from two configuration files. See `npm-config(1)`
for more information.
After that, each of the functions are accessible in the
commands object: `npm.commands.<cmd>`. See `npm-index(1)` for a list of

View File

@@ -15,7 +15,7 @@ config param.
### browser
* Default: OS X: `"open"`, others: `"google-chrome"`
* Default: OS X: `"open"`, Windows: `"start"`, Others: `"xdg-open"`
* Type: String
The browser that is called by the `npm bugs` command to open websites.

View File

@@ -10,6 +10,8 @@ designed to reduce visual clutter and make bugs more apparent.
If you want to contribute to npm (which is very encouraged), you should
make your code conform to npm's style.
Note: this concerns npm's code not the specific packages at npmjs.org
## Line Length
Keep lines shorter than 80 characters. It's better for lines to be
@@ -129,29 +131,18 @@ Just send the error message back as the first argument to the callback.
Always create a new Error object with your message. Don't just return a
string message to the callback. Stack traces are handy.
Use the `require("./utils/log").er` function. It takes a callback and an
error message, and returns an object that will report the message in the
event of a failure. It's quite handy.
function myThing (args, cb) {
getData(args, function (er, data) {
if (er) return log.er(cb, "Couldn't get data")(er)
doSomethingElse(data, cb)
})
}
function justHasToWork (cb) {
doSomething(log.er(cb, "the doSomething failed."))
}
## Logging
Logging is done using the [npmlog](https://github.com/isaacs/npmlog)
utility.
Please clean up logs when they are no longer helpful. In particular,
logging the same object over and over again is not helpful. Logs should
report what's happening so that it's easier to track down where a fault
occurs.
Use appropriate log levels. The default log() function logs at the
"info" level. See `npm-config(1)` and search for "loglevel".
Use appropriate log levels. See `npm-config(1)` and search for
"loglevel".
## Case, naming, etc.

View File

@@ -36,11 +36,15 @@ work the same.
`$HOME/.npmrc` (or the `userconfig` param, if set above)
This file is an ini-file formatted list of `key = value` parameters.
Environment variables can be replaced using `${VARIABLE_NAME}`. For example:
prefix = ${HOME}/.npm-packages
### Global config file
`$PREFIX/etc/npmrc` (or the `globalconfig` param, if set above):
This file is an ini-file formatted list of `key = value` parameters
This file is an ini-file formatted list of `key = value` parameters.
Environment variables can be replaced as above.
### Built-in config file
@@ -112,9 +116,11 @@ The following shorthands are parsed on the command-line:
* `-reg`: `--registry`
* `-v`: `--version`
* `-f`: `--force`
* `-l`: `--long`
* `-desc`: `--description`
* `-S`: `--save`
* `-D`: `--save-dev`
* `-O`: `--save-optional`
* `-B`: `--save-bundle`
* `-y`: `--yes`
* `-n`: `--yes false`
* `ll` and `la` commands: `ls --long`
@@ -165,35 +171,21 @@ then the user could change the behavior by doing:
Force npm to always require authentication when accessing the registry,
even for `GET` requests.
### bin-publish
### bin-links
* Default: false
* Default: `true`
* Type: Boolean
If set to true, then binary packages will be created on publish.
Tells npm to create symlinks (or `.cmd` shims on Windows) for package
executables.
This is the way to opt into the "bindist" behavior described below.
### bindist
* Default: Unstable node versions, `null`, otherwise
`"<node version>-<platform>-<os release>"`
* Type: String or `null`
Experimental: on stable versions of node, binary distributions will be
created with this tag. If a user then installs that package, and their
`bindist` tag is found in the list of binary distributions, they will
get that prebuilt version.
Pre-build node packages have their preinstall, install, and postinstall
scripts stripped (since they are run prior to publishing), and do not
have their `build` directories automatically ignored.
It's yet to be seen if this is a good idea.
Set to false to have it not do this. This can be used to work around
the fact that some file systems don't support symlinks, even on
ostensibly Unix systems.
### browser
* Default: OS X: `"open"`, others: `"google-chrome"`
* Default: OS X: `"open"`, Windows: `"start"`, Others: `"xdg-open"`
* Type: String
The browser that is called by the `npm docs` command to open websites.
@@ -218,6 +210,49 @@ See also the `strict-ssl` config.
The location of npm's cache directory. See `npm-cache(1)`
### cache-lock-stale
* Default: 60000 (1 minute)
* Type: Number
The number of ms before cache folder lockfiles are considered stale.
### cache-lock-retries
* Default: 10
* Type: Number
Number of times to retry to acquire a lock on cache folder lockfiles.
### cache-lock-wait
* Default: 10000 (10 seconds)
* Type: Number
Number of ms to wait for cache lock files to expire.
### cache-max
* Default: Infinity
* Type: Number
The maximum time (in seconds) to keep items in the registry cache before
re-checking against the registry.
Note that no purging is done unless the `npm cache clean` command is
explicitly used, and that only GET requests use the cache.
### cache-min
* Default: 10
* Type: Number
The minimum time (in seconds) to keep items in the registry cache before
re-checking against the registry.
Note that no purging is done unless the `npm cache clean` command is
explicitly used, and that only GET requests use the cache.
### color
* Default: true on Posix, false on Windows
@@ -267,6 +302,15 @@ set.
The command to run for `npm edit` or `npm config edit`.
### engine-strict
* Default: false
* Type: Boolean
If set to true, then npm will stubbornly refuse to install (or even
consider installing) any package that claims to not be compatible with
the current Node.js version.
### force
* Default: false
@@ -279,6 +323,38 @@ Makes various commands more forceful.
* skips cache when requesting from the registry.
* prevents checks against clobbering non-npm files.
### fetch-retries
* Default: 2
* Type: Number
The "retries" config for the `retry` module to use when fetching
packages from the registry.
### fetch-retry-factor
* Default: 10
* Type: Number
The "factor" config for the `retry` module to use when fetching
packages.
### fetch-retry-mintimeout
* Default: 10000 (10 seconds)
* Type: Number
The "minTimeout" config for the `retry` module to use when fetching
packages.
### fetch-retry-maxtimeout
* Default: 60000 (1 minute)
* Type: Number
The "maxTimeout" config for the `retry` module to use when fetching
packages.
### git
* Default: `"git"`
@@ -297,10 +373,10 @@ Operates in "global" mode, so that packages are installed into the
`prefix` folder instead of the current working directory. See
`npm-folders(1)` for more on the differences in behavior.
* packages are installed into the `prefix/node_modules` folder, instead of the
* packages are installed into the `{prefix}/lib/node_modules` folder, instead of the
current working directory.
* bin files are linked to `prefix/bin`
* man pages are linked to `prefix/share/man`
* bin files are linked to `{prefix}/bin`
* man pages are linked to `{prefix}/share/man`
### globalconfig
@@ -336,6 +412,13 @@ user.
A proxy to use for outgoing https requests.
### user-agent
* Default: node/{process.version} {process.platform} {process.arch}
* Type: String
Sets a User-Agent to the request header
### ignore
* Default: ""
@@ -344,6 +427,16 @@ A proxy to use for outgoing https requests.
A white-space separated list of glob patterns of files to always exclude
from packages when building tarballs.
### init-module
* Default: ~/.npm-init.js
* Type: path
A module that will be loaded by the `npm init` command. See the
documentation for the
[init-package-json](https://github.com/isaacs/init-package-json) module
for more information, or npm-init(1).
### init.version
* Default: "0.0.0"
@@ -399,13 +492,6 @@ if one of the two conditions are met:
* the globally installed version is identical to the version that is
being installed locally.
### logfd
* Default: stderr file descriptor
* Type: Number or Stream
The location to write log output.
### loglevel
* Default: "http"
@@ -418,13 +504,20 @@ What level of logs to report. On failure, *all* logs are written to
Any logs of a higher level than the setting are shown.
The default is "http", which shows http, warn, and error output.
### logprefix
### logstream
* Default: true on Posix, false on Windows
* Type: Boolean
* Default: process.stderr
* Type: Stream
Whether or not to prefix log messages with "npm" and the log level. See
also "color" and "loglevel".
This is the stream that is passed to the
[npmlog](https://github.com/isaacs/npmlog) module at run time.
It cannot be set from the command line, but if you are using npm
programmatically, you may wish to send logs to somewhere other than
stderr.
If the `color` config is set to true, then this stream will receive
colored output if it is a TTY.
### long
@@ -472,12 +565,14 @@ The url to report npat test results.
A node module to `require()` when npm loads. Useful for programmatic
usage.
### outfd
### optional
* Default: standard output file descriptor
* Type: Number or Stream
* Default: true
* Type: Boolean
Where to write "normal" output. This has no effect on log output.
Attempt to install packages in the `optionalDependencies` hash. Note
that if these packages fail to install, the overall installation
process is not aborted.
### parseable
@@ -489,7 +584,7 @@ standard output.
### prefix
* Default: node's process.installPrefix
* Default: see npm-folders(1)
* Type: path
The location to install global items. If set on the command line, then
@@ -553,6 +648,45 @@ Remove failed installs.
Save installed packages to a package.json file as dependencies.
When used with the `npm rm` command, it removes it from the dependencies
hash.
Only works if there is already a package.json file present.
### save-bundle
* Default: false
* Type: Boolean
If a package would be saved at install time by the use of `--save`,
`--save-dev`, or `--save-optional`, then also put it in the
`bundleDependencies` list.
When used with the `npm rm` command, it removes it from the
bundledDependencies list.
### save-dev
* Default: false
* Type: Boolean
Save installed packages to a package.json file as devDependencies.
When used with the `npm rm` command, it removes it from the devDependencies
hash.
Only works if there is already a package.json file present.
### save-optional
* Default: false
* Type: Boolean
Save installed packages to a package.json file as optionalDependencies.
When used with the `npm rm` command, it removes it from the devDependencies
hash.
Only works if there is already a package.json file present.
### searchopts
@@ -587,6 +721,25 @@ character to indicate reverse sort.
The shell to run for the `npm explore` command.
### shrinkwrap
* Default: true
* Type: Boolean
If set to false, then ignore `npm-shrinkwrap.json` files when
installing.
### sign-git-tag
* Default: false
* Type: Boolean
If set to true, then the `npm version` command will tag the version
using `-s` to add a signature.
Note that git requires you to have set up GPG keys in your git configs
for this to work properly.
### strict-ssl
* Default: true

53
deps/npm/doc/cli/dedupe.md vendored Normal file
View File

@@ -0,0 +1,53 @@
npm-dedupe(1) -- Reduce duplication
===================================
## SYNOPSIS
npm dedupe [package names...]
## DESCRIPTION
Searches the local package tree and attempts to simplify the overall
structure by moving dependencies further up the tree, where they can
be more effectively shared by multiple dependent packages.
For example, consider this dependency graph:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
In this case, `npm-dedupe(1)` will transform the tree to:
a
+-- b
+-- d
`-- c@1.0.10
Because of the hierarchical nature of node's module lookup, b and d
will both get their dependency met by the single c package at the root
level of the tree.
If a suitable version exists at the target location in the tree
already, then it will be left untouched, but the other duplicates will
be deleted.
If no suitable version can be found, then a warning is printed, and
nothing is done.
If any arguments are supplied, then they are filters, and only the
named packages will be touched.
Note that this operation transforms the dependency tree, and may
result in packages getting updated versions, perhaps from the npm
registry.
This feature is experimental, and may change in future versions.
## SEE ALSO
* npm-ls(1)
* npm-update(1)
* npm-install(1)

View File

@@ -18,6 +18,8 @@ something like this:
Note that you must be the package owner to deprecate something. See the
`owner` and `adduser` help topics.
To un-deprecate a package, specify an empty string (`""`) for the `message` argument.
## SEE ALSO
* npm-publish(1)

View File

@@ -97,10 +97,34 @@ more info.
## Keeping files *out* of your package
Use a `.npmignore` file to keep stuff out of your package. If there's
no .npmignore file, but there *is* a .gitignore file, then npm will
ignore the stuff matched by the .gitignore file. If you *want* to
include something that is excluded by your .gitignore file, you can
create an empty .npmignore file to override it.
no `.npmignore` file, but there *is* a `.gitignore` file, then npm will
ignore the stuff matched by the `.gitignore` file. If you *want* to
include something that is excluded by your `.gitignore` file, you can
create an empty `.npmignore` file to override it.
By default, the following paths and files are ignored, so there's no
need to add them to `.npmignore` explicitly:
* `.*.swp`
* `._*`
* `.DS_Store`
* `.git`
* `.hg`
* `.lock-wscript`
* `.svn`
* `.wafpickle-*`
* `CVS`
* `npm-debug.log`
Additionally, everything in `node_modules` is ignored, except for
bundled dependencies. npm automatically handles this for you, so don't
bother adding `node_modules` to `.npmignore`.
The following paths and files are never ignored, so adding them to
`.npmignore` is pointless:
* `package.json`
* `README.*`
## Link Packages

View File

@@ -4,8 +4,10 @@ npm-disputes(1) -- Handling Module Name Disputes
## SYNOPSIS
1. Get the author email with `npm owner ls <pkgname>`
1. Email the author, CC <i@izs.me>.
2. After a few weeks, if there's no resolution, we'll sort it out.
2. Email the author, CC <i@izs.me>.
3. After a few weeks, if there's no resolution, we'll sort it out.
Don't squat on package names. Publish code or move out of the way.
## DESCRIPTION
@@ -13,9 +15,9 @@ There sometimes arise cases where a user publishes a module, and then
later, some other user wants to use that name. Here are some common
ways that happens (each of these is based on actual events.)
1. Bob writes a JavaScript module `foo`, which is not node-specific.
Bob doesn't use node at all. Joe wants to use `foo` in node, so he
wraps it in an npm module. Some time later, Bob starts using node,
1. Joe writes a JavaScript module `foo`, which is not node-specific.
Joe doesn't use node at all. Bob wants to use `foo` in node, so he
wraps it in an npm module. Some time later, Joe starts using node,
and wants to take over management of his program.
2. Bob writes an npm module `foo`, and publishes it. Perhaps much
later, Joe finds a bug in `foo`, and fixes it. He sends a pull
@@ -40,14 +42,15 @@ Joe's appropriate course of action in each case is the same.
1. `npm owner ls foo`. This will tell Joe the email address of the
owner (Bob).
2. Joe emails Bob, explaining the situation **as respecfully as possible**,
2. Joe emails Bob, explaining the situation **as respectfully as possible**,
and what he would like to do with the module name. He adds
isaacs <i@izs.me> to the CC list of the email. Mention in the email
that Bob can run `npm owner add joe foo` to add Joe as an owner of
the `foo` package.
3. After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email isaacs
<i@izs.me> and we'll sort it out.
<i@izs.me> and we'll sort it out. ("Reasonable" is usually about 4
weeks, but extra time is allowed around common holidays.)
## REASONING
@@ -69,12 +72,23 @@ Some things are not allowed, and will be removed without discussion if
they are brought to the attention of the npm registry admins, including
but not limited to:
1. Malware (that is, a module designed to exploit or harm the machine on
which it is installed)
1. Malware (that is, a package designed to exploit or harm the machine on
which it is installed).
2. Violations of copyright or licenses (for example, cloning an
MIT-licensed program, and then removing or changing the copyright and
license statement)
license statement).
3. Illegal content.
4. "Squatting" on a package name that you *plan* to use, but aren't
actually using. Sorry, I don't care how great the name is, or how
perfect a fit it is for the thing that someday might happen. If
someone wants to use it today, and you're just taking up space with
an empty tarball, you're going to be evicted.
5. Putting empty packages in the registry. Packages must have SOME
functionality. It can be silly, but it can't be *nothing*. (See
also: squatting.)
6. Doing weird things with the registry, like using it as your own
personal application database or otherwise putting non-packagey
things into it.
If you see bad behavior like this, please report it right away.

View File

@@ -16,7 +16,7 @@ config param.
### browser
* Default: OS X: `"open"`, others: `"google-chrome"`
* Default: OS X: `"open"`, Windows: `"start"`, Others: `"xdg-open"`
* Type: String
The browser that is called by the `npm docs` command to open websites.

View File

@@ -3,7 +3,7 @@ npm-faq(1) -- Frequently Asked Questions
## Where can I find these docs in HTML?
<http://npmjs.org/doc/>, or run:
<https://npmjs.org/doc/>, or run:
npm config set viewer browser
@@ -72,6 +72,52 @@ Write your own package manager, then. It's not that hard.
npm will not help you do something that is known to be a bad idea.
## `"node_modules"` is the name of my deity's arch-rival, and a Forbidden Word in my religion. Can I configure npm to use a different folder?
No. This will never happen. This question comes up sometimes,
because it seems silly from the outside that npm couldn't just be
configured to put stuff somewhere else, and then npm could load them
from there. It's an arbitrary spelling choice, right? What's the big
deal?
At the time of this writing, the string `'node_modules'` appears 151
times in 53 separate files in npm and node core (excluding tests and
documentation).
Some of these references are in node's built-in module loader. Since
npm is not involved **at all** at run-time, node itself would have to
be configured to know where you've decided to stick stuff. Complexity
hurdle #1. Since the Node module system is locked, this cannot be
changed, and is enough to kill this request. But I'll continue, in
deference to your deity's delicate feelings regarding spelling.
Many of the others are in dependencies that npm uses, which are not
necessarily tightly coupled to npm (in the sense that they do not read
npm's configuration files, etc.) Each of these would have to be
configured to take the name of the `node_modules` folder as a
parameter. Complexity hurdle #2.
Furthermore, npm has the ability to "bundle" dependencies by adding
the dep names to the `"bundledDependencies"` list in package.json,
which causes the folder to be included in the package tarball. What
if the author of a module bundles its dependencies, and they use a
different spelling for `node_modules`? npm would have to rename the
folder at publish time, and then be smart enough to unpack it using
your locally configured name. Complexity hurdle #3.
Furthermore, what happens when you *change* this name? Fine, it's
easy enough the first time, just rename the `node_modules` folders to
`./blergyblerp/` or whatever name you choose. But what about when you
change it again? npm doesn't currently track any state about past
configuration settings, so this would be rather difficult to do
properly. It would have to track every previous value for this
config, and always accept any of them, or else yesterday's install may
be broken tomorrow. Complexity hurdle #5.
Never going to happen. The folder is named `node_modules`. It is
written indelibly in the Node Way, handed down from the ancient times
of Node 0.3.
## Should I check my `node_modules` folder into git?
Mikeal Rogers answered this question very well:
@@ -144,7 +190,7 @@ command.)
In those cases, you can do this:
curl http://npmjs.org/install.sh | sh
curl https://npmjs.org/install.sh | sh
## What is a `package`?
@@ -175,12 +221,19 @@ an argument to `git checkout`. The default is `master`.
## How do I install node with npm?
You don't. Try one of these:
You don't. Try one of these node version managers:
Unix:
* <http://github.com/isaacs/nave>
* <http://github.com/visionmedia/n>
* <http://github.com/creationix/nvm>
Windows:
* <http://github.com/marcelklehr/nodist>
* <https://github.com/hakobera/nvmw>
## How can I use npm for development?
See `npm-developers(1)` and `npm-json(1)`.
@@ -211,20 +264,29 @@ means that publishes go over HTTP by default in those versions of node.
## I forgot my password, and can't publish. How do I reset it?
Go to <http://admin.npmjs.org/reset>.
Go to <https://npmjs.org/forgot>.
## I get ECONNREFUSED a lot. What's up?
Either the registry is down, or node's DNS isn't able to reach out.
To check if the registry is down, open up
<http://registry.npmjs.org/>
To check if the registry is down, open up <http://registry.npmjs.org/>
in a web browser. This will also tell you if you are just unable to
access the internet for some reason.
If the registry IS down, let me know by emailing or posting an issue.
We'll have someone kick it or something.
## Why no namespaces?
Please see this discussion: <https://github.com/isaacs/npm/issues/798>
tl;dr - It doesn't actually make things better, and can make them worse.
If you want to namespace your own packages, you may: simply use the
`-` character to separate the names. npm is a mostly anarchic system.
There is not sufficient need to impose namespace rules on everyone.
## Who does npm?
`npm view npm author`
@@ -236,7 +298,7 @@ We'll have someone kick it or something.
Discuss it on the mailing list, or post an issue.
* <npm-@googlegroups.com>
* <http://github.com/isaacs/npm/issues>
* <https://github.com/isaacs/npm/issues>
## Why does npm hate me?

View File

@@ -157,21 +157,21 @@ In this case, we might expect a folder structure like this:
+-- node_modules
+-- blerg (1.2.5) <---[A]
+-- bar (1.2.3) <---[B]
| +-- node_modules
| | `-- baz (2.0.2) <---[C]
| | `-- node_modules
| | `-- quux (3.2.0)
| `-- asdf (2.3.4)
| `-- node_modules
| +-- baz (2.0.2) <---[C]
| | `-- node_modules
| | `-- quux (3.2.0)
| `-- asdf (2.3.4)
`-- baz (1.2.3) <---[D]
`-- node_modules
`-- quux (3.2.0) <---[E]
Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are
Since foo depends directly on `bar@1.2.3` and `baz@1.2.3`, those are
installed in foo's `node_modules` folder.
Even though the latest copy of blerg is 1.3.7, foo has a specific
dependency on version 1.2.5. So, that gets installed at [A]. Since the
parent installation of blerg satisfie's bar's dependency on blerg@1.x,
parent installation of blerg satisfies bar's dependency on `blerg@1.x`,
it does not install another copy under [B].
Bar [B] also has dependencies on baz and asdf, so those are installed in
@@ -179,11 +179,11 @@ bar's `node_modules` folder. Because it depends on `baz@2.x`, it cannot
re-use the `baz@1.2.3` installed in the parent `node_modules` folder [D],
and must install its own copy [C].
Underneath bar, the `baz->quux->bar` dependency creates a cycle.
However, because `bar` is already in `quux`'s ancestry [B], it does not
Underneath bar, the `baz -> quux -> bar` dependency creates a cycle.
However, because bar is already in quux's ancestry [B], it does not
unpack another copy of bar into that folder.
Underneath `foo->baz` [D], quux's [E] folder tree is empty, because its
Underneath `foo -> baz` [D], quux's [E] folder tree is empty, because its
dependency on bar is satisfied by the parent folder copy installed at [B].
For a graphical breakdown of what is installed where, use `npm ls`.

209
deps/npm/doc/cli/global.md vendored Normal file
View File

@@ -0,0 +1,209 @@
npm-folders(1) -- Folder Structures Used by npm
===============================================
## DESCRIPTION
npm puts various things on your computer. That's its job.
This document will tell you what it puts where.
### tl;dr
* Local install (default): puts stuff in `./node_modules` of the current
package root.
* Global install (with `-g`): puts stuff in /usr/local or wherever node
is installed.
* Install it **locally** if you're going to `require()` it.
* Install it **globally** if you're going to run it on the command line.
* If you need both, then install it in both places, or use `npm link`.
### prefix Configuration
The `prefix` config defaults to the location where node is installed.
On most systems, this is `/usr/local`, and most of the time is the same
as node's `process.installPrefix`.
On windows, this is the exact location of the node.exe binary. On Unix
systems, it's one level up, since node is typically installed at
`{prefix}/bin/node` rather than `{prefix}/node.exe`.
When the `global` flag is set, npm installs things into this prefix.
When it is not set, it uses the root of the current package, or the
current working directory if not in a package already.
### Node Modules
Packages are dropped into the `node_modules` folder under the `prefix`.
When installing locally, this means that you can
`require("packagename")` to load its main module, or
`require("packagename/lib/path/to/sub/module")` to load other modules.
Global installs on Unix systems go to `{prefix}/lib/node_modules`.
Global installs on Windows go to `{prefix}/node_modules` (that is, no
`lib` folder.)
If you wish to `require()` a package, then install it locally.
### Executables
When in global mode, executables are linked into `{prefix}/bin` on Unix,
or directly into `{prefix}` on Windows.
When in local mode, executables are linked into
`./node_modules/.bin` so that they can be made available to scripts run
through npm. (For example, so that a test runner will be in the path
when you run `npm test`.)
### Man Pages
When in global mode, man pages are linked into `{prefix}/share/man`.
When in local mode, man pages are not installed.
Man pages are not installed on Windows systems.
### Cache
See `npm-cache(1)`. Cache files are stored in `~/.npm` on Posix, or
`~/npm-cache` on Windows.
This is controlled by the `cache` configuration param.
### Temp Files
Temporary files are stored by default in the folder specified by the
`tmp` config, which defaults to the TMPDIR, TMP, or TEMP environment
variables, or `/tmp` on Unix and `c:\windows\temp` on Windows.
Temp files are given a unique folder under this root for each run of the
program, and are deleted upon successful exit.
## More Information
When installing locally, npm first tries to find an appropriate
`prefix` folder. This is so that `npm install foo@1.2.3` will install
to the sensible root of your package, even if you happen to have `cd`ed
into some other folder.
Starting at the $PWD, npm will walk up the folder tree checking for a
folder that contains either a `package.json` file, or a `node_modules`
folder. If such a thing is found, then that is treated as the effective
"current directory" for the purpose of running npm commands. (This
behavior is inspired by and similar to git's .git-folder seeking
logic when running git commands in a working dir.)
If no package root is found, then the current folder is used.
When you run `npm install foo@1.2.3`, then the package is loaded into
the cache, and then unpacked into `./node_modules/foo`. Then, any of
foo's dependencies are similarly unpacked into
`./node_modules/foo/node_modules/...`.
Any bin files are symlinked to `./node_modules/.bin/`, so that they may
be found by npm scripts when necessary.
### Global Installation
If the `global` configuration is set to true, then npm will
install packages "globally".
For global installation, packages are installed roughly the same way,
but using the folders described above.
### Cycles, Conflicts, and Folder Parsimony
Cycles are handled using the property of node's module system that it
walks up the directories looking for `node_modules` folders. So, at every
stage, if a package is already installed in an ancestor `node_modules`
folder, then it is not installed at the current location.
Consider the case above, where `foo -> bar -> baz`. Imagine if, in
addition to that, baz depended on bar, so you'd have:
`foo -> bar -> baz -> bar -> baz ...`. However, since the folder
structure is: `foo/node_modules/bar/node_modules/baz`, there's no need to
put another copy of bar into `.../baz/node_modules`, since when it calls
require("bar"), it will get the copy that is installed in
`foo/node_modules/bar`.
This shortcut is only used if the exact same
version would be installed in multiple nested `node_modules` folders. It
is still possible to have `a/node_modules/b/node_modules/a` if the two
"a" packages are different versions. However, without repeating the
exact same package multiple times, an infinite regress will always be
prevented.
Another optimization can be made by installing dependencies at the
highest level possible, below the localized "target" folder.
#### Example
Consider this dependency graph:
foo
+-- blerg@1.2.5
+-- bar@1.2.3
| +-- blerg@1.x (latest=1.3.7)
| +-- baz@2.x
| | `-- quux@3.x
| | `-- bar@1.2.3 (cycle)
| `-- asdf@*
`-- baz@1.2.3
`-- quux@3.x
`-- bar
In this case, we might expect a folder structure like this:
foo
+-- node_modules
+-- blerg (1.2.5) <---[A]
+-- bar (1.2.3) <---[B]
| +-- node_modules
| | `-- baz (2.0.2) <---[C]
| | `-- node_modules
| | `-- quux (3.2.0)
| `-- asdf (2.3.4)
`-- baz (1.2.3) <---[D]
`-- node_modules
`-- quux (3.2.0) <---[E]
Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are
installed in foo's `node_modules` folder.
Even though the latest copy of blerg is 1.3.7, foo has a specific
dependency on version 1.2.5. So, that gets installed at [A]. Since the
parent installation of blerg satisfie's bar's dependency on blerg@1.x,
it does not install another copy under [B].
Bar [B] also has dependencies on baz and asdf, so those are installed in
bar's `node_modules` folder. Because it depends on `baz@2.x`, it cannot
re-use the `baz@1.2.3` installed in the parent `node_modules` folder [D],
and must install its own copy [C].
Underneath bar, the `baz->quux->bar` dependency creates a cycle.
However, because `bar` is already in `quux`'s ancestry [B], it does not
unpack another copy of bar into that folder.
Underneath `foo->baz` [D], quux's [E] folder tree is empty, because its
dependency on bar is satisfied by the parent folder copy installed at [B].
For a graphical breakdown of what is installed where, use `npm ls`.
### Publishing
Upon publishing, npm will look in the `node_modules` folder. If any of
the items there are not in the `bundledDependencies` array, then they will
not be included in the package tarball.
This allows a package maintainer to install all of their dependencies
(and dev dependencies) locally, but only re-publish those items that
cannot be found elsewhere. See `npm-json(1)` for more information.
## SEE ALSO
* npm-faq(1)
* npm-json(1)
* npm-install(1)
* npm-pack(1)
* npm-cache(1)
* npm-config(1)
* npm-publish(1)

View File

@@ -46,6 +46,10 @@ npm-index(1) -- Index of all npm documentation
Manage the npm configuration file
## npm-dedupe(1)
Reduce duplication
## npm-deprecate(1)
Deprecate a version of a package
@@ -78,6 +82,10 @@ npm-index(1) -- Index of all npm documentation
Folder Structures Used by npm
## npm-global(1)
Folder Structures Used by npm
## npm-help-search(1)
Search npm help documentation
@@ -102,7 +110,7 @@ npm-index(1) -- Index of all npm documentation
Symlink a package folder
## npm-list(1)
## npm-ls(1)
List installed packages
@@ -150,6 +158,10 @@ npm-index(1) -- Index of all npm documentation
Start a package
## npm-rm(1)
Remove a package
## npm-root(1)
Display npm root
@@ -178,6 +190,10 @@ npm-index(1) -- Index of all npm documentation
Mark your favorite packages
## npm-stars(1)
View packages marked as favorites
## npm-start(1)
Start a package

View File

@@ -20,5 +20,6 @@ without a really good reason to do so.
## SEE ALSO
* <https://github.com/isaacs/init-package-json>
* npm-json(1)
* npm-version(1)

View File

@@ -7,10 +7,11 @@ npm-install(1) -- Install a package
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install <name>
npm install <name> [--save|--save-dev|--save-optional]
npm install <name>@<tag>
npm install <name>@<version>
npm install <name>@<version range>
npm install <name>@<version range>
## DESCRIPTION
@@ -35,88 +36,116 @@ after packing it up into a tarball (b).
* `npm install` (in package directory, no arguments):
Install the dependencies in the local node_modules folder.
In global mode (ie, with `-g` or `--global` appended to the command),
it installs the current package context (ie, the current working
directory) as a global package.
Install the dependencies in the local node_modules folder.
In global mode (ie, with `-g` or `--global` appended to the command),
it installs the current package context (ie, the current working
directory) as a global package.
* `npm install <folder>`:
Install a package that is sitting in a folder on the filesystem.
Install a package that is sitting in a folder on the filesystem.
* `npm install <tarball file>`:
Install a package that is sitting on the filesystem. Note: if you just want
to link a dev directory into your npm root, you can do this more easily by
using `npm link`.
Example:
Install a package that is sitting on the filesystem. Note: if you just want
to link a dev directory into your npm root, you can do this more easily by
using `npm link`.
npm install ./package.tgz
Example:
npm install ./package.tgz
* `npm install <tarball url>`:
Fetch the tarball url, and then install it. In order to distinguish between
this and other options, the argument must start with "http://" or "https://"
Example:
Fetch the tarball url, and then install it. In order to distinguish between
this and other options, the argument must start with "http://" or "https://"
npm install https://github.com/indexzero/forever/tarball/v0.5.6
Example:
* `npm install <name>`:
Do a `<name>@<tag>` install, where `<tag>` is the "tag" config. (See
`npm-config(1)`)
npm install https://github.com/indexzero/forever/tarball/v0.5.6
Example:
* `npm install <name> [--save|--save-dev|--save-optional]`:
npm install sax
Do a `<name>@<tag>` install, where `<tag>` is the "tag" config. (See
`npm-config(1)`.)
**Note**: If there is a file or folder named `<name>` in the current
working directory, then it will try to install that, and only try to
fetch the package by name if it is not valid.
In most cases, this will install the latest version
of the module published on npm.
Example:
npm install sax
`npm install` takes 3 exclusive, optional flags which save or update
the package version in your main package.json:
* `--save`: Package will appear in your `dependencies`.
* `--save-dev`: Package will appear in your `devDependencies`.
* `--save-optional`: Package will appear in your `optionalDependencies`.
Examples:
npm install sax --save
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
**Note**: If there is a file or folder named `<name>` in the current
working directory, then it will try to install that, and only try to
fetch the package by name if it is not valid.
* `npm install <name>@<tag>`:
Install the version of the package that is referenced by the specified tag.
If the tag does not exist in the registry data for that package, then this
will fail.
Example:
Install the version of the package that is referenced by the specified tag.
If the tag does not exist in the registry data for that package, then this
will fail.
npm install sax@latest
Example:
npm install sax@latest
* `npm install <name>@<version>`:
Install the specified version of the package. This will fail if the version
has not been published to the registry.
Example:
Install the specified version of the package. This will fail if the version
has not been published to the registry.
npm install sax@0.1.1
Example:
npm install sax@0.1.1
* `npm install <name>@<version range>`:
Install a version of the package matching the specified version range. This
will follow the same rules for resolving dependencies described in `npm-json(1)`.
Note that most version ranges must be put in quotes so that your shell will
treat it as a single argument.
Install a version of the package matching the specified version range. This
will follow the same rules for resolving dependencies described in `npm-json(1)`.
Example:
Note that most version ranges must be put in quotes so that your shell will
treat it as a single argument.
npm install sax@">=0.1.0 <0.2.0"
Example:
npm install sax@">=0.1.0 <0.2.0"
* `npm install <git remote url>`:
Install a package by cloning a git remote url. The format of the git
url is:
Install a package by cloning a git remote url. The format of the git
url is:
<protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]
<protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]
`<protocol>` is one of `git`, `git+ssh`, `git+http`, or
`git+https`. If no `<commit-ish>` is specified, then `master` is
used.
`<protocol>` is one of `git`, `git+ssh`, `git+http`, or
`git+https`. If no `<commit-ish>` is specified, then `master` is
used.
Examples:
Examples:
git+ssh://git@github.com:isaacs/npm.git#v1.0.27
git+https://isaacs@github.com/isaacs/npm.git
git://github.com/isaacs/npm.git#v1.0.27
git+ssh://git@github.com:isaacs/npm.git#v1.0.27
git+https://isaacs@github.com/isaacs/npm.git
git://github.com/isaacs/npm.git#v1.0.27
You may combine multiple arguments, and even multiple types of arguments.
For example:
@@ -131,11 +160,20 @@ local copy exists on disk.
npm install sax --force
The `--global` argument will cause npm to install the package globally
rather than locally. See `npm-global(1)`.
rather than locally. See `npm-folders(1)`.
The `--link` argument will cause npm to link global installs into the
local space in some cases.
The `--no-bin-links` argument will prevent npm from creating symlinks for
any binaries the package might contain.
The `--no-shrinkwrap` argument, which will ignore an available
shrinkwrap file and use the package.json instead.
The `--nodedir=/path/to/node/source` argument will allow npm to find the
node source code so that npm can compile native modules.
See `npm-config(1)`. Many of the configuration params have some
effect on installation, since that's most of what npm does.

View File

@@ -23,6 +23,11 @@ npm will default some values based on package contents.
If there is a `wscript` file in the root of your package, npm will
default the `preinstall` command to compile using node-waf.
* `"scripts":{"preinstall": "node-gyp rebuild"}`
If there is a `binding.gyp` file in the root of your package, npm will
default the `preinstall` command to compile using node-gyp.
* `"contributors": [...]`
If there is an `AUTHORS` file in the root of your package, npm will
@@ -113,6 +118,27 @@ you can specify the value for "bugs" as a simple string instead of an object.
If a url is provided, it will be used by the `npm bugs` command.
## license
You should specify a license for your package so that people know how they are
permitted to use it, and any restrictions you're placing on it.
The simplest way, assuming you're using a common license such as BSD or MIT, is
to just specify the name of the license you're using, like this:
{ "license" : "BSD" }
If you have more complex licensing terms, or you want to provide more detail
in your package.json file, you can use the more verbose plural form, like this:
"licenses" : [
{ "type" : "MyLicense"
, "url" : "http://github.com/owner/project/path/to/license"
}
]
It's also a good idea to include a license file at the top level in your package.
## people fields: author, contributors
The "author" is one person. "contributors" is an array of people. A "person"
@@ -361,8 +387,8 @@ a version in the following fashion.
For example, the following are equivalent:
* `"~1.2.3" = ">=1.2.3 <1.3.0"`
* `"~1.2" = ">=1.2.0 <2.0.0"`
* `"~1" = ">=1.0.0 <2.0.0"`
* `"~1.2" = ">=1.2.0 <1.3.0"`
* `"~1" = ">=1.0.0 <1.1.0"`
### X Version Ranges
@@ -394,6 +420,7 @@ Git urls can be of the form:
git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish
@@ -410,9 +437,9 @@ In this case, it's best to list these additional items in a
`devDependencies` hash.
These things will be installed whenever the `--dev` configuration flag
is set. This flag is set automatically when doing `npm link`, and can
be managed like any other npm configuration param. See `npm-config(1)`
for more on the topic.
is set. This flag is set automatically when doing `npm link` or when doing
`npm install` from the root of a package, and can be managed like any other npm
configuration param. See `npm-config(1)` for more on the topic.
## bundledDependencies
@@ -420,15 +447,44 @@ Array of package names that will be bundled when publishing the package.
If this is spelled `"bundleDependencies"`, then that is also honorable.
## optionalDependencies
If a dependency can be used, but you would like npm to proceed if it
cannot be found or fails to install, then you may put it in the
`optionalDependencies` hash. This is a map of package name to version
or url, just like the `dependencies` hash. The difference is that
failure is tolerated.
It is still your program's responsibility to handle the lack of the
dependency. For example, something like this:
try {
var foo = require('foo')
var fooVersion = require('foo/package.json').version
} catch (er) {
foo = null
}
if ( notGoodFooVersion(fooVersion) ) {
foo = null
}
// .. then later in your program ..
if (foo) {
foo.doFooThings()
}
Entries in `optionalDependencies` will override entries of the same name in
`dependencies`, so it's usually best to only put in one place.
## engines
You can specify the version of
node that your stuff works on:
You can specify the version of node that your stuff works on:
{ "engines" : { "node" : ">=0.1.27 <0.1.30" } }
And, like with dependencies, if you don't specify the version (or if you
specify "*" as the version), then any version of node will do.
specify "\*" as the version), then any version of node will do.
If you specify an "engines" field, then npm will require that "node" be
somewhere on that list. If "engines" is omitted, then npm will just assume
@@ -439,6 +495,52 @@ are capable of properly installing your program. For example:
{ "engines" : { "npm" : "~1.0.20" } }
Note that, unless the user has set the `engine-strict` config flag, this
field is advisory only.
## engineStrict
If you are sure that your module will *definitely not* run properly on
versions of Node/npm other than those specified in the `engines` hash,
then you can set `"engineStrict": true` in your package.json file.
This will override the user's `engine-strict` config setting.
Please do not do this unless you are really very very sure. If your
engines hash is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
updating to new versions of Node. Consider this choice carefully. If
people abuse it, it will be removed in a future version of npm.
## os
You can specify which operating systems your
module will run on:
"os" : [ "darwin", "linux" ]
You can also blacklist instead of whitelist operating systems,
just prepend the blacklisted os with a '!':
"os" : [ "!win32" ]
The host operating system is determined by `process.platform`
It is allowed to both blacklist, and whitelist, although there isn't any
good reason to do this.
## cpu
If your code only runs on certain cpu architectures,
you can specify which ones.
"cpu" : [ "x64", "ia32" ]
Like the `os` option, you can also blacklist architectures:
"cpu" : [ "!arm", "!mips" ]
The host architecture is determined by `process.arch`
## preferGlobal
If your package is primarily a command-line application that should be
@@ -455,7 +557,7 @@ to publish it.
This is a way to prevent accidental publication of private repositories.
If you would like to ensure that a given package is only ever published
to a speciic registry (for example, an internal registry),
to a specific registry (for example, an internal registry),
then use the `publishConfig` hash described below
to override the `registry` config param at publish-time.

View File

@@ -16,6 +16,9 @@ symbolic link from `prefix/package-name` to the current folder.
Next, in some other location, `npm link package-name` will create a
symlink from the local `node_modules` folder to the global symlink.
Note that `package-name` is taken from `package.json` ,
not from directory name.
When creating tarballs for `npm publish`, the linked packages are
"snapshotted" to their current state by resolving the symbolic links.

View File

@@ -1,62 +0,0 @@
npm-ls(1) -- List installed packages
======================================
## SYNOPSIS
npm list
npm ls
npm la
npm ll
## DESCRIPTION
This command will print to stdout all the versions of packages that are
installed, as well as their dependencies, in a tree-structure.
It does not take positional arguments, though you may set config flags
like with any other command, such as `-g` to list global packages.
It will print out extraneous, missing, and invalid packages.
When run as `ll` or `la`, it shows extended information by default.
## CONFIGURATION
### json
* Default: false
* Type: Boolean
Show information in JSON format.
### long
* Default: false
* Type: Boolean
Show extended information.
### parseable
* Default: false
* Type: Boolean
Show parseable output instead of tree view.
### global
* Default: false
* Type: Boolean
List packages in the global install prefix instead of in the current
project.
## SEE ALSO
* npm-config(1)
* npm-folders(1)
* npm-install(1)
* npm-link(1)
* npm-prune(1)
* npm-outdated(1)
* npm-update(1)

68
deps/npm/doc/cli/ls.md vendored Normal file
View File

@@ -0,0 +1,68 @@
npm-ls(1) -- List installed packages
======================================
## SYNOPSIS
npm list [<pkg> ...]
npm ls [<pkg> ...]
npm la [<pkg> ...]
npm ll [<pkg> ...]
## DESCRIPTION
This command will print to stdout all the versions of packages that are
installed, as well as their dependencies, in a tree-structure.
Positional arguments are `name@version-range` identifiers, which will
limit the results to only the paths to the packages named. Note that
nested packages will *also* show the paths to the specified packages.
For example, running `npm ls promzard` in npm's source tree will show:
npm@@VERSION@ /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
It will show print out extraneous, missing, and invalid packages.
When run as `ll` or `la`, it shows extended information by default.
## CONFIGURATION
### json
* Default: false
* Type: Boolean
Show information in JSON format.
### long
* Default: false
* Type: Boolean
Show extended information.
### parseable
* Default: false
* Type: Boolean
Show parseable output instead of tree view.
### global
* Default: false
* Type: Boolean
List packages in the global install prefix instead of in the current
project.
## SEE ALSO
* npm-config(1)
* npm-folders(1)
* npm-install(1)
* npm-link(1)
* npm-prune(1)
* npm-outdated(1)
* npm-update(1)

View File

@@ -64,7 +64,7 @@ following help topics:
Especially, installing other peoples code from the registry is done via
`npm install`
* adduser:
Create an account or log in. Creditials are stored in the
Create an account or log in. Credentials are stored in the
user config file.
* publish:
Use the `npm publish` command to upload your code to the registry.

View File

@@ -82,9 +82,7 @@ ask for help on the <npm-@googlegroups.com> mailing list.
## Is there a website or something to see package docs and such?
No, but such a thing is planned, and a tiny bit developed.
Stay tuned!
Yes, head over to <https://npmjs.org/>
## SEE ALSO

19
deps/npm/doc/cli/rm.md vendored Normal file
View File

@@ -0,0 +1,19 @@
npm-rm(1) -- Remove a package
=============================
## SYNOPSIS
npm rm <name>
npm uninstall <name>
## DESCRIPTION
This uninstalls a package, completely removing everything npm installed
on its behalf.
## SEE ALSO
* npm-prune(1)
* npm-install(1)
* npm-folders(1)
* npm-config(1)

View File

@@ -6,6 +6,11 @@ npm-scripts(1) -- How npm handles the "scripts" field
npm supports the "scripts" member of the package.json script, for the
following scripts:
* prepublish:
Run BEFORE the package is published. (Also run on local `npm
install` without any arguments.)
* publish, postpublish:
Run AFTER the package is published.
* preinstall:
Run BEFORE the package is installed
* install, postinstall:
@@ -18,10 +23,6 @@ following scripts:
Run BEFORE the package is updated with the update command.
* update, postupdate:
Run AFTER the package is updated with the update command.
* prepublish:
Run BEFORE the package is published.
* publish, postpublish:
Run AFTER the package is published.
* pretest, test, posttest:
Run by the `npm test` command.
* prestop, stop, poststop:
@@ -35,6 +36,50 @@ following scripts:
Additionally, arbitrary scrips can be run by doing
`npm run-script <stage> <pkg>`.
## NOTE: INSTALL SCRIPTS ARE AN ANTIPATTERN
**tl;dr** Don't use `install`. Use a `.gyp` file for compilation, and
`prepublish` for anything else.
You should almost never have to explicitly set a `preinstall` or
`install` script. If you are doing this, please consider if there is
another option.
The only valid use of `install` or `preinstall` scripts is for
compilation which must be done on the target architecture. In early
versions of node, this was often done using the `node-waf` scripts, or
a standalone `Makefile`, and early versions of npm required that it be
explicitly set in package.json. This was not portable, and harder to
do properly.
In the current version of node, the standard way to do this is using a
`.gyp` file. If you have a file with a `.gyp` extension in the root
of your package, then npm will run the appropriate `node-gyp` commands
automatically at install time. This is the only officially supported
method for compiling binary addons, and does not require that you add
anything to your package.json file.
If you have to do other things before your package is used, in a way
that is not dependent on the operating system or architecture of the
target system, then use a `prepublish` script instead. This includes
tasks such as:
* Compile CoffeeScript source code into JavaScript.
* Create minified versions of JavaScript source code.
* Fetching remote resources that your package will use.
The advantage of doing these things at `prepublish` time instead of
`preinstall` or `install` time is that they can be done once, in a
single place, and thus greatly reduce complexity and variability.
Additionally, this means that:
* You can depend on `coffee-script` as a `devDependency`, and thus
your users don't need to have it installed.
* You don't need to include the minifiers in your package, reducing
the size for your users.
* You don't need to rely on your users having `curl` or `wget` or
other system tools on the target machines.
## DEFAULT VALUES
npm will default some script values based on package contents.

View File

@@ -11,8 +11,8 @@ As a node module:
$ npm install semver
semver.valid('1.2.3') // true
semver.valid('a.b.c') // false
semver.valid('1.2.3') // '1.2.3'
semver.valid('a.b.c') // null
semver.clean(' =v1.2.3 ') // '1.2.3'
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
semver.gt('1.2.3', '9.8.7') // false
@@ -83,7 +83,7 @@ The following range styles are supported:
* `<1.2.3` Less than
* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
* `~1.2.3` := `>=1.2.3 <1.3.0`
* `~1.2` := `>=1.2.0 <2.0.0`
* `~1.2` := `>=1.2.0 <1.3.0`
* `~1` := `>=1.0.0 <2.0.0`
* `1.2.x` := `>=1.2.0 <1.3.0`
* `1.x` := `>=1.0.0 <2.0.0`

View File

@@ -7,68 +7,72 @@ npm-shrinkwrap(1) -- Lock down dependency versions
## DESCRIPTION
This command locks down the versions of a package's dependencies so that you can
control exactly which versions of each dependency will be used when your package
is installed.
This command locks down the versions of a package's dependencies so
that you can control exactly which versions of each dependency will be
used when your package is installed. The "package.json" file is still
required if you want to use "npm install".
By default, "npm install" recursively installs the target's dependencies (as
specified in package.json), choosing the latest available version that satisfies
the dependency's semver pattern. In some situations, particularly when shipping
software where each change is tightly managed, it's desirable to fully specify
each version of each dependency recursively so that subsequent builds and
deploys do not inadvertently pick up newer versions of a dependency that satisfy
the semver pattern. Specifying specific semver patterns in each dependency's
package.json would facilitate this, but that's not always possible or desirable,
as when another author owns the npm package. It's also possible to check
dependencies directly into source control, but that may be undesirable for other
reasons.
By default, "npm install" recursively installs the target's
dependencies (as specified in package.json), choosing the latest
available version that satisfies the dependency's semver pattern. In
some situations, particularly when shipping software where each change
is tightly managed, it's desirable to fully specify each version of
each dependency recursively so that subsequent builds and deploys do
not inadvertently pick up newer versions of a dependency that satisfy
the semver pattern. Specifying specific semver patterns in each
dependency's package.json would facilitate this, but that's not always
possible or desirable, as when another author owns the npm package.
It's also possible to check dependencies directly into source control,
but that may be undesirable for other reasons.
As an example, consider package A:
{
"name": "A",
"version": "0.1.0",
"dependencies": {
"B": "<0.1.0"
}
"name": "A",
"version": "0.1.0",
"dependencies": {
"B": "<0.1.0"
}
}
package B:
{
"name": "B",
"version": "0.0.1",
"dependencies": {
"C": "<0.1.0"
}
"name": "B",
"version": "0.0.1",
"dependencies": {
"C": "<0.1.0"
}
}
and package C:
{
"name": "C,
"version": "0.0.1"
"name": "C,
"version": "0.0.1"
}
If these are the only versions of A, B, and C available in the registry, then
a normal "npm install A" will install:
If these are the only versions of A, B, and C available in the
registry, then a normal "npm install A" will install:
A@0.1.0
`-- B@0.0.1
`-- C@0.0.1
However, if B@0.0.2 is published, then a fresh "npm install A" will install:
However, if B@0.0.2 is published, then a fresh "npm install A" will
install:
A@0.1.0
`-- B@0.0.2
`-- C@0.0.1
assuming the new version did not modify B's dependencies. Of course, the new
version of B could include a new version of C and any number of new
dependencies. If such changes are undesirable, the author of A could specify a
dependency on B@0.0.1. However, if A's author and B's author are not the same
person, there's no way for A's author to say that he or she does not want to
pull in newly published versions of C when B hasn't changed at all.
assuming the new version did not modify B's dependencies. Of course,
the new version of B could include a new version of C and any number
of new dependencies. If such changes are undesirable, the author of A
could specify a dependency on B@0.0.1. However, if A's author and B's
author are not the same person, there's no way for A's author to say
that he or she does not want to pull in newly published versions of C
when B hasn't changed at all.
In this case, A's author can run
@@ -91,78 +95,88 @@ This generates npm-shrinkwrap.json, which will look something like this:
}
}
The shrinkwrap command has locked down the dependencies based on what's
currently installed in node_modules. When "npm install" installs a package with
a npm-shrinkwrap.json file in the package root, the shrinkwrap file (rather than
package.json files) completely drives the installation of that package and all
of its dependencies (recursively). So now the author publishes A@0.1.0, and
subsequent installs of this package will use B@0.0.1 and C@0.1.0, regardless the
dependencies and versions listed in A's, B's, and C's package.json files.
The shrinkwrap command has locked down the dependencies based on
what's currently installed in node_modules. When "npm install"
installs a package with a npm-shrinkwrap.json file in the package
root, the shrinkwrap file (rather than package.json files) completely
drives the installation of that package and all of its dependencies
(recursively). So now the author publishes A@0.1.0, and subsequent
installs of this package will use B@0.0.1 and C@0.1.0, regardless the
dependencies and versions listed in A's, B's, and C's package.json
files.
### Using shrinkwrapped packages
Using a shrinkwrapped package is no different than using any other package: you
can "npm install" it by hand, or add a dependency to your package.json file and
"npm install" it.
Using a shrinkwrapped package is no different than using any other
package: you can "npm install" it by hand, or add a dependency to your
package.json file and "npm install" it.
### Building shrinkwrapped packages
To shrinkwrap an existing package:
1. Run "npm install" in the package root to install the current versions of all
dependencies.
1. Run "npm install" in the package root to install the current
versions of all dependencies.
2. Validate that the package works as expected with these versions.
3. Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish your
package.
3. Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish
your package.
To add or update a dependency in a shrinkwrapped package:
1. Run "npm install" in the package root to install the current versions of all
1. Run "npm install" in the package root to install the current
versions of all dependencies.
2. Add or update dependencies. "npm install" each new or updated
package individually and then update package.json. Note that they
must be explicitly named in order to be installed: running `npm
install` with no arguments will merely reproduce the existing
shrinkwrap.
3. Validate that the package works as expected with the new
dependencies.
2. Add or update dependencies. "npm install" each new or updated package
individually and then update package.json. Note that they must be
explicitly named in order to be installed: running `npm install` with
no arguments will merely reproduce the existing shrinkwrap.
3. Validate that the package works as expected with the new dependencies.
4. Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and publish your
package.
4. Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and
publish your package.
You can use npm-outdated(1) to view dependencies with newer versions available.
You can use npm-outdated(1) to view dependencies with newer versions
available.
### Other Notes
Since "npm shrinkwrap" uses the locally installed packages to construct the
shrinkwrap file, devDependencies will be included if and only if you've
installed them already when you make the shrinkwrap.
A shrinkwrap file must be consistent with the package's package.json
file. "npm shrinkwrap" will fail if required dependencies are not
already installed, since that would result in a shrinkwrap that
wouldn't actually work. Similarly, the command will fail if there are
extraneous packages (not referenced by package.json), since that would
indicate that package.json is not correct.
A shrinkwrap file must be consistent with the package's package.json file. "npm
shrinkwrap" will fail if required dependencies are not already installed, since
that would result in a shrinkwrap that wouldn't actually work. Similarly, the
command will fail if there are extraneous packages (not referenced by
package.json), since that would indicate that package.json is not correct.
Since "npm shrinkwrap" is intended to lock down your dependencies for
production use, `devDependencies` will not be included unless you
explicitly set the `--dev` flag when you run `npm shrinkwrap`. If
installed `devDependencies` are excluded, then npm will print a
warning. If you want them to be installed with your module by
default, please consider adding them to `dependencies` instead.
If shrinkwrapped package A depends on shrinkwrapped package B, B's shrinkwrap
will not be used as part of the installation of A. However, because A's
shrinkwrap is constructed from a valid installation of B and recursively
specifies all dependencies, the contents of B's shrinkwrap will implicitly be
included in A's shrinkwrap.
If shrinkwrapped package A depends on shrinkwrapped package B, B's
shrinkwrap will not be used as part of the installation of A. However,
because A's shrinkwrap is constructed from a valid installation of B
and recursively specifies all dependencies, the contents of B's
shrinkwrap will implicitly be included in A's shrinkwrap.
### Caveats
Shrinkwrap files only lock down package versions, not actual package contents.
While discouraged, a package author can republish an existing version of a
package, causing shrinkwrapped packages using that version to pick up different
code than they were before. If you want to avoid any risk that a byzantine
author replaces a package you're using with code that breaks your application,
you could modify the shrinkwrap file to use git URL references rather than
version numbers so that npm always fetches all packages from git.
Shrinkwrap files only lock down package versions, not actual package
contents. While discouraged, a package author can republish an
existing version of a package, causing shrinkwrapped packages using
that version to pick up different code than they were before. If you
want to avoid any risk that a byzantine author replaces a package
you're using with code that breaks your application, you could modify
the shrinkwrap file to use git URL references rather than version
numbers so that npm always fetches all packages from git.
If you wish to lock down the specific bytes included in a package, for
example to have 100% confidence in being able to reproduce a deployment
or build, then you ought to check your dependencies into source control,
or pursue some other mechanism that can verify contents rather than
versions.
example to have 100% confidence in being able to reproduce a
deployment or build, then you ought to check your dependencies into
source control, or pursue some other mechanism that can verify
contents rather than versions.
## SEE ALSO

22
deps/npm/doc/cli/stars.md vendored Normal file
View File

@@ -0,0 +1,22 @@
npm-stars(1) -- View packages marked as favorites
=================================================
## SYNOPSIS
npm stars
npm stars [username]
## DESCRIPTION
If you have starred a lot of neat things and want to find them again
quickly this command lets you do just that.
You may also want to see your friend's favorite packages, in this case
you will most certainly enjoy this command.
## SEE ALSO
* npm-star(1)
* npm-view(1)
* npm-whoami(1)
* npm-adduser(1)

View File

@@ -3,7 +3,7 @@ npm-update(1) -- Update a package
## SYNOPSIS
npm update [<name> [<name> ...]]
npm update [-g] [<name> [<name> ...]]
## DESCRIPTION
@@ -12,6 +12,9 @@ This command will update all the packages listed to the latest version
It will also install missing packages.
If the `-g` flag is specified, this command will update globally installed packages.
If no package name is specified, all packages in the specified location (global or local) will be updated.
## SEE ALSO
* npm-install(1)

View File

@@ -3,7 +3,7 @@ npm-version(1) -- Bump a package version
## SYNOPSIS
npm version <newversion> [--message commit-message]
npm version [<newversion> | major | minor | patch | build]
## DESCRIPTION
@@ -11,14 +11,32 @@ Run this in a package directory to bump the version and write the new
data back to the package.json file.
The `newversion` argument should be a valid semver string, *or* a valid
second argument to semver.inc (one of "patch", "minor", or "major"). In
the second case, the existing version will be incremented by that amount.
second argument to semver.inc (one of "build", "patch", "minor", or
"major"). In the second case, the existing version will be incremented
by 1 in the specified field.
If run in a git repo, it will also create a version commit and tag, and
fail if the repo is not clean.
If supplied with `--message` (shorthand: `-m`) command line option, npm
will use it as a commit message when creating a version commit.
If supplied with `--message` (shorthand: `-m`) config option, npm will
use it as a commit message when creating a version commit. If the
`message` config contains `%s` then that will be replaced with the
resulting version number. For example:
npm version patch -m "Upgrade to %s for reasons"
If the `sign-git-tag` config is set, then the tag will be signed using
the `-s` flag to git. Note that you must have a default GPG key set up
in your git config for this to work properly. For example:
$ npm config set sign-git-tag true
$ npm version patch
You need a passphrase to unlock the secret key for
user: "isaacs (http://blog.izs.me/) <i@izs.me>"
2048-bit RSA key, ID 6C481CF6, created 2010-08-31
Enter passphrase:
## SEE ALSO

View File

@@ -69,7 +69,9 @@ was required by each matching version of yui3:
If only a single string field for a single version is output, then it
will not be colorized or quoted, so as to enable piping the output to
another command.
another command. If the field is an object, it will be output as a JavaScript object literal.
If the --json flag is given, the outputted fields will be JSON.
If the version range matches multiple versions, than each printed value
will be prefixed with the version it applies to.

Binary file not shown.

View File

@@ -1,69 +0,0 @@
<!doctype html>
<html>
<title>author</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<body>
<div id="wrapper">
<h1><a href="../api/owner.html">owner</a></h1> <p>Manage package owners</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>npm.commands.owner(args, callback)</code></pre>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>The first element of the 'args' parameter defines what to do, and the subsequent
elements depend on the action. Possible values for the action are (order of
parameters are given in parenthesis):</p>
<ul><li>ls (package):
List all the users who have access to modify a package and push new versions.
Handy when you need to know who to bug for help.</li><li>add (user, package):
Add a new user as a maintainer of a package. This user is enabled to modify
metadata, publish new versions, and add other owners.</li><li>rm (user, package):
Remove a user from the package owner list. This immediately revokes their
privileges.</li></ul>
<p>Note that there is only one level of access. Either you can modify a package,
or you can't. Future versions may contain more fine-grained access levels, but
that is not implemented at this time.</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
<p id="footer">author &mdash; npm@1.1.0-alpha-3</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
.filter(function (el) {
return el.parentNode === wrapper
&& el.tagName.match(/H[1-6]/)
&& el.id
})
var l = 2
, toc = document.createElement("ul")
toc.innerHTML = els.map(function (el) {
var i = el.tagName.charAt(1)
, out = ""
while (i > l) {
out += "<ul>"
l ++
}
while (i < l) {
out += "</ul>"
l --
}
out += "<li><a href='#" + el.id + "'>" +
( el.innerText || el.text || el.innerHTML)
+ "</a>"
return out
}).join("\n")
toc.id = "toc"
document.body.appendChild(toc)
})()
</script>
</body></html>

View File

@@ -2,7 +2,7 @@
<html>
<title>bin</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -19,7 +19,7 @@
<p>This function should not be used programmatically. Instead, just refer
to the <code>npm.bin</code> member.</p>
</div>
<p id="footer">bin &mdash; npm@1.1.4</p>
<p id="footer">bin &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>bugs</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -14,7 +14,7 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This command tries to guess at the likely location of a package's
<p>This command tries to guess at the likely location of a package&#39;s
bug tracker URL, and then tries to open it using the <code>--browser</code>
config param.</p>
@@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
<p id="footer">bugs &mdash; npm@1.1.4</p>
<p id="footer">bugs &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>commands</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -28,7 +28,7 @@ usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>
<ul><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
<p id="footer">commands &mdash; npm@1.1.4</p>
<p id="footer">commands &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>config</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -22,7 +22,7 @@ element in the array tells config what to do. Possible values are:</p>
<ul><li><p><code>set</code></p><p>Sets a config parameter. The second element in <code>args</code> is interpreted as the
key, and the third element is interpreted as the value.</p></li><li><p><code>get</code></p><p>Gets the value of a config parameter. The second element in <code>args</code> is the
key to get the value of.</p></li><li><p><code>delete</code> (<code>rm</code> or <code>del</code>)</p><p>Deletes a parameter from the config. The second element in <code>args</code> is the
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren't secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn't very useful
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren&#39;t secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn&#39;t very useful
programmatically, but it is made available.</p></li></ul>
<p>To programmatically access npm configuration settings, or set them for
@@ -33,7 +33,7 @@ functions instead.</p>
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div>
<p id="footer">config &mdash; npm@1.1.4</p>
<p id="footer">config &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>deprecate</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -17,7 +17,7 @@
<p>This command will update the npm registry entry for a package, providing
a deprecation warning to all who attempt to install it.</p>
<p>The 'args' parameter must have exactly two elements:</p>
<p>The &#39;args&#39; parameter must have exactly two elements:</p>
<ul><li><p><code>package[@version]</code></p><p>The <code>version</code> portion is optional, and may be either a range, or a
specific version, or a tag.</p></li><li><p><code>message</code></p><p>The warning message that will be printed whenever a user attempts to
@@ -26,11 +26,13 @@ install the package.</p></li></ul>
<p>Note that you must be the package owner to deprecate something. See the
<code>owner</code> and <code>adduser</code> help topics.</p>
<p>To un-deprecate a package, specify an empty string (<code>&quot;&quot;</code>) for the <code>message</code> argument.</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
<p id="footer">deprecate &mdash; npm@1.1.4</p>
<p id="footer">deprecate &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>docs</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -14,7 +14,7 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This command tries to guess at the likely location of a package's
<p>This command tries to guess at the likely location of a package&#39;s
documentation URL, and then tries to open it using the <code>--browser</code>
config param.</p>
@@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
<p id="footer">docs &mdash; npm@1.1.4</p>
<p id="footer">docs &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>edit</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -14,14 +14,14 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Opens the package folder in the default editor (or whatever you've
<p>Opens the package folder in the default editor (or whatever you&#39;ve
configured as the npm <code>editor</code> config -- see <code>npm help config</code>.)</p>
<p>After it has been edited, the package is rebuilt so as to pick up any
changes in compiled packages.</p>
<p>For instance, you can do <code>npm install connect</code> to install connect
into your package, and then <code>npm.commands.edit(["connect"], callback)</code>
into your package, and then <code>npm.commands.edit([&quot;connect&quot;], callback)</code>
to make a few changes to your locally installed copy.</p>
<p>The first parameter is a string array with a single element, the package
@@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
<p>Since this command opens an editor in a new process, be careful about where
and how this is used.</p>
</div>
<p id="footer">edit &mdash; npm@1.1.4</p>
<p id="footer">edit &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>explore</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -22,9 +22,9 @@ immediately terminates.</p>
<p>Note that the package is <em>not</em> automatically rebuilt afterwards, so be
sure to use <code>npm rebuild &lt;pkg&gt;</code> if you make any changes.</p>
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
<p>The first element in the &#39;args&#39; parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
</div>
<p id="footer">explore &mdash; npm@1.1.4</p>
<p id="footer">explore &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -1,88 +0,0 @@
<!doctype html>
<html>
<title>find</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<body>
<div id="wrapper">
<h1><a href="../api/ls.html">ls</a></h1> <p>List installed packages</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>npm.commands.ls(args, [silent,] callback)</code></pre>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This command will print to stdout all the versions of packages that are
installed, as well as their dependencies, in a tree-structure. It will also
return that data using the callback.</p>
<p>This command does not take any arguments, but args must be defined.
Beyond that, if any arguments are passed in, npm will politely warn that it
does not take positional arguments, though you may set config flags
like with any other command, such as <code>global</code> to list global packages.</p>
<p>It will print out extraneous, missing, and invalid packages.</p>
<p>If the silent parameter is set to true, nothing will be output to the screen,
but the data will still be returned.</p>
<h2 id="CONFIGURATION">CONFIGURATION</h2>
<h3 id="long">long</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>Show extended information.</p>
<h3 id="parseable">parseable</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>Show parseable output instead of tree view.</p>
<h3 id="global">global</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>List packages in the global install prefix instead of in the current
project.</p>
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p>
</div>
<p id="footer">find &mdash; npm@1.1.0-alpha-3</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
.filter(function (el) {
return el.parentNode === wrapper
&& el.tagName.match(/H[1-6]/)
&& el.id
})
var l = 2
, toc = document.createElement("ul")
toc.innerHTML = els.map(function (el) {
var i = el.tagName.charAt(1)
, out = ""
while (i > l) {
out += "<ul>"
l ++
}
while (i < l) {
out += "</ul>"
l --
}
out += "<li><a href='#" + el.id + "'>" +
( el.innerText || el.text || el.innerHTML)
+ "</a>"
return out
}).join("\n")
toc.id = "toc"
document.body.appendChild(toc)
})()
</script>
</body></html>

View File

@@ -1,68 +0,0 @@
<!doctype html>
<html>
<title>get</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<body>
<div id="wrapper">
<h1><a href="../api/config.html">config</a></h1> <p>Manage the npm configuration files</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>npm.commands.config(args, callback)
var val = npm.config.get(key)
npm.config.set(key, val)</code></pre>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This function acts much the same way as the command-line version. The first
element in the array tells config what to do. Possible values are:</p>
<ul><li><p><code>set</code></p><p>Sets a config parameter. The second element in <code>args</code> is interpreted as the
key, and the third element is interpreted as the value.</p></li><li><p><code>get</code></p><p>Gets the value of a config parameter. The second element in <code>args</code> is the
key to get the value of.</p></li><li><p><code>delete</code> (<code>rm</code> or <code>del</code>)</p><p>Deletes a parameter from the config. The second element in <code>args</code> is the
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren't secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn't very useful
programmatically, but it is made available.</p></li></ul>
<p>To programmatically access npm configuration settings, or set them for
the duration of a program, use the <code>npm.config.set</code> and <code>npm.config.get</code>
functions instead.</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div>
<p id="footer">get &mdash; npm@1.1.0-alpha-3</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
.filter(function (el) {
return el.parentNode === wrapper
&& el.tagName.match(/H[1-6]/)
&& el.id
})
var l = 2
, toc = document.createElement("ul")
toc.innerHTML = els.map(function (el) {
var i = el.tagName.charAt(1)
, out = ""
while (i > l) {
out += "<ul>"
l ++
}
while (i < l) {
out += "</ul>"
l --
}
out += "<li><a href='#" + el.id + "'>" +
( el.innerText || el.text || el.innerHTML)
+ "</a>"
return out
}).join("\n")
toc.id = "toc"
document.body.appendChild(toc)
})()
</script>
</body></html>

View File

@@ -2,7 +2,7 @@
<html>
<title>help-search</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -24,7 +24,7 @@ are multiple results, the results are printed to the screen formatted and the
array of results is returned. Each result is an object with these properties:</p>
<ul><li>hits:
A map of args to number of hits on that arg. For example, {"npm": 3}</li><li>found:
A map of args to number of hits on that arg. For example, {&quot;npm&quot;: 3}</li><li>found:
Total number of unique args that matched.</li><li>totalHits:
Total number of hits.</li><li>lines:
An array of all matching lines (and some adjacent lines).</li><li>file:
@@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
<p>The silent parameter is not neccessary not used, but it may in the future.</p>
</div>
<p id="footer">help-search &mdash; npm@1.1.4</p>
<p id="footer">help-search &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -1,60 +0,0 @@
<!doctype html>
<html>
<title>home</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<body>
<div id="wrapper">
<h1><a href="../api/docs.html">docs</a></h1> <p>Docs for a package in a web browser maybe</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>npm.commands.docs(package, callback)</code></pre>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This command tries to guess at the likely location of a package's
documentation URL, and then tries to open it using the <code>--browser</code>
config param.</p>
<p>Like other commands, the first parameter is an array. This command only
uses the first element, which is expected to be a package name with an
optional version number.</p>
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
<p id="footer">home &mdash; npm@1.1.0-alpha-3</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
.filter(function (el) {
return el.parentNode === wrapper
&& el.tagName.match(/H[1-6]/)
&& el.id
})
var l = 2
, toc = document.createElement("ul")
toc.innerHTML = els.map(function (el) {
var i = el.tagName.charAt(1)
, out = ""
while (i > l) {
out += "<ul>"
l ++
}
while (i < l) {
out += "</ul>"
l --
}
out += "<li><a href='#" + el.id + "'>" +
( el.innerText || el.text || el.innerHTML)
+ "</a>"
return out
}).join("\n")
toc.id = "toc"
document.body.appendChild(toc)
})()
</script>
</body></html>

View File

@@ -2,7 +2,7 @@
<html>
<title>init</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -17,25 +17,25 @@
<p>This will ask you a bunch of questions, and then write a package.json for you.</p>
<p>It attempts to make reasonable guesses about what you want things to be set to,
and then writes a package.json file with the options you've selected.</p>
and then writes a package.json file with the options you&#39;ve selected.</p>
<p>If you already have a package.json file, it'll read that first, and default to
<p>If you already have a package.json file, it&#39;ll read that first, and default to
the options in there.</p>
<p>It is strictly additive, so it does not delete options from your package.json
without a really good reason to do so.</p>
<p>Since this function expects to be run on the command-line, it doesn't work very
<p>Since this function expects to be run on the command-line, it doesn&#39;t work very
well as a programmatically. The best option is to roll your own, and since
JavaScript makes it stupid simple to output formatted JSON, that is the
preferred method. If you're sure you want to handle command-line prompting,
preferred method. If you&#39;re sure you want to handle command-line prompting,
then go ahead and use this programmatically.</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p><a href="../doc/json.html">json(1)</a></p>
</div>
<p id="footer">init &mdash; npm@1.1.4</p>
<p id="footer">init &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>install</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -16,16 +16,16 @@
<p>This acts much the same ways as installing on the command-line.</p>
<p>The 'where' parameter is optional and only used internally, and it specifies
<p>The &#39;where&#39; parameter is optional and only used internally, and it specifies
where the packages should be installed to.</p>
<p>The 'packages' parameter is an array of strings. Each element in the array is
<p>The &#39;packages&#39; parameter is an array of strings. Each element in the array is
the name of a package to be installed.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been
<p>Finally, &#39;callback&#39; is a function that will be called when all packages have been
installed or when an error has been encountered.</p>
</div>
<p id="footer">install &mdash; npm@1.1.4</p>
<p id="footer">install &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>link</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -24,7 +24,7 @@ symbolic link from <code>prefix/package-name</code> to the current folder.</p>
folder to the global symlink.</p>
<p>When creating tarballs for <code>npm publish</code>, the linked packages are
"snapshotted" to their current state by resolving the symbolic links.</p>
&quot;snapshotted&quot; to their current state by resolving the symbolic links.</p>
<p>This is
handy for installing your own stuff, so that you can work on it and test it
@@ -34,12 +34,12 @@ iteratively without having to continually rebuild.</p>
<pre><code>npm.commands.link(cb) # creates global link from the cwd
# (say redis package)
npm.commands.link('redis', cb) # link-install the package</code></pre>
npm.commands.link(&#39;redis&#39;, cb) # link-install the package</code></pre>
<p>Now, any changes to the redis package will be reflected in
the package in the current working directory</p>
</div>
<p id="footer">link &mdash; npm@1.1.4</p>
<p id="footer">link &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -1,88 +0,0 @@
<!doctype html>
<html>
<title>list</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<body>
<div id="wrapper">
<h1><a href="../api/ls.html">ls</a></h1> <p>List installed packages</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>npm.commands.ls(args, [silent,] callback)</code></pre>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This command will print to stdout all the versions of packages that are
installed, as well as their dependencies, in a tree-structure. It will also
return that data using the callback.</p>
<p>This command does not take any arguments, but args must be defined.
Beyond that, if any arguments are passed in, npm will politely warn that it
does not take positional arguments, though you may set config flags
like with any other command, such as <code>global</code> to list global packages.</p>
<p>It will print out extraneous, missing, and invalid packages.</p>
<p>If the silent parameter is set to true, nothing will be output to the screen,
but the data will still be returned.</p>
<h2 id="CONFIGURATION">CONFIGURATION</h2>
<h3 id="long">long</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>Show extended information.</p>
<h3 id="parseable">parseable</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>Show parseable output instead of tree view.</p>
<h3 id="global">global</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>List packages in the global install prefix instead of in the current
project.</p>
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p>
</div>
<p id="footer">list &mdash; npm@1.1.0-alpha-3</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
.filter(function (el) {
return el.parentNode === wrapper
&& el.tagName.match(/H[1-6]/)
&& el.id
})
var l = 2
, toc = document.createElement("ul")
toc.innerHTML = els.map(function (el) {
var i = el.tagName.charAt(1)
, out = ""
while (i > l) {
out += "<ul>"
l ++
}
while (i < l) {
out += "</ul>"
l --
}
out += "<li><a href='#" + el.id + "'>" +
( el.innerText || el.text || el.innerHTML)
+ "</a>"
return out
}).join("\n")
toc.id = "toc"
document.body.appendChild(toc)
})()
</script>
</body></html>

View File

@@ -1,74 +0,0 @@
<!doctype html>
<html>
<title>ln</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<body>
<div id="wrapper">
<h1><a href="../api/link.html">link</a></h1> <p>Symlink a package folder</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>npm.command.link(callback)
npm.command.link(packages, callback)</code></pre>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Package linking is a two-step process.</p>
<p>Without parameters, link will create a globally-installed
symbolic link from <code>prefix/package-name</code> to the current folder.</p>
<p>With a parameters, link will create a symlink from the local <code>node_modules</code>
folder to the global symlink.</p>
<p>When creating tarballs for <code>npm publish</code>, the linked packages are
"snapshotted" to their current state by resolving the symbolic links.</p>
<p>This is
handy for installing your own stuff, so that you can work on it and test it
iteratively without having to continually rebuild.</p>
<p>For example:</p>
<pre><code>npm.commands.link(cb) # creates global link from the cwd
# (say redis package)
npm.commands.link('redis', cb) # link-install the package</code></pre>
<p>Now, any changes to the redis package will be reflected in
the package in the current working directory</p>
</div>
<p id="footer">ln &mdash; npm@1.1.0-alpha-3</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
.filter(function (el) {
return el.parentNode === wrapper
&& el.tagName.match(/H[1-6]/)
&& el.id
})
var l = 2
, toc = document.createElement("ul")
toc.innerHTML = els.map(function (el) {
var i = el.tagName.charAt(1)
, out = ""
while (i > l) {
out += "<ul>"
l ++
}
while (i < l) {
out += "</ul>"
l --
}
out += "<li><a href='#" + el.id + "'>" +
( el.innerText || el.text || el.innerHTML)
+ "</a>"
return out
}).join("\n")
toc.id = "toc"
document.body.appendChild(toc)
})()
</script>
</body></html>

View File

@@ -2,7 +2,7 @@
<html>
<title>load</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -27,12 +27,12 @@ config object.</p>
<p>For example, to emulate the --dev flag, pass an object that looks like this:</p>
<pre><code>{
"dev": true
&quot;dev&quot;: true
}</code></pre>
<p>For a list of all the available command-line configs, see <code>npm help config</code></p>
</div>
<p id="footer">load &mdash; npm@1.1.4</p>
<p id="footer">load &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>ls</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -30,7 +30,7 @@ but the data will still be returned.</p>
<p>Callback is provided an error if one occurred, the full data about which
packages are installed and which dependencies they will receive, and a
"lite" data object which just shows which versions are installed where.
&quot;lite&quot; data object which just shows which versions are installed where.
Note that the full data object is a circular structure, so care must be
taken if it is serialized to JSON.</p>
@@ -55,11 +55,11 @@ taken if it is serialized to JSON.</p>
<p>List packages in the global install prefix instead of in the current
project.</p>
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
<p>Note, if parseable is set or long isn&#39;t set, then duplicates will be trimmed.
This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p>
</div>
<p id="footer">ls &mdash; npm@1.1.4</p>
<p id="footer">ls &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>npm</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -10,21 +10,21 @@
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<pre><code>var npm = require("npm")
npm.load(configObject, function (er, npm) {
// use the npm object, now that it's loaded.
<pre><code>var npm = require(&quot;npm&quot;)
npm.load([configObject,] function (er, npm) {
// use the npm object, now that it&#39;s loaded.
npm.config.set(key, val)
val = npm.config.get(key)
console.log("prefix = %s", npm.prefix)
console.log(&quot;prefix = %s&quot;, npm.prefix)
npm.commands.install(["package"], cb)
npm.commands.install([&quot;package&quot;], cb)
})</code></pre>
<h2 id="VERSION">VERSION</h2>
<p>1.1.4</p>
<p>1.2.30</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
@@ -32,12 +32,13 @@ npm.load(configObject, function (er, npm) {
To find documentation of the command line
client, see <code><a href="../doc/npm.html">npm(1)</a></code>.</p>
<p>Prior to using npm's commands,
<code>npm.load()</code> must be called with an object hash of
top-level configs. In the npm command line client,
this set of configs is parsed from the command line options. Additional
configuration params are loaded from two configuration files. See
<code><a href="../doc/config.html">config(1)</a></code> for more information.</p>
<p>Prior to using npm&#39;s commands, <code>npm.load()</code> must be called.
If you provide <code>configObject</code> as an object hash of top-level
configs, they override the values stored in the various config
locations. In the npm command line client, this set of configs
is parsed from the command line options. Additional configuration
params are loaded from two configuration files. See <code><a href="../doc/config.html">config(1)</a></code>
for more information.</p>
<p>After that, each of the functions are accessible in the
commands object: <code>npm.commands.&lt;cmd&gt;</code>. See <code><a href="../doc/index.html">index(1)</a></code> for a list of
@@ -57,9 +58,9 @@ command.</p>
<ul><li><p><code>npm.load(configs, cb)</code></p><p>Load the configuration params, and call the <code>cb</code> function once the
globalconfig and userconfig files have been loaded as well, or on
nextTick if they've already been loaded.</p></li><li><p><code>npm.config</code></p><p>An object for accessing npm configuration parameters.</p><ul><li><p><code>npm.config.get(key)</code></p></li><li><code>npm.config.set(key, val)</code></li><li><p><code>npm.config.del(key)</code></p></li></ul></li><li><p><code>npm.dir</code> or <code>npm.root</code></p><p>The <code>node_modules</code> directory where npm will operate.</p></li><li><p><code>npm.prefix</code></p><p>The prefix where npm is operating. (Most often the current working
nextTick if they&#39;ve already been loaded.</p></li><li><p><code>npm.config</code></p><p>An object for accessing npm configuration parameters.</p><ul><li><p><code>npm.config.get(key)</code></p></li><li><code>npm.config.set(key, val)</code></li><li><p><code>npm.config.del(key)</code></p></li></ul></li><li><p><code>npm.dir</code> or <code>npm.root</code></p><p>The <code>node_modules</code> directory where npm will operate.</p></li><li><p><code>npm.prefix</code></p><p>The prefix where npm is operating. (Most often the current working
directory.)</p></li><li><p><code>npm.cache</code></p><p>The place where npm keeps JSON and tarballs it fetches from the
registry (or uploads to the registry).</p></li><li><p><code>npm.tmp</code></p><p>npm's temporary working directory.</p></li><li><p><code>npm.deref</code></p><p>Get the "real" name for a command that has either an alias or
registry (or uploads to the registry).</p></li><li><p><code>npm.tmp</code></p><p>npm&#39;s temporary working directory.</p></li><li><p><code>npm.deref</code></p><p>Get the &quot;real&quot; name for a command that has either an alias or
abbreviation.</p></li></ul>
<h2 id="MAGIC">MAGIC</h2>
@@ -74,11 +75,11 @@ the error or results.</p>
<p>For example, this would work in a node repl:</p>
<pre><code>&gt; npm = require("npm")
<pre><code>&gt; npm = require(&quot;npm&quot;)
&gt; npm.load() // wait a sec...
&gt; npm.install("dnode", "express")</code></pre>
&gt; npm.install(&quot;dnode&quot;, &quot;express&quot;)</code></pre>
<p>Note that that <em>won't</em> work in a node program, since the <code>install</code>
<p>Note that that <em>won&#39;t</em> work in a node program, since the <code>install</code>
method will get called before the configuration load is completed.</p>
<h2 id="ABBREVS">ABBREVS</h2>
@@ -89,9 +90,9 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p>
<p>For example:</p>
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
<pre><code>var cmd = npm.deref(&quot;unp&quot;) // cmd === &quot;unpublish&quot;</code></pre>
</div>
<p id="footer">npm &mdash; npm@1.1.4</p>
<p id="footer">npm &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>outdated</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -17,9 +17,9 @@
<p>This command will check the registry to see if the specified packages are
currently outdated.</p>
<p>If the 'packages' parameter is left out, npm will check all packages.</p>
<p>If the &#39;packages&#39; parameter is left out, npm will check all packages.</p>
</div>
<p id="footer">outdated &mdash; npm@1.1.4</p>
<p id="footer">outdated &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>owner</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -14,7 +14,7 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>The first element of the 'args' parameter defines what to do, and the subsequent
<p>The first element of the &#39;args&#39; parameter defines what to do, and the subsequent
elements depend on the action. Possible values for the action are (order of
parameters are given in parenthesis):</p>
@@ -27,14 +27,14 @@ Remove a user from the package owner list. This immediately revokes their
privileges.</li></ul>
<p>Note that there is only one level of access. Either you can modify a package,
or you can't. Future versions may contain more fine-grained access levels, but
or you can&#39;t. Future versions may contain more fine-grained access levels, but
that is not implemented at this time.</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
<p id="footer">owner &mdash; npm@1.1.4</p>
<p id="footer">owner &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>pack</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -14,7 +14,7 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>For anything that's installable (that is, a package folder, tarball,
<p>For anything that&#39;s installable (that is, a package folder, tarball,
tarball url, name@tag, name@version, or name), this command will fetch
it to the cache, and then copy the tarball to the current working
directory as <code>&lt;name&gt;-&lt;version&gt;.tgz</code>, and then write the filenames out to
@@ -25,7 +25,7 @@ overwritten the second time.</p>
<p>If no arguments are supplied, then npm packs the current package folder.</p>
</div>
<p id="footer">pack &mdash; npm@1.1.4</p>
<p id="footer">pack &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>prefix</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -16,12 +16,12 @@
<p>Print the prefix to standard out.</p>
<p>'args' is never used and callback is never called with data.
'args' must be present or things will break.</p>
<p>&#39;args&#39; is never used and callback is never called with data.
&#39;args&#39; must be present or things will break.</p>
<p>This function is not useful programmatically</p>
</div>
<p id="footer">prefix &mdash; npm@1.1.4</p>
<p id="footer">prefix &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

View File

@@ -2,7 +2,7 @@
<html>
<title>prune</title>
<meta http-equiv="content-type" value="text/html;utf-8">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
@@ -14,16 +14,16 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This command removes "extraneous" packages.</p>
<p>This command removes &quot;extraneous&quot; packages.</p>
<p>The first parameter is optional, and it specifies packages to be removed.</p>
<p>No packages are specified, then all packages will be checked.</p>
<p>Extraneous packages are packages that are not listed on the parent
package's dependencies list.</p>
package&#39;s dependencies list.</p>
</div>
<p id="footer">prune &mdash; npm@1.1.4</p>
<p id="footer">prune &mdash; npm@1.2.30</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")

Some files were not shown because too many files have changed in this diff Show More