diff --git a/AUTHORS b/AUTHORS index 141cfc21c5..8c19b8198a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -393,3 +393,6 @@ Tim Kuijsten Michael Axiak Chad Rhyner Nicolas Chambrier +Ben Taber +Luke Arduini +Luke Bayes diff --git a/ChangeLog b/ChangeLog index 041fd8517a..da9978bae4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,35 @@ -2012.12.21, Version 0.9.4 (Unstable) +2012.12.30, Version 0.9.5 (Unstable) + +* assert: improve support for new execution contexts (lukebayes) + +* domain: use camelCase instead of snake_case (isaacs) + +* domain: Do not use uncaughtException handler (isaacs) + +* fs: make 'end' work with ReadStream without 'start' (Ben Noordhuis) + +* https: optimize createConnection() (Ryunosuke SATO) + +* buffer: speed up base64 encoding by 20% (Ben Noordhuis) + +* doc: Colorize API stabilitity index headers in docs (Luke Arduini) + +* net: socket.readyState corrections (bentaber) + +* http: Performance enhancements for http under streams2 (isaacs) + +* stream: fix to emit end event on http.ClientResponse (Shigeki Ohtsu) + +* stream: fix event handler leak in readstream pipe and unpipe (Andreas Madsen) + +* build: Support ./configure --tag switch (Maciej MaƂecki) + +* repl: don't touch `require.cache` (Nathan Rajlich) + +* node: Emit 'exit' event when exiting for an uncaught exception (isaacs) + + +2012.12.21, Version 0.9.4 (Unstable), d86d83c75f6343b5368bb7bd328b4466a035e1d4 * streams: Update all streaming interfaces to use new classes (isaacs) diff --git a/src/node.js b/src/node.js index 98523c5303..d24387ce5f 100644 --- a/src/node.js +++ b/src/node.js @@ -251,6 +251,14 @@ caught = process.emit('uncaughtException', er); } // if someone handled it, then great. otherwise, die in C++ land + // since that means that we'll exit the process, emit the 'exit' event + if (!caught) { + try { + process.emit('exit', 1); + } catch (er) { + // nothing to be done about it at this point. + } + } return caught; }; }; diff --git a/src/node_version.h b/src/node_version.h index f74b226d4d..907d5d5b20 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -30,7 +30,7 @@ # define NODE_TAG "" #endif -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) diff --git a/test/message/error_exit.js b/test/message/error_exit.js new file mode 100644 index 0000000000..f872386e95 --- /dev/null +++ b/test/message/error_exit.js @@ -0,0 +1,29 @@ +// 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.js'); +var assert = require('assert'); + +process.on('exit', function(code) { + console.error('Exiting with code=%d', code); +}); + +assert.equal(1, 2); diff --git a/test/message/error_exit.out b/test/message/error_exit.out new file mode 100644 index 0000000000..0e01e12567 --- /dev/null +++ b/test/message/error_exit.out @@ -0,0 +1,13 @@ +Exiting with code=1 + +assert.js:* + throw new assert.AssertionError({ + ^ +AssertionError: 1 == 2 + at Object. (*test*message*error_exit.js:*:*) + at Module._compile (module.js:*:*) + at Object.Module._extensions..js (module.js:*:*) + at Module.load (module.js:*:*) + at Function.Module._load (module.js:*:*) + at Module.runMain (module.js:*:*) + at process._tickCallback (node.js:*:*) diff --git a/test/message/undefined_reference_in_new_context.js b/test/message/undefined_reference_in_new_context.js index cdd232d539..90cf43549b 100644 --- a/test/message/undefined_reference_in_new_context.js +++ b/test/message/undefined_reference_in_new_context.js @@ -30,7 +30,7 @@ common.error('before'); var Script = process.binding('evals').NodeScript; // undefined reference -script = new Script('foo.bar = 5;'); +var script = new Script('foo.bar = 5;'); script.runInNewContext(); common.error('after');