Commit cbb5bffb authored by Jérémy Lal's avatar Jérémy Lal

New upstream version 6.9.3~dfsg

parent 95605dae
......@@ -20,7 +20,7 @@ Prerequisites:
On OS X, you will also need:
* [Xcode](https://developer.apple.com/xcode/download/)
* You also need to install the `Command Line Tools` via Xcode. You can find
* You also need to install the `Command Line Tools` via Xcode. You can find
this under the menu `Xcode -> Preferences -> Downloads`
* This step will install `gcc` and the related toolchain containing `make`
......@@ -113,7 +113,7 @@ To test if Node.js was built correctly:
> Release\node -e "console.log('Hello from Node.js', process.version)"
```
### Android / Android-based devices (e.g., Firefox OS)
### Android / Android-based devices (e.g. Firefox OS)
Although these instructions for building on Android are provided, please note
that Android is not an officially supported platform at this time. Patches to
......
......@@ -26,7 +26,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V6.md#6.9.2">6.9.2</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V6.md#6.9.3">6.9.3</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V6.md#6.9.2">6.9.2</a><br/>
<a href="doc/changelogs/CHANGELOG_V6.md#6.9.1">6.9.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V6.md#6.9.0">6.9.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V6.md#6.8.1">6.8.1</a><br/>
......
......@@ -36,6 +36,8 @@ Collaborators or additional evidence that the issue has relevance, the
issue may be closed. Remember that issues can always be re-opened if
necessary.
[**See "Who to CC in issues"**](./onboarding-extras.md#who-to-cc-in-issues)
## Accepting Modifications
All modifications to the Node.js code and documentation should be
......@@ -60,19 +62,20 @@ and work schedules. Trivial changes (e.g. those which fix minor bugs
or improve performance without affecting API or causing other
wide-reaching impact) may be landed after a shorter delay.
For non-breaking changes, if there is no disagreement amongst Collaborators, a
pull request may be landed given appropriate review. Where there is discussion
amongst Collaborators, consensus should be sought if possible. The
lack of consensus may indicate the need to elevate discussion to the
CTC for resolution (see below).
Breaking changes (that is, pull requests that require an increase in the
major version number, known as `semver-major` changes) must be elevated for
review by the CTC. This does not necessarily mean that the PR must be put onto
the CTC meeting agenda. If multiple CTC members approve (`LGTM`) the PR and no
Collaborators oppose the PR, it can be landed. Where there is disagreement among
CTC members or objections from one or more Collaborators, `semver-major` pull
requests should be put on the CTC meeting agenda.
For non-breaking changes, if there is no disagreement amongst
Collaborators, a pull request may be landed given appropriate review.
Where there is discussion amongst Collaborators, consensus should be
sought if possible. The lack of consensus may indicate the need to
elevate discussion to the CTC for resolution (see below).
Breaking changes (that is, pull requests that require an increase in
the major version number, known as `semver-major` changes) must be
elevated for review by the CTC. This does not necessarily mean that the
PR must be put onto the CTC meeting agenda. If multiple CTC members
approve (`LGTM`) the PR and no Collaborators oppose the PR, it can be
landed. Where there is disagreement among CTC members or objections
from one or more Collaborators, `semver-major` pull requests should be
put on the CTC meeting agenda.
All bugfixes require a test case which demonstrates the defect. The
test should *fail* before the change, and *pass* after the change.
......@@ -96,13 +99,20 @@ The CTC should serve as the final arbiter where required.
## Landing Pull Requests
* Please never use GitHub's green ["Merge Pull Request"](https://help.github.com/articles/merging-a-pull-request/#merging-a-pull-request-using-the-github-web-interface) button.
* If you do, please force-push removing the merge.
* Reasons for not using the web interface button:
* The merge method will add an unnecessary merge commit.
* The rebase & merge method adds metadata to the commit title.
* The rebase method changes the author.
* The squash & merge method has been known to add metadata to the
commit title.
* If more than one author has contributed to the PR, only the
latest author will be considered during the squashing.
Always modify the original commit message to include additional meta
information regarding the change process:
- A `Reviewed-By: Name <email>` line for yourself and any
other Collaborators who have reviewed the change.
- Useful for @mentions / contact list if something goes wrong in the PR.
- Protects against the assumption that GitHub will be around forever.
- A `PR-URL:` line that references the *full* GitHub URL of the original
pull request being merged so it's easy to trace a commit back to the
conversation that led up to that change.
......@@ -110,6 +120,10 @@ information regarding the change process:
for an issue, and/or the hash and commit message if the commit fixes
a bug in a previous commit. Multiple `Fixes:` lines may be added if
appropriate.
- A `Reviewed-By: Name <email>` line for yourself and any
other Collaborators who have reviewed the change.
- Useful for @mentions / contact list if something goes wrong in the PR.
- Protects against the assumption that GitHub will be around forever.
Review the commit message to ensure that it adheres to the guidelines
outlined in the [contributing](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#step-3-commit) guide.
......@@ -119,7 +133,6 @@ See the commit log for examples such as
exactly how to format your commit messages.
Additionally:
- Double check PRs to make sure the person's _full name_ and email
address are correct before merging.
- Except when updating dependencies, all commits should be self
......@@ -224,16 +237,36 @@ Save the file and close the editor. You'll be asked to enter a new
commit message for that commit. This is a good moment to fix incorrect
commit logs, ensure that they are properly formatted, and add
`Reviewed-By` lines.
* The commit message text must conform to the [commit message guidelines](../CONTRIBUTING.md#step-3-commit).
Time to push it:
```text
$ git push origin master
```
* Optional: Force push the amended commit to the branch you used to
open the pull request. If your branch is called `bugfix`, then the
command would be `git push --force-with-lease origin master:bugfix`.
When the pull request is closed, this will cause the pull request to
show the purple merged status rather than the red closed status that is
usually used for pull requests that weren't merged. Only do this when
landing your own contributions.
* Close the pull request with a "Landed in `<commit hash>`" comment. If
your pull request shows the purple merged status then you should still
add the "Landed in <commit hash>..<commit hash>" comment if you added
multiple commits.
* `./configure && make -j8 test`
* `-j8` builds node in parallel with 8 threads. Adjust to the number
of cores or processor-level threads your processor has (or slightly
more) for best results.
### I Just Made a Mistake
With `git`, there's a way to override remote trees by force pushing
* Ping a CTC member.
* `#node-dev` on freenode
* With `git`, there's a way to override remote trees by force pushing
(`git push -f`). This should generally be seen as forbidden (since
you're rewriting history on a repository other people are working
against) but is allowed for simpler slip-ups such as typos in commit
......@@ -241,6 +274,9 @@ messages. However, you are only allowed to force push to any Node.js
branch within 10 minutes from your original push. If someone else
pushes to the branch or the 10 minute period passes, consider the
commit final.
* Use `--force-with-lease` to minimize the chance of overwriting
someone else's change.
* Post to `#node-dev` (IRC) if you force push.
### Long Term Support
......
......@@ -60,16 +60,21 @@ always welcome but API or behavioral changes to modules at stability level 3
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.
projects. Do not send a patch to Node.js. We cannot accept such patches.
In case of doubt, open an issue in the
[issue tracker](https://github.com/nodejs/node/issues/) or contact one of the
[project Collaborators](https://github.com/nodejs/node/#current-project-team-members).
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 the project team. Node.js has two IRC channels,
[#Node.js](http://webchat.freenode.net/?channels=node.js) for general help and questions, and
[#Node-dev](http://webchat.freenode.net/?channels=node-dev) for development of node core specifically.
does not align with the project team. (Node.js has two IRC channels:
[#Node.js](http://webchat.freenode.net/?channels=node.js) for general help and
questions, and
[#Node-dev](http://webchat.freenode.net/?channels=node-dev) for development of
Node.js core specifically.
For instructions on updating the version of V8 included in the *deps/*
directory, please refer to [the Maintaining V8 in Node.js guide](https://github.com/nodejs/node/blob/master/doc/guides/maintaining-V8.md).
### Step 2: Branch
......@@ -150,7 +155,7 @@ $ git rebase upstream/master
Bug fixes and features **should come with tests**. Add your tests in the
`test/parallel/` directory. For guidance on how to write a test for the Node.js
project, see this [guide](./doc/guides/writing_tests.md). Looking at other tests
project, see this [guide](./doc/guides/writing-tests.md). Looking at other tests
to see how they should be structured can also help.
To run the tests on Unix / OS X:
......
......@@ -163,9 +163,10 @@ test/addons/.buildstamp: config.gypi \
test/addons/.docbuildstamp
# Cannot use $(wildcard test/addons/*/) here, it's evaluated before
# embedded addons have been generated from the documentation.
for dirname in test/addons/*/; do \
echo "\nRunning addons test $$PWD/$$dirname" ; \
$(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp --loglevel=$(LOGLEVEL) rebuild \
@for dirname in test/addons/*/; do \
echo "\nBuilding addon $$PWD/$$dirname" ; \
env MAKEFLAGS="-j1" $(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp \
--loglevel=$(LOGLEVEL) rebuild \
--python="$(PYTHON)" \
--directory="$$PWD/$$dirname" \
--nodedir="$$PWD" || exit 1 ; \
......@@ -238,6 +239,9 @@ test-debugger: all
test-inspector: all
$(PYTHON) tools/test.py inspector
test-tick-processor: all
$(PYTHON) tools/test.py tick-processor
test-known-issues: all
$(PYTHON) tools/test.py known_issues
......@@ -290,15 +294,14 @@ test-v8 test-v8-intl test-v8-benchmarks test-v8-all:
endif
apidoc_sources = $(wildcard doc/api/*.md)
apidocs = $(addprefix out/,$(apidoc_sources:.md=.html)) \
$(addprefix out/,$(apidoc_sources:.md=.json))
apidocs_html = $(apidoc_dirs) $(apiassets) $(addprefix out/,$(apidoc_sources:.md=.html))
apidocs_json = $(apidoc_dirs) $(apiassets) $(addprefix out/,$(apidoc_sources:.md=.json))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
doc-only: $(apidoc_dirs) $(apiassets) $(apidocs) tools/doc/
doc-only: $(apidocs_html) $(apidocs_json)
doc: $(NODE_EXE) doc-only
$(apidoc_dirs):
......@@ -334,8 +337,8 @@ out/doc/api/%.html: doc/api/%.md
fi
[ -x $(NODE) ] && $(NODE) $(gen-html) || node $(gen-html)
docopen: out/doc/api/all.html
-google-chrome out/doc/api/all.html
docopen: $(apidocs_html)
@$(PYTHON) -mwebbrowser file://$(PWD)/out/doc/api/all.html
docclean:
-rm -rf out/doc
......@@ -725,6 +728,8 @@ CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard \
src/*.h \
test/addons/*/*.cc \
test/addons/*/*.h \
test/cctest/*.cc \
test/cctest/*.h \
tools/icu/*.cc \
tools/icu/*.h \
))
......
......@@ -4,8 +4,8 @@
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js
uses an event-driven, non-blocking I/O model that makes it lightweight and
efficient. The Node.js package ecosystem, npm, is the largest ecosystem of open
source libraries in the world.
efficient. The Node.js package ecosystem, [npm][], is the largest ecosystem of
open source libraries in the world.
The Node.js project is supported by the
[Node.js Foundation](https://nodejs.org/en/foundation/). Contributions,
......@@ -217,8 +217,6 @@ more information about the governance of the Node.js project, see
**Claudio Rodriguez** &lt;cjrodr@yahoo.com&gt;
* [danbev](https://github.com/danbev) -
**Daniel Bevenius** &lt;daniel.bevenius@gmail.com&gt;
* [domenic](https://github.com/domenic) -
**Domenic Denicola** &lt;d@domenic.me&gt;
* [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) -
**Robert Jefe Lindstaedt** &lt;robert.lindstaedt@gmail.com&gt;
* [estliberitas](https://github.com/estliberitas) -
......@@ -239,8 +237,8 @@ more information about the governance of the Node.js project, see
**Ilkka Myller** &lt;ilkka.myller@nodefield.com&gt;
* [isaacs](https://github.com/isaacs) -
**Isaac Z. Schlueter** &lt;i@izs.me&gt;
* [italoacasas](https://github.com/italoacasas)
**Italo A. Casas** &lt;me@italoacasas.com&gt;
* [italoacasas](https://github.com/italoacasas) -
**Italo A. Casas** &lt;me@italoacasas.com&gt;
* [iWuzHere](https://github.com/iWuzHere) -
**Imran Iqbal** &lt;imran@imraniqbal.org&gt;
* [JacksonTian](https://github.com/JacksonTian) -
......@@ -337,8 +335,6 @@ more information about the governance of the Node.js project, see
**Yorkie Liu** &lt;yorkiefixer@gmail.com&gt;
* [yosuke-furukawa](https://github.com/yosuke-furukawa) -
**Yosuke Furukawa** &lt;yosuke.furukawa@gmail.com&gt;
* [zkat](https://github.com/zkat) -
**Kat Marchán** &lt;kzm@sykosomatic.org&gt;
Collaborators (which includes CTC members) follow the
[COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md) in maintaining the Node.js
......@@ -362,15 +358,12 @@ Releases of Node.js and io.js will be signed with one of the following GPG keys:
`C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8`
* **Rod Vagg** &lt;rod@vagg.org&gt;
`DD8F2338BAE7501E3DD5AC78C273792F7D83545D`
* **Sam Roberts** &lt;octetcloud@keybase.io&gt;
`0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93`
The full set of trusted release keys can be imported by running:
```shell
gpg --keyserver pool.sks-keyservers.net --recv-keys 9554F04D7259F04124DE6B476D5A82AC7E37093B
gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5
gpg --keyserver pool.sks-keyservers.net --recv-keys 0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93
gpg --keyserver pool.sks-keyservers.net --recv-keys FD3A5288F042B6850C66B31F09FE44734EB7990E
gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1
gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D
......@@ -391,6 +384,7 @@ keys:
* **Timothy J Fontaine** &lt;tjfontaine@gmail.com&gt;
`7937DFD2AB06298B2293C3187D33FF9D0246406D`
[npm]: https://www.npmjs.com
[Website]: https://nodejs.org/en/
[Contributing to the project]: CONTRIBUTING.md
[Node.js Help]: https://github.com/nodejs/help
......
This diff is collapsed.
'use strict';
var common = require('../common.js');
var types = [
'Array',
'Buffer',
'Int8Array',
'Uint8Array',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array'
];
var bench = common.createBenchmark(main, {
type: ['Array', 'Buffer', 'Int8Array', 'Uint8Array', 'Int16Array',
'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array',
'Float64Array'],
type: types,
n: [25]
});
......
'use strict';
var common = require('../common.js');
var types = [
'Array',
'Buffer',
'Int8Array',
'Uint8Array',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array'
];
var bench = common.createBenchmark(main, {
type: ['Array', 'Buffer', 'Int8Array', 'Uint8Array', 'Int16Array',
'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array',
'Float64Array'],
type: types,
n: [25]
});
......
'use strict';
var common = require('../common.js');
var types = [
'Array',
'Buffer',
'Int8Array',
'Uint8Array',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array'
];
var bench = common.createBenchmark(main, {
type: ['Array', 'Buffer', 'Int8Array', 'Uint8Array', 'Int16Array',
'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array',
'Float64Array'],
type: types,
n: [25]
});
......
......@@ -7,7 +7,7 @@ const bench = common.createBenchmark(main, {});
function main(conf) {
const s = 'abcd'.repeat(8 << 20);
s.match(/./); // Flatten string.
assert.equal(s.length % 4, 0);
assert.strictEqual(s.length % 4, 0);
const b = Buffer.allocUnsafe(s.length / 4 * 3);
b.write(s, 0, s.length, 'base64');
bench.start();
......
......@@ -3,12 +3,26 @@ var common = require('../common.js');
var fs = require('fs');
const path = require('path');
const searchStrings = [
'@',
'SQ',
'10x',
'--l',
'Alice',
'Gryphon',
'Panther',
'Ou est ma chatte?',
'found it very',
'among mad people',
'neighbouring pool',
'Soo--oop',
'aaaaaaaaaaaaaaaaa',
'venture to go near the house till she had brought herself down to',
'</i> to the Caterpillar'
];
var bench = common.createBenchmark(main, {
search: ['@', 'SQ', '10x', '--l', 'Alice', 'Gryphon', 'Panther',
'Ou est ma chatte?', 'found it very', 'among mad people',
'neighbouring pool', 'Soo--oop', 'aaaaaaaaaaaaaaaaa',
'venture to go near the house till she had brought herself down to',
'</i> to the Caterpillar'],
search: searchStrings,
encoding: ['undefined', 'utf8', 'ucs2', 'binary'],
type: ['buffer', 'string'],
iter: [1]
......
'use strict';
var common = require('../common.js');
var types = [
'UInt8',
'UInt16LE',
'UInt16BE',
'UInt32LE',
'UInt32BE',
'Int8',
'Int16LE',
'Int16BE',
'Int32LE',
'Int32BE',
'FloatLE',
'FloatBE',
'DoubleLE',
'DoubleBE'
];
var bench = common.createBenchmark(main, {
noAssert: ['false', 'true'],
buffer: ['fast', 'slow'],
type: ['UInt8', 'UInt16LE', 'UInt16BE',
'UInt32LE', 'UInt32BE',
'Int8', 'Int16LE', 'Int16BE',
'Int32LE', 'Int32BE',
'FloatLE', 'FloatBE',
'DoubleLE', 'DoubleBE'],
type: types,
millions: [1]
});
......
'use strict';
var common = require('../common.js');
var types = [
'UInt8',
'UInt16LE',
'UInt16BE',
'UInt32LE',
'UInt32BE',
'Int8',
'Int16LE',
'Int16BE',
'Int32LE',
'Int32BE',
'FloatLE',
'FloatBE',
'DoubleLE',
'DoubleBE'
];
var bench = common.createBenchmark(main, {
noAssert: ['false', 'true'],
buffer: ['fast', 'slow'],
type: ['UInt8', 'UInt16LE', 'UInt16BE',
'UInt32LE', 'UInt32BE',
'Int8', 'Int16LE', 'Int16BE',
'Int32LE', 'Int32BE',
'FloatLE', 'FloatBE',
'DoubleLE', 'DoubleBE'],
type: types,
millions: [1]
});
......
'use strict';
var common = require('../common.js');
var types = [
'Uint8',
'Uint16LE',
'Uint16BE',
'Uint32LE',
'Uint32BE',
'Int8',
'Int16LE',
'Int16BE',
'Int32LE',
'Int32BE',
'Float32LE',
'Float32BE',
'Float64LE',
'Float64BE'
];
var bench = common.createBenchmark(main, {
type: ['Uint8', 'Uint16LE', 'Uint16BE',
'Uint32LE', 'Uint32BE',
'Int8', 'Int16LE', 'Int16BE',
'Int32LE', 'Int32BE',
'Float32LE', 'Float32BE',
'Float64LE', 'Float64BE'],