diff --git a/.editorconfig b/.editorconfig index ca97ab47dfea49..1c1b4418547481 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,13 +4,11 @@ root = true end_of_line = lf charset = utf-8 trim_trailing_whitespace = true +insert_final_newline = true [vcbuild.bat] end_of_line = crlf -[*.{md,markdown}] -trim_trailing_whitespace = false - [{lib,src,test}/**.js] indent_style = space indent_size = 2 @@ -37,3 +35,6 @@ indent_size = ignore end_of_line = ignore trim_trailing_whitespace = ignore charset = ignore + +[{test/fixtures,deps,tools/eslint,tools/gyp,tools/icu,tools/msvs}/**] +insert_final_newline = false diff --git a/.eslintrc b/.eslintrc index fdfdaf0833045d..e966348f5f063b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -120,6 +120,7 @@ rules: align-function-arguments: 2 align-multiline-assignment: 2 assert-fail-single-argument: 2 + assert-throws-arguments: [2, { requireTwo: false }] new-with-error: [2, Error, RangeError, TypeError, SyntaxError, ReferenceError] # Global scoped method and vars diff --git a/.gitignore b/.gitignore index b6790e116cd6b5..4f129c4581ba8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,19 @@ +# Whitelist dotfiles +.* +!deps/**/.* +!test/fixtures/**/.* +!tools/eslint/**/.* +!tools/doc/node_modules/**/.* +!.editorconfig +!.eslintignore +!.eslintrc +!.gitattributes +!.github +!.gitignore +!.gitkeep +!.mailmap +!.remarkrc + core vgcore.* v8*.log @@ -16,8 +32,6 @@ node node_g *.swp .benchmark_reports -/.project -/.cproject icu_config.gypi .eslintcache diff --git a/BUILDING.md b/BUILDING.md index 2fe919328edd62..5051da343353b3 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index b17d06773b8420..bfb8b73a0feb24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,8 @@ release. -6.9.2
+6.9.3
+6.9.2
6.9.1
6.9.0
6.8.1
diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 214f262fdc61d5..702d539d460301 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -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 ` 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 ` 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 ``" comment. If +your pull request shows the purple merged status then you should still +add the "Landed in .." 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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 17aa305f8c7fe4..c9d09436c8cb0a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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: diff --git a/Makefile b/Makefile index cd4c582741df0a..719b855559383a 100644 --- a/Makefile +++ b/Makefile @@ -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 \ )) diff --git a/README.md b/README.md index 86eef0065cd7af..bdb74b5446ac40 100644 --- a/README.md +++ b/README.md @@ -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** <cjrodr@yahoo.com> * [danbev](https://github.com/danbev) - **Daniel Bevenius** <daniel.bevenius@gmail.com> -* [domenic](https://github.com/domenic) - -**Domenic Denicola** <d@domenic.me> * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - **Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> * [estliberitas](https://github.com/estliberitas) - @@ -239,8 +237,8 @@ more information about the governance of the Node.js project, see **Ilkka Myller** <ilkka.myller@nodefield.com> * [isaacs](https://github.com/isaacs) - **Isaac Z. Schlueter** <i@izs.me> -* [italoacasas](https://github.com/italoacasas) -**Italo A. Casas** <me@italoacasas.com> +* [italoacasas](https://github.com/italoacasas) - +**Italo A. Casas** <me@italoacasas.com> * [iWuzHere](https://github.com/iWuzHere) - **Imran Iqbal** <imran@imraniqbal.org> * [JacksonTian](https://github.com/JacksonTian) - @@ -337,8 +335,6 @@ more information about the governance of the Node.js project, see **Yorkie Liu** <yorkiefixer@gmail.com> * [yosuke-furukawa](https://github.com/yosuke-furukawa) - **Yosuke Furukawa** <yosuke.furukawa@gmail.com> -* [zkat](https://github.com/zkat) - -**Kat Marchán** <kzm@sykosomatic.org> 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** <rod@vagg.org> `DD8F2338BAE7501E3DD5AC78C273792F7D83545D` -* **Sam Roberts** <octetcloud@keybase.io> -`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** <tjfontaine@gmail.com> `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 diff --git a/WORKING_GROUPS.md b/WORKING_GROUPS.md index ab24942aecffcf..694325a0bfcf95 100644 --- a/WORKING_GROUPS.md +++ b/WORKING_GROUPS.md @@ -24,7 +24,6 @@ back in to the CTC. * [Diagnostics](#diagnostics) * [i18n](#i18n) * [Evangelism](#evangelism) -* [Roadmap](#roadmap) * [Docker](#docker) * [Addon API](#addon-api) * [Benchmarking](#benchmarking) @@ -41,66 +40,65 @@ back in to the CTC. ### [Website](https://github.com/nodejs/nodejs.org) -The website working group's purpose is to build and maintain a public -website for the `Node.js` project. +The website Working Group's purpose is to build and maintain a public +website for the Node.js project. -Its responsibilities are: -* Develop and maintain a build and automation system for `nodejs.org`. -* Ensure the site is regularly updated with changes made to `Node.js` like -releases and features. -* Foster and enable a community of translators. +Responsibilities include: +* Developing and maintaining a build and automation system for nodejs.org. +* Ensuring the site is regularly updated with changes made to Node.js, like + releases and features. +* Fostering and enabling a community of translators. ### [Streams](https://github.com/nodejs/readable-stream) -The Streams WG is dedicated to the support and improvement of the Streams API -as used in Node.js and the npm ecosystem. We seek to create a composable API that -solves the problem of representing multiple occurrences of an event over time -in a humane, low-overhead fashion. Improvements to the API will be driven by -the needs of the ecosystem; interoperability and backwards compatibility with -other solutions and prior versions are paramount in importance. Our -responsibilities include: +The Streams Working Group is dedicated to the support and improvement of the +Streams API as used in Node.js and the npm ecosystem. We seek to create a +composable API that solves the problem of representing multiple occurrences +of an event over time in a humane, low-overhead fashion. Improvements to the +API will be driven by the needs of the ecosystem; interoperability and +backwards compatibility with other solutions and prior versions are paramount +in importance. +Responsibilities include: * Addressing stream issues on the Node.js issue tracker. * Authoring and editing stream documentation within the Node.js project. * Reviewing changes to stream subclasses within the Node.js project. * Redirecting changes to streams from the Node.js project to this project. * Assisting in the implementation of stream providers within Node.js. -* Recommending versions of readable-stream to be included in Node.js. -* Messaging about the future of streams to give the community advance notice of changes. - +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance notice of + changes. ### [Build](https://github.com/nodejs/build) -The build working group's purpose is to create and maintain a -distributed automation infrastructure. - -Its responsibilities are: -* Produce Packages for all target platforms. -* Run tests. -* Run performance testing and comparisons. -* Creates and manages build-containers. +The Build Working Group's purpose is to create and maintain a distributed +automation infrastructure. +Responsibilities include: +* Producing packages for all target platforms. +* Running tests. +* Running performance testing and comparisons. +* Creating and managing build-containers. ### [Diagnostics](https://github.com/nodejs/diagnostics) -The diagnostics working group's purpose is to surface a set of comprehensive, -documented, and extensible diagnostic interfaces for use by -Node.js tools and JavaScript VMs. - -Its responsibilities are: - -* Collaborate with V8 to integrate `v8_inspector` into Node.js. -* Collaborate with V8 to integrate `trace_event` into Node.js. -* Collaborate with Core to refine `async_wrap` and `async_hooks`. -* Maintain and improve OS trace system integration (e.g. ETW, LTTNG, dtrace). -* Document diagnostic capabilities and APIs in Node.js and its components. -* Explore opportunities and gaps, discuss feature requests, and address +The Diagnostics Working Group's purpose is to surface a set of comprehensive, +documented, and extensible diagnostic interfaces for use by Node.js tools and +JavaScript VMs. + +Responsibilities include: +* Collaborating with V8 to integrate `v8_inspector` into Node.js. +* Collaborating with V8 to integrate `trace_event` into Node.js. +* Collaborating with Core to refine `async_wrap` and `async_hooks`. +* Maintaining and improving OS trace system integration (e.g. ETW, LTTNG, dtrace). +* Documenting diagnostic capabilities and APIs in Node.js and its components. +* Exploring opportunities and gaps, discussing feature requests, and addressing conflicts in Node.js diagnostics. -* Foster an ecosystem of diagnostics tools for Node.js. +* Fostering an ecosystem of diagnostics tools for Node.js. ### i18n -The i18n working groups handle more than just translations. They +The i18n Working Groups handle more than just translations. They are endpoints for community members to collaborate with each other in their language of choice. @@ -108,16 +106,14 @@ Each team is organized around a common spoken language. Each language community might then produce multiple localizations for various project resources. -Their responsibilities are: -* Translations of any Node.js materials they believe are relevant to their -community. -* Review processes for keeping translations up -to date and of high quality. -* Social media channels in their language. -* Promotion of Node.js speakers for meetups and conferences in their -language. +Responsibilities include: +* Translating any Node.js materials they believe are relevant to their + community. +* Reviewing processes for keeping translations up to date and of high quality. +* Managing and monitoring social media channels in their language. +* Promoting Node.js speakers for meetups and conferences in their language. -Note that the i18n working groups are distinct from the [Intl](#Intl) working group. +Note that the i18n Working Groups are distinct from the [Intl](#Intl) Working Group. Each language community maintains its own membership. @@ -159,33 +155,37 @@ Each language community maintains its own membership. ### [Intl](https://github.com/nodejs/Intl) The Intl Working Group is dedicated to support and improvement of -Internationalization (i18n) and Localization (l10n) in Node. Its responsibilities are: +Internationalization (i18n) and Localization (l10n) in Node. -1. Functionality & compliance (standards: ECMA, Unicode…) -2. Support for Globalization and Internationalization issues that come up in the tracker -3. Guidance and Best Practices -4. Refinement of existing `Intl` implementation +Responsibilities include: +* Ensuring functionality & compliance (standards: ECMA, Unicode…) +* Supporting Globalization and Internationalization issues that come up + in the tracker +* Communicating guidance and best practices +* Refining the existing `Intl` implementation -The Intl WG is not responsible for translation of content. That is the responsibility of the specific [i18n](#i18n) group for each language. +The Intl Working Group is not responsible for translation of content. That is the +responsibility of the specific [i18n](#i18n) group for each language. ### [Evangelism](https://github.com/nodejs/evangelism) -The evangelism working group promotes the accomplishments +The Evangelism Working Group promotes the accomplishments of Node.js and lets the community know how they can get involved. -Their responsibilities are: -* Project messaging. -* Official project social media. -* Promotion of speakers for meetups and conferences. -* Promotion of community events. +Responsibilities include: +* Facilitating project messaging. +* Managing official project social media. +* Handling the promotion of speakers for meetups and conferences. +* Handling the promotion of community events. * Publishing regular update summaries and other promotional -content. + content. ### [HTTP](https://github.com/nodejs/http) -The HTTP working group is chartered for the support and improvement of the -HTTP implementation in Node. Its responsibilities are: +The HTTP Working Group is chartered for the support and improvement of the +HTTP implementation in Node.js. +Responsibilities include: * Addressing HTTP issues on the Node.js issue tracker. * Authoring and editing HTTP documentation within the Node.js project. * Reviewing changes to HTTP functionality within the Node.js project. @@ -195,41 +195,25 @@ HTTP implementation in Node. Its responsibilities are: * Messaging about the future of HTTP to give the community advance notice of changes. -### [Roadmap](https://github.com/nodejs/roadmap) - -The roadmap working group is responsible for user community outreach -and the translation of their concerns into a plan of action for Node.js. - -The final [ROADMAP](./ROADMAP.md) document is still owned by the TC and requires -the same approval for changes as any other project asset. - -Their responsibilities are: -* Attract and summarize user community needs and feedback. -* Find or potentially create tools that allow for broader participation. -* Create Pull Requests for relevant changes to [Roadmap.md](./ROADMAP.md) - - ### [Docker](https://github.com/nodejs/docker-iojs) -The Docker working group's purpose is to build, maintain, and improve official -Docker images for the `Node.js` project. +The Docker Working Group's purpose is to build, maintain, and improve official +Docker images for the Node.js project. -Their responsibilities are: -* Keep the official Docker images updated in line with new `Node.js` releases. +Responsibilities include: +* Keeping the official Docker images updated in line with new Node.js releases. * Decide and implement image improvements and/or fixes. * Maintain and improve the images' documentation. - ### [Addon API](https://github.com/nodejs/nan) The Addon API Working Group is responsible for maintaining the NAN project and corresponding _nan_ package in npm. The NAN project makes available an -abstraction layer for native add-on authors for both Node.js and Node.js, +abstraction layer for native add-on authors for Node.js, assisting in the writing of code that is compatible with many actively used -versions of Node.js, Node.js, V8 and libuv. - -Their responsibilities are: +versions of Node.js, V8 and libuv. +Responsibilities include: * Maintaining the [NAN](https://github.com/nodejs/nan) GitHub repository, including code, issues and documentation. * Maintaining the [addon-examples](https://github.com/nodejs/node-addon-examples) @@ -247,48 +231,46 @@ The current members can be found in their ### [Benchmarking](https://github.com/nodejs/benchmarking) -The purpose of the Benchmark working group is to gain consensus -for an agreed set of benchmarks that can be used to: +The purpose of the Benchmark Working Group is to gain consensus +on an agreed set of benchmarks that can be used to: -+ track and evangelize performance gains made between Node releases -+ avoid performance regressions between releases +* track and evangelize performance gains made between Node.js releases +* avoid performance regressions between releases -Its responsibilities are: - -+ Identify 1 or more benchmarks that reflect customer usage. - Likely need more than one to cover typical Node use cases - including low-latency and high concurrency -+ Work to get community consensus on the list chosen -+ Add regular execution of chosen benchmarks to Node builds -+ Track/publicize performance between builds/releases +Responsibilities include: +* Identifying 1 or more benchmarks that reflect customer usage. + Likely will need more than one to cover typical Node.js use cases + including low-latency and high concurrency +* Working to get community consensus on the list chosen +* Adding regular execution of chosen benchmarks to Node.js builds +* Tracking/publicizing performance between builds/releases ### [Post-mortem](https://github.com/nodejs/post-mortem) -The Post-mortem Diagnostics working group is dedicated to the support +The Post-mortem Diagnostics Working Group is dedicated to the support and improvement of postmortem debugging for Node.js. It seeks to elevate the role of postmortem debugging for Node, to assist in the development of techniques and tools, and to make techniques and tools known and available to Node.js users. -Its responsibilities are: - -+ Defining and adding interfaces/APIs in order to allow dumps - to be generated when needed -+ Defining and adding common structures to the dumps generated - in order to support tools that want to introspect those dumps +Responsibilities include: +* Defining and adding interfaces/APIs in order to allow dumps + to be generated when needed. +* Defining and adding common structures to the dumps generated + in order to support tools that want to introspect those dumps. ### [Documentation](https://github.com/nodejs/docs) -The Documentation working group exists to support the improvement of Node.js +The Documentation Working Group exists to support the improvement of Node.js documentation, both in the core API documentation, and elsewhere, such as the -Node.js website. Its intent is to work closely with Evangelism, Website, and -Intl working groups to make excellent documentation available and accessible +Node.js website. Its intent is to work closely with the Evangelism, Website, and +Intl Working Groups to make excellent documentation available and accessible to all. -Its responsibilities are: - +Responsibilities include: * Defining and maintaining documentation style and content standards. -* Producing documentation in a format acceptable for the Website WG to consume. +* Producing documentation in a format acceptable for the Website Working Group + to consume. * Ensuring that Node's documentation addresses a wide variety of audiences. * Creating and operating a process for documentation review that produces quality documentation and avoids impeding the progress of Core work. @@ -298,8 +280,7 @@ Its responsibilities are: The Node.js Testing Working Group's purpose is to extend and improve testing of the Node.js source code. -Its responsibilities are: - +Responsibilities include: * Coordinating an overall strategy for improving testing. * Documenting guidelines around tests. * Working with the Build Working Group to improve continuous integration. diff --git a/benchmark/arrays/var-int.js b/benchmark/arrays/var-int.js index 74a73c9515fffa..36b0a908a59a4f 100644 --- a/benchmark/arrays/var-int.js +++ b/benchmark/arrays/var-int.js @@ -1,9 +1,21 @@ '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] }); diff --git a/benchmark/arrays/zero-float.js b/benchmark/arrays/zero-float.js index e2569eed5c4e75..047e179234f33a 100644 --- a/benchmark/arrays/zero-float.js +++ b/benchmark/arrays/zero-float.js @@ -1,9 +1,21 @@ '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] }); diff --git a/benchmark/arrays/zero-int.js b/benchmark/arrays/zero-int.js index 8be70c1e87113a..4e5c97e8af0b9c 100644 --- a/benchmark/arrays/zero-int.js +++ b/benchmark/arrays/zero-int.js @@ -1,9 +1,21 @@ '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] }); diff --git a/benchmark/buffers/buffer-base64-decode.js b/benchmark/buffers/buffer-base64-decode.js index 3497bfd05fd2a2..01f7f1bc91bc4a 100644 --- a/benchmark/buffers/buffer-base64-decode.js +++ b/benchmark/buffers/buffer-base64-decode.js @@ -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(); diff --git a/benchmark/buffers/buffer-indexof.js b/benchmark/buffers/buffer-indexof.js index 380f40b23d8ab6..cae8b964aebbcf 100644 --- a/benchmark/buffers/buffer-indexof.js +++ b/benchmark/buffers/buffer-indexof.js @@ -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', + ' 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', - ' to the Caterpillar'], + search: searchStrings, encoding: ['undefined', 'utf8', 'ucs2', 'binary'], type: ['buffer', 'string'], iter: [1] diff --git a/benchmark/buffers/buffer-read.js b/benchmark/buffers/buffer-read.js index 1cdc4bc4697067..d23bd029f8bd44 100644 --- a/benchmark/buffers/buffer-read.js +++ b/benchmark/buffers/buffer-read.js @@ -1,15 +1,27 @@ '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] }); diff --git a/benchmark/buffers/buffer-write.js b/benchmark/buffers/buffer-write.js index ae78eaf91d0147..32c733045335cd 100644 --- a/benchmark/buffers/buffer-write.js +++ b/benchmark/buffers/buffer-write.js @@ -1,14 +1,27 @@ '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] }); diff --git a/benchmark/buffers/dataview-set.js b/benchmark/buffers/dataview-set.js index a208effd82bf19..717a77de71d641 100644 --- a/benchmark/buffers/dataview-set.js +++ b/benchmark/buffers/dataview-set.js @@ -1,12 +1,25 @@ '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'], + type: types, millions: [1] }); diff --git a/benchmark/es/map-bench.js b/benchmark/es/map-bench.js index 574da25d53f2f2..047fc05abdc92f 100644 --- a/benchmark/es/map-bench.js +++ b/benchmark/es/map-bench.js @@ -15,7 +15,7 @@ function runObject(n) { for (; i < n; i++) { m['i' + i] = i; m['s' + i] = String(i); - assert.equal(m['i' + i], m['s' + i]); + assert.strictEqual(String(m['i' + i]), m['s' + i]); m['i' + i] = undefined; m['s' + i] = undefined; } @@ -29,7 +29,7 @@ function runNullProtoObject(n) { for (; i < n; i++) { m['i' + i] = i; m['s' + i] = String(i); - assert.equal(m['i' + i], m['s' + i]); + assert.strictEqual(String(m['i' + i]), m['s' + i]); m['i' + i] = undefined; m['s' + i] = undefined; } @@ -53,7 +53,7 @@ function runFakeMap(n) { for (; i < n; i++) { m.set('i' + i, i); m.set('s' + i, String(i)); - assert.equal(m.get('i' + i), m.get('s' + i)); + assert.strictEqual(String(m.get('i' + i)), m.get('s' + i)); m.set('i' + i, undefined); m.set('s' + i, undefined); } @@ -67,7 +67,7 @@ function runMap(n) { for (; i < n; i++) { m.set('i' + i, i); m.set('s' + i, String(i)); - assert.equal(m.get('i' + i), m.get('s' + i)); + assert.strictEqual(String(m.get('i' + i)), m.get('s' + i)); m.set('i' + i, undefined); m.set('s' + i, undefined); } diff --git a/benchmark/http/http_server_for_chunky_client.js b/benchmark/http/http_server_for_chunky_client.js index a0911b84ab811d..10a5b014f4211f 100644 --- a/benchmark/http/http_server_for_chunky_client.js +++ b/benchmark/http/http_server_for_chunky_client.js @@ -21,8 +21,11 @@ try { } catch (e) { /* ignore */ } server = http.createServer(function(req, res) { - res.writeHead(200, { 'content-type': 'text/plain', - 'content-length': '2' }); + var headers = { + 'content-type': 'text/plain', + 'content-length': '2' + }; + res.writeHead(200, headers); res.end('ok'); }); diff --git a/benchmark/http_simple.js b/benchmark/http_simple.js index 1c965b21c15ca0..644601864dd857 100644 --- a/benchmark/http_simple.js +++ b/benchmark/http_simple.js @@ -75,8 +75,11 @@ var server = module.exports = http.createServer(function(req, res) { body = fixed; } else if (command === 'echo') { - res.writeHead(200, { 'Content-Type': 'text/plain', - 'Transfer-Encoding': 'chunked' }); + const headers = { + 'Content-Type': 'text/plain', + 'Transfer-Encoding': 'chunked' + }; + res.writeHead(200, headers); req.pipe(res); return; @@ -88,8 +91,11 @@ var server = module.exports = http.createServer(function(req, res) { // 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' }); + const headers = { + 'Content-Type': 'text/plain', + 'Transfer-Encoding': 'chunked' + }; + res.writeHead(status, headers); // send body in chunks var len = body.length; var step = Math.floor(len / n_chunks) || 1; @@ -99,10 +105,12 @@ var server = module.exports = http.createServer(function(req, res) { } res.end(body.slice((n_chunks - 1) * step)); } else { - var content_length = body.length.toString(); + const headers = { + 'Content-Type': 'text/plain', + 'Content-Length': body.length.toString() + }; - res.writeHead(status, { 'Content-Type': 'text/plain', - 'Content-Length': content_length }); + res.writeHead(status, headers); res.end(body); } }); diff --git a/benchmark/misc/console.js b/benchmark/misc/console.js index 17f7ed0f4d96b0..9a08a411c51f82 100644 --- a/benchmark/misc/console.js +++ b/benchmark/misc/console.js @@ -8,11 +8,15 @@ const v8 = require('v8'); v8.setFlagsFromString('--allow_natives_syntax'); +const methods = [ + 'restAndSpread', + 'argumentsAndApply', + 'restAndApply', + 'restAndConcat' +]; + var bench = common.createBenchmark(main, { - method: ['restAndSpread', - 'argumentsAndApply', - 'restAndApply', - 'restAndConcat'], + method: methods, concat: [1, 0], n: [1000000] }); diff --git a/benchmark/querystring/querystring-parse.js b/benchmark/querystring/querystring-parse.js index 590b89f307c697..d78ef99f84f3d4 100644 --- a/benchmark/querystring/querystring-parse.js +++ b/benchmark/querystring/querystring-parse.js @@ -3,14 +3,18 @@ var common = require('../common.js'); var querystring = require('querystring'); var v8 = require('v8'); +var types = [ + 'noencode', + 'multicharsep', + 'encodemany', + 'encodelast', + 'multivalue', + 'multivaluemany', + 'manypairs' +]; + var bench = common.createBenchmark(main, { - type: ['noencode', - 'multicharsep', - 'encodemany', - 'encodelast', - 'multivalue', - 'multivaluemany', - 'manypairs'], + type: types, n: [1e6], }); diff --git a/benchmark/timers/timers-breadth.js b/benchmark/timers/timers-breadth.js new file mode 100644 index 00000000000000..1101ee7dbf8907 --- /dev/null +++ b/benchmark/timers/timers-breadth.js @@ -0,0 +1,20 @@ +'use strict'; +var common = require('../common.js'); + +var bench = common.createBenchmark(main, { + thousands: [500], +}); + +function main(conf) { + var N = +conf.thousands * 1e3; + var n = 0; + bench.start(); + function cb() { + n++; + if (n === N) + bench.end(N / 1e3); + } + for (var i = 0; i < N; i++) { + setTimeout(cb, 1); + } +} diff --git a/benchmark/timers/timers-depth.js b/benchmark/timers/timers-depth.js new file mode 100644 index 00000000000000..d5efc5c672d502 --- /dev/null +++ b/benchmark/timers/timers-depth.js @@ -0,0 +1,20 @@ +'use strict'; +var common = require('../common.js'); + +var bench = common.createBenchmark(main, { + thousands: [1], +}); + +function main(conf) { + var N = +conf.thousands * 1e3; + var n = 0; + bench.start(); + setTimeout(cb, 1); + function cb() { + n++; + if (n === N) + bench.end(N / 1e3); + else + setTimeout(cb, 1); + } +} diff --git a/benchmark/timers/timers.js b/benchmark/timers/timers.js deleted file mode 100644 index 13b18fffc5ead7..00000000000000 --- a/benchmark/timers/timers.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; -var common = require('../common.js'); - -var bench = common.createBenchmark(main, { - thousands: [500], - type: ['depth', 'breadth'] -}); - -function main(conf) { - var n = +conf.thousands * 1e3; - if (conf.type === 'breadth') - breadth(n); - else - depth(n); -} - -function depth(N) { - var n = 0; - bench.start(); - setTimeout(cb); - function cb() { - n++; - if (n === N) - bench.end(N / 1e3); - else - setTimeout(cb); - } -} - -function breadth(N) { - var n = 0; - bench.start(); - function cb() { - n++; - if (n === N) - bench.end(N / 1e3); - } - for (var i = 0; i < N; i++) { - setTimeout(cb); - } -} diff --git a/benchmark/tls/throughput.js b/benchmark/tls/throughput.js index d0de99e7b54b85..d3b7d0c02237a2 100644 --- a/benchmark/tls/throughput.js +++ b/benchmark/tls/throughput.js @@ -37,10 +37,12 @@ function main(conf) { throw new Error('invalid type'); } - 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') ], - ciphers: 'AES256-GCM-SHA384' }; + 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') ], + ciphers: 'AES256-GCM-SHA384' + }; server = tls.createServer(options, onConnection); setTimeout(done, dur * 1000); diff --git a/benchmark/tls/tls-connect.js b/benchmark/tls/tls-connect.js index a265989e04db24..a271c724f56ed2 100644 --- a/benchmark/tls/tls-connect.js +++ b/benchmark/tls/tls-connect.js @@ -20,11 +20,13 @@ function main(conf) { dur = +conf.dur; concurrency = +conf.concurrency; - 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') ], - ciphers: 'AES256-GCM-SHA384' }; + var cert_dir = path.resolve(__dirname, '../../test/fixtures'); + var 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') ], + ciphers: 'AES256-GCM-SHA384' + }; server = tls.createServer(options, onConnection); server.listen(common.PORT, onListening); @@ -42,8 +44,11 @@ function onConnection(conn) { } function makeConnection() { - var conn = tls.connect({ port: common.PORT, - rejectUnauthorized: false }, function() { + var options = { + port: common.PORT, + rejectUnauthorized: false + }; + var conn = tls.connect(options, function() { clientConn++; conn.on('error', function(er) { console.error('client error', er); diff --git a/benchmark/util/format.js b/benchmark/util/format.js index 05176aa24fb01f..8040554ba0861a 100644 --- a/benchmark/util/format.js +++ b/benchmark/util/format.js @@ -3,13 +3,16 @@ const util = require('util'); const common = require('../common'); const v8 = require('v8'); +const types = [ + 'string', + 'number', + 'object', + 'unknown', + 'no-replace' +]; const bench = common.createBenchmark(main, { n: [1e6], - type: ['string', - 'number', - 'object', - 'unknown', - 'no-replace'] + type: types }); const inputs = { diff --git a/configure b/configure index 42dac5ff64ce94..6a50e5e8e1b6e2 100755 --- a/configure +++ b/configure @@ -1,5 +1,10 @@ #!/usr/bin/env python +import sys +if sys.version_info[0] != 2 or sys.version_info[1] not in (6, 7): + sys.stdout.write("Please use either Python 2.6 or 2.7\n") + sys.exit(1) + import errno import optparse import os @@ -7,7 +12,6 @@ import pprint import re import shlex import subprocess -import sys import shutil import string @@ -59,6 +63,11 @@ parser.add_option('--prefix', default='/usr/local', help='select the install prefix [default: %default]') +parser.add_option('--coverage', + action='store_true', + dest='coverage', + help='Build node with code coverage enabled') + parser.add_option('--debug', action='store_true', dest='debug', @@ -483,7 +492,7 @@ def pkg_config(pkg): shlex.split(pkg_config) + ['--silence-errors', flag, pkg], stdout=subprocess.PIPE) val = proc.communicate()[0].strip() - except OSError, e: + except OSError as e: if e.errno != errno.ENOENT: raise e # Unexpected error. return (None, None, None) # No pkg-config/pkgconf installed. retval += (val,) @@ -519,12 +528,12 @@ def get_version_helper(cc, regexp): proc = subprocess.Popen(shlex.split(cc) + ['-v'], stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) except OSError: - print '''Node.js configure error: No acceptable C compiler found! + 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() match = re.search(regexp, proc.communicate()[1]) @@ -550,12 +559,12 @@ def get_gas_version(cc): stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) except OSError: - print '''Node.js configure error: No acceptable C compiler found! + 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() match = re.match(r"GNU assembler version ([2-9]\.[0-9]+)", @@ -610,12 +619,12 @@ def cc_macros(cc=None): stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: - print '''Node.js configure error: No acceptable C compiler found! + 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') @@ -672,7 +681,7 @@ def host_arch_cc(): '__MIPSEL__' : 'mipsel', '__mips__' : 'mips', '__PPC64__' : 'ppc64', - '__PPC__' : 'ppc', + '__PPC__' : 'ppc64', '__x86_64__' : 'x64', '__s390__' : 's390', '__s390x__' : 's390x', @@ -841,7 +850,14 @@ def configure_node(o): o['variables']['node_no_browser_globals'] = b(options.no_browser_globals) o['variables']['node_shared'] = b(options.shared) node_module_version = getmoduleversion.get_version() - shlib_suffix = '%s.dylib' if sys.platform == 'darwin' else 'so.%s' + + if sys.platform == 'darwin': + shlib_suffix = '%s.dylib' + elif sys.platform.startswith('aix'): + shlib_suffix = '%s.a' + else: + shlib_suffix = 'so.%s' + shlib_suffix %= node_module_version o['variables']['node_module_version'] = int(node_module_version) o['variables']['shlib_suffix'] = shlib_suffix @@ -856,6 +872,11 @@ def configure_node(o): if options.use_xcode and options.use_ninja: raise Exception('--xcode and --ninja cannot be used together.') + if options.coverage: + o['variables']['coverage'] = 'true' + else: + o['variables']['coverage'] = 'false' + def configure_library(lib, output): shared_lib = 'shared_' + lib output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib)) @@ -863,26 +884,26 @@ def configure_library(lib, output): if getattr(options, shared_lib): (pkg_libs, pkg_cflags, pkg_libpath) = pkg_config(lib) - if pkg_cflags: + if options.__dict__[shared_lib + '_includes']: + output['include_dirs'] += [options.__dict__[shared_lib + '_includes']] + elif pkg_cflags: output['include_dirs'] += ( filter(None, map(str.strip, pkg_cflags.split('-I')))) - elif options.__dict__[shared_lib + '_includes']: - output['include_dirs'] += [options.__dict__[shared_lib + '_includes']] # libpath needs to be provided ahead libraries - if pkg_libpath: - output['libraries'] += [pkg_libpath] - elif options.__dict__[shared_lib + '_libpath']: + if options.__dict__[shared_lib + '_libpath']: output['libraries'] += [ '-L%s' % options.__dict__[shared_lib + '_libpath']] + elif pkg_libpath: + output['libraries'] += [pkg_libpath] default_libs = getattr(options, shared_lib + '_libname') default_libs = map('-l{0}'.format, default_libs.split(',')) - if pkg_libs: - output['libraries'] += pkg_libs.split() - elif default_libs: + if default_libs: output['libraries'] += default_libs + elif pkg_libs: + output['libraries'] += pkg_libs.split() def configure_v8(o): @@ -938,7 +959,7 @@ def configure_static(o): def write(filename, data): filename = os.path.join(root_dir, filename) - print 'creating ', filename + print('creating %s' % filename) f = open(filename, 'w+') f.write(data) @@ -958,7 +979,7 @@ def glob_to_var(dir_base, dir_sub, patch_dir): patchfile = '%s/%s/%s' % (dir_base, patch_dir, file) if os.path.isfile(patchfile): srcfile = '%s/%s' % (patch_dir, file) - print 'Using version-specific floating patch %s' % patchfile + print('Using version-specific floating patch %s' % patchfile) list.append(srcfile) break return list @@ -973,8 +994,8 @@ def configure_intl(o): def icu_download(path): # download ICU, if needed if not os.access(options.download_path, os.W_OK): - print 'Error: cannot write to desired download path. ' \ - 'Either create it or verify permissions.' + print('Error: cannot write to desired download path. ' \ + 'Either create it or verify permissions.') sys.exit(1) for icu in icus: url = icu['url'] @@ -985,16 +1006,16 @@ def configure_intl(o): if nodedownload.candownload(auto_downloads, "icu"): nodedownload.retrievefile(url, targetfile) else: - print ' Re-using existing %s' % targetfile + print(' Re-using existing %s' % targetfile) if os.path.isfile(targetfile): sys.stdout.write(' Checking file integrity with MD5:\r') gotmd5 = nodedownload.md5sum(targetfile) - print ' MD5: %s %s' % (gotmd5, targetfile) + print(' MD5: %s %s' % (gotmd5, targetfile)) if (md5 == gotmd5): return targetfile else: - print ' Expected: %s *MISMATCH*' % md5 - print '\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile + print(' Expected: %s *MISMATCH*' % md5) + print('\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile) return None icu_config = { 'variables': {} @@ -1014,7 +1035,7 @@ def configure_intl(o): with_icu_source = options.with_icu_source have_icu_path = bool(options.with_icu_path) if have_icu_path and with_intl != 'none': - print 'Error: Cannot specify both --with-icu-path and --with-intl' + print('Error: Cannot specify both --with-icu-path and --with-intl') sys.exit(1) elif have_icu_path: # Chromium .gyp mode: --with-icu-path @@ -1043,8 +1064,8 @@ def configure_intl(o): o['variables']['v8_enable_i18n_support'] = 1 pkgicu = pkg_config('icu-i18n') if pkgicu[0] is None: - print 'Error: could not load pkg-config data for "icu-i18n".' - print 'See above errors or the README.md.' + print('Error: could not load pkg-config data for "icu-i18n".') + print('See above errors or the README.md.') sys.exit(1) (libs, cflags, libpath) = pkgicu # libpath provides linker path which may contain spaces @@ -1097,17 +1118,17 @@ def configure_intl(o): # --with-icu-source processing # now, check that they didn't pass --with-icu-source=deps/icu elif with_icu_source and os.path.abspath(icu_full_path) == os.path.abspath(with_icu_source): - print 'Ignoring redundant --with-icu-source=%s' % (with_icu_source) + print('Ignoring redundant --with-icu-source=%s' % with_icu_source) with_icu_source = None # if with_icu_source is still set, try to use it. if with_icu_source: if os.path.isdir(icu_full_path): - print 'Deleting old ICU source: %s' % (icu_full_path) + print('Deleting old ICU source: %s' % icu_full_path) shutil.rmtree(icu_full_path) # now, what path was given? if os.path.isdir(with_icu_source): # it's a path. Copy it. - print '%s -> %s' % (with_icu_source, icu_full_path) + print('%s -> %s' % (with_icu_source, icu_full_path)) shutil.copytree(with_icu_source, icu_full_path) else: # could be file or URL. @@ -1131,7 +1152,8 @@ def configure_intl(o): os.rename(tmp_icu, icu_full_path) shutil.rmtree(icu_tmp_path) else: - print ' Error: --with-icu-source=%s did not result in an "icu" dir.' % with_icu_source + print(' Error: --with-icu-source=%s did not result in an "icu" dir.' % \ + with_icu_source) shutil.rmtree(icu_tmp_path) sys.exit(1) @@ -1140,22 +1162,22 @@ def configure_intl(o): # ICU source dir relative to tools/icu (for .gyp file) o['variables']['icu_path'] = icu_full_path if not os.path.isdir(icu_full_path): - print '* ECMA-402 (Intl) support didn\'t find ICU in %s..' % (icu_full_path) + print('* ECMA-402 (Intl) support didn\'t find ICU in %s..' % icu_full_path) # can we download (or find) a zipfile? localzip = icu_download(icu_full_path) if localzip: nodedownload.unpack(localzip, icu_parent_path) if not os.path.isdir(icu_full_path): - print ' Cannot build Intl without ICU in %s.' % (icu_full_path) - print ' (Fix, or disable with "--with-intl=none" )' + print(' Cannot build Intl without ICU in %s.' % icu_full_path) + print(' (Fix, or disable with "--with-intl=none" )') sys.exit(1) else: - print '* Using ICU in %s' % (icu_full_path) + print('* Using ICU in %s' % icu_full_path) # Now, what version of ICU is it? We just need the "major", such as 54. # uvernum.h contains it as a #define. uvernum_h = os.path.join(icu_full_path, 'source/common/unicode/uvernum.h') if not os.path.isfile(uvernum_h): - print ' Error: could not load %s - is ICU installed?' % uvernum_h + print(' Error: could not load %s - is ICU installed?' % uvernum_h) sys.exit(1) icu_ver_major = None matchVerExp = r'^\s*#define\s+U_ICU_VERSION_SHORT\s+"([^"]*)".*' @@ -1165,7 +1187,7 @@ def configure_intl(o): if m: icu_ver_major = m.group(1) if not icu_ver_major: - print ' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h + print(' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h) sys.exit(1) icu_endianness = sys.byteorder[0]; o['variables']['icu_ver_major'] = icu_ver_major @@ -1192,8 +1214,8 @@ def configure_intl(o): # this is the icudt*.dat file which node will be using (platform endianness) o['variables']['icu_data_file'] = icu_data_file if not os.path.isfile(icu_data_path): - print ' Error: ICU prebuilt data file %s does not exist.' % icu_data_path - print ' See the README.md.' + print(' Error: ICU prebuilt data file %s does not exist.' % icu_data_path) + print(' See the README.md.') # .. and we're not about to build it from .gyp! sys.exit(1) # map from variable name to subdirs diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore index 93398c04aa252f..8aa0c3e0aff3a5 100644 --- a/deps/npm/.npmignore +++ b/deps/npm/.npmignore @@ -30,3 +30,5 @@ html/*.png /test/tap/builtin-config .nyc_output + +npm-shrinkwrap.json \ No newline at end of file diff --git a/deps/npm/.travis.yml b/deps/npm/.travis.yml index 988ee7e30a770f..12b8a8add810df 100644 --- a/deps/npm/.travis.yml +++ b/deps/npm/.travis.yml @@ -7,25 +7,42 @@ language: node_js matrix: include: # LTS is our most important target - - node_js: "4" + - node_js: "6" # DEPLOY_VERSION is used to set the couchapp setup mode for test/tap/registry.js # only gather coverage info for LTS env: DEPLOY_VERSION=testing COVERALLS_REPO_TOKEN="$COVERALLS_OPTIONAL_TOKEN" - # next LTS and master is next most important - - node_js: "6" - env: DEPLOY_VERSION=testing - # still in LTS maintenance until fall 2016 (also still in wide use) - - node_js: "0.10" - env: DEPLOY_VERSION=testing - # will be unsupported as soon as 6 becomes LTS and 7 released - - node_js: "5" + script: + - "node . run tap-cover -- \"test/tap/*.js\"" + - "unset COVERALLS_REPO_TOKEN ; node . run tap -- \"test/slow/*.js\" \"test/broken-under-*/*.js\"" + # previous LTS is next most important + - node_js: "4" env: DEPLOY_VERSION=testing - # technically in LTS / distros, unbeloved - - node_js: "0.12" + # then master + - node_js: "7" env: DEPLOY_VERSION=testing before_install: - - "node . install -g ." # required by test/tap/registry.js - "mkdir -p /var/run/couchdb" notifications: slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8 +cache: + directories: + - $HOME/.npm + - node_modules/.bin + - node_modules/deep-equal + - node_modules/marked + - node_modules/marked-man + - node_modules/npm-registry-couchapp + - node_modules/npm-registry-mock + - node_modules/require-inject + - node_modules/sprintf-js + - node_modules/standard + - node_modules/tacks + - node_modules/tap +install: + - "node . prune" + - "node . rebuild --depth=0" + - "node . install --ignore-scripts" + - "make -j4 doc" +script: + - "node . run tap -- \"test/tap/*.js\" \"test/slow/*.js\" \"test/broken-under-nyc/*.js\"" diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index e4f0ab3cdc705f..bbef5af2e2ab90 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,34 @@ +### v3.10.10 (2016-11-04) + +See the discussion on [#14042](https://github.com/npm/npm/issues/14042) for +more context on this release, which is intended to address a serious regression +in shrinkwrap behavior in the version of the CLI currently bundled with Node.js +6 LTS "Boron". You should never install this version directly; instead update +to `npm@4`, which has everything in this release and more. + +#### REGRESSION FIX + +* [`9aebe98`](https://github.com/npm/npm/commit/9aebe982114ea2107f46baa1dcb11713b4aaad04) + [#14117](https://github.com/npm/npm/pull/14117) + Fixes a bug where installing a shrinkwrapped package would fail if the + platform failed to install an optional dependency included in the shrinkwrap. + ([@watilde](https://github.com/watilde)) + +#### UPDATE SUPPORT MATRIX + +With the advent of the second official Node.js LTS release, Node 6.x +'Boron', the Node.js project has now officially dropped versions 0.10 +and 0.12 out of the maintenance phase of LTS. (Also, Node 5 was never +part of LTS, and will see no further support now that Node 7 has been +released.) As a small team with limited resources, the npm CLI team is +following suit and dropping those versions of Node from its CI test +matrix. + +* [`c82ecfd`](https://github.com/npm/npm/commit/c82ecfdbe0b5f318a175714a8753efe4dfd3e4b3) + [#14503](https://github.com/npm/npm/pull/14503) + Node 6 is LTS; 5.x, 0.10, and 0.12 are unsupported. + ([@othiym23](https://github.com/othiym23)) + ### v3.10.9 (2016-10-06) Hi everyone! This is the last of our monthly releases. We're going to give diff --git a/deps/npm/appveyor.yml b/deps/npm/appveyor.yml index 6bec7c49389b91..1dd58c7b78ad59 100644 --- a/deps/npm/appveyor.yml +++ b/deps/npm/appveyor.yml @@ -1,16 +1,11 @@ environment: matrix: # LTS is our most important target - - nodejs_version: "4" - # next LTS and master is next most important - nodejs_version: "6" - # still in LTS maintenance until fall 2016 - # (also still in wide use) - - nodejs_version: "0.10" - # will be unsupported as soon as 6 becomes LTS and 7 released + # previous LTS is next most important + - nodejs_version: "4" + # then master - nodejs_version: "5" - # technically in LTS / distros, unbeloved - - nodejs_version: "0.12" COVERALLS_REPO_TOKEN: secure: XdC0aySefK0HLh1GNk6aKrzZPbCfPQLyA4mYtFGEp4DrTuZA/iuCUS0LDqFYO8JQ platform: @@ -26,7 +21,7 @@ install: test_script: - node --version - npm --version - - npm test + - npm run test -- --reporter=classic notifications: - provider: Slack incoming_webhook: diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html index cb3d79f7848ba9..4aa3cc5e4798ca 100644 --- a/deps/npm/html/doc/README.html +++ b/deps/npm/html/doc/README.html @@ -126,5 +126,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html index bc2f2bab0666c7..fdc0cb756e4014 100644 --- a/deps/npm/html/doc/cli/npm-access.html +++ b/deps/npm/html/doc/cli/npm-access.html @@ -84,5 +84,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html index 09625e36dc34b2..9ade2746aa3435 100644 --- a/deps/npm/html/doc/cli/npm-adduser.html +++ b/deps/npm/html/doc/cli/npm-adduser.html @@ -72,5 +72,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html index 234be15e8bcd2b..8d408216a905d6 100644 --- a/deps/npm/html/doc/cli/npm-bin.html +++ b/deps/npm/html/doc/cli/npm-bin.html @@ -35,5 +35,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-bugs.html b/deps/npm/html/doc/cli/npm-bugs.html index e32a74a474f793..d5b9edea5655d2 100644 --- a/deps/npm/html/doc/cli/npm-bugs.html +++ b/deps/npm/html/doc/cli/npm-bugs.html @@ -55,5 +55,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html index 4538085259ec11..73c796c233d885 100644 --- a/deps/npm/html/doc/cli/npm-build.html +++ b/deps/npm/html/doc/cli/npm-build.html @@ -40,5 +40,5 @@

DESCRIPTION

       - + diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html index 466f587d3a7bc4..1f256d222da801 100644 --- a/deps/npm/html/doc/cli/npm-bundle.html +++ b/deps/npm/html/doc/cli/npm-bundle.html @@ -31,5 +31,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-cache.html b/deps/npm/html/doc/cli/npm-cache.html index b9e4911910e95d..883f07ffb52018 100644 --- a/deps/npm/html/doc/cli/npm-cache.html +++ b/deps/npm/html/doc/cli/npm-cache.html @@ -81,5 +81,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-completion.html b/deps/npm/html/doc/cli/npm-completion.html index 9486761c4250fe..1be550a7dd7f3e 100644 --- a/deps/npm/html/doc/cli/npm-completion.html +++ b/deps/npm/html/doc/cli/npm-completion.html @@ -43,5 +43,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html index 1a8b8de3841cce..8940698b4a0e2c 100644 --- a/deps/npm/html/doc/cli/npm-config.html +++ b/deps/npm/html/doc/cli/npm-config.html @@ -67,5 +67,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html index 782b555da18223..40cbd9f23a410b 100644 --- a/deps/npm/html/doc/cli/npm-dedupe.html +++ b/deps/npm/html/doc/cli/npm-dedupe.html @@ -61,5 +61,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html index a3e2502a899bab..a8476c51b1d1df 100644 --- a/deps/npm/html/doc/cli/npm-deprecate.html +++ b/deps/npm/html/doc/cli/npm-deprecate.html @@ -38,5 +38,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-dist-tag.html b/deps/npm/html/doc/cli/npm-dist-tag.html index 0a083b5ef17a73..3b66f87f789bd4 100644 --- a/deps/npm/html/doc/cli/npm-dist-tag.html +++ b/deps/npm/html/doc/cli/npm-dist-tag.html @@ -87,5 +87,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html index 0aa7cc48bf73c4..265c35be15eecc 100644 --- a/deps/npm/html/doc/cli/npm-docs.html +++ b/deps/npm/html/doc/cli/npm-docs.html @@ -56,5 +56,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-edit.html b/deps/npm/html/doc/cli/npm-edit.html index 6c4c65e3508bec..60e0a3b5168119 100644 --- a/deps/npm/html/doc/cli/npm-edit.html +++ b/deps/npm/html/doc/cli/npm-edit.html @@ -49,5 +49,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-explore.html b/deps/npm/html/doc/cli/npm-explore.html index 1a88b7862862e4..29d5829b5dbfc3 100644 --- a/deps/npm/html/doc/cli/npm-explore.html +++ b/deps/npm/html/doc/cli/npm-explore.html @@ -49,5 +49,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-help-search.html b/deps/npm/html/doc/cli/npm-help-search.html index fda38c968381d2..107687584db571 100644 --- a/deps/npm/html/doc/cli/npm-help-search.html +++ b/deps/npm/html/doc/cli/npm-help-search.html @@ -45,5 +45,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html index c09967a4bd1893..feb154a521c0e5 100644 --- a/deps/npm/html/doc/cli/npm-help.html +++ b/deps/npm/html/doc/cli/npm-help.html @@ -50,5 +50,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html index 6440631492c545..5474d8392aee18 100644 --- a/deps/npm/html/doc/cli/npm-init.html +++ b/deps/npm/html/doc/cli/npm-init.html @@ -48,5 +48,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-install-test.html b/deps/npm/html/doc/cli/npm-install-test.html index 3ab56462b574d0..428e0c77391070 100644 --- a/deps/npm/html/doc/cli/npm-install-test.html +++ b/deps/npm/html/doc/cli/npm-install-test.html @@ -42,5 +42,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html index 5760520c468729..8c4575f94998c8 100644 --- a/deps/npm/html/doc/cli/npm-install.html +++ b/deps/npm/html/doc/cli/npm-install.html @@ -313,5 +313,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html index c257e9af2ba32d..d7aed7df348e04 100644 --- a/deps/npm/html/doc/cli/npm-link.html +++ b/deps/npm/html/doc/cli/npm-link.html @@ -74,5 +74,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html index 03b2c3fb15ab40..a6d86e64b50fa0 100644 --- a/deps/npm/html/doc/cli/npm-logout.html +++ b/deps/npm/html/doc/cli/npm-logout.html @@ -51,5 +51,5 @@

scope

       - + diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html index 5ce106d2603f7e..e3e3e6034300a0 100644 --- a/deps/npm/html/doc/cli/npm-ls.html +++ b/deps/npm/html/doc/cli/npm-ls.html @@ -21,7 +21,7 @@

SYNOPSIS

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@3.10.9 /path/to/npm
+
npm@3.10.10 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 

It will print out extraneous, missing, and invalid packages.

@@ -104,5 +104,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html index d2813ade8806b7..5c06e18fb3225e 100644 --- a/deps/npm/html/doc/cli/npm-outdated.html +++ b/deps/npm/html/doc/cli/npm-outdated.html @@ -116,5 +116,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html index 2b0cefc3342ea0..9ec584f4ecd660 100644 --- a/deps/npm/html/doc/cli/npm-owner.html +++ b/deps/npm/html/doc/cli/npm-owner.html @@ -51,5 +51,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html index 29a87a8ac8aa2f..74682f52819902 100644 --- a/deps/npm/html/doc/cli/npm-pack.html +++ b/deps/npm/html/doc/cli/npm-pack.html @@ -41,5 +41,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-ping.html b/deps/npm/html/doc/cli/npm-ping.html index 67897216a0f3ca..b48db8ab63a1e6 100644 --- a/deps/npm/html/doc/cli/npm-ping.html +++ b/deps/npm/html/doc/cli/npm-ping.html @@ -32,5 +32,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html index 06782f3fb1ca72..171c7ca26307e9 100644 --- a/deps/npm/html/doc/cli/npm-prefix.html +++ b/deps/npm/html/doc/cli/npm-prefix.html @@ -38,5 +38,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html index d16f7cdb28bffd..5000f2c75cff71 100644 --- a/deps/npm/html/doc/cli/npm-prune.html +++ b/deps/npm/html/doc/cli/npm-prune.html @@ -40,5 +40,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html index f015d4fada80b9..c3272d3cdb4a08 100644 --- a/deps/npm/html/doc/cli/npm-publish.html +++ b/deps/npm/html/doc/cli/npm-publish.html @@ -76,5 +76,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html index 9ca7c3e9fb85ed..c975efca6bb24a 100644 --- a/deps/npm/html/doc/cli/npm-rebuild.html +++ b/deps/npm/html/doc/cli/npm-rebuild.html @@ -35,5 +35,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html index bcdc9a591fad55..30b18957ca29a4 100644 --- a/deps/npm/html/doc/cli/npm-repo.html +++ b/deps/npm/html/doc/cli/npm-repo.html @@ -41,5 +41,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html index b40dd99239f8f4..ceb270c6d8669e 100644 --- a/deps/npm/html/doc/cli/npm-restart.html +++ b/deps/npm/html/doc/cli/npm-restart.html @@ -53,5 +53,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html index c4825f48c25cea..44c63f0c18fe71 100644 --- a/deps/npm/html/doc/cli/npm-root.html +++ b/deps/npm/html/doc/cli/npm-root.html @@ -35,5 +35,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html index b90969278284da..27fcfc9345b19b 100644 --- a/deps/npm/html/doc/cli/npm-run-script.html +++ b/deps/npm/html/doc/cli/npm-run-script.html @@ -63,5 +63,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html index b9885bd5200dce..ed10e4c42209f1 100644 --- a/deps/npm/html/doc/cli/npm-search.html +++ b/deps/npm/html/doc/cli/npm-search.html @@ -57,5 +57,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html index 8ea1c123bbd242..bfe3410125a3e5 100644 --- a/deps/npm/html/doc/cli/npm-shrinkwrap.html +++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html @@ -176,5 +176,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html index edc9ddd1dba562..01c593c4610078 100644 --- a/deps/npm/html/doc/cli/npm-star.html +++ b/deps/npm/html/doc/cli/npm-star.html @@ -36,5 +36,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html index 24ce2e083109af..4d470fd4ba3ebe 100644 --- a/deps/npm/html/doc/cli/npm-stars.html +++ b/deps/npm/html/doc/cli/npm-stars.html @@ -36,5 +36,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html index 93215640708daf..f1936080146de8 100644 --- a/deps/npm/html/doc/cli/npm-start.html +++ b/deps/npm/html/doc/cli/npm-start.html @@ -39,5 +39,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html index 45e47b5e9ec8eb..082b2560c7556b 100644 --- a/deps/npm/html/doc/cli/npm-stop.html +++ b/deps/npm/html/doc/cli/npm-stop.html @@ -34,5 +34,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html index 08e8fee98ff929..2270e1e3f168c6 100644 --- a/deps/npm/html/doc/cli/npm-tag.html +++ b/deps/npm/html/doc/cli/npm-tag.html @@ -63,5 +63,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-team.html b/deps/npm/html/doc/cli/npm-team.html index 7bcfe6756173cc..02dffaae031aec 100644 --- a/deps/npm/html/doc/cli/npm-team.html +++ b/deps/npm/html/doc/cli/npm-team.html @@ -67,5 +67,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html index e1311164bb25f7..c15a2fe2331acd 100644 --- a/deps/npm/html/doc/cli/npm-test.html +++ b/deps/npm/html/doc/cli/npm-test.html @@ -38,5 +38,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html index 640a3a9936fc04..1ed389ac2632d3 100644 --- a/deps/npm/html/doc/cli/npm-uninstall.html +++ b/deps/npm/html/doc/cli/npm-uninstall.html @@ -60,5 +60,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html index a092e3984dccc3..4e085352ade1fc 100644 --- a/deps/npm/html/doc/cli/npm-unpublish.html +++ b/deps/npm/html/doc/cli/npm-unpublish.html @@ -47,5 +47,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html index 24eb0d3e943456..809475745e2273 100644 --- a/deps/npm/html/doc/cli/npm-update.html +++ b/deps/npm/html/doc/cli/npm-update.html @@ -118,5 +118,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html index 882b60f0c5a489..bc58045dc7a1f9 100644 --- a/deps/npm/html/doc/cli/npm-version.html +++ b/deps/npm/html/doc/cli/npm-version.html @@ -100,5 +100,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html index 3b9154160687bb..9b7651fcce7a8b 100644 --- a/deps/npm/html/doc/cli/npm-view.html +++ b/deps/npm/html/doc/cli/npm-view.html @@ -86,5 +86,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html index 781ae548c8dc75..cc30465997c073 100644 --- a/deps/npm/html/doc/cli/npm-whoami.html +++ b/deps/npm/html/doc/cli/npm-whoami.html @@ -33,5 +33,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html index b32be9f21d10ce..08b24220f3b8fc 100644 --- a/deps/npm/html/doc/cli/npm.html +++ b/deps/npm/html/doc/cli/npm.html @@ -13,7 +13,7 @@

npm

javascript package manager

SYNOPSIS

npm <command> [args]
 

VERSION

-

3.10.9

+

3.10.10

DESCRIPTION

npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency @@ -126,7 +126,7 @@

AUTHOR

Isaac Z. Schlueter :: isaacs :: @izs :: -i@izs.me

+i@izs.me

SEE ALSO

  • npm-help(1)
  • @@ -150,5 +150,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html index a2845d57bc0c6c..0937d2a1318562 100644 --- a/deps/npm/html/doc/files/npm-folders.html +++ b/deps/npm/html/doc/files/npm-folders.html @@ -182,5 +182,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html index a2845d57bc0c6c..0937d2a1318562 100644 --- a/deps/npm/html/doc/files/npm-global.html +++ b/deps/npm/html/doc/files/npm-global.html @@ -182,5 +182,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html index 8ef63d23d99860..3894c9ead6aa19 100644 --- a/deps/npm/html/doc/files/npm-json.html +++ b/deps/npm/html/doc/files/npm-json.html @@ -586,5 +586,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html index 22c43e98d6e5cd..151b0c00790305 100644 --- a/deps/npm/html/doc/files/npmrc.html +++ b/deps/npm/html/doc/files/npmrc.html @@ -89,5 +89,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html index 8ef63d23d99860..3894c9ead6aa19 100644 --- a/deps/npm/html/doc/files/package.json.html +++ b/deps/npm/html/doc/files/package.json.html @@ -586,5 +586,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html index 54586601104d2e..394e371da4cc55 100644 --- a/deps/npm/html/doc/index.html +++ b/deps/npm/html/doc/index.html @@ -162,5 +162,5 @@

    semver(7)

           - + diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html index 89b1f95f3ee454..93ab1a0e18cbad 100644 --- a/deps/npm/html/doc/misc/npm-coding-style.html +++ b/deps/npm/html/doc/misc/npm-coding-style.html @@ -153,5 +153,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html index 3ba1d3ba6361ac..75720461f7ef47 100644 --- a/deps/npm/html/doc/misc/npm-config.html +++ b/deps/npm/html/doc/misc/npm-config.html @@ -864,5 +864,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html index 19c126cba83561..2c64e124ce236e 100644 --- a/deps/npm/html/doc/misc/npm-developers.html +++ b/deps/npm/html/doc/misc/npm-developers.html @@ -194,5 +194,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html index 438188021886ec..69a49b6e7442fd 100644 --- a/deps/npm/html/doc/misc/npm-disputes.html +++ b/deps/npm/html/doc/misc/npm-disputes.html @@ -13,7 +13,7 @@

    npm-disputes

    Handling Module

    SYNOPSIS

    1. Get the author email with npm owner ls <pkgname>
    2. -
    3. Email the author, CC support@npmjs.com
    4. +
    5. Email the author, CC support@npmjs.com
    6. 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.

    @@ -51,12 +51,12 @@

    DESCRIPTION

    owner (Bob).
  • Joe emails Bob, explaining the situation as respectfully as possible, and what he would like to do with the module name. He -adds the npm support staff support@npmjs.com to the CC list of +adds the npm support staff support@npmjs.com 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.
  • 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 support -support@npmjs.com and we'll sort it out. ("Reasonable" is +support@npmjs.com and we'll sort it out. ("Reasonable" is usually at least 4 weeks, but extra time is allowed around common holidays.)
  • @@ -112,5 +112,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html index 154c0c47657e20..702e543023a9b7 100644 --- a/deps/npm/html/doc/misc/npm-index.html +++ b/deps/npm/html/doc/misc/npm-index.html @@ -162,5 +162,5 @@

    semver(7)

           - + diff --git a/deps/npm/html/doc/misc/npm-orgs.html b/deps/npm/html/doc/misc/npm-orgs.html index b93a0c4bd18d56..7d5a7cba382043 100644 --- a/deps/npm/html/doc/misc/npm-orgs.html +++ b/deps/npm/html/doc/misc/npm-orgs.html @@ -86,5 +86,5 @@

    Team Admins create teams

           - + diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html index efb9df8099fba9..b36cfa5bbe4f5d 100644 --- a/deps/npm/html/doc/misc/npm-registry.html +++ b/deps/npm/html/doc/misc/npm-registry.html @@ -70,5 +70,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/npm-scope.html b/deps/npm/html/doc/misc/npm-scope.html index 6ba363aa10793e..aed4efe7d11658 100644 --- a/deps/npm/html/doc/misc/npm-scope.html +++ b/deps/npm/html/doc/misc/npm-scope.html @@ -94,5 +94,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html index 0d01cc59ffc658..172a6cd7489e7b 100644 --- a/deps/npm/html/doc/misc/npm-scripts.html +++ b/deps/npm/html/doc/misc/npm-scripts.html @@ -213,5 +213,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html index 2109aad11a97bd..6b2f30a72b9174 100644 --- a/deps/npm/html/doc/misc/removing-npm.html +++ b/deps/npm/html/doc/misc/removing-npm.html @@ -57,5 +57,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html index 8e677c0f9fcaba..7e053f6228e1d4 100644 --- a/deps/npm/html/doc/misc/semver.html +++ b/deps/npm/html/doc/misc/semver.html @@ -325,5 +325,5 @@

    Ranges

           - + diff --git a/deps/npm/lib/install/deps.js b/deps/npm/lib/install/deps.js index 4d315ab1880a9f..d7081296db0d89 100644 --- a/deps/npm/lib/install/deps.js +++ b/deps/npm/lib/install/deps.js @@ -326,14 +326,16 @@ function andForEachChild (load, next) { } } -function isDepOptional (tree, name) { +function isDepOptional (tree, name, pkg) { + if (pkg.package && pkg.package._optional) return true if (!tree.package.optionalDependencies) return false if (tree.package.optionalDependencies[name] != null) return true return false } var failedDependency = exports.failedDependency = function (tree, name_pkg) { - var name, pkg + var name + var pkg = {} if (typeof name_pkg === 'string') { name = name_pkg } else { @@ -342,7 +344,7 @@ var failedDependency = exports.failedDependency = function (tree, name_pkg) { } tree.children = tree.children.filter(noModuleNameMatches(name)) - if (isDepOptional(tree, name)) { + if (isDepOptional(tree, name, pkg)) { return false } diff --git a/deps/npm/lib/install/inflate-shrinkwrap.js b/deps/npm/lib/install/inflate-shrinkwrap.js index ab1bdd1f1912f0..b70e9576bf86c6 100644 --- a/deps/npm/lib/install/inflate-shrinkwrap.js +++ b/deps/npm/lib/install/inflate-shrinkwrap.js @@ -45,14 +45,16 @@ function inflateShrinkwrap (topPath, tree, swdeps, finishInflating) { return inflateShrinkwrap(topPath, child, dependencies || {}, next) } else { var from = sw.from || requested.raw - return fetchPackageMetadata(requested, topPath, iferr(next, andAddShrinkwrap(from, dependencies, next))) + var optional = sw.optional + return fetchPackageMetadata(requested, topPath, iferr(next, andAddShrinkwrap(from, optional, dependencies, next))) } } } - function andAddShrinkwrap (from, dependencies, next) { + function andAddShrinkwrap (from, optional, dependencies, next) { return function (pkg) { pkg._from = from + pkg._optional = optional addShrinkwrap(pkg, iferr(next, andAddBundled(pkg, dependencies, next))) } } diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1 index b8c8d69deffe33..21f8a365ecb6ea 100644 --- a/deps/npm/man/man1/npm-README.1 +++ b/deps/npm/man/man1/npm-README.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "October 2016" "" "" +.TH "NPM" "1" "November 2016" "" "" .SH "NAME" \fBnpm\fR \- a JavaScript package manager .P diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 01fa5151e42b9d..30e9d72506149a 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ACCESS" "1" "October 2016" "" "" +.TH "NPM\-ACCESS" "1" "November 2016" "" "" .SH "NAME" \fBnpm-access\fR \- Set access level on published packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index e6b501c0fedae3..3543fb9616a840 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ADDUSER" "1" "October 2016" "" "" +.TH "NPM\-ADDUSER" "1" "November 2016" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index a990d7181a730a..243b06163ecf8d 100644 --- a/deps/npm/man/man1/npm-bin.1 +++ b/deps/npm/man/man1/npm-bin.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "1" "October 2016" "" "" +.TH "NPM\-BIN" "1" "November 2016" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 854432551a2550..512e2aa511036e 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "1" "October 2016" "" "" +.TH "NPM\-BUGS" "1" "November 2016" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1 index 3dae1eb602859d..98960880cb1ff6 100644 --- a/deps/npm/man/man1/npm-build.1 +++ b/deps/npm/man/man1/npm-build.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUILD" "1" "October 2016" "" "" +.TH "NPM\-BUILD" "1" "November 2016" "" "" .SH "NAME" \fBnpm-build\fR \- Build a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1 index 685969cd5a018b..573507fbf00af5 100644 --- a/deps/npm/man/man1/npm-bundle.1 +++ b/deps/npm/man/man1/npm-bundle.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUNDLE" "1" "October 2016" "" "" +.TH "NPM\-BUNDLE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-bundle\fR \- REMOVED .SH DESCRIPTION diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 16a092c555d36e..7a0029dfe11749 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "1" "October 2016" "" "" +.TH "NPM\-CACHE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index d3170d27e8483d..9001f1f1306002 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM\-COMPLETION" "1" "October 2016" "" "" +.TH "NPM\-COMPLETION" "1" "November 2016" "" "" .SH "NAME" \fBnpm-completion\fR \- Tab Completion for npm .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 2466f5116267ff..e7ab261037e965 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "1" "October 2016" "" "" +.TH "NPM\-CONFIG" "1" "November 2016" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index fa57dfd2541411..fbe03de9d20650 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEDUPE" "1" "October 2016" "" "" +.TH "NPM\-DEDUPE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-dedupe\fR \- Reduce duplication .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index 9721a75e972a6a..2bf5767c84472a 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "1" "October 2016" "" "" +.TH "NPM\-DEPRECATE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index aaa58bea8ed5f3..bb0223be0e7736 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DIST\-TAG" "1" "October 2016" "" "" +.TH "NPM\-DIST\-TAG" "1" "November 2016" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index 61ad1c464441dd..6381ca877073e4 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "1" "October 2016" "" "" +.TH "NPM\-DOCS" "1" "November 2016" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index 6d4ba2d07aee8d..5d7304cccd9e46 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "1" "October 2016" "" "" +.TH "NPM\-EDIT" "1" "November 2016" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 82f8e64c92b8de..ec62c4dddba067 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EXPLORE" "1" "October 2016" "" "" +.TH "NPM\-EXPLORE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 29a9eeff4a5878..5a69b934fb8c71 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "1" "October 2016" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "November 2016" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search npm help documentation .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index b4e46be9233168..89d4ce95837564 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP" "1" "October 2016" "" "" +.TH "NPM\-HELP" "1" "November 2016" "" "" .SH "NAME" \fBnpm-help\fR \- Get help on npm .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 1f1337a0ef4a1c..231fcec120036e 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INIT" "1" "October 2016" "" "" +.TH "NPM\-INIT" "1" "November 2016" "" "" .SH "NAME" \fBnpm-init\fR \- Interactively create a package\.json file .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index c633093ddc529e..6f5b110d7ab26a 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM" "" "October 2016" "" "" +.TH "NPM" "" "November 2016" "" "" .SH "NAME" \fBnpm\fR .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 8c3414b6af6d4c..3b2058025f06af 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "1" "October 2016" "" "" +.TH "NPM\-INSTALL" "1" "November 2016" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index a584daf181c366..38029dd472e30a 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "1" "October 2016" "" "" +.TH "NPM\-LINK" "1" "November 2016" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 65cf15b6352098..4a4653fb16ee0d 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LOGOUT" "1" "October 2016" "" "" +.TH "NPM\-LOGOUT" "1" "November 2016" "" "" .SH "NAME" \fBnpm-logout\fR \- Log out of the registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index 607de78cd27b97..601a3610861e28 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "1" "October 2016" "" "" +.TH "NPM\-LS" "1" "November 2016" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SH SYNOPSIS @@ -22,7 +22,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf -npm@3.10.9 /path/to/npm +npm@3.10.10 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 .fi diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 63d3dd55131d7c..c12f40fdf5533e 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "1" "October 2016" "" "" +.TH "NPM\-OUTDATED" "1" "November 2016" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 7cc1ddf09f2bcf..71834133fb568c 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "1" "October 2016" "" "" +.TH "NPM\-OWNER" "1" "November 2016" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 97f2cf669bff7f..44a791ef4991b9 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "1" "October 2016" "" "" +.TH "NPM\-PACK" "1" "November 2016" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 3a19287917d8e0..98d2c548b962cd 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PING" "1" "October 2016" "" "" +.TH "NPM\-PING" "1" "November 2016" "" "" .SH "NAME" \fBnpm-ping\fR \- Ping npm registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index c8c4fda0aaeb66..65ec8f2d9d6f53 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "1" "October 2016" "" "" +.TH "NPM\-PREFIX" "1" "November 2016" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 38207324c0fe02..44baa657ecece9 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "1" "October 2016" "" "" +.TH "NPM\-PRUNE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index b26aa7541f6ff9..435dddf4be28da 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "1" "October 2016" "" "" +.TH "NPM\-PUBLISH" "1" "November 2016" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 0249a584068c12..5b5ead00acbfa9 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "1" "October 2016" "" "" +.TH "NPM\-REBUILD" "1" "November 2016" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 4b8f808f05a236..3fe2f722c76154 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "1" "October 2016" "" "" +.TH "NPM\-REPO" "1" "November 2016" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 88ec6716e26861..bab238cb16b2c2 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "1" "October 2016" "" "" +.TH "NPM\-RESTART" "1" "November 2016" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 342541a0aa01d1..b22c6e950df214 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "1" "October 2016" "" "" +.TH "NPM\-ROOT" "1" "November 2016" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index 1adb93cfb5cf54..ddc7bc0fef90b7 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "1" "October 2016" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "November 2016" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index a604aed22442ef..e412bbd62c09d8 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "1" "October 2016" "" "" +.TH "NPM\-SEARCH" "1" "November 2016" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 8b722d69e9bccb..824d67a3e80c44 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "1" "October 2016" "" "" +.TH "NPM\-SHRINKWRAP" "1" "November 2016" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- Lock down dependency versions .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index 5d452759fcf7d2..427f16a7cd6fae 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STAR" "1" "October 2016" "" "" +.TH "NPM\-STAR" "1" "November 2016" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index a49f53f43312b6..33a7e30254d365 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STARS" "1" "October 2016" "" "" +.TH "NPM\-STARS" "1" "November 2016" "" "" .SH "NAME" \fBnpm-stars\fR \- View packages marked as favorites .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index fbfc1f30c62987..eec34f4ab3908f 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "1" "October 2016" "" "" +.TH "NPM\-START" "1" "November 2016" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 671d037a1a44db..62ed5caa5fa4a8 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "1" "October 2016" "" "" +.TH "NPM\-STOP" "1" "November 2016" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-tag.1 b/deps/npm/man/man1/npm-tag.1 index d2a99b48bc0753..ac9450d1b7c727 100644 --- a/deps/npm/man/man1/npm-tag.1 +++ b/deps/npm/man/man1/npm-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TAG" "1" "October 2016" "" "" +.TH "NPM\-TAG" "1" "November 2016" "" "" .SH "NAME" \fBnpm-tag\fR \- Tag a published version .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 95f21cc1277966..32461b610f7c88 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEAM" "1" "October 2016" "" "" +.TH "NPM\-TEAM" "1" "November 2016" "" "" .SH "NAME" \fBnpm-team\fR \- Manage organization teams and team memberships .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index 277107521c231b..bb7dcdd7d8ebb8 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "1" "October 2016" "" "" +.TH "NPM\-TEST" "1" "November 2016" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 2bf88c5e8bc373..794344eb01a04a 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNINSTALL" "1" "October 2016" "" "" +.TH "NPM\-UNINSTALL" "1" "November 2016" "" "" .SH "NAME" \fBnpm-uninstall\fR \- Remove a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 447fb1d80af48a..f901b037d6179a 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNPUBLISH" "1" "October 2016" "" "" +.TH "NPM\-UNPUBLISH" "1" "November 2016" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 3e0bad8dd59dbe..0326821b034bb3 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "1" "October 2016" "" "" +.TH "NPM\-UPDATE" "1" "November 2016" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 5a2e09353e12f5..a8fdc4dd8ecd58 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "1" "October 2016" "" "" +.TH "NPM\-VERSION" "1" "November 2016" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 41a8f0061308d1..31b408ea2cb5eb 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "1" "October 2016" "" "" +.TH "NPM\-VIEW" "1" "November 2016" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index 6dbfb2754890df..1267864269f8f4 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "1" "October 2016" "" "" +.TH "NPM\-WHOAMI" "1" "November 2016" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index ee25dc257d77be..1515a7af956ffb 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "October 2016" "" "" +.TH "NPM" "1" "November 2016" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SH SYNOPSIS @@ -10,7 +10,7 @@ npm [args] .RE .SH VERSION .P -3.10.9 +3.10.10 .SH DESCRIPTION .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5 index 28ce304c0e50ba..e30e11c5a668b7 100644 --- a/deps/npm/man/man5/npm-folders.5 +++ b/deps/npm/man/man5/npm-folders.5 @@ -1,4 +1,4 @@ -.TH "NPM\-FOLDERS" "5" "October 2016" "" "" +.TH "NPM\-FOLDERS" "5" "November 2016" "" "" .SH "NAME" \fBnpm-folders\fR \- Folder Structures Used by npm .SH DESCRIPTION diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 28ce304c0e50ba..e30e11c5a668b7 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "NPM\-FOLDERS" "5" "October 2016" "" "" +.TH "NPM\-FOLDERS" "5" "November 2016" "" "" .SH "NAME" \fBnpm-folders\fR \- Folder Structures Used by npm .SH DESCRIPTION diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index 2f552b73ccdb72..fafa100f77f6b1 100644 --- a/deps/npm/man/man5/npm-json.5 +++ b/deps/npm/man/man5/npm-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "October 2016" "" "" +.TH "PACKAGE\.JSON" "5" "November 2016" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SH DESCRIPTION diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index 8d745e32a8dcd7..b40918d84f961f 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "October 2016" "" "" +.TH "NPMRC" "5" "November 2016" "" "" .SH "NAME" \fBnpmrc\fR \- The npm config files .SH DESCRIPTION diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5 index 2f552b73ccdb72..fafa100f77f6b1 100644 --- a/deps/npm/man/man5/package.json.5 +++ b/deps/npm/man/man5/package.json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "October 2016" "" "" +.TH "PACKAGE\.JSON" "5" "November 2016" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7 index 7ecbdcc568c34a..e5d71c1ac6c6ba 100644 --- a/deps/npm/man/man7/npm-coding-style.7 +++ b/deps/npm/man/man7/npm-coding-style.7 @@ -1,4 +1,4 @@ -.TH "NPM\-CODING\-STYLE" "7" "October 2016" "" "" +.TH "NPM\-CODING\-STYLE" "7" "November 2016" "" "" .SH "NAME" \fBnpm-coding-style\fR \- npm's "funny" coding style .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7 index a6ad79af3dee4b..b35e9d1ce0a7c6 100644 --- a/deps/npm/man/man7/npm-config.7 +++ b/deps/npm/man/man7/npm-config.7 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "7" "October 2016" "" "" +.TH "NPM\-CONFIG" "7" "November 2016" "" "" .SH "NAME" \fBnpm-config\fR \- More than you probably want to know about npm configuration .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7 index 6c23dd383f8b9d..fa849ecfdac3cc 100644 --- a/deps/npm/man/man7/npm-developers.7 +++ b/deps/npm/man/man7/npm-developers.7 @@ -1,4 +1,4 @@ -.TH "NPM\-DEVELOPERS" "7" "October 2016" "" "" +.TH "NPM\-DEVELOPERS" "7" "November 2016" "" "" .SH "NAME" \fBnpm-developers\fR \- Developer Guide .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7 index 2a091216c22609..04ce52b2d934e8 100644 --- a/deps/npm/man/man7/npm-disputes.7 +++ b/deps/npm/man/man7/npm-disputes.7 @@ -1,4 +1,4 @@ -.TH "NPM\-DISPUTES" "7" "October 2016" "" "" +.TH "NPM\-DISPUTES" "7" "November 2016" "" "" .SH "NAME" \fBnpm-disputes\fR \- Handling Module Name Disputes .SH SYNOPSIS diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7 index 0de2ed24939881..f2857df9e562a7 100644 --- a/deps/npm/man/man7/npm-index.7 +++ b/deps/npm/man/man7/npm-index.7 @@ -1,4 +1,4 @@ -.TH "NPM\-INDEX" "7" "October 2016" "" "" +.TH "NPM\-INDEX" "7" "November 2016" "" "" .SH "NAME" \fBnpm-index\fR \- Index of all npm documentation .SS npm help README diff --git a/deps/npm/man/man7/npm-orgs.7 b/deps/npm/man/man7/npm-orgs.7 index 6dffbfc5f23bad..95f966e0c1d6f0 100644 --- a/deps/npm/man/man7/npm-orgs.7 +++ b/deps/npm/man/man7/npm-orgs.7 @@ -1,4 +1,4 @@ -.TH "NPM\-ORGS" "7" "October 2016" "" "" +.TH "NPM\-ORGS" "7" "November 2016" "" "" .SH "NAME" \fBnpm-orgs\fR \- Working with Teams & Orgs .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7 index ac367e4b846721..2710b1d8352972 100644 --- a/deps/npm/man/man7/npm-registry.7 +++ b/deps/npm/man/man7/npm-registry.7 @@ -1,4 +1,4 @@ -.TH "NPM\-REGISTRY" "7" "October 2016" "" "" +.TH "NPM\-REGISTRY" "7" "November 2016" "" "" .SH "NAME" \fBnpm-registry\fR \- The JavaScript Package Registry .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-scope.7 b/deps/npm/man/man7/npm-scope.7 index a066ab9a96fc64..af4ffc675a4d91 100644 --- a/deps/npm/man/man7/npm-scope.7 +++ b/deps/npm/man/man7/npm-scope.7 @@ -1,4 +1,4 @@ -.TH "NPM\-SCOPE" "7" "October 2016" "" "" +.TH "NPM\-SCOPE" "7" "November 2016" "" "" .SH "NAME" \fBnpm-scope\fR \- Scoped packages .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-scripts.7 b/deps/npm/man/man7/npm-scripts.7 index 1b98cb34cb21c7..60acb3195eec9c 100644 --- a/deps/npm/man/man7/npm-scripts.7 +++ b/deps/npm/man/man7/npm-scripts.7 @@ -1,4 +1,4 @@ -.TH "NPM\-SCRIPTS" "7" "October 2016" "" "" +.TH "NPM\-SCRIPTS" "7" "November 2016" "" "" .SH "NAME" \fBnpm-scripts\fR \- How npm handles the "scripts" field .SH DESCRIPTION diff --git a/deps/npm/man/man7/removing-npm.7 b/deps/npm/man/man7/removing-npm.7 index 2565ce29e09d75..b16fcf7d2e006e 100644 --- a/deps/npm/man/man7/removing-npm.7 +++ b/deps/npm/man/man7/removing-npm.7 @@ -1,4 +1,4 @@ -.TH "NPM\-REMOVAL" "1" "October 2016" "" "" +.TH "NPM\-REMOVAL" "1" "November 2016" "" "" .SH "NAME" \fBnpm-removal\fR \- Cleaning the Slate .SH SYNOPSIS diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7 index b9336120367b73..bff76838f53ff9 100644 --- a/deps/npm/man/man7/semver.7 +++ b/deps/npm/man/man7/semver.7 @@ -1,4 +1,4 @@ -.TH "SEMVER" "7" "October 2016" "" "" +.TH "SEMVER" "7" "November 2016" "" "" .SH "NAME" \fBsemver\fR \- The semantic versioner for npm .SH Usage diff --git a/deps/npm/package.json b/deps/npm/package.json index c1df08e43d4d8b..8716d59c3ad746 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "3.10.9", + "version": "3.10.10", "name": "npm", "description": "a package manager for JavaScript", "keywords": [ @@ -202,12 +202,12 @@ "dumpconf": "env | grep npm | sort | uniq", "prepublish": "node bin/npm-cli.js prune --prefix=. --no-global && rimraf test/*/*/node_modules && make doc-clean && make -j4 doc", "preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"update AUTHORS\" || true", - "tap": "tap --reporter=classic --timeout 300", - "tap-cover": "tap --coverage --reporter=classic --timeout 600", + "tap": "tap --timeout 300", + "tap-cover": "tap --coverage --timeout 600", "test": "standard && npm run test-tap", - "test-coverage": "npm run tap-cover -- \"test/tap/*.js\" \"test/network/*.js\"", - "test-tap": "npm run tap -- \"test/tap/*.js\"", - "test-node": "\"$NODE\" \"node_modules/.bin/tap\" --timeout 240 \"test/tap/*.js\" \"test/network/*.js\"" + "test-coverage": "npm run tap-cover -- \"test/tap/*.js\" \"test/network/*.js\" \"test/slow/*.js\" \"test/broken-under-*/*.js\"", + "test-tap": "npm run tap -- \"test/tap/*.js\" \"test/network/*.js\" \"test/slow/*.js\" \"test/broken-under-*/*.js\"", + "test-node": "\"$NODE\" \"node_modules/.bin/tap\" --timeout 240 \"test/tap/*.js\" \"test/network/*.js\" \"test/slow/*.js\" \"test/broken-under-nyc*/*.js\"" }, "license": "Artistic-2.0" } diff --git a/deps/npm/scripts/changelog.js b/deps/npm/scripts/changelog.js index abbec4b4e9e17d..158a79cc463fba 100644 --- a/deps/npm/scripts/changelog.js +++ b/deps/npm/scripts/changelog.js @@ -5,14 +5,14 @@ Usage: node scripts/changelog.js [comittish] Generates changelog entries in our format as best as its able based on -commits starting at comittish, or if that's not passed, master. +commits starting at comittish, or if that's not passed, latest. Ordinarily this is run via the gen-changelog shell script, which appends the result to the changelog. */ const execSync = require('child_process').execSync -const branch = process.argv[2] || 'master' +const branch = process.argv[2] || 'origin/latest' const log = execSync(`git log --reverse --pretty='format:%h %H%d %s (%aN)%n%b%n---%n' ${branch}...`).toString().split(/\n/) main() diff --git a/deps/npm/scripts/maketest b/deps/npm/scripts/maketest index b4f674393baac5..a71cadbc8c33db 100755 --- a/deps/npm/scripts/maketest +++ b/deps/npm/scripts/maketest @@ -40,13 +40,13 @@ var tmpdir = path.join(basedir, 'tmp') var conf = { cwd: testdir, - env: extend({ + env: extend(extend({}, process.env), { npm_config_cache: cachedir, npm_config_tmp: tmpdir, npm_config_prefix: globaldir, npm_config_registry: common.registry, npm_config_loglevel: 'warn' - }, process.env) + }) } var server diff --git a/deps/npm/test/tap/lifecycle-path.js b/deps/npm/test/broken-under-nyc-and-travis/lifecycle-path.js similarity index 93% rename from deps/npm/test/tap/lifecycle-path.js rename to deps/npm/test/broken-under-nyc-and-travis/lifecycle-path.js index 684fd4d3b589b8..a9d32d15b05e42 100644 --- a/deps/npm/test/tap/lifecycle-path.js +++ b/deps/npm/test/broken-under-nyc-and-travis/lifecycle-path.js @@ -83,9 +83,9 @@ function checkPath (withDirOfCurrentNode, t) { // get the ones we tacked on, then the system-specific requirements var expectedPaths = ['{{ROOT}}/bin/node-gyp-bin', - '{{ROOT}}/test/tap/lifecycle-path/node_modules/.bin'] + '{{ROOT}}/test/broken-under-nyc-and-travis/lifecycle-path/node_modules/.bin'] if (withDirOfCurrentNode) { - expectedPaths.push('{{ROOT}}/test/tap/lifecycle-path/node-bin') + expectedPaths.push('{{ROOT}}/test/broken-under-nyc-and-travis/lifecycle-path/node-bin') } var expect = expectedPaths.concat(newPATH.split(pathSplit)).map(function (p) { return p.replace(/\\/g, '/') diff --git a/deps/npm/test/tap/whoami.js b/deps/npm/test/broken-under-nyc-and-travis/whoami.js similarity index 100% rename from deps/npm/test/tap/whoami.js rename to deps/npm/test/broken-under-nyc-and-travis/whoami.js diff --git a/deps/npm/test/tap/legacy-npm-self-install.js b/deps/npm/test/slow/legacy-npm-self-install.js similarity index 100% rename from deps/npm/test/tap/legacy-npm-self-install.js rename to deps/npm/test/slow/legacy-npm-self-install.js diff --git a/deps/npm/test/tap/invalid-cmd-exit-code.js b/deps/npm/test/tap/invalid-cmd-exit-code.js index f4bb444a179690..b9a42f1be427b8 100644 --- a/deps/npm/test/tap/invalid-cmd-exit-code.js +++ b/deps/npm/test/tap/invalid-cmd-exit-code.js @@ -4,25 +4,31 @@ var common = require('../common-tap.js') var opts = { cwd: process.cwd() } test('npm asdf should return exit code 1', function (t) { - common.npm(['asdf'], opts, function (er, c) { - if (er) throw er - t.ok(c, 'exit code should not be zero') + common.npm(['asdf'], opts, function (err, code, stdout, stderr) { + if (err) throw err + t.ok(code, 'exit code should not be zero') + if (stdout.trim()) t.comment(stdout.trim()) + if (stderr.trim()) t.comment(stderr.trim()) t.end() }) }) test('npm help should return exit code 0', function (t) { - common.npm(['help'], opts, function (er, c) { - if (er) throw er - t.equal(c, 0, 'exit code should be 0') + common.npm(['help'], opts, function (err, code, stdout, stderr) { + if (err) throw err + t.equal(code, 0, 'exit code should be 0') + if (stdout.trim()) t.comment(stdout.trim()) + if (stderr.trim()) t.comment(stderr.trim()) t.end() }) }) test('npm help fadf should return exit code 0', function (t) { - common.npm(['help', 'fadf'], opts, function (er, c) { - if (er) throw er - t.equal(c, 0, 'exit code should be 0') + common.npm(['help', 'fadf'], opts, function (err, code, stdout, stderr) { + if (err) throw err + t.equal(code, 0, 'exit code should be 0') + if (stdout.trim()) t.comment(stdout.trim()) + if (stderr.trim()) t.comment(stderr.trim()) t.end() }) }) diff --git a/deps/npm/test/tap/shrinkwrap-optional-platform.js b/deps/npm/test/tap/shrinkwrap-optional-platform.js index 09d26f778be303..4dced0253fcbc5 100644 --- a/deps/npm/test/tap/shrinkwrap-optional-platform.js +++ b/deps/npm/test/tap/shrinkwrap-optional-platform.js @@ -33,12 +33,21 @@ var fixture = new Tacks(Dir({ 'package.json': File({ name: 'mod1', version: '1.0.0', - scripts: { - + scripts: {}, + 'optionalDependencies': { + 'mod2': 'file:../mod2' }, os: ['nosuchos'] }) }), + mod2: Dir({ + 'package.json': File({ + name: 'mod2', + version: '1.0.0', + scripts: {}, + os: ['nosuchos'] + }) + }), 'npm-shrinkwrap.json': File({ name: 'shrinkwrap-optional-platform', version: '1.0.0', @@ -48,6 +57,12 @@ var fixture = new Tacks(Dir({ from: 'mod1', resolved: 'file:mod1', optional: true + }, + mod2: { + version: '1.0.0', + from: 'mod2', + resolved: 'file:mod2', + optional: true } } }), @@ -93,4 +108,3 @@ test('cleanup', function (t) { cleanup() t.done() }) - diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 4723fe3b9d4a98..fb83ab5c6ca287 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 5 #define V8_MINOR_VERSION 1 #define V8_BUILD_NUMBER 281 -#define V8_PATCH_LEVEL 88 +#define V8_PATCH_LEVEL 89 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/bailout-reason.h b/deps/v8/src/bailout-reason.h index 92929cf38c24bb..37fb64a87aac31 100644 --- a/deps/v8/src/bailout-reason.h +++ b/deps/v8/src/bailout-reason.h @@ -257,6 +257,7 @@ namespace internal { V(kUnexpectedReturnFromThrow, "Unexpectedly returned from a throw") \ V(kUnsupportedSwitchStatement, "Unsupported switch statement") \ V(kUnsupportedTaggedImmediate, "Unsupported tagged immediate") \ + V(kUnstableConstantTypeHeapObject, "Unstable constant-type heap object") \ V(kVariableResolvedToWithContext, "Variable resolved to with context") \ V(kWeShouldNotHaveAnEmptyLexicalContext, \ "We should not have an empty lexical context") \ diff --git a/deps/v8/src/compiler/js-global-object-specialization.cc b/deps/v8/src/compiler/js-global-object-specialization.cc index d8c9f17fd4c207..6239bf66d2881d 100644 --- a/deps/v8/src/compiler/js-global-object-specialization.cc +++ b/deps/v8/src/compiler/js-global-object-specialization.cc @@ -182,6 +182,13 @@ Reduction JSGlobalObjectSpecialization::ReduceJSStoreGlobal(Node* node) { Node* check = graph()->NewNode(simplified()->ObjectIsSmi(), value); Type* property_cell_value_type = Type::TaggedSigned(); if (property_cell_value->IsHeapObject()) { + // We cannot do anything if the {property_cell_value}s map is no + // longer stable. + Handle property_cell_value_map( + Handle::cast(property_cell_value)->map(), isolate()); + if (!property_cell_value_map->is_stable()) return NoChange(); + dependencies()->AssumeMapStable(property_cell_value_map); + // Deoptimize if the {value} is a Smi. control = graph()->NewNode(common()->DeoptimizeIf(), check, frame_state, effect, control); @@ -190,8 +197,6 @@ Reduction JSGlobalObjectSpecialization::ReduceJSStoreGlobal(Node* node) { Node* value_map = effect = graph()->NewNode(simplified()->LoadField(AccessBuilder::ForMap()), value, effect, control); - Handle property_cell_value_map( - Handle::cast(property_cell_value)->map(), isolate()); check = graph()->NewNode( simplified()->ReferenceEqual(Type::Any()), value_map, jsgraph()->HeapConstant(property_cell_value_map)); diff --git a/deps/v8/src/crankshaft/hydrogen.cc b/deps/v8/src/crankshaft/hydrogen.cc index 295b2c94557ecc..5a37411834e72c 100644 --- a/deps/v8/src/crankshaft/hydrogen.cc +++ b/deps/v8/src/crankshaft/hydrogen.cc @@ -6908,11 +6908,19 @@ void HOptimizedGraphBuilder::HandleGlobalVariableAssignment( access = access.WithRepresentation(Representation::Smi()); break; case PropertyCellConstantType::kStableMap: { - // The map may no longer be stable, deopt if it's ever different from - // what is currently there, which will allow for restablization. - Handle map(HeapObject::cast(cell->value())->map()); + // First check that the previous value of the {cell} still has the + // map that we are about to check the new {value} for. If not, then + // the stable map assumption was invalidated and we cannot continue + // with the optimized code. + Handle cell_value(HeapObject::cast(cell->value())); + Handle cell_value_map(cell_value->map()); + if (!cell_value_map->is_stable()) { + return Bailout(kUnstableConstantTypeHeapObject); + } + top_info()->dependencies()->AssumeMapStable(cell_value_map); + // Now check that the new {value} is a HeapObject with the same map. Add(value); - value = Add(value, map); + value = Add(value, cell_value_map); access = access.WithRepresentation(Representation::HeapObject()); break; } diff --git a/deps/v8/src/parsing/parser.h b/deps/v8/src/parsing/parser.h index c82682e323671c..5df11e77a01337 100644 --- a/deps/v8/src/parsing/parser.h +++ b/deps/v8/src/parsing/parser.h @@ -880,6 +880,8 @@ class Parser : public ParserBase { PatternContext SetAssignmentContextIfNeeded(Expression* node); PatternContext SetInitializerContextIfNeeded(Expression* node); + void RewriteParameterScopes(Expression* expr); + Variable* CreateTempVar(Expression* value = nullptr); AstNodeFactory* factory() const { return parser_->factory(); } diff --git a/deps/v8/src/parsing/pattern-rewriter.cc b/deps/v8/src/parsing/pattern-rewriter.cc index 26d166d6190b33..0c1153aea15bb6 100644 --- a/deps/v8/src/parsing/pattern-rewriter.cc +++ b/deps/v8/src/parsing/pattern-rewriter.cc @@ -387,6 +387,37 @@ void Parser::PatternRewriter::VisitRewritableExpression( return set_context(old_context); } +// Two cases for scope rewriting the scope of default parameters: +// - Eagerly parsed arrow functions are initially parsed as having +// expressions in the enclosing scope, but when the arrow is encountered, +// need to be in the scope of the function. +// - When an extra declaration scope needs to be inserted to account for +// a sloppy eval in a default parameter or function body, the expressions +// needs to be in that new inner scope which was added after initial +// parsing. +// Each of these cases can be handled by rewriting the contents of the +// expression to the current scope. The source scope is typically the outer +// scope when one case occurs; when both cases occur, both scopes need to +// be included as the outer scope. (Both rewritings still need to be done +// to account for lazily parsed arrow functions which hit the second case.) +// TODO(littledan): Remove the outer_scope parameter of +// RewriteParameterInitializerScope +void Parser::PatternRewriter::RewriteParameterScopes(Expression* expr) { + if (!IsBindingContext()) return; + if (descriptor_->declaration_kind != DeclarationDescriptor::PARAMETER) return; + if (!scope()->is_arrow_scope() && !scope()->is_block_scope()) return; + + // Either this scope is an arrow scope or a declaration block scope. + DCHECK(scope()->is_declaration_scope()); + + if (scope()->outer_scope()->is_arrow_scope() && scope()->is_block_scope()) { + RewriteParameterInitializerScope(parser_->stack_limit(), expr, + scope()->outer_scope()->outer_scope(), + scope()); + } + RewriteParameterInitializerScope(parser_->stack_limit(), expr, + scope()->outer_scope(), scope()); +} void Parser::PatternRewriter::VisitObjectLiteral(ObjectLiteral* pattern, Variable** temp_var) { @@ -396,6 +427,11 @@ void Parser::PatternRewriter::VisitObjectLiteral(ObjectLiteral* pattern, for (ObjectLiteralProperty* property : *pattern->properties()) { PatternContext context = SetInitializerContextIfNeeded(property->value()); + + // Computed property names contain expressions which might require + // scope rewriting. + if (!property->key()->IsLiteral()) RewriteParameterScopes(property->key()); + RecurseIntoSubpattern( property->value(), factory()->NewProperty(factory()->NewVariableProxy(temp), @@ -668,32 +704,8 @@ void Parser::PatternRewriter::VisitAssignment(Assignment* node) { RelocInfo::kNoPosition); } - // Two cases for scope rewriting the scope of default parameters: - // - Eagerly parsed arrow functions are initially parsed as having - // initializers in the enclosing scope, but when the arrow is encountered, - // need to be in the scope of the function. - // - When an extra declaration scope needs to be inserted to account for - // a sloppy eval in a default parameter or function body, the initializer - // needs to be in that new inner scope which was added after initial - // parsing. - // Each of these cases can be handled by rewriting the contents of the - // initializer to the current scope. The source scope is typically the outer - // scope when one case occurs; when both cases occur, both scopes need to - // be included as the outer scope. (Both rewritings still need to be done - // to account for lazily parsed arrow functions which hit the second case.) - // TODO(littledan): Remove the outer_scope parameter of - // RewriteParameterInitializerScope - if (IsBindingContext() && - descriptor_->declaration_kind == DeclarationDescriptor::PARAMETER && - (scope()->is_arrow_scope() || scope()->is_block_scope())) { - if (scope()->outer_scope()->is_arrow_scope() && scope()->is_block_scope()) { - RewriteParameterInitializerScope(parser_->stack_limit(), initializer, - scope()->outer_scope()->outer_scope(), - scope()); - } - RewriteParameterInitializerScope(parser_->stack_limit(), initializer, - scope()->outer_scope(), scope()); - } + // Initializer may have been parsed in the wrong scope. + RewriteParameterScopes(initializer); PatternContext old_context = SetAssignmentContextIfNeeded(initializer); RecurseIntoSubpattern(node->target(), value); diff --git a/deps/v8/src/runtime/runtime-utils.h b/deps/v8/src/runtime/runtime-utils.h index 17c78d5a0b5ca5..7f2829861d55b2 100644 --- a/deps/v8/src/runtime/runtime-utils.h +++ b/deps/v8/src/runtime/runtime-utils.h @@ -115,9 +115,11 @@ namespace internal { // Assert that the given argument has a valid value for a LanguageMode // and store it in a LanguageMode variable with the given name. #define CONVERT_LANGUAGE_MODE_ARG_CHECKED(name, index) \ - RUNTIME_ASSERT(args[index]->IsSmi()); \ - RUNTIME_ASSERT(is_valid_language_mode(args.smi_at(index))); \ - LanguageMode name = static_cast(args.smi_at(index)); + RUNTIME_ASSERT(args[index]->IsNumber()); \ + int32_t __tmp_##name = 0; \ + RUNTIME_ASSERT(args[index]->ToInt32(&__tmp_##name)); \ + RUNTIME_ASSERT(is_valid_language_mode(__tmp_##name)); \ + LanguageMode name = static_cast(__tmp_##name); // Assert that the given argument is a number within the Int32 range diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-620119.js b/deps/v8/test/mjsunit/regress/regress-crbug-620119.js new file mode 100644 index 00000000000000..cbe5a78713d81b --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-620119.js @@ -0,0 +1,8 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --no-lazy + +assertEquals(0, ((x, {[(x = function() { y = 0 }, "foo")]: y = eval(1)}) => { x(); return y })(42, {})); +assertEquals(0, (function (x, {[(x = function() { y = 0 }, "foo")]: y = eval(1)}) { x(); return y })(42, {})); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-659475-1.js b/deps/v8/test/mjsunit/regress/regress-crbug-659475-1.js new file mode 100644 index 00000000000000..7b996237412e25 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-659475-1.js @@ -0,0 +1,30 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax + +var n; + +function Ctor() { + n = new Set(); +} + +function Check() { + n.xyz = 0x826852f4; +} + +Ctor(); +Ctor(); +%OptimizeFunctionOnNextCall(Ctor); +Ctor(); + +Check(); +Check(); +%OptimizeFunctionOnNextCall(Check); +Check(); + +Ctor(); +Check(); + +parseInt('AAAAAAAA'); \ No newline at end of file diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-659475-2.js b/deps/v8/test/mjsunit/regress/regress-crbug-659475-2.js new file mode 100644 index 00000000000000..a992570af4e09b --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-659475-2.js @@ -0,0 +1,31 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax + +var n; + +function Ctor() { + try { } catch (e) {} + n = new Set(); +} + +function Check() { + n.xyz = 0x826852f4; +} + +Ctor(); +Ctor(); +%OptimizeFunctionOnNextCall(Ctor); +Ctor(); + +Check(); +Check(); +%OptimizeFunctionOnNextCall(Check); +Check(); + +Ctor(); +Check(); + +parseInt('AAAAAAAA'); \ No newline at end of file diff --git a/doc/api/addons.md b/doc/api/addons.md index 1dfdf8e3bb057a..44dc69915c428f 100644 --- a/doc/api/addons.md +++ b/doc/api/addons.md @@ -140,7 +140,8 @@ Once built, the binary Addon can be used from within Node.js by pointing // hello.js const addon = require('./build/Release/addon'); -console.log(addon.hello()); // 'world' +console.log(addon.hello()); +// Prints: 'world' ``` Please see the examples below for further information or @@ -372,7 +373,8 @@ To test it, run the following JavaScript: const addon = require('./build/Release/addon'); addon((msg) => { - console.log(msg); // 'hello world' + console.log(msg); +// Prints: 'hello world' }); ``` @@ -421,9 +423,10 @@ To test it in JavaScript: // test.js const addon = require('./build/Release/addon'); -var obj1 = addon('hello'); -var obj2 = addon('world'); -console.log(obj1.msg, obj2.msg); // 'hello world' +const obj1 = addon('hello'); +const obj2 = addon('world'); +console.log(obj1.msg, obj2.msg); +// Prints: 'hello world' ``` @@ -479,8 +482,9 @@ To test: // test.js const addon = require('./build/Release/addon'); -var fn = addon(); -console.log(fn()); // 'hello world' +const fn = addon(); +console.log(fn()); +// Prints: 'hello world' ``` @@ -641,10 +645,13 @@ Test it with: // test.js const addon = require('./build/Release/addon'); -var obj = new addon.MyObject(10); -console.log(obj.plusOne()); // 11 -console.log(obj.plusOne()); // 12 -console.log(obj.plusOne()); // 13 +const obj = new addon.MyObject(10); +console.log(obj.plusOne()); +// Prints: 11 +console.log(obj.plusOne()); +// Prints: 12 +console.log(obj.plusOne()); +// Prints: 13 ``` ### Factory of wrapped objects @@ -653,9 +660,9 @@ Alternatively, it is possible to use a factory pattern to avoid explicitly creating object instances using the JavaScript `new` operator: ```js -var obj = addon.createObject(); +const obj = addon.createObject(); // instead of: -// var obj = new addon.Object(); +// const obj = new addon.Object(); ``` First, the `createObject()` method is implemented in `addon.cc`: @@ -833,15 +840,21 @@ Test it with: // test.js const createObject = require('./build/Release/addon'); -var obj = createObject(10); -console.log(obj.plusOne()); // 11 -console.log(obj.plusOne()); // 12 -console.log(obj.plusOne()); // 13 - -var obj2 = createObject(20); -console.log(obj2.plusOne()); // 21 -console.log(obj2.plusOne()); // 22 -console.log(obj2.plusOne()); // 23 +const obj = createObject(10); +console.log(obj.plusOne()); +// Prints: 11 +console.log(obj.plusOne()); +// Prints: 12 +console.log(obj.plusOne()); +// Prints: 13 + +const obj2 = createObject(20); +console.log(obj2.plusOne()); +// Prints: 21 +console.log(obj2.plusOne()); +// Prints: 22 +console.log(obj2.plusOne()); +// Prints: 23 ``` @@ -1009,11 +1022,12 @@ Test it with: // test.js const addon = require('./build/Release/addon'); -var obj1 = addon.createObject(10); -var obj2 = addon.createObject(20); -var result = addon.add(obj1, obj2); +const obj1 = addon.createObject(10); +const obj2 = addon.createObject(20); +const result = addon.add(obj1, obj2); -console.log(result); // 30 +console.log(result); +// Prints: 30 ``` ### AtExit hooks diff --git a/doc/api/assert.md b/doc/api/assert.md index f1f8238b0f96e7..3db5f676886ca8 100644 --- a/doc/api/assert.md +++ b/doc/api/assert.md @@ -22,14 +22,16 @@ An alias of [`assert.ok()`][] . ```js const assert = require('assert'); -assert(true); // OK -assert(1); // OK +assert(true); +// OK +assert(1); +// OK assert(false); - // throws "AssertionError: false == true" +// throws "AssertionError: false == true" assert(0); - // throws "AssertionError: 0 == true" +// throws "AssertionError: 0 == true" assert(false, 'it\'s false'); - // throws "AssertionError: it's false" +// throws "AssertionError: it's false" ``` ## assert.deepEqual(actual, expected[, message]) @@ -75,18 +77,18 @@ const obj3 = { const obj4 = Object.create(obj1); assert.deepEqual(obj1, obj1); - // OK, object is equal to itself +// OK, object is equal to itself assert.deepEqual(obj1, obj2); - // AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } } - // values of b are different +// AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } } +// values of b are different assert.deepEqual(obj1, obj3); - // OK, objects are equal +// OK, objects are equal assert.deepEqual(obj1, obj4); - // AssertionError: { a: { b: 1 } } deepEqual {} - // Prototypes are ignored +// AssertionError: { a: { b: 1 } } deepEqual {} +// Prototypes are ignored ``` If the values are not equal, an `AssertionError` is thrown with a `message` @@ -106,11 +108,11 @@ Second, object comparisons include a strict equality check of their prototypes. const assert = require('assert'); assert.deepEqual({a:1}, {a:'1'}); - // OK, because 1 == '1' +// OK, because 1 == '1' assert.deepStrictEqual({a:1}, {a:'1'}); - // AssertionError: { a: 1 } deepStrictEqual { a: '1' } - // because 1 !== '1' using strict equality +// AssertionError: { a: 1 } deepStrictEqual { a: '1' } +// because 1 !== '1' using strict equality ``` If the values are not equal, an `AssertionError` is thrown with a `message` @@ -184,14 +186,14 @@ using the equal comparison operator ( `==` ). const assert = require('assert'); assert.equal(1, 1); - // OK, 1 == 1 +// OK, 1 == 1 assert.equal(1, '1'); - // OK, 1 == '1' +// OK, 1 == '1' assert.equal(1, 2); - // AssertionError: 1 == 2 +// AssertionError: 1 == 2 assert.equal({a: {b: 1}}, {a: {b: 1}}); - //AssertionError: { a: { b: 1 } } == { a: { b: 1 } } +//AssertionError: { a: { b: 1 } } == { a: { b: 1 } } ``` If the values are not equal, an `AssertionError` is thrown with a `message` @@ -211,10 +213,10 @@ Otherwise, the error message is the value of `message`. const assert = require('assert'); assert.fail(1, 2, undefined, '>'); - // AssertionError: 1 > 2 +// AssertionError: 1 > 2 assert.fail(1, 2, 'whoops', '>'); - // AssertionError: whoops +// AssertionError: whoops ``` ## assert.ifError(value) @@ -228,10 +230,14 @@ argument in callbacks. ```js const assert = require('assert'); -assert.ifError(0); // OK -assert.ifError(1); // Throws 1 -assert.ifError('error'); // Throws 'error' -assert.ifError(new Error()); // Throws Error +assert.ifError(0); +// OK +assert.ifError(1); +// Throws 1 +assert.ifError('error'); +// Throws 'error' +assert.ifError(new Error()); +// Throws Error ``` ## assert.notDeepEqual(actual, expected[, message]) @@ -262,16 +268,16 @@ const obj3 = { const obj4 = Object.create(obj1); assert.notDeepEqual(obj1, obj1); - // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } +// AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } assert.notDeepEqual(obj1, obj2); - // OK, obj1 and obj2 are not deeply equal +// OK, obj1 and obj2 are not deeply equal assert.notDeepEqual(obj1, obj3); - // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } +// AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } assert.notDeepEqual(obj1, obj4); - // OK, obj1 and obj2 are not deeply equal +// OK, obj1 and obj2 are not deeply equal ``` If the values are deeply equal, an `AssertionError` is thrown with a `message` @@ -289,10 +295,10 @@ Tests for deep strict inequality. Opposite of [`assert.deepStrictEqual()`][]. const assert = require('assert'); assert.notDeepEqual({a:1}, {a:'1'}); - // AssertionError: { a: 1 } notDeepEqual { a: '1' } +// AssertionError: { a: 1 } notDeepEqual { a: '1' } assert.notDeepStrictEqual({a:1}, {a:'1'}); - // OK +// OK ``` If the values are deeply and strictly equal, an `AssertionError` is thrown @@ -311,13 +317,13 @@ Tests shallow, coercive inequality with the not equal comparison operator const assert = require('assert'); assert.notEqual(1, 2); - // OK +// OK assert.notEqual(1, 1); - // AssertionError: 1 != 1 +// AssertionError: 1 != 1 assert.notEqual(1, '1'); - // AssertionError: 1 != '1' +// AssertionError: 1 != '1' ``` If the values are equal, an `AssertionError` is thrown with a `message` @@ -336,13 +342,13 @@ Tests strict inequality as determined by the strict not equal operator const assert = require('assert'); assert.notStrictEqual(1, 2); - // OK +// OK assert.notStrictEqual(1, 1); - // AssertionError: 1 != 1 +// AssertionError: 1 !== 1 assert.notStrictEqual(1, '1'); - // OK +// OK ``` If the values are strictly equal, an `AssertionError` is thrown with a @@ -364,14 +370,16 @@ parameter is `undefined`, a default error message is assigned. ```js const assert = require('assert'); -assert.ok(true); // OK -assert.ok(1); // OK +assert.ok(true); +// OK +assert.ok(1); +// OK assert.ok(false); - // throws "AssertionError: false == true" +// throws "AssertionError: false == true" assert.ok(0); - // throws "AssertionError: 0 == true" +// throws "AssertionError: 0 == true" assert.ok(false, 'it\'s false'); - // throws "AssertionError: it's false" +// throws "AssertionError: it's false" ``` ## assert.strictEqual(actual, expected[, message]) @@ -385,13 +393,13 @@ Tests strict equality as determined by the strict equality operator ( `===` ). const assert = require('assert'); assert.strictEqual(1, 2); - // AssertionError: 1 === 2 +// AssertionError: 1 === 2 assert.strictEqual(1, 1); - // OK +// OK assert.strictEqual(1, '1'); - // AssertionError: 1 === '1' +// AssertionError: 1 === '1' ``` If the values are not strictly equal, an `AssertionError` is thrown with a diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 0e945db427ee88..566d4484c7125c 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -398,15 +398,15 @@ A zero-length `Buffer` will be created if `size <= 0`. Unlike [`ArrayBuffers`][`ArrayBuffer`], the underlying memory for `Buffer` instances created in this way is *not initialized*. The contents of a newly created `Buffer` -are unknown and *could contain sensitive data*. Use [`buf.fill(0)`][`buf.fill()`] -to initialize a `Buffer` to zeroes. +are unknown and *could contain sensitive data*. Use +[`Buffer.alloc(size)`][`Buffer.alloc()`] instead to initialize a `Buffer` to zeroes. Example: ```js const buf = new Buffer(5); -// Prints (contents may vary): +// Prints: (contents may vary): console.log(buf); buf.fill(0); @@ -517,7 +517,7 @@ be less than or equal to the value of [`buffer.kMaxLength`]. Otherwise, a The underlying memory for `Buffer` instances created in this way is *not initialized*. The contents of the newly created `Buffer` are unknown and -*may contain sensitive data*. Use [`buf.fill(0)`][`buf.fill()`] to initialize such +*may contain sensitive data*. Use [`Buffer.alloc()`] instead to initialize `Buffer` instances to zeroes. Example: @@ -525,7 +525,7 @@ Example: ```js const buf = Buffer.allocUnsafe(5); -// Prints (contents may vary): +// Prints: (contents may vary): console.log(buf); buf.fill(0); @@ -612,7 +612,7 @@ added: v0.1.90 calculate the length of * `encoding` {String} If `string` is a string, this is its encoding. **Default:** `'utf8'` -* Return: {Integer} The number of bytes contained within `string` +* Returns: {Integer} The number of bytes contained within `string` Returns the actual byte length of a string. This is not the same as [`String.prototype.length`] since that returns the number of *characters* in @@ -640,7 +640,7 @@ added: v0.11.13 * `buf1` {Buffer} * `buf2` {Buffer} -* Return: {Integer} +* Returns: {Integer} Compares `buf1` to `buf2` typically for the purpose of sorting arrays of `Buffer` instances. This is equivalent to calling @@ -666,7 +666,7 @@ added: v0.7.11 * `list` {Array} List of `Buffer` instances to concat * `totalLength` {Integer} Total length of the `Buffer` instances in `list` when concatenated -* Return: {Buffer} +* Returns: {Buffer} Returns a new `Buffer` which is the result of concatenating all the `Buffer` instances in the `list` together. @@ -831,7 +831,7 @@ added: v0.1.101 --> * `obj` {Object} -* Return: {Boolean} +* Returns: {Boolean} Returns `true` if `obj` is a `Buffer`, `false` otherwise. @@ -841,7 +841,7 @@ added: v0.9.1 --> * `encoding` {String} A character encoding name to check -* Return: {Boolean} +* Returns: {Boolean} Returns `true` if `encoding` contains a supported character encoding, or `false` otherwise. @@ -896,7 +896,7 @@ added: v0.11.13 * `sourceEnd` {Integer} The offset within `buf` at which to end comparison (not inclusive). Ignored when `targetStart` is `undefined`. **Default:** [`buf.length`] -* Return: {Integer} +* Returns: {Integer} Compares `buf` with `target` and returns a number indicating whether `buf` comes before, after, or is the same as `target` in sort order. @@ -968,7 +968,7 @@ added: v0.1.90 Ignored when `targetStart` is `undefined`. **Default:** `0` * `sourceEnd` {Integer} The offset within `buf` at which to stop copying (not inclusive). Ignored when `sourceStart` is `undefined`. **Default:** [`buf.length`] -* Return: {Integer} The number of bytes copied. +* Returns: {Integer} The number of bytes copied. Copies data from a region of `buf` to a region in `target` even if the `target` memory region overlaps with `buf`. @@ -1013,7 +1013,7 @@ console.log(buf.toString()); added: v1.1.0 --> -* Return: {Iterator} +* Returns: {Iterator} Creates and returns an [iterator] of `[index, byte]` pairs from the contents of `buf`. @@ -1041,7 +1041,7 @@ added: v0.11.13 --> * `otherBuffer` {Buffer} A `Buffer` to compare to -* Return: {Boolean} +* Returns: {Boolean} Returns `true` if both `buf` and `otherBuffer` have exactly the same bytes, `false` otherwise. @@ -1070,7 +1070,7 @@ added: v0.5.0 * `end` {Integer} Where to stop filling `buf` (not inclusive). **Default:** [`buf.length`] * `encoding` {String} If `value` is a string, this is its encoding. **Default:** `'utf8'` -* Return: {Buffer} A reference to `buf` +* Returns: {Buffer} A reference to `buf` Fills `buf` with the specified `value`. If the `offset` and `end` are not given, the entire `buf` will be filled. This is meant to be a small simplification to @@ -1106,7 +1106,7 @@ added: v1.5.0 * `byteOffset` {Integer} Where to begin searching in `buf`. **Default:** `0` * `encoding` {String} If `value` is a string, this is its encoding. **Default:** `'utf8'` -* Return: {Integer} The index of the first occurrence of `value` in `buf` or `-1` +* Returns: {Integer} The index of the first occurrence of `value` in `buf` or `-1` if `buf` does not contain `value` If `value` is: @@ -1161,7 +1161,7 @@ added: v5.3.0 * `byteOffset` {Integer} Where to begin searching in `buf`. **Default:** `0` * `encoding` {String} If `value` is a string, this is its encoding. **Default:** `'utf8'` -* Return: {Boolean} `true` if `value` was found in `buf`, `false` otherwise +* Returns: {Boolean} `true` if `value` was found in `buf`, `false` otherwise Equivalent to [`buf.indexOf() !== -1`][`buf.indexOf()`]. @@ -1198,7 +1198,7 @@ console.log(buf.includes('this', 4)); added: v1.1.0 --> -* Return: {Iterator} +* Returns: {Iterator} Creates and returns an [iterator] of `buf` keys (indices). @@ -1229,7 +1229,7 @@ added: v6.0.0 **Default:** [`buf.length`] * `encoding` {String} If `value` is a string, this is its encoding. **Default:** `'utf8'` -* Return: {Integer} The index of the last occurrence of `value` in `buf` or `-1` +* Returns: {Integer} The index of the last occurrence of `value` in `buf` or `-1` if `buf` does not contain `value` Identical to [`buf.indexOf()`], except `buf` is searched from back to front @@ -1325,7 +1325,7 @@ added: v0.11.15 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 8` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Number} +* Returns: {Number} Reads a 64-bit double from `buf` at the specified `offset` with specified endian format (`readDoubleBE()` returns big endian, `readDoubleLE()` returns @@ -1361,7 +1361,7 @@ added: v0.11.15 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 4` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Number} +* Returns: {Number} Reads a 32-bit float from `buf` at the specified `offset` with specified endian format (`readFloatBE()` returns big endian, `readFloatLE()` returns @@ -1396,7 +1396,7 @@ added: v0.5.0 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 1` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads a signed 8-bit integer from `buf` at the specified `offset`. @@ -1428,7 +1428,7 @@ added: v0.5.5 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 2` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads a signed 16-bit integer from `buf` at the specified `offset` with the specified endian format (`readInt16BE()` returns big endian, @@ -1462,7 +1462,7 @@ added: v0.5.5 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 4` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads a signed 32-bit integer from `buf` at the specified `offset` with the specified endian format (`readInt32BE()` returns big endian, @@ -1497,7 +1497,7 @@ added: v0.11.15 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - byteLength` * `byteLength` {Integer} How many bytes to read. Must satisfy: `0 < byteLength <= 6` * `noAssert` {Boolean} Skip `offset` and `byteLength` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads `byteLength` number of bytes from `buf` at the specified `offset` and interprets the result as a two's complement signed value. Supports up to 48 @@ -1528,7 +1528,7 @@ added: v0.5.0 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 1` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads an unsigned 8-bit integer from `buf` at the specified `offset`. @@ -1558,7 +1558,7 @@ added: v0.5.5 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 2` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads an unsigned 16-bit integer from `buf` at the specified `offset` with specified endian format (`readUInt16BE()` returns big endian, `readUInt16LE()` @@ -1596,7 +1596,7 @@ added: v0.5.5 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - 4` * `noAssert` {Boolean} Skip `offset` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads an unsigned 32-bit integer from `buf` at the specified `offset` with specified endian format (`readUInt32BE()` returns big endian, @@ -1629,7 +1629,7 @@ added: v0.11.15 * `offset` {Integer} Where to start reading. Must satisfy: `0 <= offset <= buf.length - byteLength` * `byteLength` {Integer} How many bytes to read. Must satisfy: `0 < byteLength <= 6` * `noAssert` {Boolean} Skip `offset` and `byteLength` validation? **Default:** `false` -* Return: {Integer} +* Returns: {Integer} Reads `byteLength` number of bytes from `buf` at the specified `offset` and interprets the result as an unsigned integer. Supports up to 48 @@ -1661,7 +1661,7 @@ added: v0.3.0 * `start` {Integer} Where the new `Buffer` will start. **Default:** `0` * `end` {Integer} Where the new `Buffer` will end (not inclusive). **Default:** [`buf.length`] -* Return: {Buffer} +* Returns: {Buffer} Returns a new `Buffer` that references the same memory as the original, but offset and cropped by the `start` and `end` indices. @@ -1717,7 +1717,7 @@ console.log(buf.slice(-5, -2).toString()); added: v5.10.0 --> -* Return: {Buffer} A reference to `buf` +* Returns: {Buffer} A reference to `buf` Interprets `buf` as an array of unsigned 16-bit integers and swaps the byte-order *in-place*. Throws a `RangeError` if [`buf.length`] is not a multiple of 2. @@ -1747,7 +1747,7 @@ buf2.swap32(); added: v5.10.0 --> -* Return: {Buffer} A reference to `buf` +* Returns: {Buffer} A reference to `buf` Interprets `buf` as an array of unsigned 32-bit integers and swaps the byte-order *in-place*. Throws a `RangeError` if [`buf.length`] is not a multiple of 4. @@ -1757,12 +1757,12 @@ Examples: ```js const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); -// Prints +// Prints: console.log(buf1); buf1.swap32(); -// Prints +// Prints: console.log(buf1); @@ -1777,7 +1777,7 @@ buf2.swap32(); added: v6.3.0 --> -* Return: {Buffer} A reference to `buf` +* Returns: {Buffer} A reference to `buf` Interprets `buf` as an array of 64-bit numbers and swaps the byte-order *in-place*. Throws a `RangeError` if [`buf.length`] is not a multiple of 8. @@ -1787,12 +1787,12 @@ Examples: ```js const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); -// Prints +// Prints: console.log(buf1); buf1.swap64(); -// Prints +// Prints: console.log(buf1); @@ -1814,7 +1814,7 @@ added: v0.1.90 * `start` {Integer} The byte offset to start decoding at. **Default:** `0` * `end` {Integer} The byte offset to stop decoding at (not inclusive). **Default:** [`buf.length`] -* Return: {String} +* Returns: {String} Decodes `buf` to a string according to the specified character encoding in `encoding`. `start` and `end` may be passed to decode only a subset of `buf`. @@ -1853,7 +1853,7 @@ console.log(buf2.toString(undefined, 0, 3)); added: v0.9.2 --> -* Return: {Object} +* Returns: {Object} Returns a JSON representation of `buf`. [`JSON.stringify()`] implicitly calls this function when stringifying a `Buffer` instance. @@ -1882,7 +1882,7 @@ console.log(copy); added: v1.1.0 --> -* Return: {Iterator} +* Returns: {Iterator} Creates and returns an [iterator] for `buf` values (bytes). This function is called automatically when a `Buffer` is used in a `for..of` statement. @@ -1924,7 +1924,7 @@ added: v0.1.90 * `offset` {Integer} Where to start writing `string`. **Default:** `0` * `length` {Integer} How many bytes to write. **Default:** `buf.length - offset` * `encoding` {String} The character encoding of `string`. **Default:** `'utf8'` -* Return: {Integer} Number of bytes written +* Returns: {Integer} Number of bytes written Writes `string` to `buf` at `offset` according to the character encoding in `encoding`. The `length` parameter is the number of bytes to write. If `buf` did not contain @@ -1951,7 +1951,7 @@ added: v0.11.15 * `value` {Number} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 8` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset` with specified endian format (`writeDoubleBE()` writes big endian, `writeDoubleLE()` writes little @@ -1986,7 +1986,7 @@ added: v0.11.15 * `value` {Number} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 4` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset` with specified endian format (`writeFloatBE()` writes big endian, `writeFloatLE()` writes little @@ -2020,7 +2020,7 @@ added: v0.5.0 * `value` {Integer} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 1` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset`. `value` *should* be a valid signed 8-bit integer. Behavior is undefined when `value` is anything other than @@ -2052,7 +2052,7 @@ added: v0.5.5 * `value` {Integer} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 2` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset` with specified endian format (`writeInt16BE()` writes big endian, `writeInt16LE()` writes little @@ -2085,7 +2085,7 @@ added: v0.5.5 * `value` {Integer} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 4` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset` with specified endian format (`writeInt32BE()` writes big endian, `writeInt32LE()` writes little @@ -2120,7 +2120,7 @@ added: v0.11.15 * `byteLength` {Integer} How many bytes to write. Must satisfy: `0 < byteLength <= 6` * `noAssert` {Boolean} Skip `value`, `offset`, and `byteLength` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `byteLength` bytes of `value` to `buf` at the specified `offset`. Supports up to 48 bits of accuracy. Behavior is undefined when `value` is @@ -2153,7 +2153,7 @@ added: v0.5.0 * `value` {Integer} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 1` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset`. `value` *should* be a valid unsigned 8-bit integer. Behavior is undefined when `value` is anything @@ -2185,7 +2185,7 @@ added: v0.5.5 * `value` {Integer} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 2` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset` with specified endian format (`writeUInt16BE()` writes big endian, `writeUInt16LE()` writes little @@ -2222,7 +2222,7 @@ added: v0.5.5 * `value` {Integer} Number to be written to `buf` * `offset` {Integer} Where to start writing. Must satisfy: `0 <= offset <= buf.length - 4` * `noAssert` {Boolean} Skip `value` and `offset` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `value` to `buf` at the specified `offset` with specified endian format (`writeUInt32BE()` writes big endian, `writeUInt32LE()` writes little @@ -2259,7 +2259,7 @@ added: v0.5.5 * `byteLength` {Integer} How many bytes to write. Must satisfy: `0 < byteLength <= 6` * `noAssert` {Boolean} Skip `value`, `offset`, and `byteLength` validation? **Default:** `false` -* Return: {Integer} `offset` plus the number of bytes written +* Returns: {Integer} `offset` plus the number of bytes written Writes `byteLength` bytes of `value` to `buf` at the specified `offset`. Supports up to 48 bits of accuracy. Behavior is undefined when `value` is @@ -2372,7 +2372,7 @@ const SlowBuffer = require('buffer').SlowBuffer; const buf = new SlowBuffer(5); -// Prints (contents may vary): +// Prints: (contents may vary): console.log(buf); buf.fill(0); diff --git a/doc/api/child_process.md b/doc/api/child_process.md index 1cf30f440e5d71..fdffa0fc5a95ca 100644 --- a/doc/api/child_process.md +++ b/doc/api/child_process.md @@ -144,7 +144,7 @@ added: v0.1.90 * `error` {Error} * `stdout` {String|Buffer} * `stderr` {String|Buffer} -* Return: {ChildProcess} +* Returns: {ChildProcess} Spawns a shell then executes the `command` within that shell, buffering any generated output. @@ -217,7 +217,7 @@ added: v0.1.91 * `error` {Error} * `stdout` {String|Buffer} * `stderr` {String|Buffer} -* Return: {ChildProcess} +* Returns: {ChildProcess} The `child_process.execFile()` function is similar to [`child_process.exec()`][] except that it does not spawn a shell. Rather, the specified executable `file` @@ -267,7 +267,7 @@ added: v0.5.0 be thrown. For instance `[0, 1, 2, 'ipc']`. * `uid` {Number} Sets the user identity of the process. (See setuid(2).) * `gid` {Number} Sets the group identity of the process. (See setgid(2).) -* Return: {ChildProcess} +* Returns: {ChildProcess} The `child_process.fork()` method is a special case of [`child_process.spawn()`][] used specifically to spawn new Node.js processes. @@ -278,7 +278,7 @@ allows messages to be passed back and forth between the parent and child. See It is important to keep in mind that spawned Node.js child processes are independent of the parent with exception of the IPC communication channel -that is established between the two. Each process has it's own memory, with +that is established between the two. Each process has its own memory, with their own V8 instances. Because of the additional resource allocations required, spawning a large number of child Node.js processes is not recommended. @@ -814,7 +814,7 @@ added: v0.1.90 * `signal` {String} The `child.kill()` methods sends a signal to the child process. If no argument -is given, the process will be sent the `'SIGTERM'` signal. See `signal(7)` for +is given, the process will be sent the `'SIGTERM'` signal. See signal(7) for a list of available signals. ```js @@ -891,7 +891,7 @@ added: v0.5.9 * `sendHandle` {Handle} * `options` {Object} * `callback` {Function} -* Return: {Boolean} +* Returns: {Boolean} When an IPC channel has been established between the parent and child ( i.e. when using [`child_process.fork()`][]), the `child.send()` method can be diff --git a/doc/api/cluster.md b/doc/api/cluster.md index c239c44ffb7d5d..c323282d0f94b1 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -144,7 +144,7 @@ added: v0.11.2 --> * `code` {Number} the exit code, if it exited normally. -* `signal` {String} the name of the signal (eg. `'SIGHUP'`) that caused +* `signal` {String} the name of the signal (e.g. `'SIGHUP'`) that caused the process to be killed. Similar to the `cluster.on('exit')` event, but specific to this worker. @@ -414,7 +414,7 @@ added: v0.7.0 * `message` {Object} * `sendHandle` {Handle} * `callback` {Function} -* Return: Boolean +* Returns: Boolean Send a message to a worker or master, optionally with a handle. @@ -496,7 +496,7 @@ added: v0.7.9 * `worker` {cluster.Worker} * `code` {Number} the exit code, if it exited normally. -* `signal` {String} the name of the signal (eg. `'SIGHUP'`) that caused +* `signal` {String} the name of the signal (e.g. `'SIGHUP'`) that caused the process to be killed. When any of the workers die the cluster module will emit the `'exit'` event. diff --git a/doc/api/console.md b/doc/api/console.md index 7b8d893197473f..e5d3957e5087dd 100644 --- a/doc/api/console.md +++ b/doc/api/console.md @@ -17,15 +17,15 @@ Example using the global `console`: ```js console.log('hello world'); - // Prints: hello world, to stdout +// Prints: hello world, to stdout console.log('hello %s', 'world'); - // Prints: hello world, to stdout +// Prints: hello world, to stdout console.error(new Error('Whoops, something bad happened')); - // Prints: [Error: Whoops, something bad happened], to stderr +// Prints: [Error: Whoops, something bad happened], to stderr const name = 'Will Robinson'; console.warn(`Danger ${name}! Danger!`); - // Prints: Danger Will Robinson! Danger!, to stderr +// Prints: Danger Will Robinson! Danger!, to stderr ``` Example using the `Console` class: @@ -36,15 +36,15 @@ const err = getStreamSomehow(); const myConsole = new console.Console(out, err); myConsole.log('hello world'); - // Prints: hello world, to out +// Prints: hello world, to out myConsole.log('hello %s', 'world'); - // Prints: hello world, to out +// Prints: hello world, to out myConsole.error(new Error('Whoops, something bad happened')); - // Prints: [Error: Whoops, something bad happened], to err +// Prints: [Error: Whoops, something bad happened], to err const name = 'Will Robinson'; myConsole.warn(`Danger ${name}! Danger!`); - // Prints: Danger Will Robinson! Danger!, to err +// Prints: Danger Will Robinson! Danger!, to err ``` While the API for the `Console` class is designed fundamentally around the @@ -111,9 +111,9 @@ using [`util.format()`][] and used as the error message. ```js console.assert(true, 'does nothing'); - // OK +// OK console.assert(false, 'Whoops %s', 'didn\'t work'); - // AssertionError: Whoops didn't work +// AssertionError: Whoops didn't work ``` *Note: the `console.assert()` method is implemented differently in Node.js @@ -184,15 +184,15 @@ added: v0.1.100 Prints to `stderr` with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution -values similar to `printf(3)` (the arguments are all passed to +values similar to printf(3) (the arguments are all passed to [`util.format()`][]). ```js const code = 5; console.error('error #%d', code); - // Prints: error #5, to stderr +// Prints: error #5, to stderr console.error('error', code); - // Prints: error 5, to stderr +// Prints: error 5, to stderr ``` If formatting elements (e.g. `%d`) are not found in the first string then @@ -213,15 +213,15 @@ added: v0.1.100 Prints to `stdout` with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution -values similar to `printf(3)` (the arguments are all passed to +values similar to printf(3) (the arguments are all passed to [`util.format()`][]). ```js var count = 5; console.log('count: %d', count); - // Prints: count: 5, to stdout +// Prints: count: 5, to stdout console.log('count:', count); - // Prints: count: 5, to stdout +// Prints: count: 5, to stdout ``` If formatting elements (e.g. `%d`) are not found in the first string then @@ -270,18 +270,18 @@ formatted message and stack trace to the current position in the code. ```js console.trace('Show me'); - // Prints: (stack trace will vary based on where trace is called) - // Trace: Show me - // at repl:2:9 - // at REPLServer.defaultEval (repl.js:248:27) - // at bound (domain.js:287:14) - // at REPLServer.runBound [as eval] (domain.js:300:12) - // at REPLServer. (repl.js:412:12) - // at emitOne (events.js:82:20) - // at REPLServer.emit (events.js:169:7) - // at REPLServer.Interface._onLine (readline.js:210:10) - // at REPLServer.Interface._line (readline.js:549:8) - // at REPLServer.Interface._ttyWrite (readline.js:826:14) +// Prints: (stack trace will vary based on where trace is called) +// Trace: Show me +// at repl:2:9 +// at REPLServer.defaultEval (repl.js:248:27) +// at bound (domain.js:287:14) +// at REPLServer.runBound [as eval] (domain.js:300:12) +// at REPLServer. (repl.js:412:12) +// at emitOne (events.js:82:20) +// at REPLServer.emit (events.js:169:7) +// at REPLServer.Interface._onLine (readline.js:210:10) +// at REPLServer.Interface._line (readline.js:549:8) +// at REPLServer.Interface._ttyWrite (readline.js:826:14) ``` ### console.warn([data][, ...args]) diff --git a/doc/api/crypto.md b/doc/api/crypto.md index ebe247c2761e20..9410b29965d1f5 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -15,8 +15,8 @@ const hash = crypto.createHmac('sha256', secret) .update('I love cupcakes') .digest('hex'); console.log(hash); - // Prints: - // c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e +// Prints: +// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e ``` ## Determining if crypto support is unavailable @@ -73,7 +73,7 @@ const cert = require('crypto').Certificate(); const spkac = getSpkacSomehow(); const challenge = cert.exportChallenge(spkac); console.log(challenge.toString('utf8')); - // Prints the challenge as a UTF8 string +// Prints: the challenge as a UTF8 string ``` ### certificate.exportPublicKey(spkac) @@ -91,7 +91,7 @@ const cert = require('crypto').Certificate(); const spkac = getSpkacSomehow(); const publicKey = cert.exportPublicKey(spkac); console.log(publicKey); - // Prints the public key as +// Prints: the public key as ``` ### certificate.verifySpkac(spkac) @@ -106,7 +106,7 @@ The `spkac` argument must be a Node.js [`Buffer`][]. const cert = require('crypto').Certificate(); const spkac = getSpkacSomehow(); console.log(cert.verifySpkac(Buffer.from(spkac))); - // Prints true or false +// Prints: true or false ``` ## Class: Cipher @@ -169,7 +169,7 @@ const cipher = crypto.createCipher('aes192', 'a password'); var encrypted = cipher.update('some clear text data', 'utf8', 'hex'); encrypted += cipher.final('hex'); console.log(encrypted); - // Prints: ca981be48e90867604588e75d04feabb63cc007a8f8ad89b10616ed84d815504 +// Prints: ca981be48e90867604588e75d04feabb63cc007a8f8ad89b10616ed84d815504 ``` ### cipher.final([output_encoding]) @@ -228,7 +228,7 @@ added: v0.1.94 --> Updates the cipher with `data`. If the `input_encoding` argument is given, -it's value must be one of `'utf8'`, `'ascii'`, or `'latin1'` and the `data` +its value must be one of `'utf8'`, `'ascii'`, or `'latin1'` and the `data` argument is a string using the specified encoding. If the `input_encoding` argument is not given, `data` must be a [`Buffer`][]. If `data` is a [`Buffer`][] then `input_encoding` is ignored. @@ -304,7 +304,7 @@ var encrypted = 'ca981be48e90867604588e75d04feabb63cc007a8f8ad89b10616ed84d81550 var decrypted = decipher.update(encrypted, 'hex', 'utf8'); decrypted += decipher.final('utf8'); console.log(decrypted); - // Prints: some clear text data +// Prints: some clear text data ``` ### decipher.final([output_encoding]) @@ -313,7 +313,7 @@ added: v0.1.94 --> Returns any remaining deciphered contents. If `output_encoding` -parameter is one of `'latin1'`, `'base64'` or `'hex'`, a string is returned. +parameter is one of `'latin1'`, `'ascii'` or `'utf8'`, a string is returned. If an `output_encoding` is not provided, a [`Buffer`][] is returned. Once the `decipher.final()` method has been called, the `Decipher` object can @@ -326,7 +326,7 @@ added: v1.0.0 --> When using an authenticated encryption mode (only `GCM` is currently -supported), the `cipher.setAAD()` method sets the value used for the +supported), the `decipher.setAAD()` method sets the value used for the _additional authenticated data_ (AAD) input parameter. ### decipher.setAuthTag(buffer) @@ -361,7 +361,7 @@ added: v0.1.94 --> Updates the decipher with `data`. If the `input_encoding` argument is given, -it's value must be one of `'latin1'`, `'base64'`, or `'hex'` and the `data` +its value must be one of `'latin1'`, `'base64'`, or `'hex'` and the `data` argument is a string using the specified encoding. If the `input_encoding` argument is not given, `data` must be a [`Buffer`][]. If `data` is a [`Buffer`][] then `input_encoding` is ignored. @@ -700,8 +700,8 @@ const hash = crypto.createHash('sha256'); hash.update('some data to hash'); console.log(hash.digest('hex')); - // Prints: - // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 +// Prints: +// 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 ``` ### hash.digest([encoding]) @@ -783,8 +783,8 @@ const hmac = crypto.createHmac('sha256', 'a secret'); hmac.update('some data to hash'); console.log(hmac.digest('hex')); - // Prints: - // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e +// Prints: +// 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e ``` ### hmac.digest([encoding]) @@ -839,7 +839,7 @@ sign.end(); const private_key = getPrivateKeySomehow(); console.log(sign.sign(private_key, 'hex')); - // Prints the calculated signature +// Prints: the calculated signature ``` Example: Using the [`sign.update()`][] and [`sign.sign()`][] methods: @@ -852,7 +852,7 @@ sign.update('some data to sign'); const private_key = getPrivateKeySomehow(); console.log(sign.sign(private_key, 'hex')); - // Prints the calculated signature +// Prints: the calculated signature ``` A `Sign` instance can also be created by just passing in the digest @@ -925,8 +925,8 @@ of two ways: - Using the [`verify.update()`][] and [`verify.verify()`][] methods to verify the signature. - The [`crypto.createSign()`][] method is used to create `Sign` instances. - `Sign` objects are not to be created directly using the `new` keyword. +The [`crypto.createVerify()`][] method is used to create `Verify` instances. +`Verify` objects are not to be created directly using the `new` keyword. Example: Using `Verify` objects as streams: @@ -940,7 +940,7 @@ verify.end(); const public_key = getPublicKeySomehow(); const signature = getSignatureToVerify(); console.log(verify.verify(public_key, signature)); - // Prints true or false +// Prints: true or false ``` Example: Using the [`verify.update()`][] and [`verify.verify()`][] methods: @@ -954,7 +954,7 @@ verify.update('some data to sign'); const public_key = getPublicKeySomehow(); const signature = getSignatureToVerify(); console.log(verify.verify(public_key, signature)); - // Prints true or false +// Prints: true or false ``` ### verifier.update(data[, input_encoding]) @@ -1451,7 +1451,6 @@ keys: * `padding` : An optional padding value, one of the following: * `crypto.constants.RSA_NO_PADDING` * `crypto.constants.RSA_PKCS1_PADDING` - * `crypto.constants.RSA_PKCS1_OAEP_PADDING` All paddings are defined in `crypto.constants`. @@ -1620,7 +1619,7 @@ See the reference for other recommendations and details. ## Crypto Constants -The following constants exported by `crypto.constants` apply to various uses of +The following constants exported by `crypto.constants` apply to various uses of the `crypto`, `tls`, and `https` modules and are generally specific to OpenSSL. ### OpenSSL Options @@ -1639,13 +1638,13 @@ the `crypto`, `tls`, and `https` modules and are generally specific to OpenSSL. SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION Allows legacy insecure renegotiation between OpenSSL and unpatched - clients or servers. See + clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. SSL_OP_CIPHER_SERVER_PREFERENCE Uses the server's preferences instead of the clients when selecting a - cipher. See + cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. diff --git a/doc/api/debugger.md b/doc/api/debugger.md index 48761cf04756b0..c8a61d2ce742f8 100644 --- a/doc/api/debugger.md +++ b/doc/api/debugger.md @@ -4,10 +4,10 @@ -Node.js includes a full-featured out-of-process debugging utility accessible -via a simple [TCP-based protocol][] and built-in debugging client. To use it, -start Node.js with the `debug` argument followed by the path to the script to -debug; a prompt will be displayed indicating successful launch of the debugger: +Node.js includes an out-of-process debugging utility accessible via a +[TCP-based protocol][] and built-in debugging client. To use it, start Node.js +with the `debug` argument followed by the path to the script to debug; a prompt +will be displayed indicating successful launch of the debugger: ```txt $ node debug myscript.js diff --git a/doc/api/dns.md b/doc/api/dns.md index 95592f9cc3f144..cd66548daf811a 100644 --- a/doc/api/dns.md +++ b/doc/api/dns.md @@ -148,7 +148,7 @@ On error, `err` is an [`Error`][] object, where `err.code` is the error code. const dns = require('dns'); dns.lookupService('127.0.0.1', 22, (err, hostname, service) => { console.log(hostname, service); - // Prints: localhost ssh + // Prints: localhost ssh }); ``` @@ -260,7 +260,7 @@ added: v0.1.90 Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname`. The `addresses` argument passed to the `callback` function will contain an array of name server records available for `hostname` -(e.g., `['ns1.example.com', 'ns2.example.com']`). +(e.g. `['ns1.example.com', 'ns2.example.com']`). ## dns.resolveSoa(hostname, callback) -* `srcpath` {String | Buffer} -* `dstpath` {String | Buffer} +* `existingPath` {String | Buffer} +* `newPath` {String | Buffer} * `callback` {Function} Asynchronous link(2). No arguments other than a possible exception are given to the completion callback. -## fs.linkSync(srcpath, dstpath) +## fs.linkSync(existingPath, newPath) -* `srcpath` {String | Buffer} -* `dstpath` {String | Buffer} +* `existingPath` {String | Buffer} +* `newPath` {String | Buffer} Synchronous link(2). Returns `undefined`. @@ -1127,7 +1129,7 @@ Example: fs.mkdtemp('/tmp/foo-', (err, folder) => { if (err) throw err; console.log(folder); - // Prints: /tmp/foo-itXde2 + // Prints: /tmp/foo-itXde2 }); ``` @@ -1145,10 +1147,10 @@ const tmpDir = '/tmp'; fs.mkdtemp(tmpDir, (err, folder) => { if (err) throw err; console.log(folder); - // Will print something similar to `/tmpabc123`. - // Note that a new temporary directory is created - // at the file system root rather than *within* - // the /tmp directory. + // Will print something similar to `/tmpabc123`. + // Note that a new temporary directory is created + // at the file system root rather than *within* + // the /tmp directory. }); // This method is *CORRECT*: @@ -1156,9 +1158,9 @@ const path = require('path'); fs.mkdtemp(tmpDir + path.sep, (err, folder) => { if (err) throw err; console.log(folder); - // Will print something similar to `/tmp/abc123`. - // A new temporary directory is created within - // the /tmp directory. + // Will print something similar to `/tmp/abc123`. + // A new temporary directory is created within + // the /tmp directory. }); ``` @@ -1701,8 +1703,12 @@ The listener callback gets two arguments `(eventType, filename)`. `eventType` i `'rename'` or `'change'`, and `filename` is the name of the file which triggered the event. -Please note the listener callback is attached to the `'change'` event -fired by [`fs.FSWatcher`][], but they are not the same thing. +Note that on most platforms, `'rename'` is emitted whenever a filename appears +or disappears in the directory. + +Also note the listener callback is attached to the `'change'` event fired by +[`fs.FSWatcher`][], but it is not the same thing as the `'change'` value of +`eventType`. ### Caveats @@ -2209,7 +2215,7 @@ The following constants are meant for use with the [`fs.Stats`][] object's [Readable Stream]: stream.html#stream_class_stream_readable [Writable Stream]: stream.html#stream_class_stream_writable [inode]: https://en.wikipedia.org/wiki/Inode -[FS Constants]: #fs_fs_constants +[FS Constants]: #fs_fs_constants_1 [`inotify`]: http://man7.org/linux/man-pages/man7/inotify.7.html [`kqueue`]: https://www.freebsd.org/cgi/man.cgi?kqueue [`FSEvents`]: https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/FSEvents_ProgGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005289-CH1-SW1 diff --git a/doc/api/globals.md b/doc/api/globals.md index 32acc983ffdd2e..c5d82ddda4225b 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -35,7 +35,7 @@ Example: running `node example.js` from `/Users/mjr` ```js console.log(__dirname); -// /Users/mjr +// Prints: /Users/mjr ``` `__dirname` isn't actually a global but rather local to each module. @@ -68,7 +68,7 @@ Example: running `node example.js` from `/Users/mjr` ```js console.log(__filename); -// /Users/mjr/example.js +// Prints: /Users/mjr/example.js ``` `__filename` isn't actually a global but rather local to each module. diff --git a/doc/api/http.md b/doc/api/http.md index ecdde9b5d0f82e..7d165ea81b9473 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -550,7 +550,7 @@ with a `100 Continue` as appropriate. Handling this event involves calling [`response.writeContinue()`][] if the client should continue to send the request body, or generating an appropriate HTTP -response (e.g., 400 Bad Request) if the client should not continue to send the +response (e.g. 400 Bad Request) if the client should not continue to send the request body. Note that when this event is emitted and handled, the [`'request'`][] event will @@ -853,7 +853,7 @@ This method adds HTTP trailing headers (a header but at the end of the message) to the response. Trailers will **only** be emitted if chunked encoding is used for the -response; if it is not (e.g., if the request was HTTP/1.0), they will +response; if it is not (e.g. if the request was HTTP/1.0), they will be silently discarded. Note that HTTP requires the `Trailer` header to be sent if you intend to @@ -1511,34 +1511,37 @@ added: v0.3.6 * `options` {Object} * `protocol` {String} Protocol to use. Defaults to `'http:'`. - * `host` {String} A domain name or IP address of the server to issue the request to. - Defaults to `'localhost'`. - * `hostname` {String} Alias for `host`. To support [`url.parse()`][] `hostname` is - preferred over `host`. - * `family` {Number} IP address family to use when resolving `host` and `hostname`. - Valid values are `4` or `6`. When unspecified, both IP v4 and v6 will be - used. + * `host` {String} A domain name or IP address of the server to issue the + request to. Defaults to `'localhost'`. + * `hostname` {String} Alias for `host`. To support [`url.parse()`][], + `hostname` is preferred over `host`. + * `family` {Number} IP address family to use when resolving `host` and + `hostname`. Valid values are `4` or `6`. When unspecified, both IP v4 and + v6 will be used. * `port` {Number} Port of remote server. Defaults to 80. * `localAddress` {String} Local interface to bind for network connections. - * `socketPath` {String} Unix Domain Socket (use one of host:port or socketPath). - * `method` {String} A string specifying the HTTP request method. Defaults to `'GET'`. - * `path` {String} Request path. Defaults to `'/'`. Should include query string if any. - E.G. `'/index.html?page=12'`. An exception is thrown when the request path - contains illegal characters. Currently, only spaces are rejected but that - may change in the future. + * `socketPath` {String} Unix Domain Socket (use one of host:port or + socketPath). + * `method` {String} A string specifying the HTTP request method. Defaults to + `'GET'`. + * `path` {String} Request path. Defaults to `'/'`. Should include query + string if any. E.G. `'/index.html?page=12'`. An exception is thrown when + the request path contains illegal characters. Currently, only spaces are + rejected but that may change in the future. * `headers` {Object} An object containing request headers. * `auth` {String} Basic authentication i.e. `'user:password'` to compute an Authorization header. - * `agent` {String} Controls [`Agent`][] behavior. When an Agent is used request will - default to `Connection: keep-alive`. Possible values: + * `agent` {http.Agent|Boolean} Controls [`Agent`][] behavior. When an Agent + is used request will default to `Connection: keep-alive`. Possible values: * `undefined` (default): use [`http.globalAgent`][] for this host and port. * `Agent` object: explicitly use the passed in `Agent`. * `false`: opts out of connection pooling with an Agent, defaults request to `Connection: close`. - * `createConnection` {Function} A function that produces a socket/stream to use for the - request when the `agent` option is not used. This can be used to avoid - creating a custom Agent class just to override the default `createConnection` - function. See [`agent.createConnection()`][] for more details. + * `createConnection` {Function} A function that produces a socket/stream to + use for the request when the `agent` option is not used. This can be used to + avoid creating a custom Agent class just to override the default + `createConnection` function. See [`agent.createConnection()`][] for more + details. * `timeout` {Integer}: A number specifying the socket timeout in milliseconds. This will set the timeout before the socket is connected. * `callback` {Function} diff --git a/doc/api/https.md b/doc/api/https.md index 3af6dedcd914e7..355fd7b133a76d 100644 --- a/doc/api/https.md +++ b/doc/api/https.md @@ -158,11 +158,11 @@ var req = https.request(options, (res) => { process.stdout.write(d); }); }); -req.end(); req.on('error', (e) => { console.error(e); }); +req.end(); ``` The options argument has the following options @@ -192,8 +192,7 @@ The options argument has the following options - `false`: opts out of connection pooling with an Agent, defaults request to `Connection: close`. -The following options from [`tls.connect()`][] can also be specified. However, a -[`globalAgent`][] silently ignores these. +The following options from [`tls.connect()`][] can also be specified: - `pfx`: Certificate, Private key and CA certificates to use for SSL. Default `null`. - `key`: Private key to use for SSL. Default `null`. diff --git a/doc/api/modules.md b/doc/api/modules.md index 66ac1ce22c2bca..8b8a5d65918ecf 100644 --- a/doc/api/modules.md +++ b/doc/api/modules.md @@ -6,16 +6,18 @@ Node.js has a simple module loading system. In Node.js, files and modules are in one-to-one correspondence (each file is treated as a separate module). -As an example, `foo.js` loads the module `circle.js` in the same directory. -The contents of `foo.js`: +As an example, consider a file named `foo.js`: ```js const circle = require('./circle.js'); console.log(`The area of a circle of radius 4 is ${circle.area(4)}`); ``` -The contents of `circle.js`: +On the first line, `foo.js` loads the module `circle.js` that is in the same +directory as `foo.js`. + +Here are the contents of `circle.js`: ```js const PI = Math.PI; @@ -23,7 +25,6 @@ const PI = Math.PI; exports.area = (r) => PI * r * r; exports.circumference = (r) => 2 * PI * r; - ``` The module `circle.js` has exported the functions `area()` and @@ -181,9 +182,9 @@ NODE_MODULES_PATHS(START) 3. let DIRS = [] 4. while I >= 0, a. if PARTS[I] = "node_modules" CONTINUE - c. DIR = path join(PARTS[0 .. I] + "node_modules") - b. DIRS = DIRS + DIR - c. let I = I - 1 + b. DIR = path join(PARTS[0 .. I] + "node_modules") + c. DIRS = DIRS + DIR + d. let I = I - 1 5. return DIRS ``` @@ -529,34 +530,51 @@ const x = require('./x'); console.log(x.a); ``` -#### exports alias +#### exports shortcut -The `exports` variable that is available within a module starts as a reference -to `module.exports`. As with any variable, if you assign a new value to it, it -is no longer bound to the previous value. +The `exports` variable is available within a module's file-level scope, and is +assigned the value of `module.exports` before the module is evaluated. + +It allows a shortcut, so that `module.exports.f = ...` can be written more +succinctly as `exports.f = ...`. However, be aware that like any variable, if a +new value is assigned to `exports`, it is no longer bound to `module.exports`: + +```js +module.exports.hello = true; // Exported from require of module +exports = { hello: false }; // Not exported, only available in the module +``` + +When the `module.exports` property is being completely replaced by a new +object, it is common to also reassign `exports`, for example: + +```js +module.exports = exports = function Constructor() { + // ... etc. +``` To illustrate the behavior, imagine this hypothetical implementation of -`require()`: +`require()`, which is quite similar to what is actually done by `require()`: ```js function require(...) { - // ... + var module = { exports: {} }; ((module, exports) => { - // Your module code here - exports = some_func; // re-assigns exports, exports is no longer - // a shortcut, and nothing is exported. - module.exports = some_func; // makes your module export 0 + // Your module code here. In this example, define a function. + function some_func() {}; + exports = some_func; + // At this point, exports is no longer a shortcut to module.exports, and + // this module will still export an empty default object. + module.exports = some_func; + // At this point, the module will now export some_func, instead of the + // default object. })(module, module.exports); - return module; + return module.exports; } ``` -As a guideline, if the relationship between `exports` and `module.exports` -seems like magic to you, ignore `exports` and only use `module.exports`. - ### module.filename * `id` {String} -* Return: {Object} `module.exports` from the resolved module +* Returns: {Object} `module.exports` from the resolved module The `module.require` method provides a way to load a module as if `require()` was called from the original module. diff --git a/doc/api/net.md b/doc/api/net.md index 394e6fb86ea1e6..1d451ed941285c 100644 --- a/doc/api/net.md +++ b/doc/api/net.md @@ -513,7 +513,7 @@ added: v0.1.90 --> As [`socket.connect(options[, connectListener])`][`socket.connect(options, connectListener)`], -with options either as either `{port: port, host: host}` or `{path: path}`. +with options as either `{port: port, host: host}` or `{path: path}`. ### socket.connecting +* {String} + A string constant defining the operating system-specific end-of-line marker: * `\n` on POSIX @@ -35,6 +37,8 @@ Equivalent to [`process.arch`][]. ## os.constants +* {Object} + Returns an object containing commonly used operating system specific constants for error codes, process signals, and so on. The specific constants currently defined are described in [OS Constants][]. @@ -44,6 +48,8 @@ defined are described in [OS Constants][]. added: v0.3.3 --> +* Returns: {Array} + The `os.cpus()` method returns an array of objects containing information about each CPU/core installed. @@ -161,6 +167,8 @@ all processors are always 0. added: v0.9.4 --> +* Returns: {String} + The `os.endianness()` method returns a string identifying the endianness of the CPU *for which the Node.js binary was compiled*. @@ -174,6 +182,8 @@ Possible values are: added: v0.3.3 --> +* Returns: {Integer} + The `os.freemem()` method returns the amount of free system memory in bytes as an integer. @@ -182,6 +192,8 @@ an integer. added: v2.3.0 --> +* Returns: {String} + The `os.homedir()` method returns the home directory of the current user as a string. @@ -190,6 +202,8 @@ string. added: v0.3.3 --> +* Returns: {String} + The `os.hostname()` method returns the hostname of the operating system as a string. @@ -198,6 +212,8 @@ string. added: v0.3.3 --> +* Returns: {Array} + The `os.loadavg()` method returns an array containing the 1, 5, and 15 minute load averages. @@ -213,6 +229,8 @@ Windows platforms. On Windows, the return value is always `[0, 0, 0]`. added: v0.6.0 --> +* Returns: {Object} + The `os.networkInterfaces()` method returns an object containing only network interfaces that have been assigned a network address. @@ -272,6 +290,8 @@ The properties available on the assigned network address object include: added: v0.5.0 --> +* Returns: {String} + The `os.platform()` method returns a string identifying the operating system platform as set during compile time of Node.js. @@ -296,6 +316,8 @@ to be experimental at this time. added: v0.3.3 --> +* Returns: {String} + The `os.release()` method returns a string identifying the operating system release. @@ -308,6 +330,8 @@ https://en.wikipedia.org/wiki/Uname#Examples for more information. added: v0.9.9 --> +* Returns: {String} + The `os.tmpdir()` method returns a string specifying the operating system's default directory for temporary files. @@ -316,6 +340,8 @@ default directory for temporary files. added: v0.3.3 --> +* Returns: {Integer} + The `os.totalmem()` method returns the total amount of system memory in bytes as an integer. @@ -324,6 +350,8 @@ as an integer. added: v0.3.3 --> +* Returns: {String} + The `os.type()` method returns a string identifying the operating system name as returned by uname(3). For example `'Linux'` on Linux, `'Darwin'` on OS X and `'Windows_NT'` on Windows. @@ -336,6 +364,8 @@ information about the output of running uname(3) on various operating systems. added: v0.3.3 --> +* Returns: {Integer} + The `os.uptime()` method returns the system uptime in number of seconds. *Note*: Within Node.js' internals, this number is represented as a `double`. @@ -351,6 +381,7 @@ added: v6.0.0 * `encoding` {String} Character encoding used to interpret resulting strings. If `encoding` is set to `'buffer'`, the `username`, `shell`, and `homedir` values will be `Buffer` instances. (Default: 'utf8') +* Returns: {Object} The `os.userInfo()` method returns information about the currently effective user -- on POSIX platforms, this is typically a subset of the password file. The diff --git a/doc/api/path.md b/doc/api/path.md index c1983592134430..fdd3063e69bf81 100644 --- a/doc/api/path.md +++ b/doc/api/path.md @@ -24,14 +24,14 @@ On POSIX: ```js path.basename('C:\\temp\\myfile.html'); - // returns 'C:\temp\myfile.html' +// Returns: 'C:\temp\myfile.html' ``` On Windows: ```js path.basename('C:\\temp\\myfile.html'); - // returns 'myfile.html' +// Returns: 'myfile.html' ``` To achieve consistent results when working with Windows file paths on any @@ -41,7 +41,7 @@ On POSIX and Windows: ```js path.win32.basename('C:\\temp\\myfile.html'); - // returns 'myfile.html' +// Returns: 'myfile.html' ``` To achieve consistent results when working with POSIX file paths on any @@ -51,7 +51,7 @@ On POSIX and Windows: ```js path.posix.basename('/tmp/myfile.html'); - // returns 'myfile.html' +// Returns: 'myfile.html' ``` ## path.basename(path[, ext]) @@ -61,6 +61,7 @@ added: v0.1.25 * `path` {String} * `ext` {String} An optional file extension +* Returns: {String} The `path.basename()` methods returns the last portion of a `path`, similar to the Unix `basename` command. @@ -69,10 +70,10 @@ For example: ```js path.basename('/foo/bar/baz/asdf/quux.html') - // returns 'quux.html' +// Returns: 'quux.html' path.basename('/foo/bar/baz/asdf/quux.html', '.html') - // returns 'quux' +// Returns: 'quux' ``` A [`TypeError`][] is thrown if `path` is not a string or if `ext` is given @@ -83,6 +84,8 @@ and is not a string. added: v0.9.3 --> +* {String} + Provides the platform-specific path delimiter: * `;` for Windows @@ -92,20 +95,20 @@ For example, on POSIX: ```js console.log(process.env.PATH) -// '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin' +// Prints: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin' process.env.PATH.split(path.delimiter) -// returns ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin'] +// Returns: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin'] ``` On Windows: ```js console.log(process.env.PATH) -// 'C:\Windows\system32;C:\Windows;C:\Program Files\node\' +// Prints: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\' process.env.PATH.split(path.delimiter) -// returns ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\'] +// Returns: ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\'] ``` ## path.dirname(path) @@ -114,6 +117,7 @@ added: v0.1.16 --> * `path` {String} +* Returns: {String} The `path.dirname()` method returns the directory name of a `path`, similar to the Unix `dirname` command. @@ -122,7 +126,7 @@ For example: ```js path.dirname('/foo/bar/baz/asdf/quux') -// returns '/foo/bar/baz/asdf' +// Returns: '/foo/bar/baz/asdf' ``` A [`TypeError`][] is thrown if `path` is not a string. @@ -133,6 +137,7 @@ added: v0.1.25 --> * `path` {String} +* Returns: {String} The `path.extname()` method returns the extension of the `path`, from the last occurrence of the `.` (period) character to end of string in the last portion of @@ -144,19 +149,19 @@ For example: ```js path.extname('index.html') -// returns '.html' +// Returns: '.html' path.extname('index.coffee.md') -// returns '.md' +// Returns: '.md' path.extname('index.') -// returns '.' +// Returns: '.' path.extname('index') -// returns '' +// Returns: '' path.extname('.index') -// returns '' +// Returns: '' ``` A [`TypeError`][] is thrown if `path` is not a string. @@ -168,10 +173,11 @@ added: v0.11.15 * `pathObject` {Object} * `dir` {String} - * `root` {String} + * `root` {String} * `base` {String} * `name` {String} * `ext` {String} +* Returns: {String} The `path.format()` method returns a path string from an object. This is the opposite of [`path.parse()`][]. @@ -199,7 +205,7 @@ path.format({ dir: '/home/user/dir', base: 'file.txt' }); -// returns '/home/user/dir/file.txt' +// Returns: '/home/user/dir/file.txt' // `root` will be used if `dir` is not specified. // If only `root` is provided or `dir` is equal to `root` then the @@ -208,7 +214,7 @@ path.format({ root: '/', base: 'file.txt' }); -// returns '/file.txt' +// Returns: '/file.txt' // `name` + `ext` will be used if `base` is not specified. path.format({ @@ -216,13 +222,13 @@ path.format({ name: 'file', ext: '.txt' }); -// returns '/file.txt' +// Returns: '/file.txt' // `base` will be returned if `dir` or `root` are not provided. path.format({ base: 'file.txt' }); -// returns 'file.txt' +// Returns: 'file.txt' ``` On Windows: @@ -235,7 +241,7 @@ path.format({ ext : ".txt", name : "file" }); -// returns 'C:\\path\\dir\\file.txt' +// Returns: 'C:\\path\\dir\\file.txt' ``` ## path.isAbsolute(path) @@ -244,6 +250,7 @@ added: v0.11.2 --> * `path` {String} +* Returns: {Boolean} The `path.isAbsolute()` method determines if `path` is an absolute path. @@ -278,6 +285,7 @@ added: v0.1.16 --> * `...paths` {String} A sequence of path segments +* Returns: {String} The `path.join()` method joins all given `path` segments together using the platform specific separator as a delimiter, then normalizes the resulting path. @@ -290,7 +298,7 @@ For example: ```js path.join('/foo', 'bar', 'baz/asdf', 'quux', '..') -// returns '/foo/bar/baz/asdf' +// Returns: '/foo/bar/baz/asdf' path.join('foo', {}, 'bar') // throws TypeError: Arguments to path.join must be strings @@ -304,6 +312,7 @@ added: v0.1.23 --> * `path` {String} +* Returns: {String} The `path.normalize()` method normalizes the given `path`, resolving `'..'` and `'.'` segments. @@ -319,14 +328,14 @@ For example on POSIX: ```js path.normalize('/foo/bar//baz/asdf/quux/..') -// returns '/foo/bar/baz/asdf' +// Returns: '/foo/bar/baz/asdf' ``` On Windows: ```js path.normalize('C:\\temp\\\\foo\\bar\\..\\'); -// returns 'C:\\temp\\foo\\' +// Returns: 'C:\\temp\\foo\\' ``` A [`TypeError`][] is thrown if `path` is not a string. @@ -337,6 +346,7 @@ added: v0.11.15 --> * `path` {String} +* Returns: {Object} The `path.parse()` method returns an object whose properties represent significant elements of the `path`. @@ -353,7 +363,7 @@ For example on POSIX: ```js path.parse('/home/user/dir/file.txt') -// returns +// Returns: // { // root : "/", // dir : "/home/user/dir", @@ -377,7 +387,7 @@ On Windows: ```js path.parse('C:\\path\\dir\\file.txt') -// returns +// Returns: // { // root : "C:\\", // dir : "C:\\path\\dir", @@ -404,6 +414,8 @@ A [`TypeError`][] is thrown if `path` is not a string. added: v0.11.15 --> +* {Object} + The `path.posix` property provides access to POSIX specific implementations of the `path` methods. @@ -414,6 +426,7 @@ added: v0.5.0 * `from` {String} * `to` {String} +* Returns: {String} The `path.relative()` method returns the relative path from `from` to `to`. If `from` and `to` each resolve to the same path (after calling `path.resolve()` @@ -426,14 +439,14 @@ For example on POSIX: ```js path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb') -// returns '../../impl/bbb' +// Returns: '../../impl/bbb' ``` On Windows: ```js path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb') -// returns '..\\..\\impl\\bbb' +// Returns: '..\\..\\impl\\bbb' ``` A [`TypeError`][] is thrown if neither `from` nor `to` is a string. @@ -444,6 +457,7 @@ added: v0.3.4 --> * `...paths` {String} A sequence of paths or path segments +* Returns: {String} The `path.resolve()` method resolves a sequence of paths or path segments into an absolute path. @@ -468,10 +482,10 @@ For example: ```js path.resolve('/foo/bar', './baz') -// returns '/foo/bar/baz' +// Returns: '/foo/bar/baz' path.resolve('/foo/bar', '/tmp/file/') -// returns '/tmp/file' +// Returns: '/tmp/file' path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif') // if the current working directory is /home/myself/node, @@ -485,6 +499,8 @@ A [`TypeError`][] is thrown if any of the arguments is not a string. added: v0.7.9 --> +* {String} + Provides the platform-specific path segment separator: * `\` on Windows @@ -494,14 +510,14 @@ For example on POSIX: ```js 'foo/bar/baz'.split(path.sep) -// returns ['foo', 'bar', 'baz'] +// Returns: ['foo', 'bar', 'baz'] ``` On Windows: ```js 'foo\\bar\\baz'.split(path.sep) -// returns ['foo', 'bar', 'baz'] +// Returns: ['foo', 'bar', 'baz'] ``` ## path.win32 @@ -509,6 +525,8 @@ On Windows: added: v0.11.15 --> +* {Object} + The `path.win32` property provides access to Windows-specific implementations of the `path` methods. diff --git a/doc/api/process.md b/doc/api/process.md index 89443daedab1cf..7b6ed03edfc79e 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -447,6 +447,8 @@ generate a core file. added: v0.5.0 --> +* {String} + The `process.arch` property returns a String identifying the processor architecture that the Node.js process is currently running on. For instance `'arm'`, `'ia32'`, or `'x64'`. @@ -460,6 +462,8 @@ console.log(`This processor architecture is ${process.arch}`); added: v0.1.27 --> +* {Array} + The `process.argv` property returns an array containing the command line arguments passed when the Node.js process was launched. The first element will be [`process.execPath`]. See `process.argv0` if access to the original value of @@ -497,6 +501,8 @@ Would generate the output: added: 6.4.0 --> +* {String} + The `process.argv0` property stores a read-only copy of the original value of `argv[0]` passed when Node.js starts. @@ -535,6 +541,8 @@ catch (err) { added: v0.7.7 --> +* {Object} + The `process.config` property returns an Object containing the JavaScript representation of the configure options used to compile the current Node.js executable. This is the same as the `config.gypi` file that was produced when @@ -578,6 +586,8 @@ replace the value of `process.config`. added: v0.7.2 --> +* {Boolean} + If the Node.js process is spawned with an IPC channel (see the [Child Process][] and [Cluster][] documentation), the `process.connected` property will return `true` so long as the IPC channel is connected and will return `false` after @@ -593,6 +603,9 @@ added: v6.1.0 * `previousValue` {Object} A previous return value from calling `process.cpuUsage()` +* Returns: {Object} + * `user` {Integer} + * `system` {Integer} The `process.cpuUsage()` method returns the user and system CPU time usage of the current process, in an object with properties `user` and `system`, whose @@ -620,6 +633,8 @@ console.log(process.cpuUsage(startUsage)); added: v0.1.8 --> +* Returns: {String} + The `process.cwd()` method returns the current working directory of the Node.js process. @@ -648,6 +663,8 @@ If the Node.js process was not spawned with an IPC channel, added: v0.1.27 --> +* {Object} + The `process.env` property returns an object containing the user environment. See environ(7). @@ -737,13 +754,13 @@ specific process warnings. These can be listened for by adding a handler to the ```js // Emit a warning using a string... process.emitWarning('Something happened!'); - // Emits: (node: 56338) Warning: Something happened! +// Emits: (node: 56338) Warning: Something happened! ``` ```js // Emit a warning using a string and a name... process.emitWarning('Something Happened!', 'CustomWarning'); - // Emits: (node:56338) CustomWarning: Something Happened! +// Emits: (node:56338) CustomWarning: Something Happened! ``` In each of the previous examples, an `Error` object is generated internally by @@ -768,7 +785,7 @@ const myWarning = new Error('Warning! Something happened!'); myWarning.name = 'CustomWarning'; process.emitWarning(myWarning); - // Emits: (node:56338) CustomWarning: Warning! Something Happened! +// Emits: (node:56338) CustomWarning: Warning! Something Happened! ``` A `TypeError` is thrown if `warning` is anything other than a string or `Error` @@ -802,9 +819,9 @@ function emitMyWarning() { } } emitMyWarning(); - // Emits: (node: 56339) Warning: Only warn once! +// Emits: (node: 56339) Warning: Only warn once! emitMyWarning(); - // Emits nothing +// Emits nothing ``` ## process.execArgv @@ -812,6 +829,8 @@ emitMyWarning(); added: v0.7.7 --> +* {Object} + The `process.execArgv` property returns the set of Node.js-specific command-line options passed when the Node.js process was launched. These options do not appear in the array returned by the [`process.argv`][] property, and do not @@ -842,13 +861,15 @@ And `process.argv`: added: v0.1.100 --> +* {String} + The `process.execPath` property returns the absolute pathname of the executable that started the Node.js process. For example: -```sh -/usr/local/bin/node +```js +'/usr/local/bin/node' ``` @@ -878,7 +899,7 @@ pending* that have not yet completed fully, *including* I/O operations to `process.stdout` and `process.stderr`. In most situations, it is not actually necessary to call `process.exit()` -explicitly. The Node.js process will exit on it's own *if there is no additional +explicitly. The Node.js process will exit on its own *if there is no additional work pending* in the event loop. The `process.exitCode` property can be set to tell the process which exit code to use when the process exits gracefully. @@ -921,6 +942,8 @@ is safer than calling `process.exit()`. added: v0.11.8 --> +* {Integer} + A number which will be the process exit code, when the process either exits gracefully, or is exited via [`process.exit()`][] without specifying a code. @@ -951,6 +974,8 @@ or Android) added: v2.0.0 --> +* Returns: {Object} + The `process.geteuid()` method returns the numerical effective user identity of the process. (See geteuid(2).) @@ -968,6 +993,8 @@ Android) added: v0.1.31 --> +* Returns: {Object} + The `process.getgid()` method returns the numerical group identity of the process. (See getgid(2).) @@ -986,6 +1013,8 @@ Android) added: v0.9.4 --> +* Returns: {Array} + The `process.getgroups()` method returns an array with the supplementary group IDs. POSIX leaves it unspecified if the effective group ID is included but Node.js ensures it always is. @@ -998,6 +1027,8 @@ Android) added: v0.1.28 --> +* Returns: {Integer} + The `process.getuid()` method returns the numeric user identity of the process. (See getuid(2).) @@ -1119,7 +1150,7 @@ added: v0.1.17 The `process.mainModule` property provides an alternative way of retrieving [`require.main`][]. The difference is that if the main module changes at runtime, [`require.main`][] may still refer to the original main module in -modules that were required before the change occurred. Generally it's +modules that were required before the change occurred. Generally, it's safe to assume that the two refer to the same module. As with [`require.main`][], `process.mainModule` will be `undefined` if there @@ -1130,6 +1161,11 @@ is no entry script. added: v0.1.16 --> +* Returns: {Object} + * `rss` {Integer} + * `heapTotal` {Integer} + * `heapUsed` {Integer} + The `process.memoryUsage()` method returns an object describing the memory usage of the Node.js process measured in bytes. @@ -1163,7 +1199,7 @@ The `process.nextTick()` method adds the `callback` to the "next tick queue". Once the current turn of the event loop turn runs to completion, all callbacks currently in the next tick queue will be called. -This is *not* a simple alias to [`setTimeout(fn, 0)`][], it's much more +This is *not* a simple alias to [`setTimeout(fn, 0)`][]. It is much more efficient. It runs before any additional I/O events (including timers) fire in subsequent ticks of the event loop. @@ -1247,6 +1283,8 @@ happening, just like a `while(true);` loop. added: v0.1.15 --> +* {Integer} + The `process.pid` property returns the PID of the process. ```js @@ -1258,6 +1296,8 @@ console.log(`This process is pid ${process.pid}`); added: v0.1.16 --> +* {String} + The `process.platform` property returns a string identifying the operating system platform on which the Node.js process is running. For instance `'darwin'`, `'freebsd'`, `'linux'`, `'sunos'` or `'win32'` @@ -1323,7 +1363,7 @@ added: v0.5.9 * `sendHandle` {Handle object} * `options` {Object} * `callback` {Function} -* Return: {Boolean} +* Returns: {Boolean} If Node.js is spawned with an IPC channel, the `process.send()` method can be used to send messages to the parent process. Messages will be received as a @@ -1465,6 +1505,8 @@ Android) ## process.stderr +* {Stream} + The `process.stderr` property returns a [Writable][] stream equivalent to or associated with `stderr` (fd `2`). @@ -1485,6 +1527,8 @@ on `process.stderr`, `process.stdout`, or `process.stdin`: ## process.stdin +* {Stream} + The `process.stdin` property returns a [Readable][] stream equivalent to or associated with `stdin` (fd `0`). @@ -1515,6 +1559,8 @@ must call `process.stdin.resume()` to read from it. Note also that calling ## process.stdout +* {Stream} + The `process.stdout` property returns a [Writable][] stream equivalent to or associated with `stdout` (fd `1`). @@ -1570,6 +1616,8 @@ See the [TTY][] documentation for more information. added: v0.1.104 --> +* {String} + The `process.title` property returns the current process title (i.e. returns the current value of `ps`). Assigning a new value to `process.title` modifies the current value of `ps`. @@ -1609,6 +1657,8 @@ console.log( added: v0.5.0 --> +* Returns: {Number} + The `process.uptime()` method returns the number of seconds the current Node.js process has been running. @@ -1617,6 +1667,8 @@ process has been running. added: v0.1.3 --> +* {String} + The `process.version` property returns the Node.js version string. ```js @@ -1628,8 +1680,12 @@ console.log(`Version: ${process.version}`); added: v0.2.0 --> +* {Object} + The `process.versions` property returns an object listing the version strings of -Node.js and its dependencies. +Node.js and its dependencies. In addition, `process.versions.modules` indicates +the current ABI version, which is increased whenever a C++ API changes. Node.js +will refuse to load native modules built for an older `modules` value. ```js console.log(process.versions); diff --git a/doc/api/readline.md b/doc/api/readline.md index 36c7e4502274bd..32fad5732c70df 100644 --- a/doc/api/readline.md +++ b/doc/api/readline.md @@ -21,7 +21,7 @@ const rl = readline.createInterface({ rl.question('What do you think of Node.js? ', (answer) => { // TODO: Log the answer in a database - console.log('Thank you for your valuable feedback:', answer); + console.log(`Thank you for your valuable feedback: ${answer}`); rl.close(); }); @@ -124,7 +124,7 @@ added: v0.7.5 The `'SIGCONT'` event is emitted when a Node.js process previously moved into the background using `-Z` (i.e. `SIGTSTP`) is then brought back to the -foreground using `fg(1)`. +foreground using fg(1). If the `input` stream was paused *before* the `SIGTSTP` request, this event will not be emitted. @@ -174,7 +174,7 @@ input, typically known as `SIGTSTP`. If there are no `SIGTSTP` event listeners registered when the `input` stream receives a `SIGTSTP`, the Node.js process will be sent to the background. -When the program is resumed using `fg(1)`, the `'pause'` and `SIGCONT` events +When the program is resumed using fg(1), the `'pause'` and `SIGCONT` events will be emitted. These can be used to resume the `input` stream. The `'pause'` and `'SIGCONT'` events will not be emitted if the `input` was @@ -403,8 +403,8 @@ For instance: `[[substr1, substr2, ...], originalsubstring]`. ```js function completer(line) { - var completions = '.help .error .exit .quit .q'.split(' '); - var hits = completions.filter((c) => { return c.indexOf(line) == 0 }); + const completions = '.help .error .exit .quit .q'.split(' '); + const hits = completions.filter((c) => { return c.indexOf(line) === 0 }); // show all completions if none found return [hits.length ? hits : completions, line]; } @@ -512,7 +512,7 @@ const rl = readline.createInterface({ }); rl.on('line', (line) => { - console.log('Line from file:', line); + console.log(`Line from file: ${line}`); }); ``` diff --git a/doc/api/repl.md b/doc/api/repl.md index b18488f4218174..b78a13544add4a 100644 --- a/doc/api/repl.md +++ b/doc/api/repl.md @@ -3,7 +3,7 @@ > Stability: 2 - Stable The `repl` module provides a Read-Eval-Print-Loop (REPL) implementation that -is available both as a standalone program or includable in other applications. +is available both as a standalone program or includible in other applications. It can be accessed using: ```js @@ -535,7 +535,7 @@ possible to connect to a long-running Node.js process without restarting it. For an example of running a "full-featured" (`terminal`) REPL over a `net.Server` and `net.Socket` instance, see: https://gist.github.com/2209310 -For an example of running a REPL instance over `curl(1)`, +For an example of running a REPL instance over curl(1), see: https://gist.github.com/2053342 [stream]: stream.html diff --git a/doc/api/stream.md b/doc/api/stream.md index ee378c9f66425b..6217e8e6dc02d2 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -381,7 +381,7 @@ added: v0.11.15 --> * `encoding` {String} The new default encoding -* Return: `this` +* Returns: `this` The `writable.setDefaultEncoding()` method sets the default `encoding` for a [Writable][] stream. @@ -689,7 +689,7 @@ preferred over the use of the `'readable'` event. added: v0.11.14 --> -* Return: {Boolean} +* Returns: {Boolean} The `readable.isPaused()` method returns the current operating state of the Readable. This is used primarily by the mechanism that underlies the @@ -711,7 +711,7 @@ readable.isPaused() // === false added: v0.9.4 --> -* Return: `this` +* Returns: `this` The `readable.pause()` method will cause a stream in flowing mode to stop emitting [`'data'`][] events, switching out of flowing mode. Any data that @@ -843,7 +843,7 @@ event has been emitted will return `null`. No runtime error will be raised. added: v0.9.4 --> -* Return: `this` +* Returns: `this` The `readable.resume()` method causes an explicitly paused Readable stream to resume emitting [`'data'`][] events, switching the stream into flowing mode. @@ -866,7 +866,7 @@ added: v0.9.4 --> * `encoding` {String} The encoding to use. -* Return: `this` +* Returns: `this` The `readable.setEncoding()` method sets the default character encoding for data read from the Readable stream. @@ -1696,11 +1696,11 @@ myTransform.setEncoding('ascii'); myTransform.on('data', (chunk) => console.log(chunk)); myTransform.write(1); - // Prints: 01 +// Prints: 01 myTransform.write(10); - // Prints: 0a +// Prints: 0a myTransform.write(100); - // Prints: 64 +// Prints: 64 ``` ### Implementing a Transform Stream diff --git a/doc/api/tls.md b/doc/api/tls.md index 6180d91b667e67..488337a0764e4c 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -343,7 +343,7 @@ added: v0.5.3 `cert`, `ca`, etc). The `server.addContext()` method adds a secure context that will be used if -the client request's SNS hostname matches the supplied `hostname` (or wildcard). +the client request's SNI hostname matches the supplied `hostname` (or wildcard). ### server.address() -The `v8.setFlagsFromString()` method can be used to programmatically set +The `v8.setFlagsFromString()` method can be used to programmatically set V8 command line flags. This method should be used with care. Changing settings after the VM has started may result in unpredictable behavior, including crashes and data loss; or it may simply do nothing. diff --git a/doc/api_assets/style.css b/doc/api_assets/style.css index 1e82464cc93b79..c187079a26f98e 100644 --- a/doc/api_assets/style.css +++ b/doc/api_assets/style.css @@ -274,6 +274,7 @@ pre { pre > code { font-size: .8em; + padding: 0; } pre + h3 { diff --git a/doc/changelogs/CHANGELOG_V010.md b/doc/changelogs/CHANGELOG_V010.md index a81d589d7c55ac..5d608325523316 100644 --- a/doc/changelogs/CHANGELOG_V010.md +++ b/doc/changelogs/CHANGELOG_V010.md @@ -66,7 +66,7 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) -**Note:** Node.js v0.10 is covered by the +**Note:** Node.js v0.10 is covered by the [Node.js Long Term Support Plan](https://github.com/nodejs/LTS) and will be maintained until October 2016. @@ -294,11 +294,11 @@ https://github.com/nodejs/node/commit/8d045a30e95602b443eb259a5021d33feb4df079 * child_process: properly support optional args (cjihrig) * crypto: Disable autonegotiation for SSLv2/3 by default (Fedor Indutny, Timothy J Fontaine, Alexis Campailla) - + This is a behavior change, by default we will not allow the negotiation to SSLv2 or SSLv3. If you want this behavior, run Node.js with either `--enable-ssl2` or `--enable-ssl3` respectively. - + This does not change the behavior for users specifically requesting `SSLv2_method` or `SSLv3_method`. While this behavior is not advised, it is assumed you know what you're doing since you're specifically asking to use diff --git a/doc/changelogs/CHANGELOG_V012.md b/doc/changelogs/CHANGELOG_V012.md index 42aff48f95feb4..db7eece83b86ba 100644 --- a/doc/changelogs/CHANGELOG_V012.md +++ b/doc/changelogs/CHANGELOG_V012.md @@ -33,7 +33,7 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) -**Note:** Node.js v0.12 is covered by the +**Note:** Node.js v0.12 is covered by the [Node.js Long Term Support Plan](https://github.com/nodejs/LTS) and will be maintained until December 31st, 2016. diff --git a/doc/changelogs/CHANGELOG_V6.md b/doc/changelogs/CHANGELOG_V6.md index ba3ea5e610f823..dbcb2cc05b2921 100644 --- a/doc/changelogs/CHANGELOG_V6.md +++ b/doc/changelogs/CHANGELOG_V6.md @@ -7,9 +7,10 @@ -6.9.2
    +6.9.3
    +6.9.2
    6.9.1
    6.9.0
    6.8.1
    @@ -41,6 +42,342 @@ [Node.js Long Term Support Plan](https://github.com/nodejs/LTS) and will be supported actively until April 2018 and maintained until April 2019. + +## 2017-01-03, Version 6.9.3 'Boron' (LTS), @MylesBorins + +This LTS release comes with 312 commits. This includes 229 that are test related, +62 that are docs related, 17 which are build / tools related, and 4 commits which +are updates to dependencies. + +### Notable Changes + +* **build**: shared library support is now working for AIX builds (Stewart Addison) [#9675](https://github.com/nodejs/node/pull/9675) +* **deps**: + - *npm*: upgrade npm to 3.10.10 (Rebecca Turner) [#9847](https://github.com/nodejs/node/pull/9847) + - *V8*: Destructuring of arrow function arguments via computed property no longer throws (Michaël Zasso) [#10386](https://github.com/nodejs/node/pull/10386) +* **inspector**: /json/version returns object, not an object wrapped in an array (Ben Noordhuis) [#9762](https://github.com/nodejs/node/pull/9762) +* **module**: using --debug-brk and --eval together now works as expected (Kelvin Jin) [#8876](https://github.com/nodejs/node/pull/8876) +* **process**: improve performance of nextTick up to 20% (Evan Lucas) [#8932](https://github.com/nodejs/node/pull/8932) +* **repl**: + - the division operator will no longer be accidentally parsed as regex (Teddy Katz) [#10103](https://github.com/nodejs/node/pull/10103) + - improved support for generator functions (Teddy Katz) [#9852](https://github.com/nodejs/node/pull/9852) +* **timers**: Re canceling a cancelled timers will no longer throw (Jeremiah Senkpiel) [#9685](https://github.com/nodejs/node/pull/9685) + +### Commits + +* [[`98b2eae328`](https://github.com/nodejs/node/commit/98b2eae328)] - **benchmark**: split timers benchmark and refactor (Rich Trott) [#9497](https://github.com/nodejs/node/pull/9497) +* [[`c32c86b3c3`](https://github.com/nodejs/node/commit/c32c86b3c3)] - **benchmark**: reformat code for clarity (Rich Trott) [#9790](https://github.com/nodejs/node/pull/9790) +* [[`a8909b833e`](https://github.com/nodejs/node/commit/a8909b833e)] - **benchmark,lib,test,tools**: remove unneeded . escape (Rich Trott) [#9449](https://github.com/nodejs/node/pull/9449) +* [[`a9d528be5b`](https://github.com/nodejs/node/commit/a9d528be5b)] - **buffer**: fix range checks for slice() (Trevor Norris) [#9174](https://github.com/nodejs/node/pull/9174) +* [[`868e5e624c`](https://github.com/nodejs/node/commit/868e5e624c)] - **build**: remove node.dsYM directory (Michaël Zasso) [#10463](https://github.com/nodejs/node/pull/10463) +* [[`66687c0906`](https://github.com/nodejs/node/commit/66687c0906)] - **build**: prioritise --shared-X-Y over pkg-config (Rod Vagg) [#9368](https://github.com/nodejs/node/pull/9368) +* [[`9703bf14ef`](https://github.com/nodejs/node/commit/9703bf14ef)] - **build**: add MAKEFLAGS="-j1" to node-gyp (Daniel Bevenius) [#9450](https://github.com/nodejs/node/pull/9450) +* [[`18b8e7bd8b`](https://github.com/nodejs/node/commit/18b8e7bd8b)] - **build**: Make configure file parseable on python3 (kalrover) [#9657](https://github.com/nodejs/node/pull/9657) +* [[`12993b298a`](https://github.com/nodejs/node/commit/12993b298a)] - **build**: default to ppc64 on AIX (Gibson Fahnestock) [#9645](https://github.com/nodejs/node/pull/9645) +* [[`5c0d82bae6`](https://github.com/nodejs/node/commit/5c0d82bae6)] - **build**: Add option to compile for coverage reports (Wayne Andrews) [#9463](https://github.com/nodejs/node/pull/9463) +* [[`168241a98a`](https://github.com/nodejs/node/commit/168241a98a)] - **build**: add shared library support to AIX build (Stewart Addison) [#9675](https://github.com/nodejs/node/pull/9675) +* [[`9a526cb8fe`](https://github.com/nodejs/node/commit/9a526cb8fe)] - **child_process**: remove unreachable code (cjihrig) [#9307](https://github.com/nodejs/node/pull/9307) +* [[`166eea7534`](https://github.com/nodejs/node/commit/166eea7534)] - **constants**: errors -> errno (Bryan English) [#9349](https://github.com/nodejs/node/pull/9349) +* [[`3c09579eee`](https://github.com/nodejs/node/commit/3c09579eee)] - **crypto**: use SSL_get_servername. (Adam Langley) [#9347](https://github.com/nodejs/node/pull/9347) +* [[`106e6cdebd`](https://github.com/nodejs/node/commit/106e6cdebd)] - **debugger**: refactor _debugger.js (Rich Trott) [#9860](https://github.com/nodejs/node/pull/9860) +* [[`e60cafdb3b`](https://github.com/nodejs/node/commit/e60cafdb3b)] - **deps**: backport f795a79 from upstream V8 (Michaël Zasso) [#10386](https://github.com/nodejs/node/pull/10386) +* [[`284d3cc3b7`](https://github.com/nodejs/node/commit/284d3cc3b7)] - **deps**: upgrade npm to 3.10.10 (Rebecca Turner) [#9847](https://github.com/nodejs/node/pull/9847) +* [[`ee09828622`](https://github.com/nodejs/node/commit/ee09828622)] - **deps**: backport 2bd7464 from upstream V8 (Cristian Cavalli) [#10169](https://github.com/nodejs/node/pull/10169) +* [[`10222128e9`](https://github.com/nodejs/node/commit/10222128e9)] - **deps**: backport GYP fix to fix AIX shared suffix (Stewart Addison) [#9675](https://github.com/nodejs/node/pull/9675) +* [[`1684d6d65e`](https://github.com/nodejs/node/commit/1684d6d65e)] - **doc**: update CONTRIBUTING.MD with link to V8 guide (sarahmeyer) [#10070](https://github.com/nodejs/node/pull/10070) +* [[`f9d0cce9ae`](https://github.com/nodejs/node/commit/f9d0cce9ae)] - **doc**: update process.versions.modules documentation (Kevin Zurawel) [#9901](https://github.com/nodejs/node/pull/9901) +* [[`acebfedf80`](https://github.com/nodejs/node/commit/acebfedf80)] - **doc**: add return types and props types to OS module (imatvieiev) [#9648](https://github.com/nodejs/node/pull/9648) +* [[`241470cfbe`](https://github.com/nodejs/node/commit/241470cfbe)] - **doc**: small improvements in readline code examples (Vse Mozhet Byt) [#9628](https://github.com/nodejs/node/pull/9628) +* [[`d33520cdd2`](https://github.com/nodejs/node/commit/d33520cdd2)] - **doc**: consistent 'Returns:' (Roman Reiss) [#9554](https://github.com/nodejs/node/pull/9554) +* [[`c87ccfa3c3`](https://github.com/nodejs/node/commit/c87ccfa3c3)] - **doc**: added types to path docs (imatvieiev) [#9514](https://github.com/nodejs/node/pull/9514) +* [[`d2a1a670e1`](https://github.com/nodejs/node/commit/d2a1a670e1)] - **doc**: add process api data types to documentation (imatvieiev) [#9505](https://github.com/nodejs/node/pull/9505) +* [[`912cae626b`](https://github.com/nodejs/node/commit/912cae626b)] - **doc**: clarify eventType in fs.watch (Nikolai Vavilov) [#9318](https://github.com/nodejs/node/pull/9318) +* [[`30f7802b78`](https://github.com/nodejs/node/commit/30f7802b78)] - **doc**: clarify fs.link and fs.linkSync arguments (Kyle E. Mitchell) [#9145](https://github.com/nodejs/node/pull/9145) +* [[`c55fb737c5`](https://github.com/nodejs/node/commit/c55fb737c5)] - **doc**: adding missing - in README (Italo A. Casas) [#10170](https://github.com/nodejs/node/pull/10170) +* [[`7f4cef1170`](https://github.com/nodejs/node/commit/7f4cef1170)] - **doc**: removing extra space in README (Italo A. Casas) [#10168](https://github.com/nodejs/node/pull/10168) +* [[`e0dbb453e4`](https://github.com/nodejs/node/commit/e0dbb453e4)] - **doc**: remove repeated info onboarding.md (BethGriggs) [#9635](https://github.com/nodejs/node/pull/9635) +* [[`fa7d378335`](https://github.com/nodejs/node/commit/fa7d378335)] - **doc**: correct it's vs. its usage (Rich Trott) [#10098](https://github.com/nodejs/node/pull/10098) +* [[`176f680432`](https://github.com/nodejs/node/commit/176f680432)] - **doc**: add people to cc for async_wrap (Anna Henningsen) [#9471](https://github.com/nodejs/node/pull/9471) +* [[`b77d3d86f7`](https://github.com/nodejs/node/commit/b77d3d86f7)] - **doc**: add link to `net.Server` in tls.md (Devon Rifkin) [#10109](https://github.com/nodejs/node/pull/10109) +* [[`b167727dcc`](https://github.com/nodejs/node/commit/b167727dcc)] - **doc**: fix typo for `decipher.final`. (iamchenxin) [#10086](https://github.com/nodejs/node/pull/10086) +* [[`adb30676b2`](https://github.com/nodejs/node/commit/adb30676b2)] - **doc**: suggest Buffer.alloc instead of Buffer#fill (Teddy Katz) [#10000](https://github.com/nodejs/node/pull/10000) +* [[`36b45c1112`](https://github.com/nodejs/node/commit/36b45c1112)] - **doc**: clarify fs.createReadStream options (Wes Tyler) [#10078](https://github.com/nodejs/node/pull/10078) +* [[`fc6c666d49`](https://github.com/nodejs/node/commit/fc6c666d49)] - **doc**: var => const in js code examples of addons.md (Vse Mozhet Byt) [#10092](https://github.com/nodejs/node/pull/10092) +* [[`0e46f7e745`](https://github.com/nodejs/node/commit/0e46f7e745)] - **doc**: rename writing_tests.md to writing-tests.md (Safia Abdalla) [#9867](https://github.com/nodejs/node/pull/9867) +* [[`99ed5ed5f4`](https://github.com/nodejs/node/commit/99ed5ed5f4)] - **doc**: it’s -> its in api/child_process.md (Devon Rifkin) [#10090](https://github.com/nodejs/node/pull/10090) +* [[`d068fe5ab6`](https://github.com/nodejs/node/commit/d068fe5ab6)] - **doc**: update Collaborators list in README (Rich Trott) [#9846](https://github.com/nodejs/node/pull/9846) +* [[`e5ab0e8670`](https://github.com/nodejs/node/commit/e5ab0e8670)] - **doc**: remove minor contradiction in debugger doc (Rich Trott) [#9832](https://github.com/nodejs/node/pull/9832) +* [[`b74d8cdbdb`](https://github.com/nodejs/node/commit/b74d8cdbdb)] - **doc**: clarify introductory module material (Rich Trott) [#9816](https://github.com/nodejs/node/pull/9816) +* [[`ba077a424b`](https://github.com/nodejs/node/commit/ba077a424b)] - **doc**: improve description of module `exports` (Sam Roberts) [#9622](https://github.com/nodejs/node/pull/9622) +* [[`5396408690`](https://github.com/nodejs/node/commit/5396408690)] - **doc**: fix crypto Verify cut-n-paste from Sign (子丶言) [#9796](https://github.com/nodejs/node/pull/9796) +* [[`9c3f4d63cc`](https://github.com/nodejs/node/commit/9c3f4d63cc)] - **doc**: minor fixes event-loop-timers-and-nexttick.md (Dan Koster) [#9126](https://github.com/nodejs/node/pull/9126) +* [[`87f008393e`](https://github.com/nodejs/node/commit/87f008393e)] - **doc**: changed order of invocations in https.request() example. (atrioom) [#9614](https://github.com/nodejs/node/pull/9614) +* [[`7051ea8606`](https://github.com/nodejs/node/commit/7051ea8606)] - **doc**: fix crypto "decipher.setAAD()" typo (子丶言) [#9782](https://github.com/nodejs/node/pull/9782) +* [[`4b7200ef7b`](https://github.com/nodejs/node/commit/4b7200ef7b)] - **doc**: clarify slashes-appending in url module (Rich Trott) [#9731](https://github.com/nodejs/node/pull/9731) +* [[`1c9817cbeb`](https://github.com/nodejs/node/commit/1c9817cbeb)] - **doc**: "util" is not needed to extend ES6 classes (Adam Brunner) [#9737](https://github.com/nodejs/node/pull/9737) +* [[`4334d6a85a`](https://github.com/nodejs/node/commit/4334d6a85a)] - **doc**: fix typo in assert code example (Vse Mozhet Byt) [#9704](https://github.com/nodejs/node/pull/9704) +* [[`cbea672214`](https://github.com/nodejs/node/commit/cbea672214)] - **doc**: fix typo in BUILDING.md (monkick) [#9569](https://github.com/nodejs/node/pull/9569) +* [[`7a02eb2b03`](https://github.com/nodejs/node/commit/7a02eb2b03)] - **doc**: remove backtick escaping for manpage refs (Anna Henningsen) [#9632](https://github.com/nodejs/node/pull/9632) +* [[`cd3b91bc4e`](https://github.com/nodejs/node/commit/cd3b91bc4e)] - **doc**: improve description of urlObject.query (Rahat Ahmed) [#9625](https://github.com/nodejs/node/pull/9625) +* [[`ff7d85647b`](https://github.com/nodejs/node/commit/ff7d85647b)] - **doc**: remove invalid padding from privateEncrypt (JungMinu) [#9611](https://github.com/nodejs/node/pull/9611) +* [[`50947b7b0f`](https://github.com/nodejs/node/commit/50947b7b0f)] - **doc**: remove Sam Roberts from release team (Sam Roberts) [#9862](https://github.com/nodejs/node/pull/9862) +* [[`cf131bfa90`](https://github.com/nodejs/node/commit/cf131bfa90)] - **doc**: add guide for maintaining V8 (Ali Ijaz Sheikh) [#9777](https://github.com/nodejs/node/pull/9777) +* [[`9796efabc6`](https://github.com/nodejs/node/commit/9796efabc6)] - **doc**: strip trailing whitespace (Sam Roberts) [#9620](https://github.com/nodejs/node/pull/9620) +* [[`35b094b8fe`](https://github.com/nodejs/node/commit/35b094b8fe)] - **doc**: fix "either as either" typo (Sam Roberts) [#9665](https://github.com/nodejs/node/pull/9665) +* [[`1a58a21d29`](https://github.com/nodejs/node/commit/1a58a21d29)] - **doc**: fix tls "the the" typo (Sam Roberts) [#9665](https://github.com/nodejs/node/pull/9665) +* [[`4f205deb66`](https://github.com/nodejs/node/commit/4f205deb66)] - **doc**: describe when a tls server emits 'close' (Sam Roberts) [#9665](https://github.com/nodejs/node/pull/9665) +* [[`4d4ac071da`](https://github.com/nodejs/node/commit/4d4ac071da)] - **doc**: fix an SNI mistyped as SNS (Sam Roberts) [#9665](https://github.com/nodejs/node/pull/9665) +* [[`8475ba294d`](https://github.com/nodejs/node/commit/8475ba294d)] - **doc**: move TSC and CTC meeting minutes out of core repo (James M Snell) [#9503](https://github.com/nodejs/node/pull/9503) +* [[`d343595216`](https://github.com/nodejs/node/commit/d343595216)] - **doc**: fix typo in doc/repl.md line: 6 (Mitsuo Utano) [#9582](https://github.com/nodejs/node/pull/9582) +* [[`d283704cd6`](https://github.com/nodejs/node/commit/d283704cd6)] - **doc**: make comment indentation consistent (Daniel Bevenius) [#9518](https://github.com/nodejs/node/pull/9518) +* [[`b99a9e9a81`](https://github.com/nodejs/node/commit/b99a9e9a81)] - **doc**: wrap long lines in http.request (Timothy Gu) [#9584](https://github.com/nodejs/node/pull/9584) +* [[`fd75b25cbf`](https://github.com/nodejs/node/commit/fd75b25cbf)] - **doc**: fix type of http.request's `agent` option (Timothy Gu) [#9584](https://github.com/nodejs/node/pull/9584) +* [[`1783d3b5fc`](https://github.com/nodejs/node/commit/1783d3b5fc)] - **doc**: fix a typo in the assert.md (Vse Mozhet Byt) [#9598](https://github.com/nodejs/node/pull/9598) +* [[`c286f5719c`](https://github.com/nodejs/node/commit/c286f5719c)] - **doc**: fix typo e.g., => e.g. (Daijiro Yamada) [#9563](https://github.com/nodejs/node/pull/9563) +* [[`82fd0e192f`](https://github.com/nodejs/node/commit/82fd0e192f)] - **doc**: fix typo about cluster doc, (eg. -> e.g.) (YutamaKotaro) [#9568](https://github.com/nodejs/node/pull/9568) +* [[`1bbc2c682a`](https://github.com/nodejs/node/commit/1bbc2c682a)] - **doc**: fix typo in doc/tls.md (Syuhei Kobayashi) [#9566](https://github.com/nodejs/node/pull/9566) +* [[`97093314c2`](https://github.com/nodejs/node/commit/97093314c2)] - **doc**: fix e.g., to e.g. in doc/http.md (ikasumi_wt) [#9564](https://github.com/nodejs/node/pull/9564) +* [[`caa0a7876d`](https://github.com/nodejs/node/commit/caa0a7876d)] - **doc**: fix the index order in pseudocode of modules (kohta ito) [#9562](https://github.com/nodejs/node/pull/9562) +* [[`0088ed87ea`](https://github.com/nodejs/node/commit/0088ed87ea)] - **doc**: remove Roadmap Working Group (William Kapke) [#9545](https://github.com/nodejs/node/pull/9545) +* [[`3219ecea2a`](https://github.com/nodejs/node/commit/3219ecea2a)] - **doc**: fix fs constants link (Timothy) [#9508](https://github.com/nodejs/node/pull/9508) +* [[`cb367ec1b3`](https://github.com/nodejs/node/commit/cb367ec1b3)] - **doc**: fix minor style issue in code examples (Daniel Bevenius) [#9482](https://github.com/nodejs/node/pull/9482) +* [[`ff8c31abfd`](https://github.com/nodejs/node/commit/ff8c31abfd)] - **doc**: grammar and structure revisions of wg doc (Ryan Lewis) [#9495](https://github.com/nodejs/node/pull/9495) +* [[`6f850f4037`](https://github.com/nodejs/node/commit/6f850f4037)] - **doc**: clarify the exit code part of writing_tests (Jeremiah Senkpiel) [#9502](https://github.com/nodejs/node/pull/9502) +* [[`16b53141f7`](https://github.com/nodejs/node/commit/16b53141f7)] - **doc**: fix link to Event Loop page (timathon) [#9527](https://github.com/nodejs/node/pull/9527) +* [[`2d581f1cb5`](https://github.com/nodejs/node/commit/2d581f1cb5)] - **doc**: Fix inaccuracy in https.request docs (Andreas Lind) [#9453](https://github.com/nodejs/node/pull/9453) +* [[`f707b006eb`](https://github.com/nodejs/node/commit/f707b006eb)] - **doc**: add npm link to README (Oscar Morrison) [#7894](https://github.com/nodejs/node/pull/7894) +* [[`2ce6916ddc`](https://github.com/nodejs/node/commit/2ce6916ddc)] - **events**: remove unnecessary checks (cjihrig) [#9330](https://github.com/nodejs/node/pull/9330) +* [[`fe821fbefa`](https://github.com/nodejs/node/commit/fe821fbefa)] - **fs**: clarify fs.link and fs.linkSync arguments (Kyle E. Mitchell) [#9145](https://github.com/nodejs/node/pull/9145) +* [[`a3ba4ff49f`](https://github.com/nodejs/node/commit/a3ba4ff49f)] - **inspector**: /json/version returns object, not array (Ben Noordhuis) [#9762](https://github.com/nodejs/node/pull/9762) +* [[`6632b3d1ab`](https://github.com/nodejs/node/commit/6632b3d1ab)] - **lib**: use === in _http_server and _tls_wrap (Walter Beller-Morales) [#9849](https://github.com/nodejs/node/pull/9849) +* [[`f3861c200d`](https://github.com/nodejs/node/commit/f3861c200d)] - **lib,test**: remove unneeded escaping of / (Rich Trott) [#9485](https://github.com/nodejs/node/pull/9485) +* [[`0be56cd1e9`](https://github.com/nodejs/node/commit/0be56cd1e9)] - **meta**: whitelist dotfiles in .gitignore (Claudio Rodriguez) [#8016](https://github.com/nodejs/node/pull/8016) +* [[`3689813fdd`](https://github.com/nodejs/node/commit/3689813fdd)] - **module**: check -e flag in debug break setup (Kelvin Jin) [#8876](https://github.com/nodejs/node/pull/8876) +* [[`db10e94083`](https://github.com/nodejs/node/commit/db10e94083)] - **process**: improve performance of nextTick (Evan Lucas) [#8932](https://github.com/nodejs/node/pull/8932) +* [[`fac61118f9`](https://github.com/nodejs/node/commit/fac61118f9)] - **repl**: avoid parsing division operator as regex (Teddy Katz) [#10103](https://github.com/nodejs/node/pull/10103) +* [[`86efc93a41`](https://github.com/nodejs/node/commit/86efc93a41)] - **repl**: preprocess only for defaultEval (Prince J Wesley) [#9752](https://github.com/nodejs/node/pull/9752) +* [[`eba4f9a3ff`](https://github.com/nodejs/node/commit/eba4f9a3ff)] - **repl**: fix generator function preprocessing (Teddy Katz) [#9852](https://github.com/nodejs/node/pull/9852) +* [[`70062f7cd7`](https://github.com/nodejs/node/commit/70062f7cd7)] - **repl**: refactor lib/repl.js (Rich Trott) [#9374](https://github.com/nodejs/node/pull/9374) +* [[`f9fd53d82d`](https://github.com/nodejs/node/commit/f9fd53d82d)] - **src**: fix method name, output format (Josh Gavant) [#9627](https://github.com/nodejs/node/pull/9627) +* [[`dee5a7f9be`](https://github.com/nodejs/node/commit/dee5a7f9be)] - **test**: invalid package.json causes error when require()ing in directory (Sam Shull) [#10044](https://github.com/nodejs/node/pull/10044) +* [[`487f91a097`](https://github.com/nodejs/node/commit/487f91a097)] - **test**: refactor domain test (Adao Junior) [#10269](https://github.com/nodejs/node/pull/10269) +* [[`26aa148ac5`](https://github.com/nodejs/node/commit/26aa148ac5)] - **test**: refactor test-child-process-stdin (Segu Riluvan) [#10420](https://github.com/nodejs/node/pull/10420) +* [[`25b76a44a7`](https://github.com/nodejs/node/commit/25b76a44a7)] - **test**: test error messages in test-dns-regress-7070 (Wallace Zhang) [#10058](https://github.com/nodejs/node/pull/10058) +* [[`8389a1eef4`](https://github.com/nodejs/node/commit/8389a1eef4)] - **test**: refactor test-pipe-file-to-http (Josh Mays) [#10054](https://github.com/nodejs/node/pull/10054) +* [[`f9f2cda5dc`](https://github.com/nodejs/node/commit/f9f2cda5dc)] - **test**: refactor test-cluster-send-handle-twice.js (Amar Zavery) [#10049](https://github.com/nodejs/node/pull/10049) +* [[`aba15fb9f2`](https://github.com/nodejs/node/commit/aba15fb9f2)] - **test**: add regex check in test-buffer-bad-overload (Sam Shull) [#10038](https://github.com/nodejs/node/pull/10038) +* [[`ac9348d79f`](https://github.com/nodejs/node/commit/ac9348d79f)] - **test**: refactoring test-pipe-head (Travis Bretton) [#10036](https://github.com/nodejs/node/pull/10036) +* [[`0ab2cfc64e`](https://github.com/nodejs/node/commit/0ab2cfc64e)] - **test**: add second argument to assert.throws() (Ken Russo) [#9987](https://github.com/nodejs/node/pull/9987) +* [[`610ec557a6`](https://github.com/nodejs/node/commit/610ec557a6)] - **test**: refactor test-child-process-ipc (malen) [#9990](https://github.com/nodejs/node/pull/9990) +* [[`ff3a1e69f5`](https://github.com/nodejs/node/commit/ff3a1e69f5)] - **test**: cleanup test-stdout-close-catch.js (Travis Bretton) [#10006](https://github.com/nodejs/node/pull/10006) +* [[`49e7029283`](https://github.com/nodejs/node/commit/49e7029283)] - **test**: refactor test-internal-modules (Christy Leung) [#10016](https://github.com/nodejs/node/pull/10016) +* [[`21a60912a8`](https://github.com/nodejs/node/commit/21a60912a8)] - **test**: refactor test-tls-interleave (Brian Chirgwin) [#10017](https://github.com/nodejs/node/pull/10017) +* [[`e53506ac01`](https://github.com/nodejs/node/commit/e53506ac01)] - **test**: update test-tls-check-server-identity.js (Kevin Cox) [#9986](https://github.com/nodejs/node/pull/9986) +* [[`bdf633a32e`](https://github.com/nodejs/node/commit/bdf633a32e)] - **test**: use const/let and common.mustCall (Outsider) [#9959](https://github.com/nodejs/node/pull/9959) +* [[`77334a2143`](https://github.com/nodejs/node/commit/77334a2143)] - **test**: refactoring test-cluster-worker-constructor (Christopher Rokita) [#9956](https://github.com/nodejs/node/pull/9956) +* [[`3c3d2d6776`](https://github.com/nodejs/node/commit/3c3d2d6776)] - **test**: refactor test-tls-client-getephemeralkeyinfo (Harish Tejwani) [#9954](https://github.com/nodejs/node/pull/9954) +* [[`da3ccb969d`](https://github.com/nodejs/node/commit/da3ccb969d)] - **test**: improve test-cluster-net-listen.js (Rico Cai) [#9953](https://github.com/nodejs/node/pull/9953) +* [[`9991bcbada`](https://github.com/nodejs/node/commit/9991bcbada)] - **test**: improve domain-top-level-error-handler-throw (CodeVana) [#9950](https://github.com/nodejs/node/pull/9950) +* [[`eff85e659f`](https://github.com/nodejs/node/commit/eff85e659f)] - **test**: refactor test-tls-0-dns-altname (Richard Karmazin) [#9948](https://github.com/nodejs/node/pull/9948) +* [[`b37fce91d3`](https://github.com/nodejs/node/commit/b37fce91d3)] - **test**: test: refactor test-sync-fileread (Jason Wohlgemuth) [#9941](https://github.com/nodejs/node/pull/9941) +* [[`420b3b851e`](https://github.com/nodejs/node/commit/420b3b851e)] - **test**: clean up repl-reset-event file (Kailean Courtney) [#9931](https://github.com/nodejs/node/pull/9931) +* [[`b8511aba04`](https://github.com/nodejs/node/commit/b8511aba04)] - **test**: replace var with const in test-require-dot (Amar Zavery) [#9916](https://github.com/nodejs/node/pull/9916) +* [[`68836ec455`](https://github.com/nodejs/node/commit/68836ec455)] - **test**: added validation regex argument to test (Avery, Frank) [#9918](https://github.com/nodejs/node/pull/9918) +* [[`70d3b808a0`](https://github.com/nodejs/node/commit/70d3b808a0)] - **test**: fix test-buffer-slow (Michaël Zasso) [#9809](https://github.com/nodejs/node/pull/9809) +* [[`3d368d0322`](https://github.com/nodejs/node/commit/3d368d0322)] - **test**: refactor test-buffer-bytelength (Michaël Zasso) [#9808](https://github.com/nodejs/node/pull/9808) +* [[`b5c8b355c8`](https://github.com/nodejs/node/commit/b5c8b355c8)] - **test**: add stdin-setrawmode.out file (Jonathan Darling) [#10149](https://github.com/nodejs/node/pull/10149) +* [[`e057925316`](https://github.com/nodejs/node/commit/e057925316)] - **test**: set stdin too for pseudo-tty tests (Anna Henningsen) [#10149](https://github.com/nodejs/node/pull/10149) +* [[`272a97178d`](https://github.com/nodejs/node/commit/272a97178d)] - **test**: refactor and fix test-crypto (Michaël Zasso) [#9807](https://github.com/nodejs/node/pull/9807) +* [[`65e27176f6`](https://github.com/nodejs/node/commit/65e27176f6)] - **test**: add child_process customFds test (cjihrig) [#9307](https://github.com/nodejs/node/pull/9307) +* [[`dc76aaef50`](https://github.com/nodejs/node/commit/dc76aaef50)] - **test**: refactor test-crypto-hmac (eudaimos) [#9958](https://github.com/nodejs/node/pull/9958) +* [[`1bbf143898`](https://github.com/nodejs/node/commit/1bbf143898)] - **test**: renamed assert.Equal to assert.strictEqual (Jared Young) +* [[`6dbff7aaed`](https://github.com/nodejs/node/commit/6dbff7aaed)] - **test**: convert assert.equal to assert.strictEqual (Jonathan Darling) [#9925](https://github.com/nodejs/node/pull/9925) +* [[`bbebebe087`](https://github.com/nodejs/node/commit/bbebebe087)] - **test**: strictEqual() and RegExp in test-buffer-fill.js (J Scott Chapman) [#9895](https://github.com/nodejs/node/pull/9895) +* [[`afbd8df7fd`](https://github.com/nodejs/node/commit/afbd8df7fd)] - **test**: increase coverage for lib/events.js (Safia Abdalla) [#9865](https://github.com/nodejs/node/pull/9865) +* [[`99ef3c0e45`](https://github.com/nodejs/node/commit/99ef3c0e45)] - **test**: run cpplint on files in test/cctest (Ben Noordhuis) [#9787](https://github.com/nodejs/node/pull/9787) +* [[`2ffd13e90d`](https://github.com/nodejs/node/commit/2ffd13e90d)] - **test**: move tick-processor tests to own directory (Rich Trott) [#9506](https://github.com/nodejs/node/pull/9506) +* [[`fb525f1507`](https://github.com/nodejs/node/commit/fb525f1507)] - **test**: fix error in test-cluster-worker-death.js (Bruce Lai) [#9981](https://github.com/nodejs/node/pull/9981) +* [[`1288d074ab`](https://github.com/nodejs/node/commit/1288d074ab)] - **test**: use `assert.strictEqual` (anoff) [#9975](https://github.com/nodejs/node/pull/9975) +* [[`653f2b76f3`](https://github.com/nodejs/node/commit/653f2b76f3)] - **test**: change assert.equal to assert.strictEqual (Aileen) [#9946](https://github.com/nodejs/node/pull/9946) +* [[`70c5e4fca2`](https://github.com/nodejs/node/commit/70c5e4fca2)] - **test**: changed assert.equal to assert.strictEqual (vazina robertson) [#10015](https://github.com/nodejs/node/pull/10015) +* [[`690cc2a88f`](https://github.com/nodejs/node/commit/690cc2a88f)] - **test**: improves test-tls-client-verify (Paul Graham) [#10051](https://github.com/nodejs/node/pull/10051) +* [[`780d444d3f`](https://github.com/nodejs/node/commit/780d444d3f)] - **test**: refactor test-https-agent-session-reuse (Diego Paez) [#10105](https://github.com/nodejs/node/pull/10105) +* [[`3686687cd2`](https://github.com/nodejs/node/commit/3686687cd2)] - **test**: refactor test-beforeexit-event (Rob Adelmann) [#10121](https://github.com/nodejs/node/pull/10121) +* [[`314b04d2d9`](https://github.com/nodejs/node/commit/314b04d2d9)] - **test**: improve test-fs-read-stream.js (Jenna Vuong) [#9629](https://github.com/nodejs/node/pull/9629) +* [[`a6bc868bf9`](https://github.com/nodejs/node/commit/a6bc868bf9)] - **test**: refactor test-domain-from-timer (Daniel Sims) [#9889](https://github.com/nodejs/node/pull/9889) +* [[`793addf585`](https://github.com/nodejs/node/commit/793addf585)] - **test**: refactor test-domain-exit-dispose-again (Ethan Arrowood) [#10003](https://github.com/nodejs/node/pull/10003) +* [[`faf0f2d254`](https://github.com/nodejs/node/commit/faf0f2d254)] - **test**: use const and strictEqual in test-os-homedir-no-envvar (CodeVana) [#9899](https://github.com/nodejs/node/pull/9899) +* [[`a696934faa`](https://github.com/nodejs/node/commit/a696934faa)] - **test**: check result of uv_loop_init and uv_write (Ben Noordhuis) [#10126](https://github.com/nodejs/node/pull/10126) +* [[`c2d7e67458`](https://github.com/nodejs/node/commit/c2d7e67458)] - **test**: refactor test-dgram-bind-default-address (Michael-Bryant Choa) [#9947](https://github.com/nodejs/node/pull/9947) +* [[`3c46ab69af`](https://github.com/nodejs/node/commit/3c46ab69af)] - **test**: assert.throws() should include a RegExp (Chris Bystrek) [#9976](https://github.com/nodejs/node/pull/9976) +* [[`0e3593a454`](https://github.com/nodejs/node/commit/0e3593a454)] - **test**: refactor test-listen-fd-ebadf (Richard Karmazin) [#10034](https://github.com/nodejs/node/pull/10034) +* [[`e49c7bbae3`](https://github.com/nodejs/node/commit/e49c7bbae3)] - **test**: refactor test-event-emitter-method-names (Rodrigo Palma) [#10027](https://github.com/nodejs/node/pull/10027) +* [[`290f359857`](https://github.com/nodejs/node/commit/290f359857)] - **test**: refactor tls-ticket-cluster (Yojan Shrestha) [#10023](https://github.com/nodejs/node/pull/10023) +* [[`5d9c224384`](https://github.com/nodejs/node/commit/5d9c224384)] - **test**: refactor test-domain-exit-dispose (Chris Henney) [#9938](https://github.com/nodejs/node/pull/9938) +* [[`7c929591c1`](https://github.com/nodejs/node/commit/7c929591c1)] - **test**: refactor test-stdin-from-file.js (amrios) [#10012](https://github.com/nodejs/node/pull/10012) +* [[`9af076e97d`](https://github.com/nodejs/node/commit/9af076e97d)] - **test**: use ES6 to update let & const (Jason Humphrey) [#9917](https://github.com/nodejs/node/pull/9917) +* [[`dd4586bd41`](https://github.com/nodejs/node/commit/dd4586bd41)] - **test**: fix test for buffer regression #649 (joyeecheung) [#9924](https://github.com/nodejs/node/pull/9924) +* [[`fed9acd8af`](https://github.com/nodejs/node/commit/fed9acd8af)] - **test**: update parallel/test-crypto-hash.js (Deepti Agrawal) [#10009](https://github.com/nodejs/node/pull/10009) +* [[`d64cb1e04e`](https://github.com/nodejs/node/commit/d64cb1e04e)] - **test**: refactor test-require-extensions-main (Daryl Thayil) [#9912](https://github.com/nodejs/node/pull/9912) +* [[`cdb803d18b`](https://github.com/nodejs/node/commit/cdb803d18b)] - **test**: refactor test-tls-ocsp-callback (k3kathy) [#9970](https://github.com/nodejs/node/pull/9970) +* [[`78b5a8d5c2`](https://github.com/nodejs/node/commit/78b5a8d5c2)] - **test**: use assert.strictEqual and fix setTimeout (Matt Phillips) [#9957](https://github.com/nodejs/node/pull/9957) +* [[`f4c8044007`](https://github.com/nodejs/node/commit/f4c8044007)] - **test**: clean up tls junk test (Danny Guo) [#9940](https://github.com/nodejs/node/pull/9940) +* [[`626d59f7a6`](https://github.com/nodejs/node/commit/626d59f7a6)] - **test**: update test-stdout-to-file (scalkpdev) [#9939](https://github.com/nodejs/node/pull/9939) +* [[`223ec17080`](https://github.com/nodejs/node/commit/223ec17080)] - **test**: changed assert.Equal to asset.strictEqual (Paul Chin) [#9973](https://github.com/nodejs/node/pull/9973) +* [[`230d552a85`](https://github.com/nodejs/node/commit/230d552a85)] - **test**: refactor test-domain-multi (Wes Tyler) [#9963](https://github.com/nodejs/node/pull/9963) +* [[`b893dc986c`](https://github.com/nodejs/node/commit/b893dc986c)] - **test**: refactor test-fs-write.js (hirabhullar) [#9982](https://github.com/nodejs/node/pull/9982) +* [[`c506b7be90`](https://github.com/nodejs/node/commit/c506b7be90)] - **test**: refactor test-child-fork-exec-path.js (hirabhullar) [#9982](https://github.com/nodejs/node/pull/9982) +* [[`050bae63f1`](https://github.com/nodejs/node/commit/050bae63f1)] - **test**: use assert.strictEqual in test-cli-eval (Nigel Kibodeaux) [#9919](https://github.com/nodejs/node/pull/9919) +* [[`2a514f20e1`](https://github.com/nodejs/node/commit/2a514f20e1)] - **test**: refactor test-tls-connect-simple (Russell Sherman) [#9934](https://github.com/nodejs/node/pull/9934) +* [[`75c37fa8a2`](https://github.com/nodejs/node/commit/75c37fa8a2)] - **test**: refactor test-signal-unregister (mark hughes) [#9920](https://github.com/nodejs/node/pull/9920) +* [[`093adcac9a`](https://github.com/nodejs/node/commit/093adcac9a)] - **test**: update test-net-connect-handle-econnrefused (Punit Buch) [#9932](https://github.com/nodejs/node/pull/9932) +* [[`75712a3032`](https://github.com/nodejs/node/commit/75712a3032)] - **test**: refactor test-require-resolve (blugavere) [#10120](https://github.com/nodejs/node/pull/10120) +* [[`4a28eac54b`](https://github.com/nodejs/node/commit/4a28eac54b)] - **test**: refactor test-fs-symlink-dir-junction (Walter Beller-Morales) [#9928](https://github.com/nodejs/node/pull/9928) +* [[`09de7149f2`](https://github.com/nodejs/node/commit/09de7149f2)] - **test**: refactor test-fs-read-stream-resume (Matt Webb) [#9927](https://github.com/nodejs/node/pull/9927) +* [[`8ce6dd2a57`](https://github.com/nodejs/node/commit/8ce6dd2a57)] - **test**: replace equal with strictEqual (Tracy Hinds) [#10011](https://github.com/nodejs/node/pull/10011) +* [[`3b765cb231`](https://github.com/nodejs/node/commit/3b765cb231)] - **test**: use strictEqual instead of equal (Uttam Pawar) [#9921](https://github.com/nodejs/node/pull/9921) +* [[`baa0adfe46`](https://github.com/nodejs/node/commit/baa0adfe46)] - **test**: using const and strictEqual (Fabrice Tatieze) [#9926](https://github.com/nodejs/node/pull/9926) +* [[`8ceca4a135`](https://github.com/nodejs/node/commit/8ceca4a135)] - **test**: changed assert.equal to assert.strictEqual (Scott Smereka) [#9936](https://github.com/nodejs/node/pull/9936) +* [[`f248c67da6`](https://github.com/nodejs/node/commit/f248c67da6)] - **test**: test-file-write-stream3.js refactor (Richard Karmazin) [#10035](https://github.com/nodejs/node/pull/10035) +* [[`dd4f9195f1`](https://github.com/nodejs/node/commit/dd4f9195f1)] - **test**: implemented es6 conventions (Erez Weiss) [#9669](https://github.com/nodejs/node/pull/9669) +* [[`c30332daa6`](https://github.com/nodejs/node/commit/c30332daa6)] - **test**: Modernize test-tls-peer-certificate.js (Ilya Potuzhnov) [#10014](https://github.com/nodejs/node/pull/10014) +* [[`ba5e37765a`](https://github.com/nodejs/node/commit/ba5e37765a)] - **test**: strictCompare and explcit inputs mprovement to test-buffer-slice (Michael Alexander) [#10048](https://github.com/nodejs/node/pull/10048) +* [[`ec7df6c0a4`](https://github.com/nodejs/node/commit/ec7df6c0a4)] - **test**: add test for process.stdin.setRawMode() (Jonathan Darling) [#10037](https://github.com/nodejs/node/pull/10037) +* [[`4fce85554a`](https://github.com/nodejs/node/commit/4fce85554a)] - **test**: refactor test for net listen on fd0 (Julian Duque) [#10025](https://github.com/nodejs/node/pull/10025) +* [[`b7619e3b16`](https://github.com/nodejs/node/commit/b7619e3b16)] - **test**: update assert.equal() to assert.strictEqual() (Peter Diaz) [#10024](https://github.com/nodejs/node/pull/10024) +* [[`a6096041c6`](https://github.com/nodejs/node/commit/a6096041c6)] - **test**: use const or let and assert.strictEqual (Christopher Rokita) [#10001](https://github.com/nodejs/node/pull/10001) +* [[`cc8100a529`](https://github.com/nodejs/node/commit/cc8100a529)] - **test**: fix buffer alloc tests (levsoroka) [#9998](https://github.com/nodejs/node/pull/9998) +* [[`eb61d918b1`](https://github.com/nodejs/node/commit/eb61d918b1)] - **test**: Added more validations to setEncoding (Paul Lucas) [#9997](https://github.com/nodejs/node/pull/9997) +* [[`fe59a67b6e`](https://github.com/nodejs/node/commit/fe59a67b6e)] - **test**: use strictEqual() domain-http (cdnadmin) [#9996](https://github.com/nodejs/node/pull/9996) +* [[`ced89ede03`](https://github.com/nodejs/node/commit/ced89ede03)] - **test**: refactor test-cluster-worker-events (fmizzell) [#9994](https://github.com/nodejs/node/pull/9994) +* [[`aea0d47b77`](https://github.com/nodejs/node/commit/aea0d47b77)] - **test**: update repl tests (makenova) [#9991](https://github.com/nodejs/node/pull/9991) +* [[`a749604e11`](https://github.com/nodejs/node/commit/a749604e11)] - **test**: modernize test-fs-truncate-fd (Nigel Kibodeaux) [#9978](https://github.com/nodejs/node/pull/9978) +* [[`1addb3ba53`](https://github.com/nodejs/node/commit/1addb3ba53)] - **test**: update tls test to use const/let and common.mustCall (rgoodwin) [#9968](https://github.com/nodejs/node/pull/9968) +* [[`6d79c0cd2c`](https://github.com/nodejs/node/commit/6d79c0cd2c)] - **test**: adding strictEqual to test-buffer-indexof.js (Eric Gonzalez) [#9955](https://github.com/nodejs/node/pull/9955) +* [[`eeab546fb6`](https://github.com/nodejs/node/commit/eeab546fb6)] - **test**: strictEqual in test-beforeexit-event.js (CodeTheInternet) [#10004](https://github.com/nodejs/node/pull/10004) +* [[`b71d3fd748`](https://github.com/nodejs/node/commit/b71d3fd748)] - **test**: refactor test-child-process-double-pipe (Dan Villa) [#9930](https://github.com/nodejs/node/pull/9930) +* [[`47c925a4ac`](https://github.com/nodejs/node/commit/47c925a4ac)] - **test**: updated tls-getcipher test (Ethan Arrowood) [#9923](https://github.com/nodejs/node/pull/9923) +* [[`bc3b77f525`](https://github.com/nodejs/node/commit/bc3b77f525)] - **test**: replace equal with strictEqual in test-freelist.js (Adrian Estrada) [#9910](https://github.com/nodejs/node/pull/9910) +* [[`5afcf3ac78`](https://github.com/nodejs/node/commit/5afcf3ac78)] - **test**: updated test-stream-pipe-unpipe-stream (Raja Panidepu) [#10100](https://github.com/nodejs/node/pull/10100) +* [[`3aa51ecb6f`](https://github.com/nodejs/node/commit/3aa51ecb6f)] - **test**: refactor test-crypto-ecb (michael6) [#10029](https://github.com/nodejs/node/pull/10029) +* [[`af5c4a9958`](https://github.com/nodejs/node/commit/af5c4a9958)] - **test**: refactor test-require-exceptions (Oscar Martinez) [#9882](https://github.com/nodejs/node/pull/9882) +* [[`26d61c3dbc`](https://github.com/nodejs/node/commit/26d61c3dbc)] - **test**: refactor test-console (Matt Crummey) [#9873](https://github.com/nodejs/node/pull/9873) +* [[`5ba08d9473`](https://github.com/nodejs/node/commit/5ba08d9473)] - **test**: refactor test-crypto-certificate (Josh Mays) [#9911](https://github.com/nodejs/node/pull/9911) +* [[`81def1857d`](https://github.com/nodejs/node/commit/81def1857d)] - **test**: refactor dgram-send-multi-buffer-copy (Konstantin Likhter) [#9909](https://github.com/nodejs/node/pull/9909) +* [[`6fc75ba498`](https://github.com/nodejs/node/commit/6fc75ba498)] - **test**: refactor test-domain (Johnny Reading) [#9890](https://github.com/nodejs/node/pull/9890) +* [[`b343a584e6`](https://github.com/nodejs/node/commit/b343a584e6)] - **test**: refactor test-cli-syntax (Exlipse7) [#10057](https://github.com/nodejs/node/pull/10057) +* [[`76dda9ca37`](https://github.com/nodejs/node/commit/76dda9ca37)] - **test**: refactor test-child-process-constructor (k3kathy) [#10060](https://github.com/nodejs/node/pull/10060) +* [[`f78b81750d`](https://github.com/nodejs/node/commit/f78b81750d)] - **test**: refactor test-repl-mode.js (Cesar Hernandez) [#10061](https://github.com/nodejs/node/pull/10061) +* [[`2127798eaa`](https://github.com/nodejs/node/commit/2127798eaa)] - **test**: var to const, assert.equal to assert.strictEqual in net (Sean Villars) [#9907](https://github.com/nodejs/node/pull/9907) +* [[`cf9f6f8dbf`](https://github.com/nodejs/node/commit/cf9f6f8dbf)] - **test**: changed vars to const in test-net-better-error-messages-listen-path.js (anoff) [#9905](https://github.com/nodejs/node/pull/9905) +* [[`e9d4665b29`](https://github.com/nodejs/node/commit/e9d4665b29)] - **test**: use const instead of var in test-require-json.js (Sarah Meyer) [#9904](https://github.com/nodejs/node/pull/9904) +* [[`f4b6b9faa7`](https://github.com/nodejs/node/commit/f4b6b9faa7)] - **test**: refactor test-http-dns-error (Outsider) [#10062](https://github.com/nodejs/node/pull/10062) +* [[`7a228fe4ae`](https://github.com/nodejs/node/commit/7a228fe4ae)] - **test**: Changed assert.equal to assert.strictEqual (Daniel Pittman) [#9902](https://github.com/nodejs/node/pull/9902) +* [[`7c4b59f9b1`](https://github.com/nodejs/node/commit/7c4b59f9b1)] - **test**: refactor test-vm-syntax-error-stderr.js (Jay Brownlee) [#9900](https://github.com/nodejs/node/pull/9900) +* [[`5d28864d7f`](https://github.com/nodejs/node/commit/5d28864d7f)] - **test**: refactor test-tls-destroy-whilst-write (Chris Bystrek) [#10064](https://github.com/nodejs/node/pull/10064) +* [[`1c3227fd8c`](https://github.com/nodejs/node/commit/1c3227fd8c)] - **test**: refactor test-net-dns-custom-lookup (Kent.Fan) [#10071](https://github.com/nodejs/node/pull/10071) +* [[`9b7d7487ef`](https://github.com/nodejs/node/commit/9b7d7487ef)] - **test**: refactor test-https-truncate (davidmarkclements) [#10074](https://github.com/nodejs/node/pull/10074) +* [[`d698f9d0ac`](https://github.com/nodejs/node/commit/d698f9d0ac)] - **test**: refactor test-tls-server-verify (Hutson Betts) [#10076](https://github.com/nodejs/node/pull/10076) +* [[`7277c376c2`](https://github.com/nodejs/node/commit/7277c376c2)] - **test**: use strictEqual in test-cli-eval-event.js (Richard Karmazin) [#9964](https://github.com/nodejs/node/pull/9964) +* [[`404306fd0e`](https://github.com/nodejs/node/commit/404306fd0e)] - **test**: refactor test-crypto-padding.js (Konstantin Likhter) [#9971](https://github.com/nodejs/node/pull/9971) +* [[`821518d4e4`](https://github.com/nodejs/node/commit/821518d4e4)] - **test**: refactor test-tls-friendly-error-message.js (Adrian Estrada) [#9967](https://github.com/nodejs/node/pull/9967) +* [[`55269c106b`](https://github.com/nodejs/node/commit/55269c106b)] - **test**: refactor test-fs-append-file.js (adelmann) [#10110](https://github.com/nodejs/node/pull/10110) +* [[`bffbf6881a`](https://github.com/nodejs/node/commit/bffbf6881a)] - **test**: assert.equal -> assert.strictEqual (davidmarkclements) [#10065](https://github.com/nodejs/node/pull/10065) +* [[`f10c3210a1`](https://github.com/nodejs/node/commit/f10c3210a1)] - **test**: refactor test-dgram-exclusive-implicit-bind (Cesar Hernandez) [#10066](https://github.com/nodejs/node/pull/10066) +* [[`67b11a429b`](https://github.com/nodejs/node/commit/67b11a429b)] - **test**: assert.equal -> assert.strictEqual (davidmarkclements) [#10067](https://github.com/nodejs/node/pull/10067) +* [[`bb950a6997`](https://github.com/nodejs/node/commit/bb950a6997)] - **test**: improve test for crypto padding (Julian Duque) [#9906](https://github.com/nodejs/node/pull/9906) +* [[`7bf13f3834`](https://github.com/nodejs/node/commit/7bf13f3834)] - **test**: polish test-net-better-error-messages-listen (Hitesh Kanwathirtha) [#10087](https://github.com/nodejs/node/pull/10087) +* [[`776cfc5898`](https://github.com/nodejs/node/commit/776cfc5898)] - **test**: change var to const in test-tls-key-mismatch.js (bjdelro) [#9897](https://github.com/nodejs/node/pull/9897) +* [[`f3ef0d9c1b`](https://github.com/nodejs/node/commit/f3ef0d9c1b)] - **test**: use strictEqual in cwd-enoent (JDHarmon) [#10077](https://github.com/nodejs/node/pull/10077) +* [[`5377f72b5a`](https://github.com/nodejs/node/commit/5377f72b5a)] - **test**: refactor test-fs-read-stream-inherit.js (Jonathan Darling) [#9894](https://github.com/nodejs/node/pull/9894) +* [[`a11f9ab82e`](https://github.com/nodejs/node/commit/a11f9ab82e)] - **test**: refactor test-child-process-stdio-inherit (Wes Tyler) [#9893](https://github.com/nodejs/node/pull/9893) +* [[`80e3aabedd`](https://github.com/nodejs/node/commit/80e3aabedd)] - **test**: change var to const for require and strict equality checks (Harish Tejwani) [#9892](https://github.com/nodejs/node/pull/9892) +* [[`8097b3b1ec`](https://github.com/nodejs/node/commit/8097b3b1ec)] - **test**: Update to const and use regex for assertions (Daniel Flores) [#9891](https://github.com/nodejs/node/pull/9891) +* [[`6d5b21517a`](https://github.com/nodejs/node/commit/6d5b21517a)] - **test**: swap var->const/let and equal->strictEqual (Peter Masucci) [#9888](https://github.com/nodejs/node/pull/9888) +* [[`5446b3c6a0`](https://github.com/nodejs/node/commit/5446b3c6a0)] - **test**: replace equal with strictEqual in crypto (Julian Duque) [#9886](https://github.com/nodejs/node/pull/9886) +* [[`0c66f68fe2`](https://github.com/nodejs/node/commit/0c66f68fe2)] - **test**: replace equal with strictEqual (Julian Duque) [#9879](https://github.com/nodejs/node/pull/9879) +* [[`c5bfe90900`](https://github.com/nodejs/node/commit/c5bfe90900)] - **test**: var to const/let in test-tls-set-ciphers (rajatk) [#9877](https://github.com/nodejs/node/pull/9877) +* [[`7fa3b6fad3`](https://github.com/nodejs/node/commit/7fa3b6fad3)] - **test**: refactor test-tls-timeout-server-2 (Devon Rifkin) [#9876](https://github.com/nodejs/node/pull/9876) +* [[`e6747048e7`](https://github.com/nodejs/node/commit/e6747048e7)] - **test**: Updating vars to const and tsl server test (Matt Webb) [#9874](https://github.com/nodejs/node/pull/9874) +* [[`393cb97cbb`](https://github.com/nodejs/node/commit/393cb97cbb)] - **test**: refactor test-crypto-hash-stream-pipe (Matt Wilson) [#10055](https://github.com/nodejs/node/pull/10055) +* [[`b48d83190a`](https://github.com/nodejs/node/commit/b48d83190a)] - **test**: crypto-hash-stream-pipe use strict equal (Mitchell Stoutin) [#9935](https://github.com/nodejs/node/pull/9935) +* [[`91b942ec8a`](https://github.com/nodejs/node/commit/91b942ec8a)] - **test**: refactor child-process-spawn-error (Johnny Reading) [#9951](https://github.com/nodejs/node/pull/9951) +* [[`a2e88f6e0c`](https://github.com/nodejs/node/commit/a2e88f6e0c)] - **test**: refactor test-child-process-spawn-error (stokingerl) [#9937](https://github.com/nodejs/node/pull/9937) +* [[`52cc1bb08e`](https://github.com/nodejs/node/commit/52cc1bb08e)] - **test**: refactor test-vm-static-this.js (David Bradford) [#9887](https://github.com/nodejs/node/pull/9887) +* [[`895472474b`](https://github.com/nodejs/node/commit/895472474b)] - **test**: refactor test-crypto-cipheriv-decipheriv (Aileen) [#10018](https://github.com/nodejs/node/pull/10018) +* [[`c4277d9b5e`](https://github.com/nodejs/node/commit/c4277d9b5e)] - **test**: refactor test for crypto cipher/decipher iv (Julian Duque) [#9943](https://github.com/nodejs/node/pull/9943) +* [[`346ea432b4`](https://github.com/nodejs/node/commit/346ea432b4)] - **test**: refactor test-cluster-setup-master-argv (Oscar Martinez) [#9960](https://github.com/nodejs/node/pull/9960) +* [[`5009de4a53`](https://github.com/nodejs/node/commit/5009de4a53)] - **test**: refactor test-cluster-setup-master-argv (Christine Hong) [#9993](https://github.com/nodejs/node/pull/9993) +* [[`e75f81495d`](https://github.com/nodejs/node/commit/e75f81495d)] - **test**: refactor test-fs-append-file-sync (Chris Bystrek) [#10056](https://github.com/nodejs/node/pull/10056) +* [[`61225eac1a`](https://github.com/nodejs/node/commit/61225eac1a)] - **test**: refactor test-fs-append-file-sync (Ian White) [#9977](https://github.com/nodejs/node/pull/9977) +* [[`f093760166`](https://github.com/nodejs/node/commit/f093760166)] - **test**: use assert.strictEqual in test-crypto-ecb (Daniel Pittman) [#9980](https://github.com/nodejs/node/pull/9980) +* [[`1bbaace480`](https://github.com/nodejs/node/commit/1bbaace480)] - **test**: refactor test-fs-write-file (adelmann) [#10030](https://github.com/nodejs/node/pull/10030) +* [[`ac5bf86fd1`](https://github.com/nodejs/node/commit/ac5bf86fd1)] - **test**: refactor test/parallel/test-fs-write-file.js (Kyle Carter) [#9992](https://github.com/nodejs/node/pull/9992) +* [[`bf71b63444`](https://github.com/nodejs/node/commit/bf71b63444)] - **test**: update to const iin cluster test (Greg Valdez) [#10007](https://github.com/nodejs/node/pull/10007) +* [[`a36389ee08`](https://github.com/nodejs/node/commit/a36389ee08)] - **test**: use assert.strictEqual() cluster test (Bidur Adhikari) [#10042](https://github.com/nodejs/node/pull/10042) +* [[`effa15ead9`](https://github.com/nodejs/node/commit/effa15ead9)] - **test**: use const in test-crypto-pbkdf2 (Greg Valdez) [#9974](https://github.com/nodejs/node/pull/9974) +* [[`59f643096a`](https://github.com/nodejs/node/commit/59f643096a)] - **test**: improve test for crypto pbkdf2 (joyeecheung) [#9883](https://github.com/nodejs/node/pull/9883) +* [[`503167ba36`](https://github.com/nodejs/node/commit/503167ba36)] - **test**: var -> let/const, .equal -> .strictEqual (shiya) [#9913](https://github.com/nodejs/node/pull/9913) +* [[`f1d0bf4757`](https://github.com/nodejs/node/commit/f1d0bf4757)] - **test**: increase coverage for timers (lrlna) [#10068](https://github.com/nodejs/node/pull/10068) +* [[`e14a597d35`](https://github.com/nodejs/node/commit/e14a597d35)] - **test**: change equal to strictEqual (Kevin Zurawel) [#9872](https://github.com/nodejs/node/pull/9872) +* [[`076c2c2c54`](https://github.com/nodejs/node/commit/076c2c2c54)] - **test**: test for http.request() invalid method error (Ashton Kinslow) [#10080](https://github.com/nodejs/node/pull/10080) +* [[`f38cb9bbe2`](https://github.com/nodejs/node/commit/f38cb9bbe2)] - **test**: update net-local-address-port (scalkpdev) [#9885](https://github.com/nodejs/node/pull/9885) +* [[`c9ac2b366f`](https://github.com/nodejs/node/commit/c9ac2b366f)] - **test**: refactor test-tls-ecdh (Adriana Rios) [#9878](https://github.com/nodejs/node/pull/9878) +* [[`5186604fa9`](https://github.com/nodejs/node/commit/5186604fa9)] - **test**: refactor test-vm-debug-context (makenova) [#9875](https://github.com/nodejs/node/pull/9875) +* [[`fcc511a57b`](https://github.com/nodejs/node/commit/fcc511a57b)] - **test**: use strictEqual in test-zlib-truncated (ben_cripps) [#9858](https://github.com/nodejs/node/pull/9858) +* [[`e55a5936cd`](https://github.com/nodejs/node/commit/e55a5936cd)] - **test**: use strictEqual in test-debugger-client.js (ben_cripps) [#9857](https://github.com/nodejs/node/pull/9857) +* [[`a773843c01`](https://github.com/nodejs/node/commit/a773843c01)] - **test**: refactor test-debug-args (Rich Trott) [#9833](https://github.com/nodejs/node/pull/9833) +* [[`015812e2b8`](https://github.com/nodejs/node/commit/015812e2b8)] - **test**: refactor test-fs-non-number-arguments-throw (Michaël Zasso) [#9844](https://github.com/nodejs/node/pull/9844) +* [[`74919eb5ef`](https://github.com/nodejs/node/commit/74919eb5ef)] - **test**: replace assert.equal with assert.strictEqual (brad-decker) [#9842](https://github.com/nodejs/node/pull/9842) +* [[`0605c74538`](https://github.com/nodejs/node/commit/0605c74538)] - **test**: refactor test-crypto-timing-safe-equal (Michaël Zasso) [#9843](https://github.com/nodejs/node/pull/9843) +* [[`b93c3d89f5`](https://github.com/nodejs/node/commit/b93c3d89f5)] - **test**: add toASCII and toUnicode punycode tests (Claudio Rodriguez) [#9741](https://github.com/nodejs/node/pull/9741) +* [[`51c8fe0c66`](https://github.com/nodejs/node/commit/51c8fe0c66)] - **test**: refactor test-util-inspect (Rich Trott) [#9804](https://github.com/nodejs/node/pull/9804) +* [[`e2e51c52c9`](https://github.com/nodejs/node/commit/e2e51c52c9)] - **test**: refactor test-preload (Rich Trott) [#9803](https://github.com/nodejs/node/pull/9803) +* [[`8c6b127c93`](https://github.com/nodejs/node/commit/8c6b127c93)] - **test**: refine test-http-status-reason-invalid-chars (Rich Trott) [#9802](https://github.com/nodejs/node/pull/9802) +* [[`ca0e577673`](https://github.com/nodejs/node/commit/ca0e577673)] - **test**: refactor test-crypto-binary-default (Michaël Zasso) [#9810](https://github.com/nodejs/node/pull/9810) +* [[`3219586512`](https://github.com/nodejs/node/commit/3219586512)] - **test**: refactor test-net-pingpong (Michaël Zasso) [#9812](https://github.com/nodejs/node/pull/9812) +* [[`ca461bf561`](https://github.com/nodejs/node/commit/ca461bf561)] - **test**: refactor and fix test-dns (Michaël Zasso) [#9811](https://github.com/nodejs/node/pull/9811) +* [[`aebc8dfa57`](https://github.com/nodejs/node/commit/aebc8dfa57)] - **test**: fix flaky test-cluster-dgram-2 (Rich Trott) [#9791](https://github.com/nodejs/node/pull/9791) +* [[`5542a72558`](https://github.com/nodejs/node/commit/5542a72558)] - **test**: fix test-tls-connect-address-family (mkamakura) [#9573](https://github.com/nodejs/node/pull/9573) +* [[`6105c91f89`](https://github.com/nodejs/node/commit/6105c91f89)] - **test**: fix test-http-status-reason-invalid-chars (Yosuke Saito) [#9572](https://github.com/nodejs/node/pull/9572) +* [[`d1f5e99a2a`](https://github.com/nodejs/node/commit/d1f5e99a2a)] - **test**: refactor test-child-process-exec-error (Rich Trott) [#9780](https://github.com/nodejs/node/pull/9780) +* [[`0772984cb3`](https://github.com/nodejs/node/commit/0772984cb3)] - **test**: refactor common.js (Rich Trott) [#9732](https://github.com/nodejs/node/pull/9732) +* [[`605c84f8d6`](https://github.com/nodejs/node/commit/605c84f8d6)] - **test**: exclude no_interleaved_stdio test for AIX (Michael Dawson) [#9772](https://github.com/nodejs/node/pull/9772) +* [[`75bebbf3a0`](https://github.com/nodejs/node/commit/75bebbf3a0)] - **test**: fix flaky test-dgram-empty-packet & friends (Rich Trott) [#9724](https://github.com/nodejs/node/pull/9724) +* [[`1296a689b6`](https://github.com/nodejs/node/commit/1296a689b6)] - **test**: fix flaky test-inspector (Rich Trott) [#9727](https://github.com/nodejs/node/pull/9727) +* [[`c5e806c894`](https://github.com/nodejs/node/commit/c5e806c894)] - **test**: refactor test-tls-hello-parser-failure (Rich Trott) [#9715](https://github.com/nodejs/node/pull/9715) +* [[`9e4ce6fc8e`](https://github.com/nodejs/node/commit/9e4ce6fc8e)] - **test**: refactor test-async-wrap-* (Rich Trott) [#9663](https://github.com/nodejs/node/pull/9663) +* [[`31304144cd`](https://github.com/nodejs/node/commit/31304144cd)] - **test**: Use strictEqual in test-tls-writewrap-leak (Aaron Petcoff) [#9666](https://github.com/nodejs/node/pull/9666) +* [[`333e5d1c49`](https://github.com/nodejs/node/commit/333e5d1c49)] - **test**: run tests even if os.cpus() fails (Bethany Griggs) [#9616](https://github.com/nodejs/node/pull/9616) +* [[`1bb626610a`](https://github.com/nodejs/node/commit/1bb626610a)] - **test**: use setImmediate() in test of stream2 (masashi.g) [#9583](https://github.com/nodejs/node/pull/9583) +* [[`70691e3c53`](https://github.com/nodejs/node/commit/70691e3c53)] - **test**: add test case of PassThrough (Yoshiya Hinosawa) [#9581](https://github.com/nodejs/node/pull/9581) +* [[`7e031170a6`](https://github.com/nodejs/node/commit/7e031170a6)] - **test**: check that `process.execPath` is a realpath (Anna Henningsen) [#9229](https://github.com/nodejs/node/pull/9229) +* [[`14fead0299`](https://github.com/nodejs/node/commit/14fead0299)] - **test**: add test for broken child process stdio (cjihrig) [#9528](https://github.com/nodejs/node/pull/9528) +* [[`2c5e6afd97`](https://github.com/nodejs/node/commit/2c5e6afd97)] - **test**: ensure nextTick is not scheduled in exit (Jeremiah Senkpiel) [#9555](https://github.com/nodejs/node/pull/9555) +* [[`f7a2f75fa9`](https://github.com/nodejs/node/commit/f7a2f75fa9)] - **test**: increase coverage of process.emitWarning (Jeremiah Senkpiel) [#9556](https://github.com/nodejs/node/pull/9556) +* [[`7bd9ecdb14`](https://github.com/nodejs/node/commit/7bd9ecdb14)] - **test**: refactor test-zlib.js (Rich Trott) [#9544](https://github.com/nodejs/node/pull/9544) +* [[`8a94c69c79`](https://github.com/nodejs/node/commit/8a94c69c79)] - **test**: change from setTimeout to setImmediate (MURAKAMI Masahiko) [#9578](https://github.com/nodejs/node/pull/9578) +* [[`92f8073879`](https://github.com/nodejs/node/commit/92f8073879)] - **test**: improve test-stream2-objects.js (Yoshiya Hinosawa) [#9565](https://github.com/nodejs/node/pull/9565) +* [[`64d7ea9ce4`](https://github.com/nodejs/node/commit/64d7ea9ce4)] - **test**: refactor test-next-tick-error-spin (Rich Trott) [#9537](https://github.com/nodejs/node/pull/9537) +* [[`d8eb4c2595`](https://github.com/nodejs/node/commit/d8eb4c2595)] - **test**: refactor test-tls-inception (Rich Trott) [#9536](https://github.com/nodejs/node/pull/9536) +* [[`0db54ab98e`](https://github.com/nodejs/node/commit/0db54ab98e)] - **test**: refactor inspector-helper.js (Rich Trott) [#9499](https://github.com/nodejs/node/pull/9499) +* [[`31a3328269`](https://github.com/nodejs/node/commit/31a3328269)] - **test**: refactor make-callback-recurse test (Rich Trott) [#9498](https://github.com/nodejs/node/pull/9498) +* [[`9808985689`](https://github.com/nodejs/node/commit/9808985689)] - **test**: move timer-dependent test to sequential (Rich Trott) [#9487](https://github.com/nodejs/node/pull/9487) +* [[`e97c610850`](https://github.com/nodejs/node/commit/e97c610850)] - **test**: fix helper-debugger-repl.js (Rich Trott) [#9486](https://github.com/nodejs/node/pull/9486) +* [[`13b16881ef`](https://github.com/nodejs/node/commit/13b16881ef)] - **test,url**: improve escaping in url.parse (joyeecheung) [#10083](https://github.com/nodejs/node/pull/10083) +* [[`8bb66cd920`](https://github.com/nodejs/node/commit/8bb66cd920)] - **timers**: use consistent checks for canceled timers (Jeremiah Senkpiel) [#9685](https://github.com/nodejs/node/pull/9685) +* [[`e355604aa5`](https://github.com/nodejs/node/commit/e355604aa5)] - **tools**: forbid template literals in assert.throws (Michaël Zasso) [#10301](https://github.com/nodejs/node/pull/10301) +* [[`9c85d0f396`](https://github.com/nodejs/node/commit/9c85d0f396)] - **tools**: add ESLint rule for assert.throws arguments (Michaël Zasso) [#10089](https://github.com/nodejs/node/pull/10089) +* [[`a5d27f3515`](https://github.com/nodejs/node/commit/a5d27f3515)] - **tools**: enable final newline in .editorconfig (Roman Reiss) [#9410](https://github.com/nodejs/node/pull/9410) +* [[`e94b72e41e`](https://github.com/nodejs/node/commit/e94b72e41e)] - **tools**: remove unneeded escaping in generate.js (Rich Trott) [#9781](https://github.com/nodejs/node/pull/9781) +* [[`f05f0fe74e`](https://github.com/nodejs/node/commit/f05f0fe74e)] - **tools**: disallow trailing whitespace for markdown (Sam Roberts) [#9676](https://github.com/nodejs/node/pull/9676) +* [[`0256b7b057`](https://github.com/nodejs/node/commit/0256b7b057)] - **tools**: use better regexp for manpage references (Anna Henningsen) [#9632](https://github.com/nodejs/node/pull/9632) +* [[`232026d8b9`](https://github.com/nodejs/node/commit/232026d8b9)] - **tools**: improve docopen target in Makefile (Sakthipriyan Vairamani (thefourtheye)) [#9436](https://github.com/nodejs/node/pull/9436) +* [[`79e0577702`](https://github.com/nodejs/node/commit/79e0577702)] - **tools**: make run-valgrind.py useful (Ben Noordhuis) [#9520](https://github.com/nodejs/node/pull/9520) +* [[`8a8646c0b2`](https://github.com/nodejs/node/commit/8a8646c0b2)] - **tools**: fix run-valgrind.py script (Ben Noordhuis) [#9520](https://github.com/nodejs/node/pull/9520) +* [[`5401b04648`](https://github.com/nodejs/node/commit/5401b04648)] - **tools**: copy run-valgrind.py to tools/ (Ben Noordhuis) [#9520](https://github.com/nodejs/node/pull/9520) +* [[`12fe071abf`](https://github.com/nodejs/node/commit/12fe071abf)] - **util**: move the case 'latin1' (Jackson Tian) [#9646](https://github.com/nodejs/node/pull/9646) + ## 2016-12-06, Version 6.9.2 'Boron' (LTS), @thealphanerd diff --git a/doc/ctc-meetings/2015-10-28.md b/doc/ctc-meetings/2015-10-28.md deleted file mode 100644 index 5efe94454ad3f8..00000000000000 --- a/doc/ctc-meetings/2015-10-28.md +++ /dev/null @@ -1,276 +0,0 @@ -# Node Foundation CTC Meeting 2015-10-28 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2015-10-28 -* **GitHub Issue**: https://github.com/nodejs/node/issues/3561 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* Rod Vagg (CTC) -* Brian White (CTC) -* James Snell (CTC) -* Chris Dickinson (CTC) -* Ben Noordhuis (CTC) -* Jeremiah Senkpiel (CTC) -* Trevor Norris (CTC) -* Alexis Campailla (CTC) -* Mikeal Rogers (observer) -* Shigeki Ohtsu (CTC) -* Seth Thompson (observer) -* Bert Belder (CTC) -* Fedor Indutny (CTC) -* Ben Noordhuis (CTC) -* Colin Ihrig (CTC) - -## Agenda - -Extracted from **tsc-agenda** labelled issues and pull requests in the nodejs org prior to meeting. - -### nodejs/node - -* Load JSON-LD in the same way as JSON [#3502](https://github.com/nodejs/node/pull/3502) -* fs: decode filenames using UTF-8 in fs.watch [#3401](https://github.com/nodejs/node/pull/3401) -* WG: Considering a new HTTP WG [#3214](https://github.com/nodejs/node/issues/3214) - -## Minutes - -### Review of previous meeting - -* governance: add new collaborators #VIII [#3472](https://github.com/nodejs/node/issues/3472) -* detect "full-icu" module [#3460](https://github.com/nodejs/node/issues/3460) -* WG: Considering a new HTTP WG [#3214](https://github.com/nodejs/node/issues/3214) -* node: deprecate public access to `process.binding` [#2768](https://github.com/nodejs/node/pull/2768) -* node: make listen address configurable [#3316](https://github.com/nodejs/node/pull/3316) - -### Standup - -* Rod Vagg (CTC): Traveling, rc for v5.x, going to put another rc out today, comfortable with it getting released tomorrow. If it slips we’ll put it off until next week. Just need to do more smoke testing on this. -* Brian White (CTC): Not a whole lot this week — triaging, responding to issues. -* James Snell (CTC): Getting HTTP parser up to v2.6; getting 4.2.2 LTS update ready to go. open issue on LTS repo, would love eyes on it, to verify that the commits going into 4.2.2 look good. (https://github.com/nodejs/LTS/issues/50) working with Miles on getting CITGM updated. -* Chris Dickinson (CTC): Some silly build stuff -* Jeremiah Senkpiel (CTC): Not much — computer was dead since last Friday, ): but repaired now. -* Trevor Norris (CTC): Bugs and issues — couple of outstanding PRs around asyncwrap, one done at Fedor’s request to make AsyncWrap public, in order to make JSStream class public -* Alexis Campailla (CTC): Meetings; first API WG meeting, defining scope of the work for the WG, we want to address engine abstraction and native module API and some performance issues; small work in CI to add diagnostics; progress on module build service, going to post finding soon to get feedback -* Mikeal Rogers (observer): getting a lot of interest on a certification program for node, for alternative implementations, looking at notes for API WG (thanks for taking great notes! that was awesome) I reached out to a few people that may contribute as well -* Seth Thompson (observer): No updates this week. -* Bert Belder (CTC): nothing noteworthy -* Ben Noordhuis (CTC): Fixed debugger bugs, reviewed a lot of pull requests. -* Colin Ihrig (CTC): Trying to help out with issue tracker, anticipate in another week ½ I should have significantly more time to work on core. - -### Load JSON-LD in the same way as JSON [#3502](https://github.com/nodejs/node/pull/3502) - -* adds .jsonld files to require.extensions so that they’d load using json loader - -Rod: I raised this to CTC. I see this as a slippery slope, adding anything more to require.extensions. I don’t see how this won’t turn into XML — turns into bloat in formats that folks want to support. My preference would be to let the ecosystem figure this out and let folks write their own JSON loaders. - -Jeremiah: also probably belongs in npm - -James: .jsonld is just a json file with a special syntax internally. I have a module that loads it. It’s very easy to work around. Rename the file to use a json extension. I don’t see the harm in landing it, but if we don’t want to go that route, - -Mikeal: is the patch to add the extension or to give you your own serializer (extension) - -Bert: It seems harmless, but 6 months from now what if someone shows up and says “hey you’re not validating it properly” and then we have to add a validator … I’m very sensitive to slippery slope argument - -Alexis: Is it a different syntax? - -Bert: is every json document a valid jsonld document? - -James: no. - -Mikeal: we’re using a parser from npm, are we going to get a war between parsers, swapping them out? - -James: this doesn’t do any special parsing for jsonld, it just aliases json and uses the existing process. - -Trevor: the problem is what it opens us up to. invariably this leads to more PRs. this patch I don’t have a problem with, but I have a problem with this kind of patch in the future - -Bert: I think we’re reaching consensus here, which is: reject this patch. is anyone here strongly in favor. - -Ben: not in favor. one argument is jsonld is now a standard. but I too am sensitive to the slippery slope argument, so I’m perfectly fine with rejecting it. - -James: when rejecting it, it would be worthwhile to note how to work around it. I can do this. - -Jeremiah: require.extensions is not going to change anytime soon, so folks can write their own. - -Bert: I think we can go to the next issue. - -### fs: decode filenames using UTF-8 in fs.watch [#3401](https://github.com/nodejs/node/pull/3401) - -See also [#3519](https://github.com/nodejs/node/issues/3519) - -Bert: this is Ben’s issue. - -Ben: I wouldn’t say it’s my issue, but I’ve been involved -the thing is that filenames are frequently (but not always) utf8, the problem is now that node in one or two places it doesn’t encode utf8 [Ben, post meeting addition: For background: I thought we had some file logic baked into node::Environment and the dtrace/etw/lttng/systemtap subsystems but turns out that's not the case.] - -Bert: where else are we encoding differently? - -Ben: I can answer this in a few seconds. At least, I think there are more places. Maybe I’m mistaken, also a possibility! - -Jeremiah: I think someone else said it was only fs.watch too. - -Bert: I’ve seen the discussion but I haven’t commented. I think there’s a problem with assuming that all files are all utf8, but it seems inconsequential to assume this everywhere but this one place - -Ben: this is not the best issue to link to, I agree it’s inconsistent to do utf8 in most places and latin1 in only one place. There’s a link to another issue 3519. my beef with the PR is not that it’s a terrible fix, it’s more that decoding to utf8 is not always the right thing to do because not all fs are utf-8. If we’re going to do this it has to be a semver major, and if we’re going to do a semver major, then it may as well be a full fix, which I’ve outlined in 3519. - -Bert: there’s actually some discussions we need to have around these things. Your suggestion is to not land this PR, and instead fix this the right way. Do you think it’s likely that 3519 will see attention any time soon? - -Ben: It’s on my todo list. I should mention that the way node deals with file names has been a thorn in my side for a long time now, I’ve been planning to do something about it for a long time, so take this as you will. - -Bert: my question is: do we take this PR now, ahead of - -Bert: customizable decoding - -Mikeal: is the other one going to be a breaking change? - -Ben: yes - -Bert: or it could be a bugfix? - -Mikeal: so it would make sense to buffer as many changes around that as possible. - -Jeremiah: we could land the semver-major fix on master which would go into 6.x, then if we have time before 6.x we could do the proper fix. maybe that keeps us from fixing it entirely though? - -Ben: that’s my problem, it’s a bandaid that lets us truck on for a another couple of years. - -James?: I don’t really like quick fixes, but … - -Trevor: on the fs doc page, a lot of those calls reference the system level call, on unix do those use utf8 - -Ben: how do you mean? - -Trevor: for example, stat, first arg is char* pathname, if i were to take a utf8 string and read that in… what encoding does it use? - -Ben: syscall is agnostic. kernel treats as string of bytes. in node, we call fs.stat in javascript, string is decoded to utf8, then passed on to the kernel. - -Trevor: if i have a file that’s latin1, I’d have to turn that into a buffer as a binary buffer then tostring it to a utf8 string in order for the file to be open? - -[multiple people are talking] - -Ben: yes. - -Ben: sometimes it’s not possible to open files with funny characters in their names. - -Trevor: if there were a file with invalid utf8 characters it’d be impossible to open those, right? - -Ben: yep. - -James: I’m not a fan of the quick fix. I am okay with incremental so long as the larger task gets done, but … - -Bert: I am in favor of the quick fix, it restores consistency in the way node does things. practically speaking, almost all fs are going to be utf-8. it fixes the problem where fs.watch tells you “hey a file changed” but you go to look and the file’s not there due to the encoding scheme. I’d like to make a little improvement. the problem has been known since at least 2011, and we’ve never gotten around to it. I would not be surprised if it takes another 4 years for someone to take a stab at it. - -Brian: is it possible to get the user’s LOCALE and convert to that before sending it off? - -Ben: that’s worse than what we have now. - -James: the LOCALE often lies. - -Bert: are we going to land the patch to fs.watch? I’d like to have a quick references. - -Trevor: it’s not going to land in 5, we could leave it open until near v6 and land it then if no one is able to get around to the full fix. there’s 5-6 months between 5 and 6… - -Rod: that sounds like a nice compromise. - -### WG: Considering a new HTTP WG [#3214](https://github.com/nodejs/node/issues/3214) - -Rod: I left this on because I thought it’d be nice to get a report from the WG on how it went. - -James: [cd: I am missing folk here]: Jeremiah, Eran Hammer, Doug Wilson, Myles Borins Brian White, Patrick Mueller, and myself. - -We talked about the charter. Looking into what improvements can be made to better support the ecosystem. Making existing impl hookable so that modules could swap out parts of the implementation with their own. Like replacing the parser, or header specific handling. The charter covers that aspect of it, but emphasizes that existing systems are not broken. We have a number of issues that we’ve created to start discussing these. I’ll get these into the doc. - -That’s the short version. Still really early to tell what all will come of it and what kind of schedule it’ll be on. 5th, at [cd: TIME?] -We’ll be drawing up a charter and bringing it back to this group. - -Any other questions? - -Rod: could we get a report on the API WG? - -Trevor: the discussion was mainly around the native api. it went in a direction I wasn’t expecting. I explained my JS API proposal, then it went into a module discussion. ABI compat is straight out, it went in the direction of NAN (API compat, but occasional recompiles). Some discussion arose around abstracting node, like v8 completely. to replace with another VM. How do you handle specific difference like features that are available in one vm or another? or JS features that are/aren’t available between VMs. To target all vms, you end up having to use ES5. I was kind of losing where they were going with it. there are a lot of smart people. We’ll just have to have a discussion about feasibility. - -Ben: Was there any talk about who’s going to do the actual work? - -Trevor: No — it was more theoretical. It was more like the ES committee — develop features then say “go make these.” IF I bring it up I’m sure I can get some solid answers. - -Alexis: I’m trying to push for the Chakra folks to do some of this work. - -Mikeal: [cd: sorry, I missed this.] - -Rod: What companies are involved? Did MS show up? - -Trevor: Yes, I think so. JXCore, IBM was there, can’t remember offhand. - -Bert: JXCore is also secretly MS? - -Alexis: Not a secret! They’re on contract for an industrial IoT project. - -Alexis: IBM was there, Nodesource. - -Mikeal: Looking for someone from samsung’s jerryscript team to join. - -Trevor: My initial proposal was to get something usable. I’ll be out of there if it turns into WASM — if it blows up in size. - -Mikeal: The whole point is to be smaller than the current API, right? - -Bert: Well, not smaller, but … let’s not talk about technical issues - -Alexis: We’ve discussed multiple approaches, and we can tackle the problem from multiple sides. Trevor is tackling it by reducing the size of core. The approach I want to take is FFI interface into native modules. All of these approaches can help us tackle this huge beast into a manageable problem. They’re not competing solutions. - -Bert: We want to avoid scope creep. If the WG comes up with a HUGE proposal with 20 points of view, then no one will ever go do it. - -Trevor: I want to simplify the JS API, and get it to a point where all of the existing api can sit on top of it. If someone wants to do the work of replacing V8, they’ll have a clean entry point into the JS. And then write a set of compliance tests that specify what every entry point does. Writing a bunch for native code without JS tests to back it up would be futile. - -Bert: Restricting it to API design, that in theory, the sort of design goal, is for the API to be sufficient for Node to use. - -Alexis: This would include the native module api? - -Rod: It sounds like HTTP attacked charter first, maybe the API WG needs to do the same, to combat growth of scope. Maybe anyone else on this call that wants to could join and try to define scope? Is there another call scheduled, Trevor? - -Trevor: we’re still collecting times. I’ll mention the ctc in the issue. - -Rod: we should make a new @ctc GH group. - -Bert: which is going to be more fun? - -Rod: The CTC - -Bert: when are we going to split up? - -Rod: Mikeal is organizing another meeting. - -Mikeal: It’s tomorrow at this time slot. - -### node-gyp: Windows users are not happy. [node-gyp#629](https://github.com/nodejs/node-gyp/issues/629) - - -Jeremiah: Do we want to talk about the windows issue? - -Rod?: it kind of contains all of the windows problems. - -Alexis: I was asking about guidance on this. - -Rod: there’s a strategy of giving folks a place to vent, keeping it from spilling over elsewhere. Without this issue, it might explode into a bunch more issues. - -Alexis: We’re working on a module build service. The other thing is that MS is going to release a smaller SKU of the compiler, that might be able to be included with node-gyp. - -Rod: Next visual studio is going to be shipping with clang. - -Trevor: Yes for AST stuff. [cd: might have gotten this wrong] - -Rod: Alexis, you should post in there, but I think it’s going to always catch folks googling for the problem. I’m not sure you can resolve it by closing or locking it. Folks will go there and not see a proper resolution. - -Mikeal: make sure there are issues for everything in the thread, then close and lock. Make sure there are resolutions (even if it’s “move hte conversation”). - -Rod: I’m happy for Alexis to take the lead on this. - -Rod: Maybe change the title to “Windows users are happy?” - -Alexis: Maybe change to “Unix users are unhappy.” - -Rod: that’d be an epic troll. - -## Next Meeting - -November 4, 2015 diff --git a/doc/ctc-meetings/2015-11-04.md b/doc/ctc-meetings/2015-11-04.md deleted file mode 100644 index 1c83d453d8f20e..00000000000000 --- a/doc/ctc-meetings/2015-11-04.md +++ /dev/null @@ -1,65 +0,0 @@ -# Node Foundation CTC Meeting 2015-11-04 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2015-11-04 -* **GitHub Issue**: https://github.com/nodejs/node/issues/3660 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* Rod Vagg (CTC) -* James Snell (CTC) -* Chris Dickinson (CTC) -* Ben Noordhuis (CTC) -* Jeremiah Senkpiel (CTC) -* Trevor Norris (CTC) -* Alexis Campailla (CTC) -* Mikeal Rogers (observer) -* Shigeki Ohtsu (CTC) -* Seth Thompson (observer) -* Bert Belder (CTC) -* Fedor Indutny (CTC) -* Ben Noordhuis (CTC) -* Colin Ihrig (CTC) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests in the nodejs org prior to meeting. - -### nodejs/node - -* deps: backport 9da3ab6 from V8 upstream [#3609](https://github.com/nodejs/node/pull/3609) - -## Minutes - -### Review of previous meeting - -* Load JSON-LD in the same way as JSON [#3502](https://github.com/nodejs/node/pull/3502) -* fs: decode filenames using UTF-8 in fs.watch [#3401](https://github.com/nodejs/node/pull/3401) -* WG: Considering a new HTTP WG [#3214](https://github.com/nodejs/node/issues/3214) -* node-gyp: Windows users are not happy. [node-gyp#629](https://github.com/nodejs/node-gyp/issues/629) - -### Standup - -* Rod: 0.12/0.10 build infra -* Michael: catching up from being away -* Trevor: reviewing PRs -* James: v4.2.2 - -### deps: backport 9da3ab6 from V8 upstream [#3609](https://github.com/nodejs/node/pull/3609) - -Discussed the semver for this feature, should it be patch or minor? LTS WG has agreed to land this patch but are unsure whether it should bump minor. Discussed some of the points in the issue. - -Trevor: this issue seems to have made it in thanks to a lot of noise made by users, is this going to be a factor in considering future changes for LTS? - -Discussed this topic, agreeing that we shouldn’t be held captive to bike-shedding. - -Bert: would be surprised if this landed as semver-minor, it’s clearly a feature addition. - -Trevor: can we stash this and wait to see what else might be landable—can we expect to have these conversations in the future? - -## Next Meeting - -November 11th, 2015 diff --git a/doc/ctc-meetings/2015-11-11.md b/doc/ctc-meetings/2015-11-11.md deleted file mode 100644 index de23a8192e6dd9..00000000000000 --- a/doc/ctc-meetings/2015-11-11.md +++ /dev/null @@ -1,136 +0,0 @@ -# Node Foundation CTC Meeting 2015-11-11 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2015-11-11 -* **GitHub Issue**: https://github.com/nodejs/node/issues/3777 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* Rod Vagg (CTC) -* James Snell (CTC) -* Ben Noordhuis (CTC) -* Jeremiah Senkpiel (CTC) -* Trevor Norris (CTC) -* Mikeal Rogers (observer) -* Fedor Indutny (CTC) -* Ben Noordhuis (CTC) -* Colin Ihrig (CTC) -* Steven R Loomis (observer?) -* Brian White (CTC) -* Michael Dawson (observer) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests in the nodejs org prior to meeting. - -* Rediscuss if error message changes are semver-major [#3776](https://github.com/nodejs/node/issues/3776) -* V8 working group [#3741](https://github.com/nodejs/node/issues/3741) - -### Standup - -* Rod Vagg: Way too busy, tz lagged. Nodefest JP (with translation)- good community event, large turnout. Ripe for node expansion. Hung out with Shigeki and Yosuke. 0.12 build stuff, Jenkins down but coming back up. Good changes, but put behind with 0.10/0.12 stuff -* James Snell: triaging issues, not a whole lot more beyond 4.2.2. CITGM with Myles, landing PRs. -* Ben Noordhuis: Fixed bug in cluster module, libuv minor work, reviewed lots of PRs/issues. Looking into node-gyp - lots of confusion around python requirement on Windows. Idea: embed in python interpreter, but complicated adventure. -* Jeremiah Senkpiel: Issue/PR work. 5.1.0 release work (delayed). Helping potential new collaborators get involved. -* Trevor Norris: Submitted patch for microbenchmark improvements, removing `Object::Set()` in C++. Helping community members get involved. -* Mikeal Rogers: Rewriting policies. Last-month contributors script, metrics. -* Fedor Indutny: v8 stuff. Tool for postmortem inspection of nodejs process using lldb on linux and osx. Review, requests. -* Colin Ihrig: Reviews, PRs. Opened a very popular PR on cluster suicide. -* Steven R Loomis: Unicode conferences and meetings for the last few weeks, not a lot to report other than moving the iojs language groups to node.js versions. (#2525) -* Brian White: reviewing PRs, triaging, commenting on issues -* Michael Dawson: PR for AIX based on comments, test issues, ppc release machines added to CI, work with Stefan on FIPS PR (unique value - equivalent coverage with FIPS enabled/disabled, and better error message). - -### Rediscuss if error message changes are semver-major [#3776](https://github.com/nodejs/node/issues/3776) - -Mikeal: do not guarantee that error messages don’t change. v8 changes error messages. don’t [shouldn’t] check message text. - -Rod: Don’t think we can make an assumption that this is not done. - -Mikeal: this is a lot of messages changing all at once - -Rod: What about localized messages? (when they change) - -Jeremiah: Localized messages have an ID so that shouldn’t be an issue - -Trevor: if v8 doesn’t internationalize, we shouldn’t internationalize ours - -James: Looking at i18n [l10n] of v8’s messages… comes down to whether ICU will be there by default - -Mikeal: should we be attaaching IDs to messages now? - -_: Error code (such as in Visual Studio) makes it very googleable which is a great help - -Steven: that’s one of the benefits.. - -Trevor: how do you guarantee uniqueness? - -Mikeal: attach a unique code.. - -Rod: Have 2 files that collect the codes. - -Trevor: Pass a function name and string..? - -Rod: … consider this for our API - -Mikeal: don’t know how we can keep these from changing in the context of internationalization - -Rod: But they are not internationalized yet. Can say now, don’t depend on these saying a certain thing. - -Mikeal: we haven’t been aware of libuv’s changes , would need to keep track of libuv’s changes. - -Michael: will this make it hard to fix typos in messages? Would be nice to correct instead of leave the message as is. - -Jeremiah: If people need to check the text for something other than tests, not assigning a unique enough type of error. Seems like bad practice. - -Rod: people do bad things already… - -Jeremiah: make sure people don’t *need* to do these things for legitimate reasons - -Rod: Not fine with semver-major if we decide it’s not a change in general. - -Steven: make it major to put people on notice… ? ids may be good and helpful in general? - -Mikeal: semver-major could make people think they can depend on message text …… hold off on any text changes until ID in place? - -Mikeal: would not accept this in LTS. Question is, would we accept it for 5? - -Rod: policy could say: “will accept changes as semver-patch, but don’t put them into LTS” - -Mikeal: make it semver-minor, consider it a feature. … get this out as Canary (master) … leave tagged - -### V8 working group [#3741](https://github.com/nodejs/node/issues/3741) - -Ben: place to put v8 documentation - -Jeremiah: make sure that some v8 knowledge stays among the core collaborators - -Rod: Julien’s concern is around reducing exposure to v8 - -Michael: Want to involve more people in v8 - -Rod: The other way, a separate WG allows people to find the right people - -Jeremiah: Documentation (of v8) - -Rod: no firm objections - -Steven: Have WG charter include disseminating knowledge/processes around v8? - -Rod: WG allows a good place to do this. - - -### ICU data - ±1 on approach? -[#3460](https://github.com/nodejs/node/issues/3460) ? srl - -… “move ahead, open PR, people can discuss.. mark as experimental so that people don’t depend on it” - -[Chris is taking over note-taking.] - -Rod: Take this to GitHub so we can have a proper discussion - -## Next Meeting - -November 18th, 2015 diff --git a/doc/ctc-meetings/2015-12-02.md b/doc/ctc-meetings/2015-12-02.md deleted file mode 100644 index aaf3357f74bd93..00000000000000 --- a/doc/ctc-meetings/2015-12-02.md +++ /dev/null @@ -1,83 +0,0 @@ -# Node Foundation CTC Meeting 2015-12-02 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2015-12-02 -* **GitHub Issue**: https://github.com/nodejs/node/issues/4115 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* Rod Vagg (CTC) -* James Snell (CTC) -* Ben Noordhuis (CTC) -* Jeremiah Senkpiel (CTC) -* Trevor Norris (CTC) -* Mikeal Rogers (observer) -* Fedor Indutny (CTC) -* Colin Ihrig (CTC) -* Steven R Loomis (observer) -* Brian White (CTC) -* Michael Dawson (observer) -* Alexis Campailla (CTC) -* Bert Belder (CTC) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -### nodejs/node - -* tools: change tick processor install path [#4021](https://github.com/nodejs/node/pull/4021) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) -* doc: update irc channels to point to #node.js and #node-dev [#2743](https://github.com/nodejs/node/pull/2743) - - -### Standup - -* Rod Vagg: Catching up from some time off, preparing for security releases tomorrow. -* Ben Noordhuis: Pull requests and bug reports. -* Jeremiah Senkpiel: Large refactoring of timers, general project stuff—PRs and issues, spinning up the CI WG, trying to do more onboarding. -* Trevor Norris: PR review & merging, not too much. -* Mikeal Rogers: Prep for board meeting, new events page on website. -* Fedor Indutny: PR review, fixing fsevents bug in libuv -* Colin Ihrig: Usual issues & PRs -* Brian White: landed a few PRs, commented on issues -* Michael Dawson - Addition of FIPS tests to regression job and some ongoing FIPs related work, still trying to line up AIX machines, investigation with team on some failures on AIX, scheduled next benchmarking meeting, hoping to add charts for initial footprint benchmark, adding other build team members to softlayer/osu environments. -* Alexis Campailla: some build stuff, further investigation into native module build service -* Bert Belder: ? - - -## Review of last meeting - -* Re-discuss if error message changes are semver-major [#3776](https://github.com/nodejs/node/issues/3776) - -## tools: change tick processor install path [#4021](https://github.com/nodejs/node/pull/4021) - -* Ben: Matthew Loring from google has been working on this but has found an npm package with the name “node-tick-processor” - -* Discussed how we should deal with potential node core tooling that already shares a same name on npm. - -## Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -1. Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -2. Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) - -* Rod outlined the approach he came up with in https://github.com/nodejs/node/issues/3979 for seeking legal input from the board (via whatever means they want) on (1) the head LICENSE file and (2) copyright and license blocks at the top of files and (3) the npm licensing issues raised in #3959. - -* Group agreed to move forward with the approach and to allow Rod and Mikeal to tune the wording before handing off. - -## doc: update irc channels to point to #node.js and #node-dev [#2743](https://github.com/nodejs/node/pull/2743) - -* No objections to renaming to #node-dev - -## TSC meeting tomorrow - -Briefly discussed the meeting tomorrow in this timeslot. Admitting libuv to the foundation as an incubator project. - -## Next Meeting - -December 9th, 2015 diff --git a/doc/ctc-meetings/2015-12-16.md b/doc/ctc-meetings/2015-12-16.md deleted file mode 100644 index 0ad4603a39589a..00000000000000 --- a/doc/ctc-meetings/2015-12-16.md +++ /dev/null @@ -1,164 +0,0 @@ -# Node Foundation CTC Meeting 2015-12-16 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2015-12-16 -* **GitHub Issue**: https://github.com/nodejs/node/issues/4309 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Michael Dawson (observer) -* Alexis Campailla (CTC) -* Bert Belder (CTC) -* Chris Dickinson (CTC) -* Ali Ijaz Sheikh (observer) -* Shigeki Ohtsu (CTC) -* Seth Thompson (observer) -* Steven Loomis (observer) -* Mikeal Rogers (observer) -* Jeremiah Senkpiel (CTC) -* Rod Vagg (CTC) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -### nodejs/node - -* Discussion: OpenSSL 1.1.0 planning [#4270](https://github.com/nodejs/node/issues/4270) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) - -### nodejs/LTS - -* Discuss possibility of adjusting LTS schedule for better alignment with V8 schedule [#62](https://github.com/nodejs/LTS/issues/62) -* AsyncWrap for LTS Argon [#59](https://github.com/nodejs/LTS/issues/59) - - -### Standup - -* James Snell (CTC) — Node interactive, looking at PRs, i18n -* Trevor Norris (CTC) — Been sick, some review -* Colin Ihrig (CTC) — Node interactive, reviewing issues and PRs, yesterday started 5.3.0 release (held up to issue with debugging), am process of releasing 5.3.0 right now -* Brian White (CTC) — Submitted PRs, commenting on issues and PRs -* Michael Dawson (observer) - Node interactive - catching up -* Alexis Campailla (CTC) — Node interactive – MS is open sourcing Chakra, and submitting a PR to Node, mid-January -* Bert Belder (CTC) — Missed NI, was on vacation, commented on some issues -* Chris Dickinson (CTC) — Node Interactive, commenting on issues and PRs -* Shigeki Ohtsu (CTC) - Looking at new version of openssl-1.1.0 -* Steven Loomis (observer) — Node interactive, INTL meeting, went over existing issues (esp. re: TC39 standards-level happenings) -* Mikeal Rogers (observer) — Node interactive, board meeting last week, the board accepted the request for legal advice, kicked off to legal committee which will come back with a recommendation or will be handed off to outside counsel -* Jeremiah Senkpiel (CTC)- Node.js Interactive, general issues/PRs, made #io.js on freenode irc forward to #node-dev - -## Review of last meeting - -* tools: change tick processor install path [#4021](https://github.com/nodejs/node/pull/4021) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) -* doc: update irc channels to point to #node.js and #node-dev [#2743](https://github.com/nodejs/node/pull/2743) - -## Minutes - -### Discussion: OpenSSL 1.1.0 planning [#4270](https://github.com/nodejs/node/issues/4270) - -Do we want to delay v6 release for OpenSSL 1.1.0? - -James: If we stick with the current LTS cycle, the current version of OpenSSL would be supported for well past the v6 LTS. - -Alexis: Would an OpenSSL upgrade be forbidden once v6 goes LTS? - -James: - -Shigeki: API changes are large, it may be costly to upgrade before LTS. Current 1.0.2 is supported until 2019. It might be best to wait until October - -James: So, better to launch this with v7 than v6? -Jeremiah: What does it give us? - -Rod: There’s a discussion in the thread. - -Alexis: OpenSSL 1.0.2 would be supported for lifetime of v6? - -James: If the changes are large, it’s probably best not to rush it in. - -Brian: I think I agree. - -Alexis: Yes, based on the case presented here. - -James: Does anyone think we absolutely should get v1.1.0 into v6? - -`` - -James: Hearing nothing, I’m going to assume that - -Jeremiah: Do we know Fedor’s opinion on this? - -Rod: He was interested in chacha but that’s about it. -There isn’t really anything hugely compelling here. - -James: I think we’ve got general consensus for not delaying for this. We may have other reasons (V8) but not for OpenSSL v1.1.0. - -Bert: I know only the version number, delaying would require someone to make a case for it. [CD — I missed some of this due to an errant notification] - -Jeremiah: I agree with Bert - -### Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -Rod — left this on the agenda to provide an update. It went to the board last week. There was a bit of discussion, it went to the legal committee. They will shape the document I provided into a request for proper legal advice from a paid lawyer, somewhere — something bounded, “please give advice on these points”. the legal committee is meeting tomorrow. - -Bert: OK, cool. Why is this part of the private section of the board meeting? - -Mikeal: I can answer that. You really can’t talk about legal issues in the public section. It’s a strange constraint to be under. I’m pushing to change how we do these meetings. - -Bert: But it’s okay for the CTC to talk about? - -Mikeal: CTC is not fiduciarily bound like the board. - -### Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) - -Rod: No updates. We have got clarification that npm is moving to the LICENSE on master branch, which is the Artistic License. - -### Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) - -Rod: Same bundle as above. - -### AsyncWrap for LTS Argon [#59](https://github.com/nodejs/LTS/issues/59) - -Rod: We have AsyncWrap in v4 and v5, but undocumented, so breaking changes are okay. The question is whether or not to bring v4’s asyncwrap up to parity with v5. We landed on not documenting it in v4, but making it public in v5. - -James: I have no objections. - -Michael: Are there any performance effects? - -Trevor: No. - -Bert: I find it really strange in the state that node is in, to designate an undocumented API as LTS stable. Three people in the world, maybe, know how this API works. I’d like to have this documented before we freeze it. - -Trevor: Touching asyncwrap means touching everything. IMO it’s more about possible mitigation of issues, because you’re right, it’s totally undocumented, hidden behind process.bindings, by keeping parity, it offers advantages for backporting. It’s in a place where a lot of things will touch it, so not backporting it will make other backports difficult if not impossible. - -Bert: What you want is folks not touching it in an LTS release, because it’s risky, not to freeze it. - -Trevor: Once it is documented, I believe people will want to use it in v4, so at least we’ll have parity between v5 and v4. - -Rod: It’s in v4 now, it’s just not in the same state as in v5; the risk is that we publicize it, folks try to use it on v4, and it breaks unexpectedly. - -Trevor: There are a few places where improper use will trigger an abort. I don’t like the idea that exposing something to JS that can cause abrupt core dumps. - -James: I’d prefer not to document it in v4, - -Chris: I don’t think not documenting it in v4 will keep folks from using it once the docs hit v5. - -[minutes not captured beyond this point] - -### Discuss possibility of adjusting LTS schedule for better alignment with V8 schedule [#62](https://github.com/nodejs/LTS/issues/62) - -## Next Meeting - -December 23rd, 2015 diff --git a/doc/ctc-meetings/2016-01-06.md b/doc/ctc-meetings/2016-01-06.md deleted file mode 100644 index 53b04709de57c8..00000000000000 --- a/doc/ctc-meetings/2016-01-06.md +++ /dev/null @@ -1,216 +0,0 @@ -# Node Foundation CTC Meeting 2016-01-06 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2016-01-06 -* **GitHub Issue**: https://github.com/nodejs/node/issues/4553 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Michael Dawson (observer) -* Alexis Campailla (CTC) -* Bert Belder (CTC) -* Chris Dickinson (CTC) -* Shigeki Ohtsu (CTC) -* Steven Loomis (observer) -* Mikeal Rogers (observer) -* Jeremiah Senkpiel (CTC) -* Rod Vagg (CTC) -* Ben Noordhuis (CTC) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -### nodejs/node - -* Nominating new Release team members [#4319](https://github.com/nodejs/node/issues/4319) -* repl: Reverses order of .node_repl_history [#4313](https://github.com/nodejs/node/pull/4313) -* doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) -* gripe: deprecating fs.exists/existsSync [#1592](https://github.com/nodejs/node/issues/1592) - - -## Standup - -* James Snell (CTC): Docs work, refactoring some docs, about halfway through currently. Working on landing some PRs, 4.2.4 release came out before xmas, 4.2.5 next week with Myles -* Trevor Norris (CTC): Working with Fedor to make callbacks reentrant. -* Colin Ihrig (CTC): Opened a PR for the releases doc page, reviewing issues and PRs, working on a PR to libuv -* Brian White (CTC): JS DNS resolver PR updated against master, perf compared to existing impl isn’t very good (yet?), other than that: fixed some flaky tests -* Michael Dawson (observer):Benchmarking infrastructure to generate charts, meeting this week to discuss proposed approach. Chasing down last dependency updates for AIX, adding zLinux machine. -* Alexis Campailla (CTC): Prototyping module building service -* Bert Belder (CTC): Nothing interesting -* Chris Dickinson (CTC): Poking at AsyncWrap -* Shigeki Ohtsu (CTC): Reviewing james doc improvements and small fix for tool. -* Steven Loomis (observer): Some issue review. -* Mikeal Rogers (observer): Foundation strategy for 2016, legal stuff; individual member elections are coming up. -* Jeremiah Senkpiel (CTC): Working on the v5.4.0 release at the time of the meeting. Nothing else interesting. (vacation!) -* Rod Vagg (CTC): Download metrics, analyzing that; put out infographics regarding DL numbers, end of year v4 became the most popular downloaded version, taking over from v0.10, which had been very persistent in its popularity. v5 took over 2nd place from v0.12. Reworking readme in the build repo to mention infra providers. -* Ben Noordhuis (CTC): Gloriously nothing. - -## Review of last meeting - -* Discussion: OpenSSL 1.1.0 planning [#4270](https://github.com/nodejs/node/issues/4270) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) -* AsyncWrap for LTS Argon [#59](https://github.com/nodejs/LTS/issues/59) -* Discuss possibility of adjusting LTS schedule for better alignment with V8 schedule [#62](https://github.com/nodejs/LTS/issues/62) - -## Minutes - -### Nominating new Release team members [#4319](https://github.com/nodejs/node/issues/4319) - -Rod: Ratification is desired here? -James: Any objections to adding Myles and Evan to the release team? - -`[crickets]` - -James: No objections. Who wants to take the lead on adding them? -Jeremiah: I can do that. - -* repl: Reverses order of .node_repl_history [#4313](https://github.com/nodejs/node/pull/4313) - -_Discussion in minutes doc prior to meeting discussion:_ -> CD: I won’t be able to note this one, so someone should take over for this issue. -> RV: CD - do you have an opinion to offer here? -> CD — yep! mostly: it’s a breaking change that doesn’t seem to be worth breaking things for. -> RV: thanks! - -Rod: do we want to - -Ben: seems like a pointless change, not very compelling, -1 - -Trevor: how’s it going to work when jumping between versions? my history will be all over the place. - -James: haven’t review, is this fixing an actual bug? - -Jeremiah: no, it’s just changing the order that it’s saved. - -Ben: anyone on the call in favour of making the change? - -James: Unless new information is presented, we’re leaning towards not accepting the change. - -### doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) - -Chris: last month, @bengl opened a PR to add the doc working group, lots of conversation has been had. Tried to pull out docs from core, came against some difficulties with finding a space to work on them and commiting them back, also wanted to have a better editorial review process so made a new repo and this also has problems because the website repo hosts some docs so docs are spanned across multiple issues. - -Ben: what’s the problem with following the contributing rules/guidelines on the node repo? - -Chris: mainly about relaxing the requirements for commit-bit, having documentation authors able to land PRs, and only docs PRs. - -Mikeal: there are several doc writers who have commit-bits, we’re talking about trying to do the clean-up prior to landing on the node repo by doing it in the docs repo first. Is there still a problem with needing commit-bit for docs people? A lot of them are collaborators already. - -Chris: I think we’re fine - -James: current process has been working well enough, this is just about giving the WG responsibility for the docs directory in the main repo - -Mikeal: sounds like the WG wants to be a holistic group working on docs across the project, not just the docs dir in the node repo? - -Chris: yes - -Mikeal: one problem I have with chartering the group at this stage then is: is the membership representative of all of these efforts? - -Chris: is the parallel effort you’re talking about in the website group? - -Mikeal: yes, and the website group is the most liberal about adding contributors so it’s not very organized - -Chris: last touch-point with the website WG was at the collab summit and they are aware of the docs WF - -Mikeal: in-person meeting not very representative of actual activity, prefer to look at who is actually contributing and pull them into the effort - -Chris: cool, will circle back and look at the two repos and pull in more individuals, concern is about doing lots of work without any guarantee of getting ratified - -Mikeal: we can’t give any guarantees without seeing things - -Chris: big amounts of work re pulling out docs into topic-tocs and tutorials - -Mikeal: but that’s already going on in the website repo, there’s tutorials that are being iterated on so why can’t we just continue that? - -Chris: core docs and tutorials etc. should live in the same place - -Mikeal: still not sure why this single issue is a blocker and how being ratified changes anything - -.. discussion .. - -Mikeal: if you wanted all of the tutorials etc. to live in core then that could just be a PR, if you want the tutorials to be moved out of the website then you’d need to be chartered and have this accepted by the website group - -Chris: problem with building momentum is that the scope of responsibility lives between two groups - -Mikeal: but there’s a ton of momentum going on in the two main places already, moving everything into a separate repo is a separate issue. - -James: need to move on, propose that we continue the conversation there - -Trevor: is there a dot-point list of what this list wants to achieve? - -Chris to update with a link to what this is - -Bert: sounds like this is not about whether this WG should exist but there is a technical blocker that we should focus on. - -James: moving discussion to github, will come back if necessary - -### Legal update - -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) - -Rod: Legal committee had a meeting this week, didn’t quite get through all of it. Not resolved yet but looking like a recommendation to put a simplified license block at the top of each source file. Those were removed in io.js but DCO process discusses license in each source file. Copyright is still Joyent and that was not assigned when things were moved so we need to resolve that. - -(James: Note: we should add that to linting) - -Mikeal: Leaving Joyent in the copyright doesn’t assign new rights but may need to seek their permission to remove. Nor do we need Joyent to assign copyright. - -Rod: npm license issue still being looked at. The way npm licensing is being handled is still being worked out. - -Mikeal: May be moving towards SPDX approach. - -Ben: Question about Joyent boilerplate… is it possible that copyright actually belongs to other entity? - -Mikeal: The copyright is owned by the contributors and Joyent. Going forward, copyright is owned by the contributors. We won’t be assigning copyright to the foundation. - -James: I’ll *possibly* take the todo to get those updated - -Bert: What about binary files? - -Mikeal: It’s unclear. - -James: Can we change the DCO language? - -Mikeal: Modifying the DCO is an expensive process. Recommendation is to wait until the current stuff is resolved. - -### gripe: deprecating fs.exists/existsSync [#1592](https://github.com/nodejs/node/issues/1592) - -Bert: is the “deprecation” language useful here? - -Trevor: this was discussed - -Bert: “deprecation” is not really working - -Jeremiah: there has been some work here - -Bert: I’m against any form of deprecation from now on. - -James: Let’s keep `deprecate` to mean that the thing is strongly discouraged, let’s come up with a stronger term that means this thing will definitely be going away. - -Jeremiah: not sure if this discussion is relevant to the actual conversation. existSync is not something we want to keep because it’s different from everything else. Switch to accessibleSync? - -Trevor: (explains the issues with access and exists on windows vs linux) - -(more back and forth technical discussion about the nuances of determining if a file actually exists and is accessible) - -(James: Let’s have a function that simply returns ‘\_(ツ)_/’ on Windows in response to `accessibleSync()`) - -Trevor: Let’s take the conversation back to Github to see if we can get resolution. Agnostic on the resolution. - -## Next Meeting - -2016-01-13 diff --git a/doc/ctc-meetings/2016-01-20.md b/doc/ctc-meetings/2016-01-20.md deleted file mode 100644 index ceffa500b103b6..00000000000000 --- a/doc/ctc-meetings/2016-01-20.md +++ /dev/null @@ -1,337 +0,0 @@ -# Node Foundation CTC Meeting 2016-01-20 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2016-01-20 -* **GitHub Issue**: https://github.com/nodejs/node/issues/4780 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Alexis Campailla (CTC) -* Bert Belder (CTC) -* Chris Dickinson (CTC) -* Shigeki Ohtsu (CTC) -* Steven Loomis (observer) -* Mikeal Rogers (observer) -* Jeremiah Senkpiel (CTC) -* Rod Vagg (CTC) -* Ben Noordhuis (CTC) -* Domenic Denicola (observer) -* Nikita Skovoroda (observer) -* Ali Sheikh (observer) -* Evan Lucas (observer) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -### nodejs/node - -* Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) -* buffer: add Buffer.from(), Buffer.zalloc() and Buffer.alloc(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) -* Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) -* util: deprecate `util._extend` [#4593](https://github.com/nodejs/node/pull/4593) -* ArrayBuffer.isView() and buffer.buffer property [#4420](https://github.com/nodejs/node/issues/4420) -* doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* fs: optimize realpath using uv_fs_realpath() [#3594](https://github.com/nodejs/node/pull/3594) - -## Standup - -* James Snell (CTC): Working on the Buffer issue, work on HTTP module, reviewing issues and PRs, attempting to help on 4.2.5, -* Trevor Norris (CTC): AsyncWrap related things -* Colin Ihrig (CTC): Reviewing issues and PRs. Reverted a commit -* Brian White (CTC): Not much, commenting on PRs and issues. -* Alexis Campailla (CTC): Fixing Windows issues on libuv and npm -* Bert Belder (CTC): _[CD - missed what you were looking into due to cross talk]_ -* Mikeal Rogers (observer): Various projects coming into the Foundation -* Jeremiah Senkpiel (CTC): Onboarding new release team members, Working on Timers Refactor more, trying to make sure Chakra and Buffer discussions remain productive -* Rod Vagg (CTC): Working with new contributors, lots of meetings -* Chris Dickinson (CTC): Docs WG stuff -* Shigeki Ohtsu (CTC): -* Steven Loomis (observer): -* Ben Noordhuis (CTC): Been sick, still catching up. -* Rich Trott (observer): Making tests more reliable, spinning up Testing WG -* Nikita Skovoroda “Chalker” (observer): mostly buffer, also the api usage greps are now sorted based on downloads count -* Ali Sheikh (observer): sampling heap profiler in V8 -* Domenic (observer): modules and zones -* Evan Lucas (observer): Working on getting v5.5.0 Release out and looking into v8 extras for some of the builtins. - -## Review of last meeting - -* Nominating new Release team members [#4319](https://github.com/nodejs/node/issues/4319) -* repl: Reverses order of .node_repl_history [#4313](https://github.com/nodejs/node/pull/4313) -* doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Potential Licensing issues with npm [#3959](https://github.com/nodejs/node/issues/3959) -* Joyent Copyright still in header of many files [#3926](https://github.com/nodejs/node/issues/3926) -* gripe: deprecating fs.exists/existsSync [#1592](https://github.com/nodejs/node/issues/1592) - -## Minutes - -### Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) - -Put on agenda by Alexis - -Alexis: MS submitted a PR for supporting Chakracore, change in node is fairly small — the shim is in the deps folder. A few CTC members have expressed interest in landing. I was wondering if anyone had opinions about how to proceed with this? - -Domenic: I’m curious about what level of support is implied. Landing it reduces the requirement of maintaining a separate fork, but - -Domenic: What’s the CTC’s goal in merging it in? - -Alexis: Adds Windows IoT. - -Domenic: but it doesn’t, because we’re not supporting it. - -Alexis: I still can build it myself. - -James: As for “why would we land it” — if this is something we think we will eventually support, landing it sends a clear signal that this is the direction we are heading. Landing it now lets the community start contributing to it, and to figure out how - -Trevor: If it was landed, we would not be providing official builds on the website. - -Jeremiah: Maybe Canary builds? - -Mikeal: Microsoft is already providing builds of this. By bringing this into the mainline, the changes get reviewed by the Core team. Its a matter of are those builds off of Node core mainline, or - -Jeremiah: Have we decided we want to this? - -Rod: We’re making a lot of assumptions. - -Trevor: Could we start an issue and list concerns? - -Domenic: Would it be a good idea to restrict to collaborators? - -Jeremiah: There’s not enough outside noise. - -Trevor: Well, the PR has garnered over 100 comments in 24 hours. - -Jeremiah: But it’s not spam. - -Mikeal: What is the title of that issue? - -Domenic: “What is the CTC’s decision on whether to merge the ChakraCore PR?” - -Trevor: or, “Things that prevent it from landing” — if we would hold back a V8 version due to incompability with the shim. James mentioned some concerns as well. - -Jeremiah: How are we going to support a shimmed VM — not officially, but for ourselves in the codebase, when we’re still using a V8 api and exposing that. - -Rod: that’s just one of the questions. - -Mikeal: No one is ever going to say “let’s support chakra” until it’s been in the codebase for a while, and has seen the MS folks show up and support it. - -Rod: We still need to get everyone on board that we want to head in that direction. I don’t think it’s fair to say “get it in the codebase and we’ll sort it out”. I see a lot of assumptions in the thread, and we need to air those assumptions and discuss them - -Mikeal: Is the discussion, “do we want to move in a VM agnostic direction?” Can we scope this? - -Domenic: My worry is: I don’t think the CTC might want to imply full VM agnosticity — they might not want to accept a spidermonkey PR? Maybe making it smaller would makemaek it easier. - -Bert: I agree with Rod that we haven’t actually had the discussion. I’ve always thought it was cool, and pushed for it, but I think _[CD ...]_ -What’s frustrating is that someone has done all the work to land a VM, but we kind of expect it to be “more than perfect” before we land it. I would suggest landing it first but not including it as a default, so we can do comparisons. - -Trevor: don’t feel too bad about this — they had to do this to support IoT. -Bert: I don’t feel bad; are we going to build a higher and higher wall until - -Rod: the problem is that we’re not on the same page, and we need to get on the same page. I’m not hearing anyone say outright that they don’t want VM agnostic. But we’re all saying different things. - -James: I agree. I don’t think there should be any rush in getting the PR landed. We can do some of that review process and take our time over the next few weeks to figure out if this is what we want to do. I don’t think anyone is saying “land it now!” We can take our time. - -Rod: My suggestion is to move back to the issue and let it evolve, and suss out the main philosophical issues from there. There’s so many things to talk about in that thread, and everyone’s g -ot a different take. We’ve got to summarize, and take our time. - -### CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) - -Rod: A vote will be held in a few weeks time. In the meantime we’ll be in observer mode for these additional people. Not much to discuss here other than, “welcome!” - -### buffer: add Buffer.from(), Buffer.zalloc() and Buffer.alloc(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) -### Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - -Rod: want to take it away, James? - -James: Sure everyone’s familiar with the issue up to this point. `Buffer` constructor (`Buffer(num)` or `Buffer(value)` with overloaded). Some portion of the community saying that needs changed, some real world examples of security flaws in the wild, community consensus seems to be that the API should be cleaned up — introducing new factory methods, - -Trevor: Careful saying “community consensus” - -James: Yeah — yes, the discussion seems to lead to where 4682 is now, which has been created as an EPS issue as well (https://github.com/nodejs/node-eps/pull/4). The basic idea is to introduce `Buffer.{from,alloc,allocUnsafe}()`. `allocUnsafe()` would be our current behavior for `Buffer(num)`, alloc would be zero-filled, `.from` takes the place of `Buffer(value)`. Deprecation of constructor would be docs-only, with _possibly_ a warning printed, similar to the memory leak warning on event emitter listeners. The documentation updates go along with that. That’s the overview of the discussion. _[CD phew!]_ - -Bert: What is the argument for not zeroing out buffers, exactly? why do we want to keep supporting that behavior? - -James: comes down to perf - -Trevor: That’s it. You don’t always need to zero fill. - -Domenic: I tried to read through the threads, last I saw there were no benchmarks that were completely fair. `calloc` vs. `memset`, etc. Have there been updated benchmarks? - -Trevor: if the allocation is small enough that it can use the pool, it’s not going to have perf degradation when it becomes larger. - -Domenic: My understanding with larger values is that with calloc makes it free. - -Trevor: No — over 1-4kb. - -Domenic: I don’t know what size “large” is supposed to be for calloc. - -Trevor: I’ve tried for 1mb; perf penalty is 2-3x slower, depending on size. From a dozen to a couple hundred microseconds. - -Domenic: That kind of argues to me for “safe by default.” - -Trevor: I can read in 100’s and 100’s of JSON files all of which are large, I can use fs.read with a buffer, so you have to allocate a buffer, if I have to zerofill it when I’m just going to fill it anyway, that’s just wasted cycle. - -Bert: I think most of the time that will not be the bottleneck. We might have an internal api… - -Trevor: No — the perf penalty on that is so big. This is why I initially got rid of the pooling after my first rewrite. - -Bert: optimization doesn’t have to be done right away. If you’re allocating large buffers, you’re usually mmaping it, so you don’t have to zero fill. - -Ben: But the OS is zeroing it out. - -Bert: So we don’t have to. - -Ben: There’s still CPU time being used there — it’s not free. - -James: The PR has three methods: _[CD — missed the first part]_ `alloc` will do `calloc` under the covers. If a 2nd param is passed, it will do `allocUnsafe` and fill with the string. We can compare all of these using the PR. The current implementation alloc can be 30-60% slower than `allocUnsafe`. - -Ben: We can farm out allocations to another thread, the other thread might need to overalloc a little just to have a bit in reserve. - -Trevor: At minimum that would work for the buffer pool, which is a set size anyway. - -Ben: Is anyone volunteering to write that code? - -James: I already have my hands in there. I need to look into the native buffer constructor anyway. I’ll bring it back to the discussion when I get there. - -Bert: that sounds great. I’m very happy that some experimentation and benchmarking is going on. I’m much in favor of a simple api that is safe by default. Adding a bunch of stuff — like the deprecation in the docs — we are doing too much to deal with not a very complicated issue. - -Mikeal: If you look at all of the exploits, just zero filling doesn’t solve them — they’re still a DoS vector, but no longer a disclosure. WE need the from and alloc APIs to avoid these - -Domenic: that’s a good point. I think adding more explicit APIs would help. - -James: Thank you for pointing that out — it’s an API usability issue. If we decide to zero fill by default this becomes much easier to figure out and we don’t have as much surface area to expand. There is an LTS concern with that — if we switch the default then we run into an issue where we open up a security problem, where modules assume buffer zero fills by default when it doesn’t on the current node version. I’m fine with zero-fill by default. - -Domenic: Real world apps don’t run into perf problems with this quite so often. - -Rod: What do we need to do to move forward? - -James: Ideas on speeding up initialization. Comment on the thread and we’ll go from there. - -### util: deprecate `util._extend` [#4593](https://github.com/nodejs/node/pull/4593) - -Rod: A bunch of +1’s and -1’s. - -Jeremiah: `util._extend` was added Object.assign wasn’t a thing back when we needed it, but since it was publicly exposed, all kinds of folks have used this thing and it’s in wide use. We’re discussing what we want to do with this now that Object.assign is a thing — phase out it’s use? - -Trevor: Is object.assign able to be swapped in? - -Domenic: 95% sure that is the case. - -Trevor: Could we deprecate `_extends` and change it to do Object.assign for the user. - -Domenic: If you overrode object.keys it would give different results. - -Jeremiah: `_extend` is not documented anyway, so for folks to move off of it we’d have to add docs for it or add a deprecation warning - -Rod: my concern: It’s in wide use, it’s undocumented — it just seems like a purist thing to me. “Stop using core stuff!” Apparently Object.assign is a bit slower than extend for our use in core, anyway. I just don’t see any justification for this. - -Domenic: I tend to agree. On the web we’ve got all of this stuff “webkitMatchesSelector” – better to just document it. - -Trevor: I guess what I’m getting at is that there are philosophical issues in trying to - -Document deprecation, but don’t warn on use. - -Domenic is writing a list of minor differences: https://github.com/nodejs/node/pull/4593#issuecomment-173357276 - -### ArrayBuffer.isView() and buffer.buffer property [#4420](https://github.com/nodejs/node/issues/4420) - -Trevor: now that buffer inherits from uint8array, there are undocumented methods on it. If we document that buffer extends from uint8array, then we are supporting those APIs. - -Domenic: I think it’s confusing. Either the TypedArray methods are supported or they aren’t — null them out if they’re not. - -Jeremiah: Probably nulling these things out is a good idea. - -James: in the docs we tell folks that it is a Uint8Array. - -Trevor: Documenting sounds great to me — I can get on that if everyone agrees. - -### doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) - -Chris: current state: call for new members (GitHub, Twitter), got significant reach, several people raising hands. Worked to define what membership means in the governance doc. Onboarding people that raised their hands. Had a second meeting for the group today. Everyone happy to work within the node repo, transition period with guides in the website repo before we get them building in the node repo. Don’t want to block core work so happy to do post-review of docs instead of holding up merges. Have a slack for collaboration now too. - -Rod: what would the post-review process look like? Similar to what we have now with the addition of review for style etc. from docs group? - -Chris: Yes, normal process, lgtm from collaborators, etc. Do a weekly review of the changes in the docs directory and do updates for that. Use slack for this by having a GitHub integration. - -Rod: Happy with progress? - -Chris: yes, going well. Building a Roadmap now for what’s going to be done. Need to telegraph what’s going to be done before it’s done. - -Jeremiah: nobody has worked on the doctool for years, is that on the roadmap? - -Chris: Plan is to build something new alongside it. - -Chris: What else needs to be done to move forward with ratification? - -Rod: Sounds like the boxes have been ticked so probably best to move back to the PR-to-core process and bring it for a vote at this meeting. - -### Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -Rod: No progress on that. There’s supposed be another meeting, maybe next week — no material update. I’ll keep it on the agenda to make sure we’re updated with the progress. - -### fs: optimize realpath using uv_fs_realpath() [#3594](https://github.com/nodejs/node/pull/3594) - -Trevor: There’s now realpath in libuv, making the syscall is much faster than going through the JS logic we now have. Using the cache reduces the number of lstat calls — the question is: can we work towards changing the current realpath impl to call realpath in libuv more frequently as our investigation shows is useful — since it’s faster than doing the JS logic, even with the cache. - -Jeremiah: Were there concerns about changing behavior? - -Trevor: If you give it a bad cache it would no longer fail. Some of those issues were nonissues — there’s another one about symlinks. Little edge cases that we wouldn’t consider a problem. - -Jeremiah: If we use realpath(2) that would affect the module resolution? - -Bert: Module also goes through realpath. Hopefully it doesn’t change semantics if impl changes. If the semantics stay the same, it shouldn’t be an issue. Trevor, I’ll give you an issue on why it is the way it is. On OSX, realpath could trigger a buffer overflow, there was no workaround but to write your own. On windows, it used to not exist. We used readlink on all platforms to build our realpath. - -Trevor: To clarify: we make a libuv call, not a syscall - -Bert: Libuv would need to implement this logic — maybe Ben knows? - -Ben: The issue where you could not safely allocate a buffer for the call to store its result in? That used to be an issue with OSX until 10.7 I believe, but we don’t support that anymore, so should not be an issue anymore - -Bert: If we drop WinXP support, it becomes very easy to support - -Trevor: I think we have - -Bert: I’m pretty sure it does not — [cd: might need filled in] - -Trevor: Going to test more, if the results support what you said, are you OK with using the native implementation? This boiled down to throwing away the second optional argument of the cache. - -Bert: The cache has other issues — it can be inconsistent with what’s on disk, for example - -Trevor: We’ll test it and post results. Thank you. - -Bert: cool. - -Rod: do we need to open an issue to officially drop support WinXP? - -Alexis: Changing to prevent install? - -Bert: Sooner rather than later, I think. It’d have to be a major version, and libuv would have to bump to v2 before we could drop the platform. - -Jeremiah: I don’t think that’s an issue on our end. - -Bert: It is — - -Rod: Alexis, are you in on that discussion? - -Alexis: it was a constraint of node, I thought. Everybody agreed that we would prevent node startup on winxp. - -Rod: Back to GitHub! - -### ES Module EP [nodejs/node-eps#3](https://github.com/nodejs/node-eps/pull/3) - -Trevor: One quick thing: bmeck has been working on a EP for ES2015 module loading, figuring out how it could work in node alongside commonJS — originally it was going to be [a?]synchronous. He posted a proposed API for V8, they agreed to implement it, but they want assurances that the CTC agrees on that API. What I want to say: everybody go read the module spec and +1 it. To say “Yes, if V8 adds this API, we will use it to implement ES2015 modules and the Loader spec, too.” Any questions on that? - -## Next Meeting - -2016-01-27 diff --git a/doc/ctc-meetings/2016-01-27.md b/doc/ctc-meetings/2016-01-27.md deleted file mode 100644 index 3e185c973babfd..00000000000000 --- a/doc/ctc-meetings/2016-01-27.md +++ /dev/null @@ -1,295 +0,0 @@ -# Node Foundation CTC Meeting 2016-01-27 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2016-01-27 -* **GitHub Issue**: https://github.com/nodejs/node/issues/4901 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Alexis Campailla (CTC) -* Bert Belder (CTC) (absent) -* Chris Dickinson (CTC) -* Shigeki Ohtsu (CTC) (absent) -* Steven Loomis (observer) (absent) -* Mikeal Rogers (observer) -* Fedor Indutny (CTC) -* Jeremiah Senkpiel (CTC) -* Rod Vagg (CTC) -* Ben Noordhuis (CTC) -* Domenic Denicola (observer) (absent) -* Nikita Skovoroda (observer) -* Ali Sheikh (observer) (absent) -* Evan Lucas (observer) -* Rich Trott (observer) -* Michael Dawson (observer) - - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -* Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) -* buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) -* Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) -* doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* Drop Windows XP (and Vista) support in 6.0 [#3804](https://github.com/nodejs/node/issues/3804) - -## Standup - -* James Snell (CTC) — Buffer API change proposal, PR review, error handling summit yesterday, community related issues -* Trevor Norris (CTC) — Writing a patch for Buffer#fill, so it can accept an encoding and a buffer; making MakeCallback reentrant; have a fix but not sure how it’ll affect 3p debugger modules; want to be thorough because this should extend back to v4 -* Colin Ihrig (CTC) — Reviewing issues/PRs, fixing bugs; PR landed in libuv for looking up tmpdir, PR into child process -* Brian White (CTC) — Reviewing/commenting on PRs and issues, working on JS optimizations inside core modules. -* Alexis Campailla (CTC) — Issues/PRs, some work in the testing repo, some work in CI, visual C++ build tools for making modules, investigated a couple issues in libuv -* Chris Dickinson (CTC) — docs WG organization -* Mikeal Rogers (observer) — New education initiatives coming up from Foundation board, legal, working on size & scope of TSC stuff and the incubator -* Jeremiah Senkpiel (CTC) — Administrative and TSC stuff; moderating large issues [CD — thank you!] -* Rod Vagg (CTC) — (Possibly catching up on sleep) -* Ben Noordhuis (CTC) — Reviewing libuv+node PRs, reply to issues, 2 months ahead are busy -* Nikita Skovoroda (observer) — some comments/reviews, nothing interesting. Npm code search update. [JS - Thanks for doing the npm search things!] -* Evan Lucas (observer) — Minor dns/net cleanups, Responding to issues/PRs -* Rich Trott (observer) — Tests, spinning up Testing WG, removing redeclaration of vars from code, especially tests, thus reducing side effects and making it easier to split up tests. -* Michael Dawson (observer) — Benchmarks, results of benchmarks on the website, PPC for big endian machines, V8 testing separate from the node install -* Fedor Indutny (CTC) - Reviewing Pull Requests, fixing issues, V8 code cache API -* Seth Thompson (observer) - Google folks replied to James’ scheduling for face to face meeting for talking about swapping out VMs - -## Review of last meeting - - -* Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) -* buffer: add Buffer.from(), Buffer.zalloc() and Buffer.alloc(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) -* Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) -* util: deprecate `util._extend` [#4593](https://github.com/nodejs/node/pull/4593) -* ArrayBuffer.isView() and buffer.buffer property [#4420](https://github.com/nodejs/node/issues/4420) -* doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* fs: optimize realpath using uv_fs_realpath() [#3594](https://github.com/nodejs/node/pull/3594) - - -## Minutes - -### Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) - -Alexis: No action items on the PR itself, which was locked to collabs, since it was turning into noise. Another issue was opened (roadmap#54) by Mikeal re: whether we should be VM agnostic in the future, there’s discussion of pros and cons as well as talk of how this might happen in the future. Chakra folks are on board for the API wg group / VM agnostic API. - -Fedor: Do we have consensus yet? - -Alexis: Not yet. - -Mikeal: The vast majority agree that we should be moving toward it, - -Ben: Is it actually true? I’ve seen it go both ways. - -Mikeal: I haven’t seen objections to being VM neutral, but how we go about it — there’s no agreement at all. - -James: There’s concerns around language support between the two and how that affects us — there’s a lot of issues like that, related to the “how” we go about this, but there seems to be a consensus that this is the way we want to go. - -Mikeal: I’d like to do this before April? - -Ben: Are there collaborators that haven’t spoken up yet, on the principle that they don’t feel too strongly about it? - -Jeremiah: I’m more in line with Oglas (the guy maintaining JXCore), he’s got a lot of experience with this, and his idea was to move to its own VM. I’m not sure we could - -Trevor: You mean maintaining our own VM? - -Mikeal: I had a conversation with Mark Mayo and he thought that would be the direction we’d actually land. - -Alexis: That would require an enormous amount of resources. - -Mikeal: This PR, you say we locked it to collabs, but aren’t the folks posting it not collabs? - -Jeremiah: In the meantime we can add them to a team for this purpose. - -Alexis: I think it looks like the original PR submitter can still comment. - -Alexis: I can facilitate since I’m in contact with them daily. - -Mikeal: We should create teams for V8 and a team for Chakra, for our convenience. - -Alexis: We do have a v8 team, but I think it’s the Node experts on V8. - -Seth: I can make sure the right people from the team are on there. - -Alexis: And I can create one for the Chakra team. - -Michael: there are a few folks I’d like to add from my team, how would I do it. - -Mikeal: James can do it. - -Another question: assuming we do move this direction, should we start an issue around no longer pulling deps into the source tree? - -Michael: Being vm-neutral doesn’t mean we bring in every VM into the source tree? - -Mikeal: But we’re set up to do that right now. - -Alexis: This also affects ICU. - -Jeremiah: I don’t think this is an immediate concern. - -Fedor: Release cycle — Chakra and V8’s release cycle are not aligned, how will that affect us? - -Alexis: Chakra team has folks dedicated to working with Node’s release cycle, so we would align. - -Mikeal: If we tackle this ABI compatibility problem, we may end up revisiting the release cycle since that’s driven by these big VM breaks. - -### CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) - -Jeremiah: We’re going to keep this open for a couple weeks while the nominees sit in. The vote is TBD. We don’t do this often so the process is rusty. - -### buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) - -James: Where we’re at right now: continuing to update the PR and the EPS proposal that goes along with this based on the conversation. The new APIs seem uncontroversial. Unsurprisingly the name of one method is the most controversial. Currently, it’s allocUnsafe, a few folks don’t like “Unsafe”, would prefer “Raw”. [CD - yay bikesheds!] - -Some of the feedback from Trevor was that the API should be tweaked a bit, where we can pass encoding or a buffer to `.fill`, other than that the conversation around it is dying down. We haven’t decided if we’re going to change the default `new Buffer(n)` to zero-fill — if we do make that change we have to make it all the way down to v0.10 to keep it consistent. - -Mikeal: Call it buffer.remoteDisclosure(). - -Just kidding. - -Ben: if we could make zero-fill as fast as the current impl, then we would of course pick that. - -James: Yes. - -Ben: I’ve been playing with doing init in a separate thread. Perhaps I can close the gap. - -Mikeal: The only objection is perf. - -James: Yep. The baseline impl is that zero fill uses calloc. - -Trevor: We use a pool. It’s always been possible to reach the pool from any buffer instance. Do we want to remove pooling? - -James: Current impl is that zerofill does not pool. - -Trevor: So much overhead! - -_(in document chat)_ - -_Chris: why not use WeakMap for pooling?_ - -_Ben: no weakmaps in v0.10._ - -Jeremiah: Do we have benchmarks for calloc? - -James: Once we get a little further, I’ll revisit benchmarks. - -Trevor: Can the kernel do magic where memory isn’t actually allocated when it’s done in a tight loop? [CD - I didn’t capture this completely] - -Ben: You can mmap memory, memory isn’t actually allocated + zerofilled until you touch it, but touching it causes a page fault. - -### Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - -Jeremiah: Looks like we covered this. - -### doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) - -Chris: Onboarded some folks. Completed drafting the docs roadmap proposal. Making sure we have adequate tooling to build docs to the website from the node.js core repo. - -Chris: There is a docs wg meeting next week [10AM PST] [Wednesday @ 10am Feb 3rd] - -Chris: Also working with the inclusivity WG to make a new collaborator guide. - -Ben: No loosening of commit formatting, right? - -Chris, Mikeal: nope - -Jeremiah: Has anyone read through the proposed charter? - -Mikeal: hasn’t changed recently - -Ben, James: read though it recently, lgtm - -Jeremiah: Vote? - -Mikeal: No need, no-one objects. - -Jeremiah: Ok, good to go. - -### Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -Mikeal: We’re nearing final documents, and we have some additions to contributing guide that come from legal. The SPDX stuff we talked about. The Foundations IP policy, we mention that we’re going to use CC-4.0 for docs. We should put this to the Docs WG about this. We should have a proper policy from the legal committee really soon. - -Chris: I will bring the CC-4.0 license to the Docs WG. - -### Drop Windows XP (and Vista) support in 6.0 [#3804](https://github.com/nodejs/node/issues/3804) - -Jeremiah: Realpath brought this back up. - -Ben: That was Rod but I can take over. The proposal was to drop vista support in the next major release, that would let us drop a lot of legacy of code. TBH, I thought we had already decided on this, so I’m surprised about this. If you’re not in favor, now would be the time to speak up. - -Trevor: Didn’t libuv drop XP? - -Ben: Nope. - -Trevor: Everything but some subset of the API works on XP? - -Alexis: I also thought this decision was already made. - -Jeremiah: It might have been in some other issue. I seem to recall. - -Alexis: Does anyone object to dropping XP? - -_[crickets]_ - -Fedor: I do! `` - -No objections. - -Alexis: Does anyone object to drop Vista support. - -Mikeal: Let’s get data from NPM. - -Ben: Info was posted on the issue, looks like there’s more XP users than Vista, but still very small percentage. - -Mikeal: Last I checked there were banks that required it, so it’s still out there. - -Trevor: They have LTS, right? - -Colin: If we were going to drop support, that we need to start messaging as soon as possible. - -Alexis: And that we’d put a check so that Node would exit on those platforms. - -Mikeal: It sounds like we’re going to cut some number of users. As long as we’re okay with that… - -Alexis: I think we’re going to support the other users better. - -Trevor: We have v4, and that will be around for [another year? CD] Maybe even V8 won’t support XP by the time v4 expires. - -Jeremiah: I think V8 already stopped supporting it. - -Alexis: I think Nikita articulated that. - -Jeremiah: Seth, if you’re still there, do you have any idea when V8 will drop XP support. - -Seth: We’ve planned that Chrome will probably drop XP support at the same time as … I have to double check. I’ll come back when I find out. - -Mikeal: We’ll drop it, and if anyone complains we’ll just say Microsoft told us to do it :) - -Alexis: I can make the change to stop on startup; in terms of messaging what needs to happen? - -Colin: We just need to get the word out. A tweet or a blogpost or something? - -Jeremiah: We should loop in marketing. - -Seth: It’s April 2016 for sure on the Chrome side. - -Jeremiah: So we have 3 months. - -Mikeal: It’d be a major? - -Jeremiah: Yep. v6. - -Alexis to PR this in. - -## Next Meeting - -2016-02-03 diff --git a/doc/ctc-meetings/2016-02-03.md b/doc/ctc-meetings/2016-02-03.md deleted file mode 100644 index 687cbe7ee7e9a3..00000000000000 --- a/doc/ctc-meetings/2016-02-03.md +++ /dev/null @@ -1,223 +0,0 @@ -# Node Foundation CTC Meeting 2016-02-03 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2016-02-03 -* **GitHub Issue**: https://github.com/nodejs/node/issues/5058 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Alexis Campailla (CTC) -* Bert Belder (CTC) x -* Chris Dickinson (CTC) -* Shigeki Ohtsu (CTC) -* Steven Loomis (observer) -* Mikeal Rogers (observer) -* Fedor Indutny (CTC) -* Jeremiah Senkpiel (CTC) -* Rod Vagg (CTC) -* Ben Noordhuis (CTC) -* Nikita Skovoroda (observer) -* Evan Lucas (observer) -* Rich Trott (observer) -* Michael Dawson (observer) - - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -## Standup - -* James Snell (CTC) — Working on the security fix stuff, buffer stuff, express TLP proposal -* Trevor Norris (CTC) — Commenting, working on making AsyncWrap a public API -* Colin Ihrig (CTC) — Just reviewing PRs and issues -* Brian White (CTC) — Reviewing PRs and issues, submitting various PRs. Working on performance improvements throughout core. -* Alexis Campailla (CTC) — Reviewing issues & PRs, drop XP support PR -* Chris Dickinson (CTC) — Docs WG Roadmap ratified (!), Promises PR -* Shigeki Ohtsu (CTC) — Upgrading OpenSSL and reviewing several PRs. -* Steven R. Loomis (observer) — met w/ TC39/Ecma402 folks to move items forward. worked on full-icu (#3460 - in the agenda) packaging and also locale negotiation https://github.com/nodejs/Intl/issues/10 - recommend docs (?) + small non-core module. -* Mikeal Rogers (observer) — TSC-level stuff, contribution agreement; updates on copyright stuff for core. -* Fedor Indutny (CTC) — reviewing PRs/issues, working on landing c-ares, OpenSSL patches -* Jeremiah Senkpiel (CTC) — Not much notable, TSC things (administrative wrangling) -* Rod Vagg (CTC) — Security issue, administrative wrangling, struggling a little to keep on top of everything -* Ben Noordhuis (CTC) — Wrote some code, reviewed some code, answered questions, replied to bug reports. -* Nikita Skovoroda (observer) — Commenting, nothing significant. Minor work on the npm code search tool. -* Evan Lucas (observer) — Issue and PR review. Looking into some minor stream performance things. -* Rich Trott (observer) — Test improvements; tightening linting rules; finding/closing old/stalled issues/PRs; Testing WG second meeting later this week -* Michael Dawson (observer) — Adding AIX machine, CI jobs, Job for V8 testing in Node tree, PPC BE release machine investigation, Benchmarking infra. - -## Review of last meeting - -* Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) - - (Skip, also in this meeting) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) - - (Skip, also in this meeting) -* buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - - (Skip, also in this meeting) -* doc: add Docs working group [#4244](https://github.com/nodejs/node/pull/4244) - - Ratified -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - - (Skip, also in this meeting) -* Drop Windows XP (and Vista) support in 6.0 [#3804](https://github.com/nodejs/node/issues/3804) - - Agreed to drop - -## Minutes - -### Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) - -_(Jeremiah: This should probably be the VM neutral discussion https://github.com/nodejs/roadmap/issues/54)_ - -Jeremiah: Someone tagged the roadmap issue on this. It might be more useful to talk about the VM neutrality issue rather than the PR. - -Ben: Has anyone started reviewing the PR yet? - -Alexis: Yes, there was a first review, an update, and a follow-up. I agree that the most interesting discussion is on the roadmap issue. - -Rod: How are we going to make progress on this? Should we wait until after the VM summit that James is organizing, or is there another way? - -Alexis: We could make a high level evaluation of whether we see value in VM neutrality or not, that could make progress. - -Michael: That’s what the issue was intended for in the first place. - -Jeremiah: There’s been a suggestion that the PR should be broken up a bit, to make reviewing more reasonable. - -Mikeal: I think the question CTC needs to answer sooner rather than later: do we hold up Chakra on a resolution, land it on a branch, etc. What is a “good” solution to work from while we don’t have a “perfect solution” [cd - some paraphrasing here] - -Rod: We need the high level questions answered — the ones too hard to answer in github. - -Mikeal: We need to give the people that want to work on Chakra specifically a place to work on it, while we figure out what we want. - -Alexis: Answering whether we want VM neutrality at all could make progress. - -James: Does anyone have objections to being VM neutral, at a high level. - -Ben: Not objections as such, but I do question how valuable it is. - -Alexis: It’s a matter of value vs. cost then. If it’s free, then of course we would add it. - -Ben: Yes. - -Michael: Even if we never add another VM, making the VM bindings more stable is a net win. - -Rod: We do have to be careful assuming this is something people are actually for. - -Michael: Shipping with a different VM might be more controversial than making it _possible_ to ship with a different VM. - -Trevor: [CD interpretation: part of the difficulty is the degree to which VM is complected with node c++, perhaps we should focus instead on a low level JS api.] - -Michael: Would this let us land V8 updates easier? - -Trevor: Once we have a sanctioned API, yes. Buffers are a good example of this. - -Mikeal: There are lots of examples of folks that copy over the entire JS API — even they end up writing something of a shim layer to get native modules. This LLJS API would not be the entire story. - -[CD: Michael and Trevor discuss subsets of APIs to support.] - -Mikeal: We should have this conversation at the summit. Where do we tell folks who want to work on Chakra to work? - -Ben: It only works on Windows. - -Mikeal: We could say, we’re going to put it on a branch, and you can work with the Build WG to produce builds. There’s a lot of MS folk that want to see this work, and we stand to learn a lot from the process of how this works. - -Ben: Are we the first line support? - -Alexis: There is a team of engineers dedicated to this. - -James: We could stand up a separate repo, with its own issue tracker + PRs. - -Rod: It’s also a discussion about the size of the tree. We talking in the build WG about different ways of vendoring to address this. A separate repo sounds interest. - -Jeremiah: Would that separate repo be the shim, or a fork of Node.js? - -Rod: it would be a fork. - -Jeremiah: It’d be nice to have the build process pull in the shim and chakra and build it. - -Rod: There’s a discussion in the Build WG repo about this. There’s not an easy way to do this. - -Rod: In terms of making progress right now, a fork repo is probably the best way to go — reducing the number of - -Jeremiah: I don’t think VM neutral is the way to go, I think our own VM is the way to go. There are concerns in the thread about how we impact userland — it’s unclear how modules will have to support that between different VMs. - -Mikeal: Folks using ES6 transpile. - -[CD and Jeremiah: not always!] - -Rod: The folks who care will do the work — when I publish a module I publish it to work for me — when someone else needs it to work else where they can PR it. The big benefit I see of VM neutrality is that we become part of a competitive landscape of VMs. MS really wants to get into this game, and compete with V8. We see it in the browser ecosystem, where the competition has shifted from perf to features, and it’d be interesting to see that applied to the node ecosystem. - -Jeremiah: Time check. - -Rod: in terms of progress, does anyone object to making a separate repo for this? - -[No objections!] - -### CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) - -Rod: We’ll leave this for a couple more weeks. Moving on. - -### buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - -James: Discussion has settled out. No new comments. Updated PR yesterday with a couple changes I discussed with Trevor. Close to being done, just a matter of cleaning up the PR a bit and making sure there are no objections. It is a semver-major. We haven’t decided if we’re going to deprecate the Buffer(n) api. - -Rod: Is it worth jumping in with naming issues — e.g., opposing the word “Unsafe” — now? - -James: Some folk really don’t like typing “unsafe”, but it is, _technically_, unsafe. - -[CD: Perhaps we should call it “allocXtreme”] - -Rod: Personally I don’t want “unsafe”, but I’ve been holding off. - -James: If you’ve been holding off on it, I don’t really care about the name too much. We can take it back to GH. - -### Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -Rod: Likely a two line comment at the top of all files. - -### @srl295: [path for full-icu data?](https://github.com/nodejs/node/issues/3460) - ./node_modules vs ./node/ ? (npm linkage) - -Steven: Put together a proof of concept. Core question here is: is full-icu try to use a directory such as node_modules, or is that hijacking it for improper use [cd: unsure if I captured that correctly] - -Result from Nov CTC meeting was “No objections to using node_modules”, and so I’m looking for feedback. - -Alexis: I thought the no objection was to a separate directory. - -Steven: Node module writes into some other known directory. - -Steven: The node installer or deb pkg could have a checkbox to install icu data. - -Rod: We could ship multiple installers. - -Re the package: Perhaps we should use `execPath` to determine installation location? - -Steven: Is execPath relative? - -Rod: It’s absolute. - -Steven: so that would be for global install — local install would use `node_modules/`. - -Rod: We could take a page from npm’s `.bin` and use `.lib`. I’m assuming the problem is that Node needs to look for this before it even gets to module resolution. - -Steven: Right, this has to happen before ~~V8~~ **your VM** starts up. - -Alexis: So I don’t think this belongs in `node_modules/`. - -Rod: Possibly `.node-icu`? - -Steven: Local is `node_modules/.node-icu`? - -Rod: Maybe writing up the details on GH and pulling us in? - -Steven: This is some good progress. It seems like it deals with the problem that it doesn’t overload an actual module; I’ll write up a proposal for this. Probably tomorrow. - -Rod: Any other comments for that? - -## Next Meeting - -2016-02-10 diff --git a/doc/ctc-meetings/2016-02-10.md b/doc/ctc-meetings/2016-02-10.md deleted file mode 100644 index 06bf35994e3ca9..00000000000000 --- a/doc/ctc-meetings/2016-02-10.md +++ /dev/null @@ -1,167 +0,0 @@ -# Node Foundation CTC Meeting 2016-02-10 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2016-02-10 -* **GitHub Issue**: https://github.com/nodejs/node/issues/5176 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Alexis Campailla (CTC) -* Bert Belder (CTC) -* Chris Dickinson (CTC) -* Shigeki Ohtsu (CTC) -* Steven Loomis (observer) -* Mikeal Rogers (observer) -* Fedor Indutny (CTC) -* Jeremiah Senkpiel (CTC) -* Rod Vagg (CTC) -* Ben Noordhuis (CTC) -* Nikita Skovoroda (observer) -* Ali Sheikh (observer) -* Evan Lucas (observer) -* Rich Trott (observer) -* Michael Dawson (observer) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -* Revert "fs: deprecate fs.read's string interface" [#5163](https://github.com/nodejs/node/pull/5163) & fs: add a temporary fix for re-evaluation support [#5102](https://github.com/nodejs/node/pull/5102) -* buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -## Standup - -* Brian White: Working more on improving performance in various areas of core, reviewing PRs and issues. -* Chris Dickinson: Promises PR + discussions with the error symposium group. -* Rich Trott: addressing flaky tests, enhancing linting, working to find a path to more automation in landing of PRs (although others, including Alexis, seem to have picked that ball up, thankfully) -* James Snell: Working on express stuff in, security stuff out, buffer API finished, moving forward on string externalization. -* Jeremiah Senkpiel: Hook for unhandled rejections that detects when the GC fires on a promise. That is currently blocked on V8 bug with weak callbacks + promises. -* Chris Dickinson: Promises PR + discussions with the error symposium group. -* Trevor Norris — MakeCallback reentrant fix for HTTP parser / AsyncWrap interaction. -* Michael Dawson - Working on getting AIX up in the CI. Also on running v8 tests in the Node tree. Added AIX to libuv tests. -* Steven R. Loomis - not much to add -* Nikita Skovoroda — like ususal, mostly comments and the initial version of the codesearch API on a VPS. Nothing major. -* Rod Vagg - Security stuff, catching up on issues and discussions. Legal committee meeting yesterday. - -## Review of last meeting - -* Enable Node.js to run with Microsoft's ChakraCore engine [#4765](https://github.com/nodejs/node/pull/4765) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) -* buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) -* Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) -* @srl295: [path for full-icu data?](https://github.com/nodejs/node/issues/3460) - ./node_modules vs ./node/ ? (npm linkage) - todo, update ticket with meeting resolution - - -## Minutes - -### Revert "fs: deprecate fs.read's string interface" [#5163](https://github.com/nodejs/node/pull/5163) & fs: add a temporary fix for re-evaluation support [#5102](https://github.com/nodejs/node/pull/5102) - -Rod: Simple deprecation warning for the particular argument usage. Pulling in the internal util module for deprecation messes up older versions of graceful-fs (and thus older versions of npm.) The question is whether to revert the PR, or to add a helper (that Nikita proposed.) I would suggest that this is urgent enough that we need to do something about it. - -Jeremiah: This is a poor reason to revert it. -James: From everything that I’ve seen, adding the warning is the least bad option. Folks seems to be against reverting. Maybe making the warning less specific to graceful-fs. - -Ben: I don’t agree. I think it’s right to point them to the newer version. - -Jeremiah: I agree (with Ben). - -Rod: Anytime you break the build, it’s an immediate candidate for reversion. It’s not permanently reverted, but it’s “let’s fix the build.” - -Jeremiah: This doesn’t actually break CI though. It breaks newer versions of npm on master. .. It might be npm in general just on the master branch. - -James: Forrest noted that pretty much any change other than reverting will have a significant effect on the npm user base. - -Jeremiah: Yeah but we’re not shipping this in a stable. - -Michael: If it breaks in master, doesn’t that prevent folks from doing other tests? - -Ben: I think the problem lies with npm here. - -Mikeal: You make that sound so easy. - -Ben: The version of npm we’re talking about is still in a PR, yes? - -Jeremiah: We don’t regularly run tests on master, so it might already be broken. I can test it right now.. - -Rod: I think Myles has been trying to run the npm tests more regularly, as part of smoke testing — and it’s broken for the smoke testing now. - -Michael: It seems like we’d want to keep things as green as possible. It seems like we’d want npm to do something. - -Rod: It’s a fact of life that we exist in an ecosystem that has these kinds of issues. My vote is to revert, and then revisit after we’ve gotten the build fixed. - -Ben: Well, yeah, I do. I think Nikita’s PR is an acceptable intermediate solution. - -Jeremiah: Likewise. The resolution is that we try to require it, if that fails, we use a deprecation helper we build in that emits a warning that something is breaking an internal module — that would fix it and seems quite reasonable. It will also help people note where stuff is going to break. - -Rod: Does someone want to help Nikita get this in? - -Ben: Didn’t you already get a couple of LGTMs? - -James: I think there’s one -1 and three LGTMs. - -Rod: We can force it if we have to. - -James: I propose: if we accept this now, let’s try to get it resolved better before v6 goes out — which gives us a deadline so it’s not pushed off indefinitely. npm gets a fix, and that’s where it happens. - -Ben: I think it’s a good idea to push npm to update their dependencies. Whether or not npm updates, I think it’s a good idea to include Nikita’s PR. - -Jeremiah: I think so too. - -Rod: Let’s take it back to GitHub. - -### buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - -James: There were some changes I was waiting for from Trevor w/r/t fill encoding. There was a desire to bikeshed a bit more on the name, not sure if you want to do that here. I think absent that the PR is probably in a place where we can land it. - -Rod: Sounds like we need a last call for objections, otherwise it’s going in. - -James: Yep. - -Rod: How about you do that on GitHub? - -James: OK. - -Jeremiah: Are you adding a zero-fill flag? - -James: Yes — it will switch all allocations to use calloc under the hood. The one thing this does not do is change the default behavior of `new Buffer(size)`. If we did that, it would be a breaking change going back to 0.10. - -Bert: Is the plan to deprecate it off the table? - -James: It’s a soft deprecate — docs only. - -Jeremiah: We should try to just deprecate it. The problem is that folks are running different versions against modules, and it would be bad to rely on zero-fill behavior where it doesn’t exist [CD — didn’t capture this entirely] - -James: We need to refine our deprecation strategy — and define whether something is deprecated vs. end-of-life. Will probably be returning to that next week or the week after. - -Rod: It sounds like we’ve got a way forward, here. - -Bert: It’s ugly but I won’t object. - -Rod: Noted. - -### CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) - -Rod: We should start to line up a vote. - -### Seek legal advice on LICENSE and copyright blocks in code [#3979](https://github.com/nodejs/node/issues/3979) - -Rod: There was a PR that Mikeal put in that updates the DCO from v1.0 to v1.1. If you’d like to review that, please comment on that. - -### Other business - -James noted that the express application landed today. I will be working to move that into the new organization. More of an update on tomorrow’s TSC call. - -Jeremiah notes that he will be a bit preoccupied by that for a while. - -## Next Meeting - -2016-02-17 diff --git a/doc/ctc-meetings/2016-02-17.md b/doc/ctc-meetings/2016-02-17.md deleted file mode 100644 index 25aa39594043cd..00000000000000 --- a/doc/ctc-meetings/2016-02-17.md +++ /dev/null @@ -1,240 +0,0 @@ -# Node Foundation CTC Meeting 2016-02-17 - -## Links - -* **Audio Recording**: https://soundcloud.com/node-foundation/ctc-meeting-2016-02-17 -* **GitHub Issue**: https://github.com/nodejs/node/issues/5274 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* James Snell (CTC) -* Trevor Norris (CTC) -* Colin Ihrig (CTC) -* Brian White (CTC) -* Alexis Campailla (CTC) -* Bert Belder (CTC) -* Chris Dickinson (CTC) -* Shigeki Ohtsu (CTC) -* Steven Loomis (observer) -* Fedor Indutny (CTC) -* Rod Vagg (CTC) -* Ben Noordhuis (CTC) -* Nikita Skovoroda (observer) -* Ali Sheikh (observer) -* Evan Lucas (observer) -* Rich Trott (observer) -* Michael Dawson (observer) -* Seth Thompson (observer) -* Mikeal Rogers (observer) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -* Issue management: discuss caine again [#5246](https://github.com/nodejs/node/issues/5246) -* refactor src/node.js into internal files [#5103](https://github.com/nodejs/node/pull/5103) -* process: add 'warn' event [#4782](https://github.com/nodejs/node/pull/4782) -* CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) -* buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) -* Check in ICU into repo? [#3476](https://github.com/nodejs/node/issues/3476) - Steven R. Loomis - +1 on checking in <45M into repo? so Jenkins servers will never again have to download ICU -* Detect ICU data at startup? [#3460](https://github.com/nodejs/node/issues/3460) - Steven R. Loomis - +1 on ≈/node_modules/.node-icu ? - - -## Standup - -* James Snell: Working on a few PRs, the buffer change, the process.warning, looking at doc updates — backporting. Looking at other PRs, getting ready for conference. -* Trevor Norris: AsyncWrap bug on raspberry pi, getting two tcpwraps when creating a server instead of just one. -* Colin Ihrig: Review of issues tagged with child_process label and PR for adding options to process.send(). -* Brian White: fixing bugs, cleaning up code, more performance testing, reviewing PRs and issues. -* Bert: N/A -* Alexis: Mostly working on chakracore, moved the repo from ms/node, define participation guidelines; adding support in CI -* Chris Dickinson: Promises PR + WG (https://github.com/nodejs/promises). Microtask queue pluggability (https://github.com/chrisdickinson/node-1/pull/2). -* Shigeki Ohtsu: Reviewing a few PRs and issues and make my internal works. -* Steven R. Loomis: Intl packaging stuff -* Fedor Indutny: Reviewing PRs, fixing issues -* Rod: Promises, v5.x management, people & administrative stuff -* Ben: Promises PR, and ES2015 module interop, there’s a lot to take in, no fully formed opinions yet. -* Nikita Skovoroda: mostly comments and reviews, as usual. -* Ali Sheikh: Back from 2 weeks of vacation. Catching up on mail & jetlag. Progress on Sampling Heap Profiler in V8. Was involved in Error summit before vacation. -* Evan Lucas: Working on some http things (cleanup, etc.). Wrote CLI tool for submitting jenkins builds and viewing CI status. -* Rich Trott: flaky tests; updating ESLint; finding stale issues and closing, tagging, or taking other appropriate action -* Michael Dawson: Working through AIX issues, landing pr, working on setting up job/answering question on running V8 tests in Node tree, benchmarking infra/new benchmarks, discussion with Richard on post-mortem WG activity and work, trying to read issues with high traffic. -* Mikeal Rogers: Foundation stuff, DCO 1.1 patch. -* Seth Thompson: Traveling the past week or so; working on revamping profiling and metrics on our perfbots, and trying to get Node building on the chromium bots, to assist with the benchmarking WG. - -## Review of last meeting - - -* Revert "fs: deprecate fs.read's string interface" [#5163](https://github.com/nodejs/node/pull/5163) & fs: add a temporary fix for re-evaluation support [#5102](https://github.com/nodejs/node/pull/5102) -* buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - -## Minutes - -### Issue management: discuss caine again [#5246](https://github.com/nodejs/node/issues/5246) - -Fedor: A year ago I submitted an idea, and we tried it for a bit, to use a GH bot to help us manage issues on GH. This was to address the pace of issues. The idea was to introduce a bot that automatically assigns issues to people based on tags & user responses to questions. It didn’t take off at the time, the reason being we didn’t want to be too automatic. Chris had some issues with it. I wanted to see if we could take another look. - -Mikeal: Today GH slipped in an issue template feature. We may want to investigate that. - -Fedor: Indeed this should solve the thing for us. We can ask folks to mention some specific working groups. - -Bert: I also had objections to the first version of caine, I felt like it would only add noise — it would still ask questions even if the issues had been answered. I would suggest we start with the template then look at what caine could add to it. Maybe autotagging? - -Mikeal: We have a lot of folks tagging, but we don’t have a good way for limiting email notifications. Maybe autoassign tags to users? - -Bert: I am not opposed to this. - -Mikeal: Maybe it should never comment. - -Fedor: I kind of disagree with this. My workflow: I was actively using GH teams to filter emails. If the bot would be able to assign the tags — and cc teams in a single comment. - -Chris: I’d second that. - -Rod: I’d advise starting light; it may get pushback if it comments too much. - -Ben: What exactly would you change? - -Fedor: Autotagging based on responses in template. We’ll ask folks to name the part of core in the template, and add a mention of the relevant GH team so that they get notifications. - -Mikeal: If someone wanted to take on an interesting side project, feeding issues + tags into ML would be pretty cool. - -Bert: I think that’s a really interesting idea actually. - -Mikeal: Maybe some IBM folks that have access to Watson could do this? - -Bert: Maybe we could give interested folks an account? - -James: [CD: Paraphrasing: It seems possible.] If anyone’s interested in this, send me a note offline. - -### refactor src/node.js into internal files [#5103](https://github.com/nodejs/node/pull/5103) - -Jeremiah tagged this one. Tagged because it’s heavy-handed into splitting `src/node.js` into sub-files in the internal directory. - -James: It is a big change, but it seems to be one that’s fairly safe. I didn’t notice any things that would obviously break. Given the code that it does touch, it’s worth being conservative and careful pulling it in. I’m +1 on it, but I think we need to be careful. - -Chris: Naming issues. - -Ben: Memory overhead. Script objects have a moderately sized footprint, so that’s a thing to keep in mind. - -Rod: I think we could name the files with `bootstrap-`. With regards to any objections to doing this… There’s the usual fear re: size of changes, memory, breaking people’s workflows. Is there anything else to discuss here? - -Michael: Suggest running the footprint benchmark to get a feel. - -Ben: Will post on GH. - -[CD: Moved to GH] - -### process: add 'warn' event [#4782](https://github.com/nodejs/node/pull/4782) - -James: Came from how we do warnings currently, which is to drop it out into console.error now. This restructures it a bit to put it into a warning event on the process object, allows users to listen to those warnings. Mainly looking for review. Existing command line arguments are still supported, but messages are changed a bit. Adds ability for us to add warning for security purposes or bad practices. Process.emit ‘warning’ allows users to emit their own warnings. It came up via the buffer changes — where we could issue a warning for users using the new Buffer constructor in an unsafe way. Just looking for review, nothing too controversial. - -Trevor: The buffer constructor needs to have to have the same signature as Uint8Array for subclassing purposes. - -Michael: This captures all output to stderr from core? - -James: No, just the warnings, like the EE maxlisteners warning. The default behavior is to print it to console, but it may be overridden by user handlers. Folks from electron have said that this is something that they like. - -Rod: Any concerns or objections raised in GH? - -James: Not thus far — tty check raised by Jeremiah - -Trevor: Does it sent the output to stderr/stdout only or could one provide a file descriptor? Looks like you're building a messaging system... - -James: Default behavior is to print to stderr, but you can turn off this behavior by installing your own listener. - -Chris: Are we sure no one’s using process.emit(‘warning’)? - -James: Did a search and came up with no results. - -Chris: Excellent. - -Rod: It’s more than adding an event, it’s worth taking a look. - -James: [CD: my internet is flaking out] Mostly trying to get it on folks’ radar. If folks can take a look and provide their feedback. - -Rod: FWIW I think this is a great change. Unifies and adds some nice functionality around these warnings. - -### CTC Membership Nominations [#4750](https://github.com/nodejs/node/issues/4750) - -Rod: Any objections to putting this to a vote next week? - -[crickets] - -### buffer: add Buffer.from(), Buffer.alloc() and Buffer.allocUnsafe(), soft-deprecate Buffer(num) [#4682](https://github.com/nodejs/node/pull/4682) & Buffer(number) is unsafe [#4660](https://github.com/nodejs/node/issues/4660) - -James: added ability to specify byte offset and length, both to `.from` and [CD: missed this] - -James: No significant objections, except to allocUnsafe which folks really don’t like the naming of. This is shaping up, we should be able to get that landed fairly soon, just need to hear from this group if there’s objections on naming or status of this? - -Rod: Myself and Trevor still don’t like the name. I’m not willing to object too strongly to that. - -Bert: The names are ugly, but I don’t want to bikeshed. Same as Rod, I guess. - -James: If I could ask folks to do a final review, it’s a big PR. All buffer uses in core are updated to use this. Let me know if there’s any objections. I’d like to get this landed before too long. - -Trevor: The documentation changes are what took me the longest to get through. - -Rod: Documenting this stuff has caused problems in the past. - -### Check in ICU into repo? [#3476](https://github.com/nodejs/node/issues/3476 ) - Steven R. Loomis - +1 on checking in <45M into repo? so Jenkins servers will never again have to download ICU - -Steven: Speaking of massive PRs! I haven’t created the PR for this. I have been doing some slicing on ICU, I have now a 45mb branch that includes all of ICU, enough to build a full set or a full-icu, or a small icu, and removes the requirements for the servers to download anything at all at build time. I’m asking for sign-off on this. It would make small-icu the default for `./configure`. - -Steven: it will be located in source: `deps/icu` - -Trevor: How often would this need to be updated? - -Steven: [CD - missed this] - -Trevor: A good chunk of the deps/v8 updates include tarballs. - -Ben: Does it write the data files at compile-time? - -Steven: This just checks in the binary blobs. - -Ben: In that case Trevor makes a good point. - -Steven: The data file is not compressed, it does compress fairly easily. (59% by gzip) - -Trevor: One of the original reason for not landing this was that the source files were 200mb, but when they’re compressed down they’re 45mb. Git works better with the former. We’d almost have to do a test to see which is a more sustainable in the long run. - -Steven: Including the source data means that the source data has to be compiled which takes a long time. (+75M source + tools) - -update schedule - http://source.icu-project.org/repos/icu/data/trunk/meta/xml/icumeta.json - -Trevor: We’ve discussed all of this. If we just include English, how do we present this on the website? There’s a lot of contention - -Rod: I’ve had trouble getting my license updater to work because not having it in-repo breaks things. On the other hand, the repo is growing at a fast pace, and it’s pretty bad UX (have you ever tried cloning the Mozilla repo?) - -Chris: It seems like including the full source - -Steven: We could do the 20mb, only 3mb of which is the binary blob. And we could pick it up every year. full data available via npm (see next issue) - -Ben: what about security releases? Do those require updating the binary blob? - -Steven: No. - -Trevor: My only concern is the binary blobs. - -Rod: Let’s start with the small binary blob will allay a lot of our concerns here. - -Steven: I may be able to slice the 20mb more. This is with no configure source changes to ICU. It may be further reducible. - -### Detect ICU data at startup? [#3460](https://github.com/nodejs/node/issues/3460 ) - Steven R. Loomis - +1 on ≈/node_modules/.node-icu ? - -Steven: This is the companion to the above. The basic idea here is that I went through the resolver code and what I’m proposing is having the data files in a directory inside of `node_modules/.node-icu`, installed by npm module or by some other installer could install it to that directory. - -Trevor: Has there been any thought to some sort of integration with npm? - -Steven: I hadn’t thought about that. Nathan had commented much earlier, concerned with linkage between Node and npm. This only uses the node_modules directory, not npm itself. -Chris to point CLI team at issue. - -### Other business - -_Discussed decision making process around the Promises PR_ - -## Next Meeting - -2016-02-24 diff --git a/doc/ctc-meetings/2016-05-04.md b/doc/ctc-meetings/2016-05-04.md deleted file mode 100644 index 3b5abb7ad98901..00000000000000 --- a/doc/ctc-meetings/2016-05-04.md +++ /dev/null @@ -1,192 +0,0 @@ -# Node Foundation CTC Meeting 2016-05-04 - -## Links - -* **Audio Recording**: https://www.youtube.com/watch?v=3M95wsWs7qQ -* **GitHub Issue**: https://github.com/nodejs/node/issues/6567 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* Bradley Farias @bmeck (observer/modules EPS/GoDaddy) -* Brian Terlson @bterlson (observer/modules EPS/tc39/Microsoft) -* Сковорода Никита Андреевич @ChALkeR (CTC) -* Colin Ihrig @cjihrig (CTC) -* Evan Lucas @evanlucas (CTC) -* Jeremiah Senkpiel @Fishrock123 (CTC) -* James M Snell @jasnell (CTC) -* Josh Gavant (observer/Microsoft) -* Michael Dawson @mhdawson (CTC) -* Brian White @mscdex (CTC) -* Rod Vagg @rvagg (CTC) -* Seth Thompson (observer/Google) -* Shigeki Ohtsu @shigeki (CTC) -* Steven R Loomis @srl295 (observer/IBM/ICU) -* Trevor Norris @trevnorris (CTC) -* Rich Trott @Trott (CTC) - - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -### nodejs/node - -* Revert 5950 [#6537](https://github.com/nodejs/node/pull/6537) -* src: refactor constants, deprecate require('constants') [#6534](https://github.com/nodejs/node/pull/6534) -* doc: refactor the changelog by version [#6503](https://github.com/nodejs/node/pull/6503) -* Request for discussion of https://github.com/dherman/defense-of-dot-js vs EPS on modules - - - -## Standup - -* Сковорода Никита Андреевич: - * Nothing too significant, some comments (as usual). - -* Colin Ihrig: - * A few PRs - * Reviewing issues and PRs - -* Evan Lucas: - * Submitted a doc and util pr. - * Working on a http bug. - * Been trying to help some packages get updated to work with v6. - * Left some comments on a few issues. - * Have been working on a commit validator tool. - -* Jeremiah Senkpiel: - * v6 Breaking changes doc - * working on v6.1.0 release - * assorted PRs, Issues, EPs -- done a bunch of reviews - -* James M Snell: - * v6 Release - * Fixed 2 util.inspect bugs (proxy and array length) - * Helped troubleshoot buffer indexOf/lastIndexOf bug - * Troubleshooting 5950 issues - * Work on error code refactoring - * Work on constants refactoring - * Work on changelog refactoring - * Ongoing http implementation security / spec compliance review - * Working on compliance follow ups from vm summit - * Investigating possible alternative solutions for stdout/stderr - non-blocking issues - -* Josh Gavant: - * Testing use of trace-event macros, designing tracing module, reviewing AsyncWrap and alternatives. - -* Michael Dawson: - * Investigated ppc be release machine issues - * validating be build from nightly release job - * AsyncWrap EP review - * switched benchmarking vof v6 over to new v6 branch - * wrote/submitted stable ABI module EP - * misc reviews/lands - -* Brian White: - * Worked on http server code refactor and other http performance improvements - * Reviewed PRs/issues - -* Rod Vagg: - * Time off, now catching up - -* Seth Thompson: - * continue to work on getting v8 inspector to work with node - * meeting with Ali as he.s visiting in person - -* Shigeki Ohtsu: - * Upgrading openssl and reviewing one PR for GCM IV - -* Steven R Loomis: - * turn/rebase/clean ci for https://github.com/nodejs/node/pull/6088 ( checkin ICU into master ) and https://github.com/nodejs/node/pull/4253 ( v8BreakIterator to throw error rather than fatal crash - * opened Doodle poll to get Intl WG going again (monthly) https://github.com/nodejs/Intl/issues/33 - -* Trevor Norris: - * Don't abort on access of invalid pointer returned by Unwrap PR - * Tuning the AsyncWrap EP and writing patches as result - -* Rich Trott: - * Added undocumented-for-now -F flag to jslint.js to automatically fix lint issues. Dog-fooding it right now. Give it a shot if you.re brave. - * Open PR to have `known_issues` tests run via CI and `make test`. PTAL. https://github.com/nodejs/node/pull/6559 - * Assessments for long-dormant issues. - -* Bradley Farias: - * Investigated counter proposal details to node EP for modules - * Started test framework for modules EP - - -## Review of last meeting - - -* governance: add new collaborators XII [#6282](https://github.com/nodejs/node/issues/6282) -* doc: doc-only deprecation for util.log() [#6161](https://github.com/nodejs/node/pull/6161) -* Check (small) ICU into repo [#6088](https://github.com/nodejs/node/pull/6088) -* doc, tls: deprecate createSecurePair [#6063](https://github.com/nodejs/node/pull/6063) -* Planning for v6 [#5766](https://github.com/nodejs/node/issues/5766) -* Introduce staging branch for stable release streams [#6306](https://github.com/nodejs/node/issues/6306) -* ES6 Modules detection update / https://github.com/nodejs/node-eps/issues/13 - - -## Minutes - -### Revert 5950 [#6537](https://github.com/nodejs/node/pull/6537) -* James: Bug picked up in v6 for symlinked peer dependencies, our tests/CI didn.t pick it up unfortunately. Proposal is to revert the change and review it after adding some tests for this. -* Rod: there was some discussion about a revert being semver major -* Jeremiah: not optimal, reverting is technically a semver-major -* Rod: does anyone have an objection to a revert at this stage? -* Jeremiah: I believe some of the new behaviour was useful, is there a path to reintroducing it? -* James: least invasive route would be to add the new behaviour behind a flag, there are some other approaches being investigated. The folks who proposed this change in the first place are behind the reversion at this stage. - -### Request for discussion of https://github.com/dherman/defense-of-dot-js vs EPS on modules - - -* Bradley: we merged our proposal last week and afterward a counter-proposal (that we.ve been waiting on for many weeks) showed up. The proposal is a package.json-based solution. It does address all of the major use-cases of Node and it does this in slightly different ways than we.ve seen before. It.s still lacking some existing behaviour of CJS files (you can.t detect some filepaths for CJS), e.g. ~/.config.js. It introduces a path-expansion mechanism. You add a module.root to your package.json. I still have concerns about this but it.s much better than the previous ones based on package.json. I.ll be having a more in-depth conversation with Brian Terlson (TC39/Microsoft), if anyone wants to join. -* Jeremiah: is the main downside of the file extension about sharing files from servers that aren.t configured for it? -* Bradley: yes, the main concern is about firewalls and configs that block transmission of the new files. -* Rod: can you help us empathise with the sentimentality around the file extension, are there objective problems that we are not picking up on? -* Bradley: there.s a concern . _something about a lodash example_ . shell scripts not finding the new files with *.js. -* Brian Terlson: there.s an expectation that JavaScript is contained in a .js file and we.re in a nice place now that this is true with some minor exceptions. For TypeScript we.d have to add a .mts and .mtsx extension. -* Rod: _asking about the sentimentality again_ -* Brian Terlson: that.s a mischaracterisation of the defense of .js proposal -* Jeremiah: there will be developer friction either way -* Brian Terlson: but friction will be limited to node developers as opposed to all javascript developers -* Rod: what state is standard ? -* Bradley: Some pieces still have minor changes going on but mostly locked down. -* Brian Terlson: we have been thinking about all of these kinds of things during the whole process. I don.t think spec changes are off the table, TC39 could reconsider some aspects of the spec to improve matters. No promises, but don.t feel like you shouldn.t bring it up because we.re so late in process. -* Bradley: forward detection is the main problem. Have examples of specifics. As long as implicit strict mode is enforced we are going to have a hard time. -Rod: what.s the path forward ? On our side seems like strong preference is still on the file extension side. -* Bradley: Either way was ecosystem effects. Personally towards file extensions, most response on social media is either .better than nothing. or .don.t like file extension but not pushing for package.json either.. Will discuss further with Brian and others from Microsoft. -* Rod: EP does not mean it is final, but it does mean it is the preferred way forward and CTC members would have to be convinced otherwise. -* Bradley: likely need longer discussion in next week or so either way. - - -### src: refactor constants, deprecate require('constants') [#6534](https://github.com/nodejs/node/pull/6534) -* James: recent PR asking to add new constant. They are mentioned in the docs in a few places, but not well documented. Figured should take a run at documenting and refactoring to make it make more sense. Cleans up the structure and properly documents. Would it be semver major since we have never documented before ? -* Jeremiah: marked as semver major because it was deprecating existing constants. -* James: hard deprecation pretty much blows up everything as npm uses them ,etc. Thats why it is a soft deprecation. -* Jerimiah: we should find way to document -* James: add to release notes saying to use the new versions. -* Rich: Move discussion back to github -* Rod: Any objection to doing this, want consensus before we spend a lot of time doing it. - - -### doc: refactor the changelog by version [#6503](https://github.com/nodejs/node/pull/6503) - -* James: changelog grew to point where it is no longer visible/usable on github. To make it at least visible it was temporarily split out into an archive. This PR is to split it out by version instead. Each version release would link to the individual version change log. One at top level becomes an index to the version specific ones. Acceptable or do we need another approach? Archive for io.js release and before v.10. Should not add too much additional work to release process. -* Rod: maybe io.js ones should be in separate files as well instead archive. -* Jeremiah: io.js v1 has particularly large set of changes -* James: any major objections ? -* Rod: take it back to github, roll forward unless objections on github. - -### Q/A on public fora -* call for questions on public channels. -* no existing ones so far. -* will wait a few minutes to see if any come in -* ok moving on. - - -## Next Meeting - -2016-05-11 diff --git a/doc/ctc-meetings/2016-06-15.md b/doc/ctc-meetings/2016-06-15.md deleted file mode 100644 index 6fce3b0d4d72e4..00000000000000 --- a/doc/ctc-meetings/2016-06-15.md +++ /dev/null @@ -1,174 +0,0 @@ -# Node Foundation CTC Meeting 2016-06-15 - -## Links - -* **Audio Recording**: https://www.youtube.com/watch?v=qWX8i9SKatQ -* **GitHub Issue**: https://github.com/nodejs/node/issues/7307 -* **Minutes Google Doc**: -* _Previous Minutes Google Doc: _ - -## Present - -* Bradley Meck @bmeck (observer/GoDaddy) -* Сковорода Никита Андреевич @ChALkeR (CTC) -* Chris Dickinson @chrisdickinson (CTC) -* Evan Lucas @evanlucas (CTC) -* Jeremiah Senkpiel @Fishrock123 (CTC) -* John-David Dalton @jdalton (observer/Microsoft) -* Josh Gavant @joshgav (observer/Microsoft) -* Michael Dawson @mhdawson (CTC) -* Brian White @mscdex (CTC) -* Ali Ijaz Sheikh @ofrobots (CTC) -* Alexis Campailla @orangemocha (CTC) -* Rod Vagg @rvagg (CTC) -* Rich Trott @Trott (CTC) -* Trevor Norris @trevnorris (CTC) - -## Agenda - -Extracted from **ctc-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting. - -### nodejs/node - -* url: return valid file: urls fom url.format() [#7234](https://github.com/nodejs/node/pull/7234) -* http: don't inherit from Object.prototype [#6102](https://github.com/nodejs/node/pull/6102) - -### Standup - -* Bradley Meck @bmeck - * fleshing out a proposal for if we could disambiguate the grammars for Script and Module. - -* Сковорода Никита Андреевич @ChALkeR (CTC) - * some issue/PRs reviews - -* Chris Dickinson @chrisdickinson (CTC) - * NodeConf - * modules.guide - -* Evan Lucas @evanlucas (CTC) - * Preparing for security release - -* Jeremiah Senkpiel @Fishrock123 (CTC) - * (Previous week: fixed the primary OS X stdio bug) - * NodeConf - -* Fedor Indutny @indutny (CTC) - * fixing bugs, reviewing PRs, working on llnode - -* Josh Gavant @joshgav - * debug protocol stuff - -* Michael Dawson @mhdawson (CTC) - * Still chasing PPC machine issues - * AIX/malloc(0) issue - * ABI stable module API work with Stefan/Ian, filling in Nan examples - * Input on some benchmarking related PRs - * Other misc reviews/lands - * Keeping up with issues - -* Brian White @mscdex (CTC) - * Landed some old PRs - * Submitting PRs to fix some regressions - * Reviewed PRs and issues - -* Ali Ijaz Sheikh @ofrobots (CTC) - * More work on v8_inspector - * Starting to look at backporting some V8 fixes for LTS - -* Alexis Campailla @orangemocha (CTC) - * Landed a fix for node-gyp, broke with VS update 3 - -* Rod Vagg @rvagg (CTC) - * Alpine Linux in CI - * Security release hoo haa - * Reviews & discussions - * Electron / Node relationship - * New CTC repo - * Jenkins upkeep - -* Rich Trott @Trott (CTC) - * Setting up the next onboarding - * Facilitated a session on releases at NodeConf. Will share notes with Build WG, LTS WG, and people who can sign releases. - -* Trevor Norris @trevnorris (CTC) - * Finished updating AsyncWrap EP and now investigating proposed implementation. - * Helping identify old issue in Atom editor in regards to writing to disk. - - -### Review of last meeting -* Tracking issue: stdio problems [#6980](https://github.com/nodejs/node/issues/6980) -* module: expose `Module._runInThisContext` [#6288](https://github.com/nodejs/node/pull/6288) - - -## Minutes - - -### url: return valid file: urls from url.format() [#7234](https://github.com/nodejs/node/pull/7234) - -@trott: semver-major change, needs approval from CTC. -Real fix will be @jasnell’s HTTP compliance work. - -In browsers `file:/home/joshgav/myfile.txt` is auto-corrected to `file:///home/joshgav/myfile.txt` (i.e. slashes are prepended to the path and hostname is an empty string). This change institutes the same in Node.js. - -Are there other protocols which require additional slashes (`//`) if hostname isn’t specified? Yes, but hard to heuristically determine if needed. - - -### http: don't inherit from Object.prototype [#6102](https://github.com/nodejs/node/pull/6102) - -Replace headers object ({}) in req/res with StorageObject, which doesn’t delegate to Object.prototype. But this will break anyone using regular `Object` methods on header props. - -@trevnorris: Why don’t we intercept calls to properties with checks to an internal dictionary of actual headers? If the key isn’t there, then try to call Object.prototype. - -How would that effect perf? - -It’s the right decision because otherwise can’t use headers with certain names like `__proto__`. - -Better to do a deprecation cycle. How? Insert something (proxy) between actual call to property, would issue deprecation warning first. This would be temporary, eventually this interceptor/proxy would go away. - - -### ES6 Modules [node-eps/002-es6-modules.md](https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md) - -Need to disambiguate ES6 modules and regular scripts (which include CJS modules). Cannot determine if file is module, script, etc. from code itself. For this reason Node decided to use `.mjs` extension for ES6 modules. - -New proposal: If `import` or `export` keywords are in module code, then use module goal. So no need for extra metadata or file extension. But would have to parse file to check for presence of these keywords. - -https://github.com/bmeck/UnambiguousJavaScriptGrammar -replaces https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md#51-determining-if-source-is-an-es-module - -This would be part of ECMA262 so browsers would do the same, but needs to be ironed out in TC39. On [agenda][TC39 Agenda] for 7/26 TC39 meeting. - -What if nothing is imported or exported? Could do `export default null` to export nothing. - -Starting off, preferred goal when preparing code would be CommonJS/script, later on could change to ES6/module. - -Caching is more feasible. - -Provides more seamless flow from CJS to ES6 in the future. - -Will packaging tools need to implement parsing logic too to package properly? Yes, but there are possibilities listed in the repo. - -What other differences between scripts and modules? -- `await` keyword only in modules according to ECMA262 -- `modules.root` in package.json is intended to allow mirrored directory structure for use with ES6; but technically all it does is redirect file system calls and it could be used for other purposes, so it’s not reliable. - -Purpose of modules.root - allows redirection within a module, e.g. `module/file.js` doesn’t necessarily resolve to `./file.js` within the directory, could be redirected to `${module.root}/file.js`. This allows side-by-side CJS and ES6 among other things. - -What about for human reading? How can people differentiate at a glance between CJS and ES6? -- `import`’s are generally at the top, `export`s at the bottom. If you see `import` it’s an ES6 module. - -How are browsers dealing with this? Older browsers which encounter `