Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v8.5.0 proposal #15308

Merged
merged 231 commits into from
Sep 12, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
231 commits
Select commit Hold shift + click to select a range
e12a9c5
build: re-enable snapshots in v8.x
MylesBorins Aug 16, 2017
8fb0895
test: improve multiple vm tests
jasnell Jul 24, 2017
c76ec71
test: improve multiple zlib tests
jasnell Jul 24, 2017
868b441
test: begin normalizing fixtures use
jasnell Jul 17, 2017
d4f2a52
test: check crypto before requiring tls module
danbev Aug 9, 2017
a3feb54
test: make test-tls-alert-handling more strict
Trott Aug 6, 2017
4205648
test: invoke callback with common.mustCall()
Sep 17, 2016
136eea4
os: add CIDR support
zeusdeux Jul 16, 2017
7f02c36
test: fix test-cluster-send-handle-large-payload
Trott Aug 12, 2017
4d2aa16
process: keep process prototype in inheritance chain
MSLaguana Aug 9, 2017
9da6c10
tools: checkout for unassigned DEP00XX codes
jasnell Aug 8, 2017
27ec693
test: add missing console.error to exec-maxBuffer
BethGriggs Aug 12, 2017
72cc2ca
doc: fix word wrapping for api stability boxes
saadq Aug 13, 2017
9589641
http2: Expose Http2ServerRequest/Response
phouri Aug 10, 2017
4dd095c
test: refactor async-hooks/test-httparser tests
Runite618 Aug 13, 2017
0dc9d28
doc: added napi_get_value_string_latin1
kfarnung Aug 7, 2017
b0f4539
tools: delete an unused argument
phisixersai Jul 15, 2017
80fe40a
http2: handful of http/2 src cleanups
jasnell Aug 14, 2017
9d37398
build: remove duplicated code
krydos Jun 5, 2017
c8f0e5a
doc: fix typo in cli.md
hsmtkk Aug 16, 2017
3d62139
doc: add BridgeAR to collaborators
BridgeAR Aug 16, 2017
1a2f749
deps: fix inspector v8 test
Aug 14, 2017
bfb97b7
deps: cherry-pick fa4ec9f from V8 upstream
Aug 3, 2017
ca3ec90
benchmark: convert var to es6 const
sebasmurphy May 7, 2017
c6e2b8a
deps: backport c4852ea from upstream V8
Jun 27, 2017
6cb718b
deps: backport 5152d97 from upstream V8
Jun 27, 2017
6e2f622
deps: backport 3d8e87a from upstream V8
Jun 29, 2017
a67e7f9
deps: backport 6e9e2e5 from upstream V8
Aug 3, 2017
b7f7d67
deps: backport bca8409 from upstream V8
Aug 3, 2017
55eed60
deps: backport f9c4b7a from upstream V8
Aug 3, 2017
bd40cc6
tracing: Update to use new Platform tracing apis
Jun 29, 2017
fadcbab
src: Node implementation of v8::Platform
Mar 13, 2017
dcd7817
src: use `unordered_set` instead of custom rb tree
addaleax Aug 14, 2017
c3c6cb1
util: use proper circular reference checking
addaleax Aug 12, 2017
4f49ae5
test: check util.inspect circular Set and Map refs
BridgeAR Aug 11, 2017
56bb199
deps: cherry-pick eb306f463e from nghttp2 upstream
addaleax Aug 12, 2017
1b57c37
http2: minor refactor of passing headers to JS
addaleax Aug 12, 2017
03fd38c
test: Mark test-stop-profile-after-done flaky
Aug 16, 2017
1217b1a
test: add test for cluster benchmarks
Trott Aug 13, 2017
050a224
doc: explain what to do if git push is rejected
Trott Aug 16, 2017
37c43ed
tools: fix update-eslint.sh
MylesBorins Aug 16, 2017
abe0148
doc: fix http api document
Aug 4, 2017
c5380c8
doc: add missing word
maclover7 Aug 18, 2017
e4ea454
tools: remove stray package-lock.json file
Trott Aug 16, 2017
081c3e1
src: minor cleanup for node_revert
jasnell Aug 16, 2017
bfa3cbe
doc: remove redundant only from doc/api/stream.md
GeorgeSapkin Aug 16, 2017
7621555
test: remove erroneous assert message from test
BethGriggs Aug 18, 2017
205d5f6
doc,fs: rename defaultEncoding option to encoding
azasypkin Aug 16, 2017
c0312dc
test: make timers-blocking-callback more reliable
Trott Aug 14, 2017
96d95d4
doc: minor fixes to http/2 docs
anandsuresh Aug 16, 2017
8f61bf2
test: increase coverage for http2.connect
michaalbert Aug 14, 2017
de10c0f
util: fix inspect array w. negative maxArrayLength
BridgeAR Aug 17, 2017
838d3fe
build: don't add libraries when --enable-static
danbev Aug 15, 2017
8f3537f
build: allow proper generation of html docs
maclover7 Aug 18, 2017
4570fa1
src: remove extra copy from Copy() in node_url.cc
addaleax Aug 18, 2017
992d1dd
src: detect nul bytes in InternalModuleReadFile()
bnoordhuis Aug 16, 2017
6c93d01
doc: remove `you` and fixup note in stream.md
jasnell Aug 19, 2017
daae6bc
doc: fixed link definitions in http2.md footer
sharababy Aug 17, 2017
7f1ea7c
benchmark: removed unused arguments from callbacks
abhishek-raj Aug 18, 2017
e244f84
test: update windows module load error message
cjihrig Aug 20, 2017
a6344d5
n-api: add ability to remove a wrapping
Jul 27, 2017
9f46bde
deps: backport d727680 from V8 upstream
Aug 19, 2017
6179c27
doc: fix doc for napi_get_value_string_utf8
Jul 28, 2017
78b2bc7
doc: update http2.md example code
RefinedSoftwareLLC Aug 22, 2017
e187c98
doc: remove misterdjules from the CTC members list
Aug 22, 2017
6421a9c
test: remove unused arguments from function
0xparashar Aug 18, 2017
a8648e2
doc: link to correct "OS Constants" heading in docs
jamiebuilds Aug 21, 2017
36b8b46
test: remove unused parameters
human33 Aug 21, 2017
87c3e1d
fix --prof-process --preprocess flag
Aug 21, 2017
abc5cdc
src: remove unnecessary helper function
mscdex Aug 21, 2017
188713c
doc: beautify net.md formats
sevenryze Aug 23, 2017
57c7eae
doc: rephrase text of child_process.execSync()
ayazhafiz Aug 20, 2017
eb46609
test: improve assertion fail messages
refack Aug 19, 2017
ae27cb8
test: do not modify fixtures in test-fs-chmod
Trott Aug 18, 2017
f34e0f9
lib: instantiate console methods eagerly
bnoordhuis Aug 12, 2017
34d1a77
test: add known issue for vm module
fhinkel Aug 7, 2017
ffe572a
src: replace assert() with CHECK()
bnoordhuis Aug 17, 2017
8f34b83
tools: update GYP to 324dd166
refack Aug 9, 2017
5fb252a
gyp: fix gyp to work on MacOSX without XCode
Feb 10, 2015
7eb3679
gyp: inherit parent for `*.host`
jbergstroem Apr 13, 2016
5388949
gyp: add compile_commands.json gyp generator
bnoordhuis Aug 5, 2016
12191f6
gyp: enable cctest to use objects (gyp part)
danbev Oct 18, 2016
3d9ad82
gyp: fix ninja build failure (GYP patch)
danbev Apr 18, 2017
13577d4
dns: add `verbatim` option to dns.lookup()
bnoordhuis Aug 10, 2017
4eb907f
deps: update nghttp2 to v1.25.0
addaleax Aug 20, 2017
c46e7e1
deps: fixup nghttp2 version number
addaleax Aug 20, 2017
d231ef6
http2: ignore invalid headers explicitly
addaleax Aug 20, 2017
77dfa73
build: better support for python3 systems
bnoordhuis Aug 10, 2017
c8be90c
build: for --enable-static, run only cctest
danbev Aug 17, 2017
978889f
benchmark: fix dgram/bind-params.js benchmark
Trott Aug 19, 2017
981ef46
test: add test-benchmark-domain
Trott Aug 20, 2017
7e541d6
test: add test-benchmark-events
Trott Aug 20, 2017
2e3e136
test: add test-benchmark-os
Trott Aug 20, 2017
b480b20
test: add test-benchmark-path
Trott Aug 20, 2017
1849c51
test: add test-benchmark-process
Trott Aug 20, 2017
4d6da3f
test, win: fix IPv6 detection on Windows
bzoz Aug 16, 2017
8c927dd
test: fix async-hooks tests
bzoz Aug 17, 2017
9b9e7b4
doc: add note for Windows build path
Jul 18, 2017
f1bc168
doc: fix typo in Buffer.from(string, [encoding])
Aug 24, 2017
c861462
stream: fix Writable instanceof for subclasses
addaleax Aug 19, 2017
9c7f27b
test: extend async addon test
addaleax Aug 18, 2017
cc72118
meta: improve definition of a collaborator
jasnell Aug 22, 2017
83ba2aa
doc: environmental->environment & NodeJS->Node.js
rvagg Aug 22, 2017
d4c2eba
test: remove unused function args
Aug 22, 2017
f1284d3
test: simplify test-tls-client-default-ciphers
maclover7 Aug 18, 2017
3f7bdc5
deps: cherry-pick e020aae394 from V8 upstream
bnoordhuis Aug 17, 2017
503370e
n-api: implement promise
Aug 24, 2017
a06d129
doc: crypto.randomBytes does not block when async
sam-github Aug 23, 2017
6bb8133
doc: sort bottom-of-file dns markdown links
sam-github Aug 23, 2017
449549b
doc: threadpool size, and APIs using the pool
sam-github Aug 23, 2017
7f62378
doc,stream: remove wrong remark on readable.read
jscissr Aug 24, 2017
7feb994
benchmark: fix issues in dns benchmark
ian-perkins Aug 18, 2017
b4e8850
net: move debug statement
mscdex Apr 24, 2017
f694ea6
test: pipe some error output if npm fails
Fishrock123 Apr 18, 2017
989dfaf
http2: refactor error handling
mcollina Aug 23, 2017
b85a734
test: improve test-abort-uncaught-exception
Trott Aug 25, 2017
a91a3fe
test: improve test-abort-backtrace
Trott Aug 25, 2017
f89ef77
test: run abort tests
Trott Jun 30, 2017
87ff86b
doc: building - note on Windows SDK 15063
refack Jul 20, 2017
5ee4e86
tools: add custom private key option
krydos Jul 20, 2017
a524285
doc: update configure to require g++ 4.9.4
Jul 12, 2017
feeff48
doc: add links to alternative versions of doc
Jan 23, 2017
bc250a1
tools: fix linter error in html.js
targos Aug 28, 2017
7174dc2
assert: handle sparse arrays in deepStrictEqual
BridgeAR Aug 19, 2017
859abe5
meta: considerations for new core modules
jasnell Aug 24, 2017
e7838d7
doc: add 8.4.0 link to CHANGELOG.md
rus0000 Aug 28, 2017
b946693
build: fix indentation in node.gyp
aqrln Aug 27, 2017
01846a0
meta: merge TSC and CTC back into a single body
jasnell Aug 22, 2017
296729c
deps: cherry-pick 0ef4a0c64b6 from c-ares upstream
addaleax Aug 14, 2017
458b8ab
test: add regression test for 14814
addaleax Aug 24, 2017
7050608
test: fix hijackStdout behavior in console
XadillaX Aug 6, 2017
2610ae3
doc: clarify http.get data consumption requirement
strugee Aug 26, 2017
ebb3c2c
build: add npx to zip and 7z packages
richardlau Aug 25, 2017
5cb6500
test: increase coverage for http2 response headers
apapirovski Aug 25, 2017
5b13add
test: remove unused param in test-graph.pipe
ssbrewster Aug 24, 2017
700d576
async_hooks: emitAfter correctly on fatalException
trevnorris Aug 17, 2017
29f9101
path: fix normalize on directories with two dots
targos Jul 6, 2017
7678044
doc: remove braces which shouldn't be there
jscissr Aug 30, 2017
9129057
lib: clean up usage of threw
JacksonTian Aug 11, 2016
cfbf505
test: add http2 test for method CONNECT
apapirovski Aug 27, 2017
d176a18
test: add a test for Expect & checkExpectation
apapirovski Aug 27, 2017
f612a6d
http2: handle 100-continue flow & writeContinue
apapirovski Aug 30, 2017
3697cd8
doc: fix comment about http2.createSecureServer
creeperyang Aug 30, 2017
3a18df0
n-api: adds function to adjust external memory
Jun 28, 2017
ea0a882
lib: remove the invalid command line options
JacksonTian Jun 18, 2017
6de4e10
build: add NetBSD support to opensslconf.h
rsmarples Jul 16, 2017
959b270
doc: /s/SHASUM256/SHASUMS256
maclover7 Aug 30, 2017
1d97ff4
tools: add eslint rule for hasCrypto checking
danbev Jun 20, 2017
87e44d8
tools: add eslint rule for inspector checking
danbev Jun 20, 2017
605d625
lib: simplify the readonly properties of icu
JacksonTian May 25, 2017
2aec977
util: remove duplicate code in format
apapirovski Aug 30, 2017
bcf0e5d
assert: handle errors properly with deep*Equal
BridgeAR Aug 19, 2017
72aae04
test: split path tests into multiple files
targos Aug 30, 2017
eee2aa6
repl: force editorMode in .load
lance Aug 16, 2017
9542844
doc: `readFileSync` instead of `fs.readFileSync`
miensol Sep 1, 2017
b9e1f60
buffer: increase coverage by removing dead code
decareano Aug 30, 2017
a4fc432
url: remove unused code from autoEscapeStr
cyril-lakech Aug 30, 2017
97908ea
tools: bump vswhere helper to 2.0.0
refack Jul 31, 2017
e3e9e50
test: increase Http2ServerResponse test coverage
apapirovski Sep 1, 2017
fd51cb8
http2: adjust error types, test coverage
apapirovski Aug 31, 2017
f6c5188
http2: correct emit error in onConnect, full tests
apapirovski Aug 29, 2017
afa72df
http2: guard against destroyed session, timeouts
jasnell Aug 30, 2017
837c29c
test: http2 test coverage for updateOptionsBuffer
jasnell Aug 30, 2017
c0dba0f
test: http2 test coverage for assertValidPseudoHeader
jasnell Aug 30, 2017
9f79bd8
test: http2 test coverage for NghttpError
jasnell Aug 30, 2017
286111a
doc: clarify async/asynchronous in deprecations.md
Trott Sep 3, 2017
acf9650
deps: upgrade libuv to 1.14.1
cjihrig Sep 6, 2017
5b8fa29
build: display HTTP2 configure --help options
danbev Sep 5, 2017
7213be9
src: fix DEBUG_HTTP2 type arguments
danbev Sep 5, 2017
da5e6d3
doc: instructions for generating coverage reports
ssbrewster Sep 4, 2017
0b9fde4
test: refactor test-fs-readfile-unlink
Trott Sep 3, 2017
cc82f54
http2: fix closedCode NaN, increase test coverage
apapirovski Sep 3, 2017
d18bb3d
deps: cherry-pick 1aead19 from upstream V8
bnoordhuis Aug 17, 2017
ddbcc9e
doc: add options argument to crypto docs
ashanhol Aug 15, 2017
764213c
http2: add compat trailers, adjust multi-headers
apapirovski Sep 5, 2017
93a4cf6
http2: use session not socket timeout, tests
apapirovski Sep 7, 2017
ea86cb5
doc: describe what security issues are
sam-github Jul 25, 2017
105acf4
inspector: log exceptions in message handlers
Aug 22, 2017
ba5a697
deps: cherry-pick 5005faed5 from V8 upstream
Sep 4, 2017
8d11220
benchmark: add default configs to buffer benchmark
Trott Sep 3, 2017
7106734
test: add test-benchmark-buffer
Trott Sep 3, 2017
ac71d99
test: add http2 compat setTimeout tests
apapirovski Sep 3, 2017
4882f07
http2: set decodeStrings to false, test
apapirovski Sep 7, 2017
c90c68e
doc: document bytes to chars after setEncoding
jalafel Jun 3, 2017
6fa05e6
test: use no-save and no-package-lock flags
ssbrewster Sep 5, 2017
2310cfc
test: exclude write-coverage from coverage report
Sep 5, 2017
ae85d5f
promises: more robust stringification
TimothyGu Jun 19, 2017
af3b173
doc: add missing space in test/README.md
vsemozhetbyt Sep 8, 2017
1b51287
doc: fix Error property markdown level
sam-github Sep 7, 2017
dae86e4
timers: fix outdated comment
timcosta Jul 16, 2017
4bf0d4e
n-api: implement napi_run_script
Sep 6, 2017
fadccba
async_wrap: return undefined if domain is disposed
trevnorris Aug 9, 2017
3e73ea8
async_hooks: improve comments and function names
trevnorris Aug 2, 2017
78a36e0
async_wrap: unroll unnecessarily DRY code
trevnorris Aug 3, 2017
b40105d
async_hooks: don't abort unnecessarily
trevnorris Aug 3, 2017
7facfaa
test: preserve env in test cases
BethGriggs Aug 14, 2017
e2ae08b
inspector: rewrite inspector test helper
Jul 24, 2017
77bc72a
test: fix inspector helper port sniffing
TimothyGu Aug 17, 2017
8c61b72
inspector: enable async stack traces
bajtos Jul 17, 2017
bda5585
buffer: fix MAX_LENGTH constant export
addaleax Aug 14, 2017
1c3cb49
src: miscellaneous cleanups for node_config
jasnell Aug 16, 2017
5a05dfe
src: fixup strings, reduce duplication
jasnell Aug 19, 2017
8cee5d6
src: reduce code duplication
jasnell Aug 19, 2017
f75fadd
perf_hooks: implementation of the perf timing API
jasnell Aug 7, 2017
391855c
src: fix build on certain platforms
addaleax Aug 24, 2017
d5a376a
lib: remove circular reference
BridgeAR Aug 17, 2017
69e3bc6
perf_hooks: mark as experimental
jasnell Aug 24, 2017
ea2b576
errors: remove duplicated ERR_HTTP_INVALID_STATUS_CODE error
maclover7 Aug 24, 2017
ae91b1e
test: continue normalizing fixtures use
maasencioh Aug 9, 2017
e3f5c58
perf_hooks: fix presumed typo in node_perf.cc
addaleax Aug 24, 2017
a83d427
src: remove unused persistent properties from env
addaleax Aug 30, 2017
aaf55db
doc,lib,src,test: strip executable bits off files
addaleax Sep 1, 2017
f113d73
src: fix compiler warnings in node_perf.cc
danbev Aug 31, 2017
dea959e
test: fix flaky test-readline-interface
Trott Aug 28, 2017
e87cb32
test: remove envPlus, use Object.assign everywhere
gibfahn Aug 15, 2017
e3d0ff9
test: split test-cli-node-options
refack Jul 12, 2017
865a3c3
module: Allow runMain to be ESM
bmeck Jun 6, 2017
d6ad9d7
tls: multiple PFX in createSecureContext
djphoenix Aug 12, 2017
ffed337
doc: add ESM doc to _toc.md and all.md
vsemozhetbyt Sep 7, 2017
02260ea
test,doc: make module name match gyp target name
Sep 5, 2017
41bf40e
crypto: warn if counter mode used in createCipher
shigeki Jun 20, 2017
78a71aa
crypto: fix error of createCipher in wrap mode
shigeki Aug 24, 2017
f81812b
src: turn key length exception into CHECK
bnoordhuis Aug 27, 2017
67fde14
net: check EADDRINUSE after binding localPort
joyeecheung Aug 30, 2017
a46e59d
console: implement minimal `console.group()`
Trott Aug 18, 2017
3a68b0b
console: improve console.group()
Trott Aug 24, 2017
71f90c6
fs: add fs.copyFile{Sync}
cjihrig Sep 6, 2017
d8ff550
http2: store headersSent after stream destroyed
apapirovski Sep 6, 2017
0343ece
http2: fix refs to status 205, add tests
apapirovski Sep 7, 2017
2adabe6
test: fix single test runner regression
TimothyGu Sep 11, 2017
a2a2ff4
2017-09-12, Version 8.5.0 (Current)
MylesBorins Sep 10, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ env:
parserOptions:
ecmaVersion: 2017

