Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nodejs/node
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v12.16.2
Choose a base ref
...
head repository: nodejs/node
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v12.16.3
Choose a head ref
Loading
Showing 974 changed files with 32,847 additions and 24,306 deletions.
2 changes: 2 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -85,6 +85,7 @@ module.exports = {
'comma-style': 'error',
'computed-property-spacing': 'error',
'constructor-super': 'error',
'default-case-last': 'error',
'dot-location': ['error', 'property'],
'dot-notation': 'error',
'eol-last': 'error',
@@ -273,6 +274,7 @@ module.exports = {
functions: false,
variables: false,
}],
'no-useless-backreference': 'error',
'no-useless-call': 'error',
'no-useless-catch': 'error',
'no-useless-concat': 'error',
2 changes: 1 addition & 1 deletion .github/workflows/linters.yml
Original file line number Diff line number Diff line change
@@ -70,4 +70,4 @@ jobs:
- name: Lint Python
run: |
make lint-py-build || true
NODE=$(which node) make lint lint-py
NODE=$(which node) make lint-py
2 changes: 1 addition & 1 deletion .github/workflows/test-linux.yml
Original file line number Diff line number Diff line change
@@ -20,4 +20,4 @@ jobs:
- name: Build
run: make build-ci -j2 V=1
- name: Test
run: make run-ci -j2 V=1
run: make run-ci -j2 V=1 TEST_CI_ARGS="-p dots"
2 changes: 1 addition & 1 deletion .github/workflows/test-macos.yml
Original file line number Diff line number Diff line change
@@ -20,4 +20,4 @@ jobs:
- name: Build
run: make build-ci -j8 V=1
- name: Test
run: make run-ci -j8 V=1
run: make run-ci -j8 V=1 TEST_CI_ARGS="-p dots"
3 changes: 3 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ Amery <amery@xiangfa.org> 子丢言 <amery@xiangfa.org>
Amit Bendor <ajbendor@gmail.com>
Anatoli Papirovski <apapirovski@mac.com> <anatoli.papirovski@postmates.com>
Andreas Offenhaeuser <offenhaeuser@gmail.com> anoff <offenhaeuser@gmail.com>
Andrew Hughes <Andrew.Hughes1@ibm.com> <andrew.hughes.101@outlook.com>
Andy Bettisworth <andy.bettisworth@accreu.com>
Angel Stoyanov <atstojanov@gmail.com> atstojanov <atstojanov@gmail.com>
Anna Henningsen <anna@addaleax.net> <sqrt@entless.org>
@@ -250,6 +251,7 @@ Masato Ohba <over.rye@gmail.com>
Matheus Marchini <mat@mmarchini.me> <matheusdot@gmail.com>
Matheus Marchini <mat@mmarchini.me> <matheus@sthima.com.br>
Matheus Marchini <mat@mmarchini.me> <matheus@sthima.com>
Matheus Marchini <mat@mmarchini.me> <mmarchini@netflix.com>
Matt Lang <matt@mediasuite.co.nz> matt-in-a-hat <matt@mediasuite.co.nz>
Matt Reed <matthewreed26@gmail.com> matthewreed26 <matthewreed26@gmail.com>
Matteo Collina <matteo.collina@gmail.com> <hello@matteocollina.com>
@@ -408,6 +410,7 @@ Travis Meisenheimer <travis@indexoutofbounds.com> <tmeisenh@gmail.com>
Trevor Burnham <trevor@databraid.com> <trevorburnham@gmail.com>
Trivikram Kamat <trivikr.dev@gmail.com> <16024985+trivikr@users.noreply.github.com>
Tyler Larson <talltyler@gmail.com>
Ujjwal Sharma <usharma1998@gmail.com> <ryzokuken@disroot.org>
Viktor Karpov <viktor.s.karpov@gmail.com> vitkarpov <viktor.s.karpov@gmail.com>
Vincent Voyer <v@fasterize.com>
Vladimir de Turckheim <vlad2t@hotmail.com>
76 changes: 76 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -2945,5 +2945,81 @@ Chris Oyler <christopher.oyler@gmail.com>
Jesper Ek <deadbeef84@gmail.com>
Luciano <lucianomammino@gmail.com>
jens-cappelle <jens.jan.cappelle@gmail.com>
bruce-one <bryce@gibson-consulting.com.au>
Jason Macgowan <jason.macgowan@icloud.com>
Vincent Dhennin <vincent.dhennin@viacesi.fr>
Alex Zherdev <alex.zherdev@gmail.com>
Jeny <yenymzo@gmail.com>
Tchoupinax <corentinfiloche@hotmail.fr>
Sebastien Ahkrin <sebastien48criquet@gmail.com>
Michael Lehenbauer <mikelehen@google.com>
Harendra Singh <harendra@getpostman.com>
Sam Foxman <samfoxman320@gmail.com>
Marek Łabuz <mareklabuz@Mareks-MacBook-Pro-2.local>
Reza Fatahi <aug2uag@gmail.com>
Priyanka Kore <piyukore06@gmail.com>
Jan-Philip Gehrcke <jp@opstrace.com>
MaΓ«l Nison <nison.mael@gmail.com>
qualitymanifest <qualitymanifest@gmail.com>
Rosen Penev <rosenp@gmail.com>
Jeremy Albright <myrlin1@gmail.com>
Giovanni Campagna <gcampagn@cs.stanford.edu>
Donggeon Lim <ooqwe486@gmail.com>
Tim Costa <tim@timcosta.io>
rene.herrmann <rene.herrmann@share-now.com>
Derek Lewis <DerekNonGeneric@inf.is>
Kirill Ponomarev <shacaron@gmail.com>
Soar <58918356+soar-beep@users.noreply.github.com>
Tadao Iseki <saitoeku3@gmail.com>
Diego Lafuente <diego.lafuente@logtrust.com>
Andrew Kuzmenko <kuzmenko@ucoz-team.net>
David Newman <david@nici.solutions>
Andrey Hohutkin <andrey.hohutkin@gmail.com>
A. Volgin <anatoly.volgin.rg@gmail.com>
Chris Osborn <chris.osborn@sitelier.com>
stephank <gh@stephank.nl>
Taylor Zane Glaeser <tzglaeser@gmail.com>
sutangu <sutangu@gmail.com>
Santosh Yadav <santosh.yadav198613@gmail.com>
kresimirfranin <kresimir.franin@deliveryhero.com>
Colin Grant <43424668+GKJCJG@users.noreply.github.com>
Ryan Schmidt <git@ryandesign.com>
Ronald J Kimball <rjk@tamias.net>
Vighnesh Raut <vighnesh.raut13@gmail.com>
SpaceRacet5w2A6l0I <59487396+SpaceRacet5w2A6l0I@users.noreply.github.com>
Alexander Wang <zxcvb22217@gmail.com>
carterbancroft <carter.bancroft@gmail.com>
Egor Pavlov <no.more.vikings@gmail.com>
Parker Bjur <bjur.parker45@gmail.com>
Yakov Litvin <yakov.litvin.publicly@gmail.com>
Eran Levin <exx8exx8@gmail.com>
Alexander Smarus <bender@readdle.com>
kenzo-spaulding <51864231+kenzo-spaulding@users.noreply.github.com>
Rusty Conover <rusty@conover.me>
aaccttrr <adam.cotter@nearform.com>
ConorDavenport <cnrdavenport@gmail.com>
Dylan Coakley <dylancoakley@Dylans-MacBook-Pro.local>
Steffen <steffen.koette@gmail.com>
Conor ONeill <cwjoneill@gmail.com>
tsabolov <k.tsabolov@gmail.com>
Swagat Konchada <swagatata@gmail.com>
Yuhanun Citgez <y.citgez@student.utwente.nl>
Danielle Adams <danielle.adams@heroku.com>
Andrey Pechkurov <apechkurov@gmail.com>
Jeff <jeff.tian@outlook.com>
simon <simon.tretter@hokify.com>
Eric Eastwood <contact@ericeastwood.com>
unknown <rosaxny@gmail.com>
zfx <502545703@qq.com>
Vita Batrla <vita.batrla@gmail.com>
AndrΓ© Draszik <git@andred.net>
ProdipRoy89 <prodip1989@gmail.com>
Andrew Neitsch <andrew@neitsch.ca>
RamanandPatil <ramanand.patil@gmail.com>
forfun414 <forfun414@gmail.com>
David Gilbertson <gilbertson.david@gmail.com>
Sergey Zelenov <sergey.zelenov@getyourguide.com>
Eric Bickle <ebickle@users.noreply.github.com>
Joe Pea <joe@trusktr.io>

