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.7.0 proposal #15762

Merged
merged 209 commits into from
Oct 11, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
d67fb81
deps: update V8 to 6.1.534.36
targos Sep 13, 2017
21004dd
deps: limit regress/regress-crbug-514081 v8 test
mhdawson May 9, 2016
63ebad5
deps: fix addons compilation with VS2013
bzoz May 23, 2017
ede9d2e
deps: cherry-pick f19b889 from upstream V8
targos Aug 16, 2017
2601a51
deps: backport 6e9e2e5 from upstream V8
Aug 3, 2017
19a5021
deps: backport bca8409 from upstream V8
Aug 3, 2017
d85283b
deps: backport f9c4b7a from upstream V8
Aug 3, 2017
273822f
deps: cherry-pick e020aae394 from V8 upstream
bnoordhuis Aug 17, 2017
9934dfe
deps: cherry-pick 1aead19 from upstream V8
bnoordhuis Aug 17, 2017
c0b5b09
deps: add postmortem metadata for V8 TurboFan
targos Sep 6, 2017
2e8652e
src: fix SmartOS compilation
targos Jun 27, 2017
8471747
deps: patch V8 to 6.1.534.38
MylesBorins Sep 15, 2017
aa1a3ea
deps: revert ABI breaking changes in V8 6.1
addaleax Sep 14, 2017
e1828eb
deps: cherry-pick b6158eb6befae from V8 upstream
addaleax Sep 8, 2017
b4ad15b
deps: cherry-pick 9b21865822243 from V8 upstream
addaleax Sep 8, 2017
e8da556
src: keep track of env properly in node_perf.cc
addaleax Sep 4, 2017
902feea
src: use InstantiateModule instead of deprecated
danbev Sep 15, 2017
d202c05
src: remove unused static variable
bnoordhuis Sep 18, 2017
aded597
src: handle uv_async_init() failure
bnoordhuis Sep 18, 2017
e72761a
src: return references from getters, not copies
bnoordhuis Sep 18, 2017
fd1a892
src: constify PerformanceEntry data members
bnoordhuis Sep 18, 2017
34b4180
url: change variable name to be more descriptive
jason9693 Sep 22, 2017
9eeaab4
crypto: only try to set FIPS mode if different
gibfahn Apr 4, 2017
6720539
src: move node_trace_writer/buffer.h to agent.cc
danbev Sep 23, 2017
e0a7634
doc: update table of contents for common/README.md
Trott Sep 25, 2017
1bc0c1f
async_hooks: consistent internal naming
AndreasMadsen Sep 26, 2017
44ea525
src: clear async id stack if bootstrap throws
trevnorris Sep 22, 2017
81515c7
build: add test-with-async-hooks
trevnorris Jun 20, 2017
98fc665
test: print resource stack on error
trevnorris Jun 16, 2017
bbdd93f
test: skip test when checking async_hooks
trevnorris Jun 20, 2017
09b3fae
async_wrap: add constructor for PromiseWrap
trevnorris Jun 14, 2017
9da8346
async_wrap: allow user to pass execution_async_id
trevnorris Jun 14, 2017
9fcf5d7
src: remove unused computation
cjihrig Sep 24, 2017
69f8738
src: remove unused variable in node_url.cc
cjihrig Sep 24, 2017
0aea258
test: fix http-writable-true-after-close flakyness
mcollina Sep 21, 2017
d1d2ca5
doc: retire bnoordhuis from the TSC
bnoordhuis Sep 26, 2017
22b2d1a
doc: fix mistake in http2stream.respondWithFile.
antoine-amara Sep 18, 2017
a43f681
src,etw: fix event 9 on 64 bit Windows
joaocgreis Sep 22, 2017
9c1e48d
http: client keep-alive for UNIX domain sockets
bengl May 25, 2017
7dd0ca4
build: run es-module tests in CI
Sep 14, 2017
ed8c89a
build: fix shared installing target
yorkie Sep 2, 2017
93d5ead
crypto: use SSL_SESSION_get_id
davidben Sep 11, 2017
be4e809
crypto: use X509V3_EXT_d2i
davidben Sep 11, 2017
6565dda
doc: add callback function signatures in fs.md
matejkrajcovic Jun 2, 2017
ec56cbe
doc: improve fs.utimes
refack Jul 10, 2017
1ed0c77
crypto: better crypto error messages
gla5001 Aug 10, 2017
97c0880
deps: update V8 to 6.1.534.42
targos Sep 21, 2017
ca02576
src: fix typo in probe description
evanlucas Sep 13, 2017
eebb2d7
tools, build: refactor macOS installer
jpwesselink Sep 4, 2017
25fd85d
src: add help for NODE_PENDING_DEPRECATION env
tomc974 Sep 25, 2017
6a01918
deps: cherry-pick 0353a1e from upstream V8
targos Sep 25, 2017
db70874
doc: add bmeurer to collaborators
bmeurer Sep 29, 2017
1141e93
doc: update libuv license
TimothyGu Sep 28, 2017
7e1003a
src: remove unused using in node_trace_writer.h
danbev Sep 26, 2017
1cc4245
url: fix remaining calculation
rmisev Sep 27, 2017
de52eb8
perf_hooks: remove docs for unimplemented API
sam-github Sep 27, 2017
f8805c4
doc: fix link in the test/README.md
rmisev Sep 27, 2017
e365814
dgram: support for setting socket buffer size
DamienOReilly Jun 11, 2017
6551bb3
src: fix compiler warning in udp_wrap.cc
danbev Sep 14, 2017
e5b5a03
doc: do not begin yaml value with backtick
maclover7 Sep 17, 2017
64d0c74
src: use UV_EINVAL instead of EINVAL in udp_wrap
danbev Sep 17, 2017
827f843
dgram: refactor SO_RCVBUF and SO_SNDBUF methods
cjihrig Sep 20, 2017
9c247c5
doc: standardize function param/object prop style
gibfahn Jun 18, 2017
3f2ea53
deps: update npm to 5.4.2
targos Sep 20, 2017
5f469a2
n-api: add check for large strings
mhdawson Sep 25, 2017
f8e93e8
doc: fix links in some intra-repository docs
vsemozhetbyt Sep 29, 2017
965efd7
src: remove unused includes in src/tracing
danbev Sep 29, 2017
bd7b216
test: fix test-https-writable-true-after-close
Trott Oct 1, 2017
803d5bb
test: update es-module.status prefix
jackhorton Sep 29, 2017
a4a5bee
http2: adjust error emit in core, add tests
apapirovski Sep 30, 2017
4153938
test: http2Stream redundant shutdown and single cb
trivikr Sep 25, 2017
d181147
url: const-ify APIs, and pass URL by ref
sam-github Sep 25, 2017
f68f572
tty: require readline at top of file
bengl Sep 28, 2017
1c0ae10
deps: V8: cherry-pick 163d360 from upstream
ofrobots Sep 28, 2017
3d6390b
stream: fix todo
BridgeAR Sep 28, 2017
cc90283
doc: edit COLLABORATORS_GUIDE.md for readability
Trott Sep 26, 2017
7842f63
test: Http2Stream destroy server before shutdown
trivikr Sep 25, 2017
ae91ffe
stream: fix disparity between buffer and the count
jlvivero Sep 28, 2017
df271f4
http2: setting shuttingDown=true after validation
trivikr Sep 29, 2017
db0ba97
doc: update fs.utimes{,Sync} changelog
lpinca Sep 29, 2017
88f69d3
test: check that this != new.target in addon
bnoordhuis Sep 29, 2017
5630c8c
doc: add missing TOC entry in CONTRIBUTING.md
vsemozhetbyt Oct 2, 2017
1506384
src: fix windows-only build breakage
bnoordhuis Oct 2, 2017
fcea265
doc: fix v8.6 changelog entry
BridgeAR Oct 1, 2017
cf579ea
doc: fix dead link in doc/releases.md
lpinca Oct 2, 2017
54a43a6
doc: change encoding to decoding
thefourtheye Oct 1, 2017
978f78e
doc: alphabetize TSC Emeriti in README.md
Trott Oct 2, 2017
979e38b
doc: add 'git clean -xfd' to backport guide
lance Oct 1, 2017
dcad2df
doc: fix typo in tls.md
koh110 Oct 2, 2017
1582260
test: increase test coverage for os.js
viktor-ku Jul 6, 2017
86ee05d
http2: simplify TypeName
jasnell Sep 29, 2017
078ee27
http2: refactor method arguments to avoid bools
jasnell Sep 29, 2017
68cd233
http2: eliminate dead code
jasnell Sep 29, 2017
86dfcc6
http2: making sending to the socket more efficient
jasnell Sep 29, 2017
16bdbb9
async_hooks: fix reference in code comment
mscdex Oct 3, 2017
d2e1545
util: deprecate obj.inspect for custom inspection
Trott Sep 26, 2017
c17ff62
deps: cherry-pick f4a2b7f3 from V8 upstream.
erinishimoticha Oct 2, 2017
af304b2
test: mark test-bindings and test-debug-end flaky
joaocgreis Oct 3, 2017
a814a55
fs: add O_DSYNC
Sep 15, 2017
6003afc
doc,test: minor improvements to O_DSYNC
tniessen Sep 22, 2017
58c68c2
util: use faster -0 check
mscdex Oct 2, 2017
995948a
test: skip test if host is too slow
Trott Sep 29, 2017
df1d988
doc: explain common.restore* functions
Trott Oct 2, 2017
3f12109
test: refactor test-internal-errors
Trott Oct 2, 2017
22ea3a8
test: remove `common.PORT` from test-tlswrap
Trott Oct 2, 2017
1e79a06
test: fix flaky async-hooks/test-tlswrap
Trott Oct 2, 2017
0004214
src: trace_event macro line continuation cleanup
danbev Oct 3, 2017
3d2481e
build: call setlocal in vcbuild.bat
danbev Oct 2, 2017
77bdfc9
deps: upgrade libuv to 1.15.0
cjihrig Oct 2, 2017
344d613
doc: fix YAML syntax in fs.md
lpinca Oct 4, 2017
824b8df
src: remove unused node_dtrace.h from node_win32
danbev Oct 4, 2017
10622c6
http2: near full http1 compatibility, add tests
apapirovski Oct 3, 2017
0ae84c2
doc: fix incorrect vm.createContext usage
tshemsedinov Oct 7, 2017
7475541
doc: fix: correctly use `public key` instead of `private key`
pomerantsev Oct 6, 2017
acd4924
doc: fix http2 API docs typos
sericaia Oct 5, 2017
6642f54
src: fix ^ in stack trace with vm's columnOffset
TimothyGu Oct 4, 2017
bd49ada
test: http2 stored settings returned when present
trivikr Oct 3, 2017
21a8a82
test: add common.fixtures to https-req-split
Oct 6, 2017
f39c792
test: http2 client destroy tests in one file
trivikr Oct 3, 2017
4716921
test: use fixtures.readKey in https-agent test
Greg-GB Oct 6, 2017
e1a1d2e
test: replace common.fixturesDir in test-exception
keywordnew Oct 6, 2017
516fda6
test: update 'fixturesDir' refs in a test file
JamesMGreene Oct 6, 2017
c47ebe2
test: replace fixturesDir with common.fixtures
ParidelPooya Oct 6, 2017
b766d27
test: replace fixturesDir with common.fixtures
pauljohnberry Oct 6, 2017
8ea9648
test: update fixturesDir to fixtures.readKey
bnb Oct 6, 2017
1d7e1c0
test: remove messages in assert.strictEqual
Saeed-Navarik Oct 6, 2017
7ca02b0
test: replace fixturesDir with common.fixtures
rachelnicole Oct 6, 2017
9f6d535
doc: update style guide for markdown extension
Trott Oct 5, 2017
de198a9
test: update test to use fixtures module
gbugaisky Oct 6, 2017
73a41cf
test: replace common.fixturesDir with fixtures.
codeviking Oct 6, 2017
67cef9b
build: allow build with system python 3
forivall Oct 6, 2017
73231d9
test: replace common.fixturesDir with readKey
AshleyRayMaceli Oct 6, 2017
4594315
test: replace fixturesDir with fixtures.readKey
Oct 6, 2017
9592a48
test: use fixtures.path for cmd string building
FNJ5 Oct 6, 2017
145d1db
test: replaced common.fixturesDir with readKey
Oct 6, 2017
d410f74
test: use common.fixtures in checkServerIdentity
forivall Oct 6, 2017
054f8f6
test: replace fixturesDir in tls-env-bad-extra-ca
aniwng Oct 6, 2017
e9d31bc
test: replaced common.fixturesDir with readKey
letthewookieewin Oct 6, 2017
4a9e331
test: alter assert.strictEqual to default message
gishmel Oct 6, 2017
530b62f
test: more informative test failure messages
alec-ferguson-ck Oct 6, 2017
75ab6c0
test: use common.fixtures module in test-preload
lzcabrera Oct 6, 2017
ab046be
test: replacing assert message with template
Oct 6, 2017
adceca4
test: improve assert messages
ericljpemberton Oct 6, 2017
d1bb608
test: replaced fixturesDir with common.fixtures
jopann Oct 6, 2017
ece6cd1
test: replace fixturesDir with fixtures module
BinarySo1o Oct 6, 2017
b564fe2
test: use defaultHistoryPath instead of path.join
chrisbudy Oct 6, 2017
44719ed
doc: add clearer setup description
craftninja Oct 6, 2017
a224760
test: upgrade from fixturesDir to fixtures.path
madeinjam Oct 6, 2017
3fd4f62
test: replace literal with template string
brantphoto Oct 6, 2017
94c6296
tools: use template literals
sarahmeyer Oct 6, 2017
ba9aa46
test: removed string from assert message arg
dpaulino Oct 6, 2017
9059b09
test: remove template literal
emilyford Oct 6, 2017
3063152
test: remove common.fixturesDir
delaguilaluis Oct 6, 2017
e12dc40
test: replace fixturesDir with fixtures
mujz Oct 6, 2017
ca5f4f0
tools: use more template literals
PierluigiIannarelli Oct 6, 2017
26536e4
test: changes to use template literal
joanne-jjb Oct 6, 2017
7df8e0b
test: replace common.fixturesDir with fixture
Panguino Oct 6, 2017
5b29e5a
test: modify test messages to template literals
atsui-tc Oct 6, 2017
dd23140
test: replace fixturesDir with fixtures module
Blackth0rn Oct 6, 2017
633772a
test: refactor test to use the fixtures module
stropitek Oct 6, 2017
84dd578
test: remove literal error messages
fyesoft Oct 6, 2017
0286da0
test: replaced fixturesDir with fixtures module
mckalexee Oct 6, 2017
768060d
test: changed buffer-zero output
garlicbrie Oct 6, 2017
205927f
test: display better error message for assertion
SgtPooki Oct 6, 2017
e7c55bf
test: replaced literals in errors with templates
domrein Oct 6, 2017
d3272c4
test: use common.fixtures module
cjchoi Oct 6, 2017
7d8a808
test: replaced fixturesDir with fixtures module
mckalexee Oct 6, 2017
66a2c71
doc: fix macosx-firewall suggestion BUILDING
Suraiya-Hameed Oct 6, 2017
5bfc4f5
test: replace fixtureDir with fixtures module
ctdio Oct 6, 2017
2ea339a
test: use fixtures module instead of common
wonk Oct 6, 2017
27e0532
test: added string_decoder.js a parallel test
uttampawar Oct 6, 2017
a14b447
test: improve an error message
pomerantsev Oct 6, 2017
906f2b1
test: remove message from asserts
justin0022 Oct 6, 2017
f201edc
test: replace fixturesDir with fixtures module
penDerGraft Oct 6, 2017
c5c51eb
test: improve asset msg in test
genewoo Oct 6, 2017
802f99b
test: change concatenation to template literal
nodexpertsdev Oct 6, 2017
2d25a3b
test: replace string concatenation with template
robtpaton Oct 6, 2017
181d4bf
test: add NODE_UNIQUE_ID value to err message
danielelisi Oct 6, 2017
9f9bd38
test: replace error msg w/ template literal
sashimii Oct 6, 2017
329d22f
test: use common.fixtures in tls test
Oct 6, 2017
3b682aa
test: assert.strictEqual using template literals
jmcgui05 Oct 9, 2017
a625d82
test: updated error message
craftninja Oct 6, 2017
547c284
test: replace string concatenation with templates
cleong-tc Oct 6, 2017
ccecaca
test: replaced fixturesDir with fixtures module
mckalexee Oct 6, 2017
dba620b
test: changed fixtures require
creisle Oct 6, 2017
bbbf58e
test: change fixturesDir to fixtures.path
saviogl Oct 6, 2017
36a0d3f
test: cleanup test-buffer-sharedarraybuffer
RafLeszczynski Oct 6, 2017
f7ab126
test: replace fixturesDir with fixtures module
Oct 6, 2017
6a44442
test: use fixtures.readKey
Oct 6, 2017
6e25b08
test: clarify assertion failure
Oct 6, 2017
387b0b8
test: replace concat with template literals
GitHubTracey Oct 6, 2017
e4f0483
test: replace fixturesDir with fixtures module
PyMedic Oct 6, 2017
f849655
test: use fixtures module
moe-dizzle Oct 6, 2017
e9f6a62
test: include expected result in error messages
keywordnew Oct 6, 2017
5d63c10
test: create benchmark test for misc and module
CharlesWall Oct 6, 2017
0e707f3
tools: replace concat with template literals
Oct 6, 2017
140c98b
doc: document the benchmark CI
joyeecheung Oct 8, 2017
d1266a3
doc: mention collaboration summit in onboarding.md
joyeecheung Oct 8, 2017
8f367bb
test: fix race condition in addon test
kkwoker Oct 6, 2017
e4c461b
src: replace manual memory mgmt with std::string
bnoordhuis Oct 5, 2017
d962ee3
test: use common.fixtures module for file path
adilio Oct 6, 2017
bae46dc
doc: add kfarnung to collaborators
kfarnung Oct 9, 2017
572492a
test: clarify assert messages in crypto tests
cpandrews8 Oct 6, 2017
e48c8b3
test: replace fixtureDir with fixtures.path
matthewreed26 Oct 6, 2017
50cae5c
test: remove assert message
johenry Oct 6, 2017
b1e6373
test: replaces fixturesDir with fixtures
Oct 6, 2017
ab7448e
tools: replace concatenation with string templates
Ethan-Arrowood Oct 6, 2017
6f42b68
test: replace common.fixturesDir w/ fixtures.path
Druotic Oct 6, 2017
dc4f1b9
2017-10-11, Node.js Version 8.7.0 (Current)
MylesBorins Oct 3, 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
  •  
  •  
  •  
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,9 @@ ipch/
/config_fips.gypi
*-nodegyp*
/gyp-mac-tool
/dist-osx
/npm.wxs
/tools/msvs/npm.wixobj
/tools/msvs/genfiles/
/tools/osx-pkg.pmdoc/index.xml
/test/addons/??_*/
email.md
deps/v8-*
Expand Down Expand Up @@ -101,6 +99,7 @@ deps/npm/node_modules/.bin/