overrides:
- files: ["doc/api/esm.md", "*.mjs"]
parserOptions:
sourceType: module

rules:
# Possible Errors
# http://eslint.org/docs/rules/#possible-errors
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
!.gitignore
!.gitkeep
!.mailmap
!.nycrc
!.remarkrc

core
Expand Down
6 changes: 6 additions & 0 deletions .nycrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"exclude": [
"**/internal/process/write-coverage.js"
],
"reporter": ["html", "text"]
}
28 changes: 26 additions & 2 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ More Developer Tools...`. This step will install `clang`, `clang++`, and
* You may want to setup [firewall rules](tools/macosx-firewall.sh)
to avoid popups asking to accept incoming network connections when running tests:

If the path to your build directory contains a space, the build will likely fail.

```console
$ sudo ./tools/macosx-firewall.sh
```
Expand Down Expand Up @@ -126,6 +128,25 @@ To run the tests:
$ make test
```

To run the tests and generate code coverage reports:

```console
$ ./configure --coverage
$ make coverage
```

This will generate coverage reports for both JavaScript and C++ tests (if you
only want to run the JavaScript tests then you do not need to run the first
command `./configure --coverage`).

The `make coverage` command downloads some tools to the project root directory
and overwrites the `lib/` directory. To clean up after generating the coverage
reports:

