diff --git a/AUTHORS b/AUTHORS index 51e0c7dba7c..5a212e2828c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -244,3 +244,12 @@ Kyle Robinson Young Tim Oxley Ingmar Runge Russ Bradberry +Andreas Madsen +Adam Malcontenti-Wilson +James Hartig +Shannen Saez +Seong-Rak Choi +Dave Irvine +Ju-yeong Park +Phil Sung +Damon Oehlman diff --git a/ChangeLog b/ChangeLog index cccdbf2a246..c23fe9b8ee9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,44 @@ -2011.12.14, Version 0.6.6 (stable) +2012.01.06, Version 0.6.7 (stable) + +* V8 hash collision fix (Breaks MIPS) (Bert Belder, Erik Corry) + +* Upgrade V8 to 3.6.6.15 + +* Upgrade npm to 1.1.0-beta-10 (isaacs) + +* many doc updates (Ben Noordhuis, Jeremy Martin, koichik, Dave Irvine, + Seong-Rak Choi, Shannen, Adam Malcontenti-Wilson, koichik) + +* Fix segfault in node_http_parser.cc + +* dgram, timers: fix memory leaks (Ben Noordhuis, Yoshihiro Kikuchi) + +* repl: fix repl.start not passing the `ignoreUndefined` arg (Damon Oehlman) + +* #1980: Socket.pause null reference when called on a closed Stream (koichik) + +* #2263: XMLHttpRequest piped in a writable file stream hang (koichik) + +* #2069: http resource leak (koichik) + +* buffer.readInt global pollution fix (Phil Sung) + +* timers: fix performance regression (Ben Noordhuis) + +* #2308, #2246: node swallows openssl error on request (koichik) + +* #2114: timers: remove _idleTimeout from item in .unenroll() (James Hartig) + +* #2379: debugger: Request backtrace w/o refs (Fedor Indutny) + +* simple DTrace ustack helper (Dave Pacheco) + +* crypto: rewrite HexDecode without snprintf (Roman Shtylman) + +* crypto: don't ignore DH init errors (Ben Noordhuis) + + +2011.12.14, Version 0.6.6 * npm update to 1.1.0-beta-4 (Isaac Z. Schlueter) diff --git a/Makefile b/Makefile index 337c6f6a138..e661018c3f3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ BUILDTYPE ?= Release +PYTHON ?= python ifeq ($(BUILDTYPE),Release) all: out/Makefile node @@ -38,41 +39,41 @@ distclean: -rm config.gypi test: all - python tools/test.py --mode=release simple message + $(PYTHON) tools/test.py --mode=release simple message test-http1: all - python tools/test.py --mode=release --use-http1 simple message + $(PYTHON) tools/test.py --mode=release --use-http1 simple message test-valgrind: all - python tools/test.py --mode=release --valgrind simple message + $(PYTHON) tools/test.py --mode=release --valgrind simple message test-all: all python tools/test.py --mode=debug,release $(MAKE) test-npm test-all-http1: all - python tools/test.py --mode=debug,release --use-http1 + $(PYTHON) tools/test.py --mode=debug,release --use-http1 test-all-valgrind: all - python tools/test.py --mode=debug,release --valgrind + $(PYTHON) tools/test.py --mode=debug,release --valgrind test-release: all - python tools/test.py --mode=release + $(PYTHON) tools/test.py --mode=release test-debug: all - python tools/test.py --mode=debug + $(PYTHON) tools/test.py --mode=debug test-message: all - python tools/test.py message + $(PYTHON) tools/test.py message test-simple: all - python tools/test.py simple + $(PYTHON) tools/test.py simple test-pummel: all - python tools/test.py pummel + $(PYTHON) tools/test.py pummel test-internet: all - python tools/test.py internet + $(PYTHON) tools/test.py internet test-npm: node ./node deps/npm/test/run.js @@ -138,11 +139,25 @@ docopen: out/doc/api/all.html docclean: -rm -rf out/doc -VERSION=$(shell git describe) +VERSION=v$(shell $(PYTHON) tools/getnodeversion.py) TARNAME=node-$(VERSION) -#dist: doc/node.1 doc/api -dist: doc +dist: $(TARBALL) $(PKG) + +PKGDIR=out/dist-osx + +pkg: $(PKG) + +$(PKG): + -rm -rf $(PKGDIR) + $(WAF) configure --prefix=/usr/local --without-snapshot + DESTDIR=$(PKGDIR) $(WAF) install + $(packagemaker) \ + --id "org.nodejs.NodeJS-$(VERSION)" \ + --doc tools/osx-pkg.pmdoc \ + --out $(PKG) + +$(TARBALL): out/doc git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf - mkdir -p $(TARNAME)/doc cp doc/node.1 $(TARNAME)/doc/node.1 @@ -162,10 +177,10 @@ bench-idle: ./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/ + 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) + @$(PYTHON) tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c) lint: jslint cpplint diff --git a/README.md b/README.md index c167589578c..39e83321e55 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Evented I/O for V8 javascript. [![Build Status](https://secure.travis-ci.org/joy ### To build: -Unix/Macintosh (requires python >= 2.5.2): +Unix/Macintosh (requires python 2.6 or 2.7): ./configure make diff --git a/deps/npm/Makefile b/deps/npm/Makefile index 20686da0090..7d3e1065359 100644 --- a/deps/npm/Makefile +++ b/deps/npm/Makefile @@ -108,18 +108,29 @@ version: link git add package.json &&\ git ci -m v$(shell npm -v) -publish: link +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 tag -s -m v$(shell npm -v) v$(shell npm -v) &&\ git push origin --tags &&\ npm publish &&\ - make doc-publish + npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\ + make doc-publish &&\ + make zip-publish 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 +zip-publish: release + scp release/*.zip npmjs.org:/var/www/npmjs.org/public/dist/ + +release: + @bash scripts/release.sh + sandwich: @[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || echo "make it yourself" -.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish +.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish diff --git a/deps/npm/doc/cli/disputes.md b/deps/npm/doc/cli/disputes.md new file mode 100644 index 00000000000..96ad9ef1f8c --- /dev/null +++ b/deps/npm/doc/cli/disputes.md @@ -0,0 +1,84 @@ +npm-disputes(1) -- Handling Module Name Disputes +================================================ + +## SYNOPSIS + +1. Get the author email with `npm owner ls ` +1. Email the author, CC . +2. After a few weeks, if there's no resolution, we'll sort it out. + +## DESCRIPTION + +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, + 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 + request to Bob, but Bob doesn't have the time to deal with it, + because he has a new job and a new baby and is focused on his new + erlang project, and kind of not involved with node any more. Joe + would like to publish a new `foo`, but can't, because the name is + taken. +3. Bob writes a 10-line flow-control library, and calls it `foo`, and + publishes it to the npm registry. Being a simple little thing, it + never really has to be updated. Joe works for Foo Inc, the makers + of the critically acclaimed and widely-marketed `foo` JavaScript + toolkit framework. They publish it to npm as `foojs`, but people are + routinely confused when `npm install foo` is some different thing. +4. Bob writes a parser for the widely-known `foo` file format, because + he needs it for work. Then, he gets a new job, and never updates the + prototype. Later on, Joe writes a much more complete `foo` parser, + but can't publish, because Bob's `foo` is in the way. + +The validity of Joe's claim in each situation can be debated. However, +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**, + and what he would like to do with the module name. He adds + isaacs 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 + and we'll sort it out. + +## REASONING + +In almost every case so far, the parties involved have been able to reach +an amicable resolution without any major intervention. Most people +really do want to be reasonable, and are probably not even aware that +they're in your way. + +Module ecosystems are most vibrant and powerful when they are as +self-directed as possible. If an admin one day deletes something you +had worked on, then that is going to make most people quite upset, +regardless of the justification. When humans solve their problems by +talking to other humans with respect, everyone has the chance to end up +feeling good about the interaction. + +## EXCEPTIONS + +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) +2. Violations of copyright or licenses (for example, cloning an + MIT-licensed program, and then removing or changing the copyright and + license statement) +3. Illegal content. + +If you see bad behavior like this, please report it right away. + +## SEE ALSO + +* npm-registry(1) +* npm-owner(1) diff --git a/deps/npm/doc/cli/faq.md b/deps/npm/doc/cli/faq.md index 15bb0c637d7..938338c22b1 100644 --- a/deps/npm/doc/cli/faq.md +++ b/deps/npm/doc/cli/faq.md @@ -32,35 +32,65 @@ tl;dr: something with the `-g` flag, then its executables go in `npm bin -g` and its modules go in `npm root -g`. -## How do I install something everywhere? +## How do I install something on my computer in a central location? -Install it globally by tacking `-g` or `--global` to the command. +Install it globally by tacking `-g` or `--global` to the command. (This +is especially important for command line utilities that need to add +their bins to the global system `PATH`.) ## I installed something globally, but I can't `require()` it Install it locally. -## I don't wanna. +The global install location is a place for command-line utilities +to put their bins in the system `PATH`. It's not for use with `require()`. -Check out `npm link`. You might like it. +If you `require()` a module in your code, then that means it's a +dependency, and a part of your program. You need to install it locally +in your program. -## No, I really want 0.x style 'everything global' style. +## Why can't npm just put everything in one place, like other package managers? -Ok, fine. Do this: +Not every change is an improvement, but every improvement is a change. +This would be like asking git to do network IO for every commit. It's +not going to happen, because it's a terrible idea that causes more +problems than it solves. - echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc - . ~/.bashrc - npm config set global true +It is much harder to avoid dependency conflicts without nesting +dependencies. This is fundamental to the way that npm works, and has +proven to be an extremely successful approach. See `npm-folders(1)` for +more details. -This is not recommended. +If you want a package to be installed in one place, and have all your +programs reference the same copy of it, then use the `npm link` command. +That's what it's for. Install it globally, then link it into each +program that uses it. -Many things **will not work** if you do this. Make sure you read and -understand `npm-config(1)` and `npm-global(1)` before you complain -about things being broken. +## Whatever, I really want the old style 'everything global' style. -When you realize what a mistake it was, do this to switch back: +Write your own package manager, then. It's not that hard. - npm config delete global --local +npm will not help you do something that is known to be a bad idea. + +## Should I check my `node_modules` folder into git? + +Mikeal Rogers answered this question very well: + + + +tl;dr + +* Check `node_modules` into git for things you **deploy**, such as + websites and apps. +* Do not check `node_modules` into git for libraries and modules + intended to be reused. +* Use npm to manage dependencies in your dev environment, but not in + your deployment scripts. + +## Is it 'npm' or 'NPM' or 'Npm'? + +npm should never be capitalized unless it is being displayed in a +location that is customarily all-caps (such as the title of man pages.) ## If 'npm' is an acronym, why is it never capitalized? @@ -73,7 +103,7 @@ acronym, and thus incorrectly named.) National Association of Pastoral Musicians. You can learn more about them at . -In software, "NPM" is a non-parametric mapping utility written by +In software, "NPM" is a Non-Parametric Mapping utility written by Chris Rorden. You can analyze pictures of brains with it. Learn more about the (capitalized) NPM program at . @@ -186,11 +216,9 @@ Go to . ## I get ECONNREFUSED a lot. What's up? Either the registry is down, or node's DNS isn't able to reach out. -This happens a lot if you don't follow *all* the steps in the Cygwin -setup doc. To check if the registry is down, open up - + in a web browser. This will also tell you if you are just unable to access the internet for some reason. diff --git a/deps/npm/doc/cli/index.md b/deps/npm/doc/cli/index.md index b355042df00..5a9b99be196 100644 --- a/deps/npm/doc/cli/index.md +++ b/deps/npm/doc/cli/index.md @@ -54,6 +54,10 @@ npm-index(1) -- Index of all npm documentation Developer Guide +## npm-disputes(1) + + Handling Module Name Disputes + ## npm-docs(1) Docs for a package in a web browser maybe diff --git a/deps/npm/doc/cli/owner.md b/deps/npm/doc/cli/owner.md index 8365da379eb..902e083fca7 100644 --- a/deps/npm/doc/cli/owner.md +++ b/deps/npm/doc/cli/owner.md @@ -30,3 +30,4 @@ that is not implemented at this time. * npm-publish(1) * npm-registry(1) * npm-adduser(1) +* npm-disputes(1) diff --git a/deps/npm/doc/cli/registry.md b/deps/npm/doc/cli/registry.md index 13c872494c6..44ddd94e056 100644 --- a/deps/npm/doc/cli/registry.md +++ b/deps/npm/doc/cli/registry.md @@ -90,3 +90,4 @@ Stay tuned! * npm-config(1) * npm-developers(1) +* npm-disputes(1) diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html index b54352f0b0d..a5bd3325c4c 100644 --- a/deps/npm/html/api/bin.html +++ b/deps/npm/html/api/bin.html @@ -19,7 +19,7 @@

This function should not be used programmatically. Instead, just refer to the npm.bin member.

- + + diff --git a/deps/npm/html/doc/docs.html b/deps/npm/html/doc/docs.html index 212fabb9966..7c0d94d7daf 100644 --- a/deps/npm/html/doc/docs.html +++ b/deps/npm/html/doc/docs.html @@ -37,7 +37,7 @@ config param.

- +