# Generated by tools/update-authors.js
20 changes: 18 additions & 2 deletions BUILDING.md
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@ file a new issue.
* [Running Coverage](#running-coverage)
* [Building the documentation](#building-the-documentation)
* [Building a debug build](#building-a-debug-build)
* [Building an ASAN build](#building-an-asan-build)
* [Troubleshooting Unix and macOS builds](#troubleshooting-unix-and-macos-builds)
* [Windows](#windows)
* [Prerequisites](#prerequisites)
@@ -496,6 +497,22 @@ $ gdb /opt/node-debug/node core.node.8.1535359906
$ backtrace
```

#### Building an ASAN build

[ASAN](https://github.com/google/sanitizers) can help detect various memory
related bugs. ASAN builds are currently only supported on linux.
If you want to check it on Windows or macOS or you want a consistent toolchain
on Linux, you can try [Docker](https://www.docker.com/products/docker-desktop)
(using an image like `gengjiawen/node-build:2020-02-14`).

The `--debug` is not necessary and will slow down build and testing, but it can
show clear stacktrace if ASAN hits an issue.

``` console
$ ./configure --debug --enable-asan && make -j4
$ make test-only
```

#### Troubleshooting Unix and macOS builds

Stale builds can sometimes result in `file not found` errors while building.
@@ -544,7 +561,6 @@ Optional requirements for compiling for Windows 10 on ARM (ARM64):
* Windows 10 SDK 10.0.17763.0 or newer

##### Option 2: Automated install with Boxstarter
<a name="boxstarter"></a>

A [Boxstarter](https://boxstarter.org/) script can be used for easy setup of
Windows systems with all the required prerequisites for Node.js development.
@@ -555,7 +571,7 @@ packages:
Unix tools added to the `PATH`.
* [Python 3.x](https://chocolatey.org/packages/python) and
[legacy Python](https://chocolatey.org/packages/python2)
* [Visual Studio 2017 Build Tools](https://chocolatey.org/packages/visualstudio2017buildtools)
* [Visual Studio 2019 Build Tools](https://chocolatey.org/packages/visualstudio2019buildtools)
with [Visual C++ workload](https://chocolatey.org/packages/visualstudio2017-workload-vctools)
* [NetWide Assembler](https://chocolatey.org/packages/nasm)

3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -28,7 +28,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V12.md#12.16.2">12.16.2</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V12.md#12.16.3">12.16.3</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V12.md#12.16.2">12.16.2</a><br/>
<a href="doc/changelogs/CHANGELOG_V12.md#12.16.1">12.16.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V12.md#12.16.0">12.16.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V12.md#12.15.0">12.15.0</a><br/>
2 changes: 1 addition & 1 deletion GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
* [Technical Steering Committee](#technical-steering-committee)
* [TSC Meetings](#tsc-meetings)
* [Collaborator Nominations](#collaborator-nominations)
* [Onboarding](#./onboarding)
* [Onboarding](#onboarding)
* [Consensus Seeking Process](#consensus-seeking-process)

<!-- /TOC -->
61 changes: 52 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -292,7 +292,7 @@ v8:
tools/make-v8.sh $(V8_ARCH).$(BUILDTYPE_LOWER) $(V8_BUILD_OPTIONS)

.PHONY: jstest
jstest: build-addons build-js-native-api-tests build-node-api-tests ## Runs addon tests and JS tests
jstest: build-addons build-abort-tests build-js-native-api-tests build-node-api-tests ## Runs addon tests and JS tests
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
--skip-tests=$(CI_SKIP_TESTS) \
$(CI_JS_SUITES) \
@@ -316,6 +316,7 @@ test: all ## Runs default tests, linters, and builds docs.
$(MAKE) -s tooltest
$(MAKE) -s test-doc
$(MAKE) -s build-addons
$(MAKE) -s build-abort-tests
$(MAKE) -s build-js-native-api-tests
$(MAKE) -s build-node-api-tests
$(MAKE) -s cctest
@@ -324,6 +325,7 @@ test: all ## Runs default tests, linters, and builds docs.
.PHONY: test-only
test-only: all ## For a quick test, does not run linter or build docs.
$(MAKE) build-addons
$(MAKE) build-abort-tests
$(MAKE) build-js-native-api-tests
$(MAKE) build-node-api-tests
$(MAKE) cctest
@@ -333,6 +335,7 @@ test-only: all ## For a quick test, does not run linter or build docs.
# Used by `make coverage-test`
test-cov: all
$(MAKE) build-addons
$(MAKE) build-abort-tests
$(MAKE) build-js-native-api-tests
$(MAKE) build-node-api-tests
$(MAKE) cctest
@@ -452,6 +455,31 @@ test/node-api/.buildstamp: $(ADDONS_PREREQS) \
# TODO(bnoordhuis) Force rebuild after gyp or node-gyp update.
build-node-api-tests: | $(NODE_EXE) test/node-api/.buildstamp

ABORT_BINDING_GYPS := \
$(filter-out test/abort/??_*/binding.gyp, \
$(wildcard test/abort/*/binding.gyp))

ABORT_BINDING_SOURCES := \
$(filter-out test/abort/??_*/*.c, $(wildcard test/abort/*/*.c)) \
$(filter-out test/abort/??_*/*.cc, $(wildcard test/abort/*/*.cc)) \
$(filter-out test/abort/??_*/*.h, $(wildcard test/abort/*/*.h))

# Implicitly depends on $(NODE_EXE), see the build-node-api-tests rule for rationale.
test/abort/.buildstamp: $(ADDONS_PREREQS) \
$(ABORT_BINDING_GYPS) $(ABORT_BINDING_SOURCES) \
src/node_api.h src/node_api_types.h src/js_native_api.h \
src/js_native_api_types.h src/js_native_api_v8.h src/js_native_api_v8_internals.h
@$(call run_build_addons,"$$PWD/test/abort",$@)

.PHONY: build-abort-tests
# .buildstamp needs $(NODE_EXE) but cannot depend on it
# directly because it calls make recursively. The parent make cannot know
# if the subprocess touched anything so it pessimistically assumes that
# .buildstamp is out of date and need a rebuild.
# Just goes to show that recursive make really is harmful...
# TODO(bnoordhuis) Force rebuild after gyp or node-gyp update.
build-abort-tests: | $(NODE_EXE) test/abort/.buildstamp

BENCHMARK_NAPI_BINDING_GYPS := $(wildcard benchmark/napi/*/binding.gyp)

BENCHMARK_NAPI_BINDING_SOURCES := \
@@ -472,12 +500,14 @@ clear-stalled:
echo $${PS_OUT} | xargs kill -9; \
fi

test-build: | all build-addons build-js-native-api-tests build-node-api-tests
test-build: | all build-addons build-abort-tests build-js-native-api-tests build-node-api-tests

test-build-js-native-api: all build-js-native-api-tests

test-build-node-api: all build-node-api-tests

test-build-abort: all build-abort-tests

.PHONY: test-all
test-all: test-build ## Run default tests with both Debug and Release builds.
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=debug,release
@@ -490,7 +520,7 @@ test-all-suites: | clear-stalled test-build bench-addons-build doc-only ## Run a
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) test/*

# CI_* variables should be kept synchronized with the ones in vcbuild.bat
CI_NATIVE_SUITES ?= addons js-native-api node-api
CI_NATIVE_SUITES ?= addons js-native-api node-api abort
CI_JS_SUITES ?= default
ifeq ($(node_use_openssl), false)
CI_DOC := doctool
@@ -502,7 +532,7 @@ endif
# Build and test addons without building anything else
# Related CI job: node-test-commit-arm-fanned
test-ci-native: LOGLEVEL := info
test-ci-native: | test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp
test-ci-native: | test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp test/abort/.buildstamp
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
$(TEST_CI_ARGS) $(CI_NATIVE_SUITES)
@@ -524,7 +554,7 @@ test-ci-js: | clear-stalled
.PHONY: test-ci
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
test-ci: LOGLEVEL := info
test-ci: | clear-stalled build-addons build-js-native-api-tests build-node-api-tests doc-only
test-ci: | clear-stalled build-addons build-abort-tests build-js-native-api-tests build-node-api-tests doc-only
out/Release/cctest --gtest_output=xml:out/junit/cctest.xml
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
@@ -599,6 +629,7 @@ test-doc: doc-only lint ## Builds, lints, and verifies the docs.
else \
$(PYTHON) tools/test.py $(PARALLEL_ARGS) doctool; \
fi
$(NODE) tools/doc/checkLinks.js .

test-known-issues: all
$(PYTHON) tools/test.py $(PARALLEL_ARGS) known_issues
@@ -628,8 +659,17 @@ test-node-api-clean:
$(RM) -r test/node-api/*/build
$(RM) test/node-api/.buildstamp

.PHONY: test-abort
test-abort: test-build-abort
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) test-abort

.PHONY: test-abort-clean
test-abort-clean:
$(RM) -r test/abort/*/build
$(RM) test/abort/.buildstamp

.PHONY: test-addons
test-addons: test-build test-js-native-api test-node-api
test-addons: test-build test-js-native-api test-node-api test-abort
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) addons

.PHONY: test-addons-clean
@@ -639,6 +679,7 @@ test-addons-clean:
$(RM) test/addons/.buildstamp test/addons/.docbuildstamp
$(MAKE) test-js-native-api-clean
$(MAKE) test-node-api-clean
$(MAKE) test-abort-clean

test-async-hooks:
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) async-hooks
@@ -647,6 +688,7 @@ test-with-async-hooks:
$(MAKE) build-addons
$(MAKE) build-js-native-api-tests
$(MAKE) build-node-api-tests
$(MAKE) build-abort-tests
$(MAKE) cctest
NODE_TEST_WITH_ASYNC_HOOKS=1 $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
$(CI_JS_SUITES) \
@@ -738,7 +780,7 @@ out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets
run-npm-ci = $(PWD)/$(NPM) ci

LINK_DATA = out/doc/apilinks.json
VERSIONS_DATA = out/doc/previous-versions.json
VERSIONS_DATA = out/previous-doc-versions.json
gen-api = tools/doc/generate.js --node-version=$(FULLVERSION) \
--apilinks=$(LINK_DATA) $< --output-directory=out/doc/api \
--versions-file=$(VERSIONS_DATA)
@@ -770,6 +812,7 @@ docopen: $(apidocs_html)
.PHONY: docclean
docclean:
$(RM) -r out/doc
$(RM) "$(VERSIONS_DATA)"

RAWVER=$(shell $(PYTHON) tools/getnodeversion.py)
VERSION=v$(RAWVER)
@@ -1187,9 +1230,9 @@ lint-md-build:
$(warning "Deprecated no-op target 'lint-md-build'")

ifeq ("$(wildcard tools/.mdlintstamp)","")
LINT_MD_NEWER =
LINT_MD_NEWER =
else
LINT_MD_NEWER = -newer tools/.mdlintstamp
LINT_MD_NEWER = -newer tools/.mdlintstamp
endif

LINT_MD_TARGETS = doc src lib benchmark test tools/doc tools/icu $(wildcard *.md)
Loading