# build/release artifacts
/*.tar.*
/*.pkg
/SHASUMS*.txt*

# test artifacts
Expand Down
7 changes: 5 additions & 2 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ On macOS you will need to install the `Xcode Command Line Tools` by running
installed, you can find them under the menu `Xcode -> Open Developer Tool ->
More Developer Tools...`. This step will install `clang`, `clang++`, and
`make`.
* You may want to setup [firewall rules](tools/macosx-firewall.sh)
* After building, 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.
Expand Down Expand Up @@ -128,6 +128,9 @@ To run the tests:
$ make test
```

At this point you are ready to make code changes and re-run the tests!
Optionally, continue below.

To run the tests and generate code coverage reports:

```console
Expand All @@ -144,7 +147,7 @@ and overwrites the `lib/` directory. To clean up after generating the coverage
reports:

```console
make coverage-clean
$ make coverage-clean
```

To build the documentation:
Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V8.md#8.6.0">8.6.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V8.md#8.7.0">8.7.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.6.0">8.6.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V8.md#8.5.0">8.5.0</a><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/>
Expand Down
126 changes: 58 additions & 68 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 TSC](#involving-the-TSC)
- [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 Down Expand Up @@ -123,44 +123,39 @@ level of V8 within Node.js is updated or new patches are floated on V8.

Due to the nature of the JavaScript language, it can often be difficult to
establish a clear distinction between which parts of the Node.js implementation
represent the "public" API Node.js users should assume to be stable and which
are considered part of the "internal" implementation detail of Node.js itself.
A general rule of thumb has been to base the determination off what
functionality is actually *documented* in the official Node.js API
documentation. However, it has been repeatedly demonstrated that either the
documentation does not completely cover implemented behavior or that Node.js
users have come to rely heavily on undocumented aspects of the Node.js
implementation.

While there are numerous exceptions, the following general rules should be
followed to determine which aspects of the Node.js API are considered
"internal":

- Any and all functionality exposed via `process.binding(...)` is considered to
be internal and *not* part of the Node.js Public API.
- Any and all functionality implemented in `lib/internal/**/*.js` that is not
re-exported by code in `lib/*.js`, or is not documented as part of the
Node.js Public API, is considered to be internal.
- Any object property or method whose key is a non-exported `Symbol` is
considered to be an internal property.
- Any object property or method whose key begins with the underscore `_` prefix,
and is not documented as part of the Node.js Public API, is considered to be
an internal property.
represent the public API Node.js users should assume to be stable and which
are part of the internal implementation details of Node.js itself. A rule of
thumb is to base the determination off what functionality is actually
documented in the official Node.js API documentation. However, it has been
repeatedly demonstrated that either the documentation does not completely cover
implemented behavior or that Node.js users have come to rely heavily on
undocumented aspects of the Node.js implementation.

The following general rules should be followed to determine which aspects of the
Node.js API are internal:

- All functionality exposed via `process.binding(...)` is internal.
- All functionality implemented in `lib/internal/**/*.js` is internal unless it
is re-exported by code in `lib/*.js` or documented as part of the Node.js
Public API.
- Any object property or method whose key is a non-exported `Symbol` is an
internal property.
- Any object property or method whose key begins with the underscore `_` prefix
is internal unless it is documented as part of the Node.js Public API.
- Any object, property, method, argument, behavior, or event not documented in
the Node.js documentation is considered to be internal.
the Node.js documentation is internal.
- Any native C/C++ APIs/ABIs exported by the Node.js `*.h` header files that
are hidden behind the `NODE_WANT_INTERNALS` flag are considered to be
internal.
are hidden behind the `NODE_WANT_INTERNALS` flag are internal.

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
for what qualifies as too much breakage is to be decided on a case-by-case
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
documentation is required in order for it to be considered part of the "public"
documentation is required in order for it to be considered part of the public
API.

Making a determination about whether something *should* be documented can be
Expand Down Expand Up @@ -232,17 +227,12 @@ handling may have been made. Additional CI testing may be required.

#### When breaking changes actually break things

Breaking changes are difficult primarily because they change the fundamental
assumptions a user of Node.js has when writing their code and can cause
existing code to stop functioning as expected -- costing developers and users
time and energy to fix.

Because breaking (semver-major) changes are permitted to land in master at any
time, it should be *understood and expected* that at least some subset of the
user ecosystem *may* be adversely affected *in the short term* when attempting
to build and use Node.js directly from master. This potential instability is
precisely why Node.js offers distinct Current and LTS release streams that
offer explicit stability guarantees.
Because breaking (semver-major) changes are permitted to land on the master
branch at any time, at least some subset of the user ecosystem may be adversely
affected in the short term when attempting to build and use Node.js directly
from the master branch. This potential instability is why Node.js offers
distinct Current and LTS release streams that offer explicit stability
guarantees.

Specifically:

Expand All @@ -255,7 +245,7 @@ Specifically:
attempt to fix the issue will be made before the next release; If no fix is
provided then the commit will be reverted.

When any change is landed in master, and it is determined that the such
When any changes are landed on the master branch and it is determined that the
changes *do* break existing code, a decision may be made to revert those
changes either temporarily or permanently. However, the decision to revert or
not can often be based on many complex factors that are not easily codified. It
Expand Down Expand Up @@ -297,18 +287,18 @@ recommended but not required.

### Deprecations

Deprecation refers to the identification of Public APIs that should no longer
_Deprecation_ refers to the identification of Public APIs that should no longer
be used and that may be removed or modified in non-backwards compatible ways in
a future major release of Node.js. Deprecation *may* be used with internal APIs
if there is expected impact on the user community.
a future major release of Node.js. Deprecation may be used with internal APIs if
there is expected impact on the user community.

Node.js uses three fundamental Deprecation levels:
Node.js uses three Deprecation levels:

* *Documentation-Only Deprecation* refers to elements of the Public API that are
being staged for deprecation in a future Node.js major release. An explicit
notice indicating the deprecated status is added to the API documentation
*but no functional changes are implemented in the code*. There will be no
runtime deprecation warning emitted for such deprecations.
but no functional changes are implemented in the code. There will be no
runtime deprecation warnings emitted for such deprecations.

* *Runtime Deprecation* refers to the use of process warnings emitted at
runtime the first time that a deprecated API is used. A command-line
Expand All @@ -320,12 +310,11 @@ Node.js uses three fundamental Deprecation levels:
* *End-of-life* refers to APIs that have gone through Runtime Deprecation and
are ready to be removed from Node.js entirely.

Documentation-Only Deprecations *may* be handled as semver-minor or
semver-major changes. Such deprecations have no impact on the successful
operation of running code and therefore should not be viewed as breaking
changes.
Documentation-Only Deprecations may be handled as semver-minor or semver-major
changes. Such deprecations have no impact on the successful 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
Runtime Deprecations and End-of-life APIs (internal or public) must be
handled as semver-major changes unless there is TSC consensus to land the
deprecation as a semver-minor.

Expand All @@ -338,7 +327,7 @@ the documentation for the assigned deprecation identifier must remain in the
Node.js API documentation.

<a id="deprecation-cycle"></a>
A "Deprecation cycle" is one full Node.js major release during which an API
A _Deprecation cycle_ is one full Node.js major release during which an API
has been in one of the three Deprecation levels. (Note that Documentation-Only
Deprecations may land in a Node.js minor release but must not be upgraded to
a Runtime Deprecation until the next major release.)
Expand All @@ -347,10 +336,10 @@ No API can be moved to End-of-life without first having gone through a
Runtime Deprecation cycle.

A best effort will be made to communicate pending deprecations and associated
mitigations with the ecosystem as soon as possible (preferably *before* the pull
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.
mitigations with the ecosystem as soon as possible (preferably before the pull
request adding the deprecation lands on the master branch). All deprecations
included in a Node.js release should be listed prominently in the "Notable
Changes" section of the release notes.

### Involving the TSC

Expand All @@ -367,16 +356,16 @@ The TSC 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.
* Please never use GitHub's green ["Merge Pull Request"](https://help.github.com/articles/merging-a-pull-request/#merging-a-pull-request-on-github) 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.
* If more than one author has contributed to the PR, keep the most recent
author when squashing.

Always modify the original commit message to include additional meta
information regarding the change process:
Expand All @@ -394,8 +383,8 @@ information regarding the change process:
- 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](./CONTRIBUTING.md#step-3-commit) guide.
Review the commit message to ensure that it adheres to the guidelines outlined
in the [contributing](./CONTRIBUTING.md#commit-message-guidelines) guide.

See the commit log for examples such as
[this one](https://github.com/nodejs/node/commit/b636ba8186) if unsure
Expand Down Expand Up @@ -520,7 +509,7 @@ 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).
[commit message guidelines](./CONTRIBUTING.md#commit-message-guidelines).

Run tests (`make -j4 test` or `vcbuild test`). Even though there was a
successful continuous integration run, other changes may have landed on master
Expand Down Expand Up @@ -594,7 +583,8 @@ commit final.
Long Term Support (often referred to as *LTS*) guarantees application developers
a 30 month support cycle with specific versions of Node.js.

You can find more information [in the full LTS plan](https://github.com/nodejs/lts#lts-plan).
You can find more information
[in the full release plan](https://github.com/nodejs/Release#release-plan).

#### How does LTS work?

Expand Down Expand Up @@ -627,10 +617,10 @@ TSC for further discussion.
#### How are LTS Branches Managed?

There are currently two LTS branches: `v6.x` and `v4.x`. Each of these is paired
with a "staging" branch: `v6.x-staging` and `v4.x-staging`.
with a staging branch: `v6.x-staging` and `v4.x-staging`.

As commits land in `master`, they are cherry-picked back to each staging
branch as appropriate. If the commit applies only to the LTS branch, the
As commits land on the master branch, they are cherry-picked back to each
staging branch as appropriate. If the commit applies only to the LTS branch, the
PR must be opened against the *staging* branch. Commits are selectively
pulled from the staging branch into the LTS branch only when a release is
being prepared and may be pulled into the LTS branch in a different order
Expand Down Expand Up @@ -674,5 +664,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
[Stability Index]: doc/api/documentation.md#stability-index
[Enhancement Proposal]: https://github.com/nodejs/node-eps
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ expect throughout each step of the process.
* [Commit message guidelines](#commit-message-guidelines)
* [Step 5: Rebase](#step-5-rebase)
* [Step 6: Test](#step-6-test)
* [Test Coverage](#test-coverage)
* [Step 7: Push](#step-7-push)
* [Step 8: Opening the Pull Request](#step-8-opening-the-pull-request)
* [Step 9: Discuss and Update](#step-9-discuss-and-update)
Expand Down
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -551,8 +551,8 @@ The externally maintained libraries used by Node.js are:
- stdint-msvc2008.h (from msinttypes), copyright Alexander Chemeris. Three
clause BSD license.

- pthread-fixes.h, pthread-fixes.c, copyright Google Inc. and Sony Mobile
Communications AB. Three clause BSD license.
- pthread-fixes.c, copyright Google Inc. and Sony Mobile Communications AB.
Three clause BSD license.

- android-ifaddrs.h, android-ifaddrs.c, copyright Berkeley Software Design
Inc, Kenneth MacKay and Emergya (Cloud4all, FP7/2007-2013, grant agreement
Expand Down
Loading