Merge remote-tracking branch 'ry/v0.10'
authorisaacs <i@izs.me>
Wed, 28 Aug 2013 17:11:17 +0000 (10:11 -0700)
committerisaacs <i@izs.me>
Wed, 28 Aug 2013 17:11:17 +0000 (10:11 -0700)
Conflicts:
AUTHORS
ChangeLog
deps/uv/ChangeLog
deps/uv/include/uv-darwin.h
deps/uv/src/unix/darwin.c
deps/uv/src/unix/fsevents.c
deps/uv/src/version.c
lib/_stream_writable.js
src/node_version.h

.gitignore
AUTHORS
ChangeLog
doc/blog/release/v0.10.17.md [new file with mode: 0644]
doc/blog/release/v0.11.6.md [new file with mode: 0644]
doc/download/index.html
lib/_stream_readable.js
test/simple/test-stream-writable-decoded-encoding.js [new file with mode: 0644]
tools/getstability.py [new file with mode: 0644]
tools/node-release-post-build.sh [new file with mode: 0755]

index b436353..1775144 100644 (file)
@@ -54,6 +54,6 @@ deps/openssl/openssl.xml
 
 # build/release artifacts
 /*.tar.gz
-/SHASUMS.txt*
+/SHASUMS*.txt*
 
 /tools/wrk/wrk
diff --git a/AUTHORS b/AUTHORS
index 4f53daa..4019f00 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -474,12 +474,12 @@ Antony Bailey <support@antonybailey.net>
 Forrest L Norvell <ogd@aoaioxxysz.net>
 Evan Solomon <evan@evanalyze.com>
 Eran Hammer <eran@hueniverse.com>
-Matthias Bartelmeß <mba@fourplusone.de>
 Daniel Chatfield <chatfielddaniel@gmail.com>
 Eivind Uggedal <eivind@uggedal.com>
 Edward Hutchins <eahutchins@gmail.com>
-James Halliday <mail@substack.net>
 Chris Wren <cthewren@gmail.com>
 Duan Yao <duanyao@ustc.edu>
+Matthias Bartelmeß <mba@fourplusone.de>
+James Halliday <mail@substack.net>
 Matthew Aynalem <maynalem@gmail.com>
 Vsevolod Strukchinsky <floatdrop@yandex-team.ru>
index 3ab80ec..c9c308d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 * console: `console.dir()` bypasses inspect() methods (Nathan Rajlich)
 
 
+2013.08.21, Version 0.10.17 (Stable), 469a4a5091a677df62be319675056b869c31b35c
+
+* uv: Upgrade v0.10.14
+
+* http_parser: Do not accept PUN/GEM methods as PUT/GET (Chris Dickinson)
+
+* tls: fix assertion when ssl is destroyed at read (Fedor Indutny)
+
+* stream: Throw on 'error' if listeners removed (isaacs)
+
+* dgram: fix assertion on bad send() arguments (Ben Noordhuis)
+
+* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
+
+
 2013.08.16, Version 0.10.16 (Stable), 50b4c905a4425430ae54db4906f88982309e128d
 
 * v8: back-port fix for CVE-2013-2882
diff --git a/doc/blog/release/v0.10.17.md b/doc/blog/release/v0.10.17.md
new file mode 100644 (file)
index 0000000..433bb4f
--- /dev/null
@@ -0,0 +1,92 @@
+date: Wed Aug 21 16:37:31 PDT 2013
+version: 0.10.17
+category: release
+title: Node v0.10.17 (Stable)
+slug: node-v0-10-17-stable
+
+2013.08.21, Version 0.10.17 (Stable)
+
+* uv: Upgrade v0.10.14
+
+* http_parser: Do not accept PUN/GEM methods as PUT/GET (Chris Dickinson)
+
+* tls: fix assertion when ssl is destroyed at read (Fedor Indutny)
+
+* stream: Throw on 'error' if listeners removed (isaacs)
+
+* dgram: fix assertion on bad send() arguments (Ben Noordhuis)
+
+* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
+
+
+Source Code: http://nodejs.org/dist/v0.10.17/node-v0.10.17.tar.gz
+
+Macintosh Installer (Universal): http://nodejs.org/dist/v0.10.17/node-v0.10.17.pkg
+
+Windows Installer: http://nodejs.org/dist/v0.10.17/node-v0.10.17-x86.msi
+
+Windows x64 Installer: http://nodejs.org/dist/v0.10.17/x64/node-v0.10.17-x64.msi
+
+Windows x64 Files: http://nodejs.org/dist/v0.10.17/x64/
+
+Linux 32-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-linux-x86.tar.gz
+
+Linux 64-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-linux-x64.tar.gz
+
+Solaris 32-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-sunos-x86.tar.gz
+
+Solaris 64-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-sunos-x64.tar.gz
+
+Other release files: http://nodejs.org/dist/v0.10.17/
+
+Website: http://nodejs.org/docs/v0.10.17/
+
+Documentation: http://nodejs.org/docs/v0.10.17/api/
+
+Shasums:
+```
+8502c5ec4878154b5896fca6a14ff6c83c3774a1  node-v0.10.17-darwin-x64.tar.gz
+6d785ae86ea050159dfd85841a4faac830be8a2a  node-v0.10.17-darwin-x86.tar.gz
+244dc1a25dcd2cc252ae9315bb2da07b41381c5c  node-v0.10.17-linux-x64.tar.gz
+109c32b514fab374b73972dda4f4d27a33e20d5d  node-v0.10.17-linux-x86.tar.gz
+2e046a6e05520c7be941365830517db90b791999  node-v0.10.17-sunos-x64.tar.gz
+907d73aa0e84717c342327265f0b665d09b50154  node-v0.10.17-sunos-x86.tar.gz
+ac8f653545b58d009e19522e3ead8886d151b59d  node-v0.10.17-x86.msi
+32f160364990489e1f79593e1cdcea9dfde28125  node-v0.10.17.pkg
+c9d31d5415d2cf7a09fd7abebf9f01259e9dd93b  node-v0.10.17.tar.gz
+33a5e3a86c391fc30080e796c46a74cefbd9104c  node.exe
+004ebfa938b3f14984b964dcaba061d10c32f12c  node.exp
+3dd092b26c742f20006fc2085b329a3e32d8e3d9  node.lib
+a8d997936e240626c56df8c6c8d55b659003a644  node.pdb
+165fecaab04a09a4df6b731f0e4b264bdb281644  pkgsrc/nodejs-ia32-0.10.17.tgz
+0c813098a93090823b513147de7f41f920dd8569  pkgsrc/nodejs-x64-0.10.17.tgz
+3cf665ad6c8f7d3040c2bfea8791f77c40c8f2a0  x64/node-v0.10.17-x64.msi
+95baf773a34f85014eb67d026b7b9cd0396f96f5  x64/node.exe
+ebdbcea161d44368c224fce448bf3d85e5a54f21  x64/node.exp
+49d12cb3d5be6f6707b7f5c89952f81bddb69a68  x64/node.lib
+0c0ef15eb6705c81137187c597cb0105bd2bc352  x64/node.pdb
+```
+
+Shasums:
+```
+8502c5ec4878154b5896fca6a14ff6c83c3774a1  node-v0.10.17-darwin-x64.tar.gz
+6d785ae86ea050159dfd85841a4faac830be8a2a  node-v0.10.17-darwin-x86.tar.gz
+244dc1a25dcd2cc252ae9315bb2da07b41381c5c  node-v0.10.17-linux-x64.tar.gz
+109c32b514fab374b73972dda4f4d27a33e20d5d  node-v0.10.17-linux-x86.tar.gz
+2e046a6e05520c7be941365830517db90b791999  node-v0.10.17-sunos-x64.tar.gz
+907d73aa0e84717c342327265f0b665d09b50154  node-v0.10.17-sunos-x86.tar.gz
+ac8f653545b58d009e19522e3ead8886d151b59d  node-v0.10.17-x86.msi
+32f160364990489e1f79593e1cdcea9dfde28125  node-v0.10.17.pkg
+c9d31d5415d2cf7a09fd7abebf9f01259e9dd93b  node-v0.10.17.tar.gz
+33a5e3a86c391fc30080e796c46a74cefbd9104c  node.exe
+004ebfa938b3f14984b964dcaba061d10c32f12c  node.exp
+3dd092b26c742f20006fc2085b329a3e32d8e3d9  node.lib
+a8d997936e240626c56df8c6c8d55b659003a644  node.pdb
+165fecaab04a09a4df6b731f0e4b264bdb281644  pkgsrc/nodejs-ia32-0.10.17.tgz
+0c813098a93090823b513147de7f41f920dd8569  pkgsrc/nodejs-x64-0.10.17.tgz
+3cf665ad6c8f7d3040c2bfea8791f77c40c8f2a0  x64/node-v0.10.17-x64.msi
+95baf773a34f85014eb67d026b7b9cd0396f96f5  x64/node.exe
+ebdbcea161d44368c224fce448bf3d85e5a54f21  x64/node.exp
+49d12cb3d5be6f6707b7f5c89952f81bddb69a68  x64/node.lib
+0c0ef15eb6705c81137187c597cb0105bd2bc352  x64/node.pdb
+```
diff --git a/doc/blog/release/v0.11.6.md b/doc/blog/release/v0.11.6.md
new file mode 100644 (file)
index 0000000..6edc3df
--- /dev/null
@@ -0,0 +1,110 @@
+date: Wed Aug 21 14:11:09 PDT 2013
+version: 0.11.6
+category: release
+title: Node v0.11.6 (Unstable)
+slug: node-v0-11-6-unstable
+
+2013.08.21, Version 0.11.6 (Unstable)
+
+* uv: Upgrade to v0.11.8
+
+* v8: upgrade v8 to 3.20.14.1
+
+* build: disable SSLv2 by default (Ben Noordhuis)
+
+* build: don't auto-destroy existing configuration (Ben Noordhuis)
+
+* crypto: add TLS 1.1 and 1.2 to secureProtocol list (Matthias Bartelmeß)
+
+* crypto: fix memory leak in randomBytes() error path (Ben Noordhuis)
+
+* dgram: don't call into js when send cb is omitted (Ben Noordhuis)
+
+* dgram: fix regression in string argument handling (Ben Noordhuis)
+
+* domains: performance improvements (Trevor Norris)
+
+* events: EventEmitter = require('events') (Jake Verbaten)
+
+* http: Add write()/end() callbacks (isaacs)
+
+* http: Consistent 'finish' event semantics (isaacs)
+
+* http: Prefer 'binary' over 'ascii' (isaacs)
+
+* http: Support legacy agent.addRequest API (isaacs)
+
+* http: Write hex/base64 chunks properly (isaacs)
+
+* http: add agent.maxFreeSockets option (isaacs)
+
+* http: provide access to raw headers/trailers (isaacs)
+
+* http: removed headers stay removed (James Halliday)
+
+* http,timers: improve callback performance (Ben Noordhuis)
+
+* net: family option in net.connect (Vsevolod Strukchinsky)
+
+* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
+
+* smalloc: allow different external array types (Trevor Norris)
+
+* smalloc: expose ExternalArraySize (Trevor Norris)
+
+* stream: Short-circuit buffer pushes when flowing (isaacs)
+
+* tls: handle errors on socket before releasing it (Fedor Indutny)
+
+* util: fix isPrimitive check (Trevor Norris)
+
+* util: isObject should always return boolean (Trevor Norris)
+
+
+Source Code: http://nodejs.org/dist/v0.11.6/node-v0.11.6.tar.gz
+
+Macintosh Installer (Universal): http://nodejs.org/dist/v0.11.6/node-v0.11.6.pkg
+
+Windows Installer: http://nodejs.org/dist/v0.11.6/node-v0.11.6-x86.msi
+
+Windows x64 Installer: http://nodejs.org/dist/v0.11.6/x64/node-v0.11.6-x64.msi
+
+Windows x64 Files: http://nodejs.org/dist/v0.11.6/x64/
+
+Linux 32-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-linux-x86.tar.gz
+
+Linux 64-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-linux-x64.tar.gz
+
+Solaris 32-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-sunos-x86.tar.gz
+
+Solaris 64-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-sunos-x64.tar.gz
+
+Other release files: http://nodejs.org/dist/v0.11.6/
+
+Website: http://nodejs.org/docs/v0.11.6/
+
+Documentation: http://nodejs.org/docs/v0.11.6/api/
+
+Shasums:
+```
+5bab906e0ec1d5d2c2a750f17253955ba8c590b1  ./node-v0.11.6-darwin-x64.tar.gz
+085a4ecf18ec3200e6e8bd140b3dc7f9fa65f8b5  ./node-v0.11.6-darwin-x86.tar.gz
+c162932132977820e06b856ba9cc84c7d4b57749  ./node-v0.11.6-linux-x64.tar.gz
+ed188f465c62da99d870bf8fa17fbd0d543d8d2e  ./node-v0.11.6-linux-x86.tar.gz
+0f52a91353d2c51b4d59c07b2a3b5d2e26060c93  ./node-v0.11.6-sunos-x64.tar.gz
+eac97868a552eae2dad92d633d0b78e069d05bed  ./node-v0.11.6-sunos-x86.tar.gz
+3bdcfd9305fca8bc81197c53c5aff4c4a0745966  ./node-v0.11.6-x86.msi
+92abb4a4cc83bf9d3f1ed2f86a8aecd19672e7cf  ./node-v0.11.6.pkg
+4f3a643b4913ef085175aef180c3bfd9259a4357  ./node-v0.11.6.tar.gz
+8051915c27eaee334a3d89a32fe1593e2b01182b  ./node.exe
+29f62a9272ae7679118f4a21c536eb2384fa3af4  ./node.exp
+dc060de643dec7f17a696c533d9443bfdf25ee61  ./node.lib
+6438410f3685c585379e44b8bf39240ff0e65175  ./node.pdb
+dddfd481d376a215f0e039143ff1d22b317ca1d3  ./pkgsrc/nodejs-ia32-0.11.6.tgz
+634c9249428fde318e9087eebc9d50401c110521  ./pkgsrc/nodejs-x64-0.11.6.tgz
+90b58cb39a655591c240388942b629ff725fb076  ./x64/node-v0.11.6-x64.msi
+faeda12db9ca90a89dbd1d131702be39a883e7a2  ./x64/node.exe
+d6ab6da893cefd30795163a4e0d5585a996f13ec  ./x64/node.exp
+f8f598114199b8876ef2cf7414eee488fcf713b9  ./x64/node.lib
+e09f49b3d3b881f2c3dcdff24369176572cc7338  ./x64/node.pdb
+```
index 6b0953d..48c02ba 100644 (file)
               </td>
             </tr>
           </table>
+          <p>
+            Note: Python 2.6 or 2.7 is required to build from source tarballs.
+          </p>
 
           <h2 style="margin-top:1em" id=other-info>Other Info</h2>
           <ul>
index 95c044a..6dadc28 100644 (file)
@@ -550,7 +550,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) {
   }
   // This is a brutally ugly hack to make sure that our error handler
   // is attached before any userland ones.  NEVER DO THIS.
-  if (!dest._events.error)
+  if (!dest._events || !dest._events.error)
     dest.on('error', onerror);
   else if (Array.isArray(dest._events.error))
     dest._events.error.unshift(onerror);
diff --git a/test/simple/test-stream-writable-decoded-encoding.js b/test/simple/test-stream-writable-decoded-encoding.js
new file mode 100644 (file)
index 0000000..8e2624b
--- /dev/null
@@ -0,0 +1,60 @@
+// 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 common = require('../common');
+var assert = require('assert');
+
+var stream = require('stream');
+var util = require('util');
+
+function MyWritable(fn, options) {
+  stream.Writable.call(this, options);
+  this.fn = fn;
+};
+
+util.inherits(MyWritable, stream.Writable);
+
+MyWritable.prototype._write = function (chunk, encoding, callback) {
+  this.fn(Buffer.isBuffer(chunk), typeof chunk, encoding);
+  callback();
+};
+
+;(function decodeStringsTrue() {
+  var m = new MyWritable(function(isBuffer, type, enc) {
+    assert(isBuffer);
+    assert.equal(type, 'object');
+    assert.equal(enc, 'buffer');
+    console.log('ok - decoded string is decoded');
+  }, { decodeStrings: true });
+  m.write('some-text', 'utf8');
+  m.end();
+})();
+
+;(function decodeStringsFalse() {
+  var m = new MyWritable(function(isBuffer, type, enc) {
+    assert(!isBuffer);
+    assert.equal(type, 'string');
+    assert.equal(enc, 'utf8');
+    console.log('ok - un-decoded string is not decoded');
+  }, { decodeStrings: false });
+  m.write('some-text', 'utf8');
+  m.end();
+})();
diff --git a/tools/getstability.py b/tools/getstability.py
new file mode 100644 (file)
index 0000000..7fe51bf
--- /dev/null
@@ -0,0 +1,19 @@
+import os,re
+
+node_version_h = os.path.join(os.path.dirname(__file__), '..', 'src',
+    'node_version.h')
+
+f = open(node_version_h)
+
+for line in f:
+  if re.match('#define NODE_MAJOR_VERSION', line):
+    major = line.split()[2]
+  if re.match('#define NODE_MINOR_VERSION', line):
+    minor = line.split()[2]
+  if re.match('#define NODE_PATCH_VERSION', line):
+    patch = line.split()[2]
+
+if int(minor) % 2 == 0:
+  print 'stable'
+else:
+  print 'unstable'
diff --git a/tools/node-release-post-build.sh b/tools/node-release-post-build.sh
new file mode 100755 (executable)
index 0000000..6adda19
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+## This is to be used once jenkins has finished building the release
+
+set -e
+
+stability="$(python tools/getstability.py)"
+NODE_STABC="$(tr '[:lower:]' '[:upper:]' <<< ${stability:0:1})${stability:1}"
+NODE_STABL="$stability"
+
+echo "Building for $stability"
+
+scp tj@nodejs.org:archive/node/tmp/v$(python tools/getnodeversion.py)/SHASUM* .
+FILES="SHASUMS SHASUMS256"
+for i in $FILES ; do gpg -s $i.txt; gpg --clearsign $i.txt; done
+scp SHASUM* tj@nodejs.org:archive/node/tmp/v$(python tools/getnodeversion.py)/
+ssh nodejs.org mkdir -p "dist/v$(python tools/getnodeversion.py)/{x64,docs}"
+ssh nodejs.org ln -s ../dist/v$(python tools/getnodeversion.py)/docs docs/v$(python tools/getnodeversion.py)
+
+ssh root@nodejs.org mv /home/tj/archive/node/tmp/v$(python tools/getnodeversion.py)/* /home/node/dist/v$(python tools/getnodeversion.py)/
+ssh root@nodejs.org chown -R node:other /home/node/dist/v$(python tools/getnodeversion.py)
+
+# tag the release
+# should be the same key used to sign the shasums
+git tag -sm "$(bash tools/changelog-head.sh)" v$(python tools/getnodeversion.py)
+# push to github
+git push git@github.com:joyent/node v$(python tools/getnodeversion.py)-release --tags 
+
+# blog post and email
+make email.md
+( echo ""
+  echo "Shasums:"
+  echo '```'
+  cat SHASUMS.txt
+  echo '```' ) >> email.md
+( echo -n "date: "
+  date
+  echo -n "version: "
+  python tools/getnodeversion.py
+  echo "category: release"
+  echo "title: Node v"$(python tools/getnodeversion.py)" ($NODE_STABC)"
+  echo "slug: node-v"$(python tools/getnodeversion.py | sed 's|\.|-|g')"-$NODE_STABL"
+  echo ""
+  cat email.md ) > doc/blog/release/v$(python tools/getnodeversion.py).md
+
+if [ "$stability" = "stable" ];
+then
+  ## this needs to happen here because the website depends on the current node
+  ## node version
+  make website-upload
+  make blog-upload
+  BRANCH="v$(python tools/getnodeversion.py | sed -E 's#\.[0-9]+$##')"
+else
+  BRANCH="master"
+fi
+
+echo "Merging back into $BRANCH"
+
+# merge back into mainline stable branch
+git checkout $BRANCH
+git merge --no-ff v$(python tools/getnodeversion.py)-release
+# change the version number, set isrelease = 0
+## TODO automagic.
+vim src/node_version.h
+git commit -am "Now working on "$(python tools/getnodeversion.py)
+
+if [ "$stability" = "stable" ];
+then
+  echo "Adding blog"
+  git add doc/blog
+  git commit -m "blog: Post for v$(python tools/getprevnodeversion.py)"
+else
+  echo "copy blog to stable branch"
+fi
+
+git push git@github.com:joyent/node $BRANCH