```console
make coverage-clean
```

To build the documentation:

This will build Node.js first (if necessary) and then use it to build the docs:
Expand All @@ -134,7 +155,7 @@ This will build Node.js first (if necessary) and then use it to build the docs:
$ make doc
```

If you have an existing Node.js you can build just the docs with:
If you have an existing Node.js build, you can build just the docs with:

```console
$ NODE=/path/to/node make doc-only
Expand Down Expand Up @@ -170,11 +191,14 @@ Prerequisites:
including the Community edition (remember to select
"Common Tools for Visual C++ 2015" feature during installation).
* [Visual Studio 2017](https://www.visualstudio.com/downloads/), any edition (including the Build Tools SKU).
**Required Components:** "MSbuild", "VC++ 2017 v141 toolset" and one of the Windows SDKs (10 or 8.1).
**Required Components:** "MSbuild", "VC++ 2017 v141 toolset" and at least one of the Windows SDKs.
*Note*: For "Windows 10 SDK (10.0.15063.0)" only the "Desktop C++ x86 and x64" flavor is required.
* Basic Unix tools required for some tests,
[Git for Windows](http://git-scm.com/download/win) includes Git Bash
and tools which can be included in the global `PATH`.

If the path to your build directory contains a space, the build will likely fail.

```console
> .\vcbuild
```
Expand Down
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V8.md#8.3.0">8.3.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V8.md#8.5.0">8.5.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.4.0">8.4.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.3.0">8.3.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.2.1">8.2.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.2.0">8.2.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.1.4">8.1.4</a><br/>
Expand Down
103 changes: 79 additions & 24 deletions COLLABORATOR_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
- [Internal vs. Public API](#internal-vs-public-api)
- [Breaking Changes](#breaking-changes)
- [Deprecations](#deprecations)
- [Involving the CTC](#involving-the-ctc)
- [Involving the TSC](#involving-the-TSC)
* [Landing Pull Requests](#landing-pull-requests)
- [Technical HOWTO](#technical-howto)
- [I Just Made a Mistake](#i-just-made-a-mistake)
Expand All @@ -30,7 +30,7 @@ pull requests to the Node.js project.
Collaborators should feel free to take full responsibility for
managing issues and pull requests they feel qualified to handle, as
long as this is done while being mindful of these guidelines, the
opinions of other Collaborators and guidance of the CTC.
opinions of other Collaborators and guidance of the TSC.

Collaborators may **close** any issue or pull request they believe is
not relevant for the future of the Node.js project. Where this is
Expand All @@ -46,7 +46,7 @@ necessary.

All modifications to the Node.js code and documentation should be
performed via GitHub pull requests, including modifications by
Collaborators and CTC members.
Collaborators and TSC members.

All pull requests must be reviewed and accepted by a Collaborator with
sufficient expertise who is able to take full responsibility for the
Expand All @@ -70,16 +70,16 @@ 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).
elevate discussion to the TSC 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
elevated for review by the TSC. This does not necessarily mean that the
PR must be put onto the TSC meeting agenda. If multiple TSC members
approve (`LGTM`) the PR and no Collaborators oppose the PR, it can be
landed. Where there is disagreement among CTC members or objections
landed. Where there is disagreement among TSC members or objections
from one or more Collaborators, `semver-major` pull requests should be
put on the CTC meeting agenda.
put on the TSC meeting agenda.

All bugfixes require a test case which demonstrates the defect. The
test should *fail* before the change, and *pass* after the change.
Expand Down Expand Up @@ -150,7 +150,7 @@ Exception to each of these points can be made if use or behavior of a given
internal API can be demonstrated to be sufficiently relied upon by the Node.js
ecosystem such that any changes would cause too much breakage. The threshold
for what qualifies as "too much breakage" is to be decided on a case-by-case
basis by the CTC.
basis by the TSC.

If it is determined that a currently undocumented object, property, method,
argument, or event *should* be documented, then a pull request adding the
Expand All @@ -171,7 +171,7 @@ making and reviewing such changes. Before landing such commits, an effort
must be made to determine the potential impact of the change in the ecosystem
by analyzing current use and by validating such changes through ecosystem
testing using the [Canary in the Goldmine](https://github.com/nodejs/citgm)
tool. If a change cannot be made without ecosystem breakage, then CTC review is
tool. If a change cannot be made without ecosystem breakage, then TSC review is
required before landing the change as anything less than semver-major.

If a determination is made that a particular internal API (for instance, an
Expand All @@ -183,7 +183,7 @@ breaking changes are made.
### Breaking Changes

Backwards-incompatible changes may land on the master branch at any time after
sufficient review by collaborators and approval of at least two CTC members.
sufficient review by collaborators and approval of at least two TSC members.

Examples of breaking changes include, but are not necessarily limited to,
removal or redefinition of existing API arguments, changing return values
Expand All @@ -209,7 +209,7 @@ Exception to this rule is given in the following cases:
Such changes *must* be handled as semver-major changes but MAY be landed
without a [Deprecation cycle](#deprecation-cycle).

From time-to-time, in particularly exceptional cases, the CTC may be asked to
From time-to-time, in particularly exceptional cases, the TSC may be asked to
consider and approve additional exceptions to this rule.

Purely additive changes (e.g. adding new events to EventEmitter
Expand Down Expand Up @@ -244,7 +244,7 @@ Specifically:
* Resolving critical security issues.
* Fixing a critical bug (e.g. fixing a memory leak) requires a breaking
change.
* There is CTC consensus that the change is required.
* There is TSC consensus that the change is required.
* If a breaking commit does accidentally land in a Current or LTS branch, an
attempt to fix the issue will be made before the next release; If no fix is
provided then the commit will be reverted.
Expand All @@ -263,6 +263,32 @@ multiple commits. Commit metadata and the reason for the revert should be
appended. Commit message rules about line length and subsystem can be ignored.
A Pull Request should be raised and approved like any other change.

### Introducing New Modules

Semver-minor commits that introduce new core modules should be treated with
extra care.

The name of the new core module should not conflict with any existing
module in the ecosystem unless a written agreement with the owner of those
modules is reached to transfer ownership.

If the new module name is free, a Collaborator should register a placeholder
in the module registry as soon as possible, linking to the pull request that
introduces the new core module.

Pull requests introducing new core modules:

* Must be left open for at least one week for review.
* Must be labeled using the `ctc-review` label.
* Must have signoff from at least two CTC members.

New core modules must be landed with a [Stability Index][] of Experimental,
and must remain Experimental until a semver-major release.

For new modules that involve significant effort, non-trivial additions to
Node.js or significant new capabilities, an [Enhancement Proposal][] is
recommended but not required.

### Deprecations

Deprecation refers to the identification of Public APIs that should no longer
Expand Down Expand Up @@ -294,7 +320,7 @@ operation of running code and therefore should not be viewed as breaking
changes.

Runtime Deprecations and End-of-life APIs (internal or public) *must* be
handled as semver-major changes unless there is CTC consensus to land the
handled as semver-major changes unless there is TSC consensus to land the
deprecation as a semver-minor.

All Documentation-Only and Runtime deprecations will be assigned a unique
Expand All @@ -320,18 +346,18 @@ request adding the deprecation lands in master). All deprecations included in
a Node.js release should be listed prominently in the "Notable Changes" section
of the release notes.

### Involving the CTC
### Involving the TSC

Collaborators may opt to elevate pull requests or issues to the CTC for
discussion by assigning the `ctc-review` label. This should be done
Collaborators may opt to elevate pull requests or issues to the TSC for
discussion by assigning the `tsc-review` label. This should be done
where a pull request:

- has a significant impact on the codebase,
- is inherently controversial; or
- has failed to reach consensus amongst the Collaborators who are
actively participating in the discussion.

The CTC should serve as the final arbiter where required.
The TSC should serve as the final arbiter where required.

## Landing Pull Requests

Expand Down Expand Up @@ -512,9 +538,36 @@ your pull request shows the purple merged status then you should still
add the "Landed in <commit hash>..<commit hash>" comment if you added
multiple commits.

### Troubleshooting

Sometimes, when running `git push upstream master`, you may get an error message
like this:

```console
To https://github.com/nodejs/node
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/nodejs/node'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
```

That means a commit has landed since your last rebase against `upstream/master`.
To fix this, fetch, rebase, run the tests again (to make sure no interactions
between your changes and the new changes cause any problems), and push again:

```sh
git fetch upstream
git rebase upstream/master
make -j4 test
git push upstream master
```

### I Just Made a Mistake

* Ping a CTC member.
* Ping a TSC 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
Expand Down Expand Up @@ -543,17 +596,17 @@ Once a Current branch enters LTS, changes in that branch are limited to bug
fixes, security updates, possible npm updates, documentation updates, and
certain performance improvements that can be demonstrated to not break existing
applications. Semver-minor changes are only permitted if required for bug fixes
and then only on a case-by-case basis with LTS WG and possibly Core Technical
Committee (CTC) review. Semver-major changes are permitted only if required for
security related fixes.
and then only on a case-by-case basis with LTS WG and possibly Technical
Steering Committee (TSC) review. Semver-major changes are permitted only if
required for security related fixes.

Once a Current branch moves into Maintenance mode, only **critical** bugs,
**critical** security fixes, and documentation updates will be permitted.

#### Landing semver-minor commits in LTS

The default policy is to not land semver-minor or higher commits in any LTS
branch. However, the LTS WG or CTC can evaluate any individual semver-minor
branch. However, the LTS WG or TSC can evaluate any individual semver-minor
commit and decide whether a special exception ought to be made. It is
expected that such exceptions would be evaluated, in part, on the scope
and impact of the changes on the code, the risk to ecosystem stability
Expand All @@ -563,7 +616,7 @@ commit will have for the ecosystem.
Any collaborator who feels a semver-minor commit should be landed in an LTS
branch should attach the `lts-agenda` label to the pull request. The LTS WG
will discuss the issue and, if necessary, will escalate the issue up to the
CTC for further discussion.
TSC for further discussion.

#### How are LTS Branches Managed?

Expand Down Expand Up @@ -615,3 +668,5 @@ release. This process of making a release will be a collaboration between the
LTS working group and the Release team.

[backporting guide]: doc/guides/backporting-to-release-lines.md
[Stability Index]: https://github.com/nodejs/node/pull/doc/api/documentation.md#stability-index
[Enhancement Proposal]: https://github.com/nodejs/node-eps
Loading