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

v15.6.0 proposal #36889

Merged
merged 161 commits into from Jan 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
c784f15
Revert "http: use `autoDestroy: true` in incoming message"
dnlup Dec 27, 2020
5e499c4
http: refactor to use more primordials
aduh95 Nov 17, 2020
c844d22
errors: eliminate all overhead for hidden calls
mmomtchev Oct 14, 2020
3170636
v8: fix native `serdes` constructors
ExE-Boss Dec 17, 2020
cb7f73c
tools: revise line in configure.py for clarity
Trott Dec 17, 2020
63091f8
lib: refactor to use more primordials in internal/histogram.js
RaisinTen Dec 9, 2020
7134d49
child_process: clean event listener correctly
benjamingr Dec 7, 2020
2dd2ec3
v8: refactor to use more primordials
aduh95 Dec 5, 2020
dcc93d3
doc: expand openssl instructions
mhdawson Dec 17, 2020
538f226
doc: remove "Related Issues" from pull request template
Trott Dec 21, 2020
93237c5
doc: remove replication of GitHub template
Trott Dec 21, 2020
d20235b
lib: fix diagnostics_channel hasSubscribers error
Lxxyx Dec 22, 2020
863bfc4
test: redirect stderr EnvironmentWithNoESMLoader
danbev Dec 17, 2020
578fa0f
deps: V8: cherry-pick dfcdf7837e23
bcoe Dec 18, 2020
a8a427f
child_process: support AbortSignal in fork
benjamingr Dec 22, 2020
7664f36
tools: use `is None` consistently in Python
Trott Dec 22, 2020
37b39a2
tools: call close() explicitly in genv8constants.py
Trott Dec 22, 2020
10f1c89
tools: correct usage message for genv8constants.py
Trott Dec 22, 2020
3ee4cfc
doc: fix bugs in _construct() example
mkbaranovskyi Dec 14, 2020
5645b21
doc: document "http: lazy create IncomingMessage.headers"
ExE-Boss Dec 22, 2020
82393ae
events: refactor to use more primordials
aduh95 Nov 17, 2020
56af125
lib: make safe primordials safe to construct
aduh95 Dec 7, 2020
8ac2016
lib: add primordials.SafeStringIterator
aduh95 Dec 4, 2020
822ac48
buffer: make FastBuffer safe to construct
aduh95 Dec 20, 2020
7aedda9
benchmark: add simple https benchmark
puzpuzpuz Dec 23, 2020
b1c6a44
url: refactor to use more primordials
aduh95 Nov 20, 2020
ec3e841
lib: refactor to use primordials in internal/priority_queue.js
Lxxyx Dec 18, 2020
b367d5a
tools: update gyp-next to v0.7.0
targos Dec 19, 2020
1ed517c
doc: document return value of https.request
mcgitty Dec 3, 2020
6e338da
lib: refactor to use more primordials in internal/encoding.js
RaisinTen Dec 11, 2020
f623d5d
doc: use _code name_ rather than _codename_
Trott Dec 23, 2020
1f3bc5e
test: increase runInAsyncScope() coverage
Trott Dec 24, 2020
34d1d79
test: improve coverage for util.inspect() with classes
Trott Dec 25, 2020
8ad3455
tools: revise install.py for minor improvements
Trott Dec 25, 2020
ff4674b
doc: correct callback parameter type for createPushResponse()
Trott Dec 25, 2020
8a0cdb3
doc: alphabetize http response properties
Trott Dec 25, 2020
8b7336b
quic,timers: refactor to use validateAbortSignal
Lxxyx Dec 22, 2020
9156f43
http: remove dead code from internal/http.js
Lxxyx Dec 25, 2020
ffaa8c1
build: do not "exit" a script meant to be "source"d
fdgonthier Oct 6, 2020
a4d64f9
https: refactor to use more primordials
aduh95 Nov 17, 2020
181bad5
lib: add primordials.SafeArrayIterator
aduh95 Dec 6, 2020
f815565
test: increase coverage for internal/error_serdes.js
Lxxyx Dec 25, 2020
857b98e
build: fix unknown warning option
RaisinTen Dec 25, 2020
64bf2f2
util: refactor to use more primordials
aduh95 Nov 16, 2020
bb4f8c8
lib: use more primordials in shared validators
PoojaDurgad Dec 17, 2020
72b0ab0
doc: add yashLadha to collaborator
yashLadha Dec 28, 2020
1fc30a8
stream,zlib: do not use _stream_* anymore
mcollina Dec 24, 2020
7fe1b5e
lib: refactor to use validateCallback
Lxxyx Dec 23, 2020
eb6b386
lib: remove unused code
mscdex Dec 26, 2020
651e7d2
doc: document http.IncomingMessage behaviour change
dr-js Dec 27, 2020
190ddce
stream: only use legacy close listeners if not willEmitClose
ronag Dec 27, 2020
d5d56ec
test: add test for reused AbortController with execfile()
Trott Dec 27, 2020
78d4d91
child_process: treat already-aborted controller as aborting
Trott Dec 29, 2020
b98cc51
child_process: reduce abort handler code duplication
Trott Dec 29, 2020
f0dfe57
test: add already-aborted-controller test for spawn()
Trott Dec 29, 2020
5cb8b16
url: fix url.format with ipv6 hostname
Lxxyx Dec 28, 2020
d5e1b82
fs: accept non-32-bit length in writeBuffer
RaisinTen Dec 28, 2020
d2b9e7c
string_decoder: throw ERR_STRING_TOO_LONG for UTF-8
targos Dec 28, 2020
f0a9c53
errors: refactor to use more primordials
aduh95 Dec 27, 2020
edf8c6d
doc: add note about uncloneable objects
jasnell Dec 15, 2020
a53997e
src: fix leading backslash bug in URL
RaisinTen Dec 23, 2020
833e614
test: increase coverage for diagnostics_channel
Lxxyx Dec 22, 2020
02dbcc4
net: support abortSignal in server.listen
Dec 24, 2020
986d5ac
test: update wpt url
watilde Dec 28, 2020
4acc273
test: update wpt encoding
watilde Dec 28, 2020
a7f743f
test: update wpt resources
watilde Dec 28, 2020
9eff709
test: update wpt interfaces
watilde Dec 28, 2020
181bd05
doc: improve ALS.enterWith and exit descriptions
puzpuzpuz Dec 31, 2020
d3dc124
doc: update emitClose default for fs streams
kevinoid Dec 28, 2020
92af503
process: add direct access to rss without iterating pages
Dec 29, 2020
242ce19
doc: document common warning types
jasnell Dec 31, 2020
214dbac
doc: clarify undocumented stream properties
jasnell Dec 31, 2020
8b43388
src: reduce duplicated boilerplate with new env utility fn
jasnell Dec 15, 2020
9bc2cec
child_process: add 'overlapped' stdio flag
tarruda Sep 2, 2019
954a369
http: make HEAD method to work with keep-alive
josephhackman Jul 4, 2020
9f7fbcc
test: add coverage for breakLength one-column array
Trott Dec 28, 2020
e85fbb7
http2: fix typos in core.js
pmj642 Jan 1, 2021
56c00d7
doc: simplify pull request template
Trott Jan 2, 2021
fa54f01
doc: reduce abbreviations in async_hooks.md
Trott Jan 2, 2021
b764269
lib: remove v8_prof_polyfill from eslint ignore list
aduh95 Dec 15, 2020
5bc130b
test: increase coverage for events
Lxxyx Dec 28, 2020
a258bc9
perf_hooks: refactor to avoid unsafe array iteration
aduh95 Dec 31, 2020
4e0995b
tools: update ESLint to 7.17.0
cjihrig Jan 2, 2021
eca2df0
meta: notify slack when someone force pushes
mmarchini Sep 9, 2020
8f672eb
doc: add YAML metadata for process.memoryUsage.rss
Flarna Jan 4, 2021
bff201a
util: remove unreachable defensive coding
Trott Jan 2, 2021
9b7d2c2
test: guard large string decoder allocation
targos Jan 5, 2021
b2c1aeb
doc: revise process.memoryUsage() text
Trott Jan 3, 2021
d48e00e
test: fix test-memory-usage.js for IBMi
Trott Jan 3, 2021
67dd48e
doc: add panva to collaborators
panva Jan 5, 2021
b996e3b
stream: do not use _stream_* anymore
mcollina Dec 29, 2020
baa8064
util: refactor inspect.js to use more primodials
rchougule Jan 2, 2021
fad07d5
doc: fix typo in esm documentation
kamagatos Jan 5, 2021
6db465a
doc: clarify that N-API addons are context-aware
mildsunrise Dec 26, 2020
ff39464
doc: add OpenSSL CVE fix to notable changes in v15.5.0
BethGriggs Jan 5, 2021
1f2a198
tools: fix md5 hash for ICU 68.1 src
richardlau Jan 4, 2021
ef62889
doc: revise exit() and run() text in async_hooks.md
Trott Jan 2, 2021
cc28d2f
http: set lifo as the default scheduling strategy in Agent
mcollina Dec 30, 2020
dfc962f
http: add test case for req-res close ordering
dnlup Dec 27, 2020
302be57
module: refactor to avoid unsafe array iteration
aduh95 Dec 29, 2020
e3a091d
fs: refactor to avoid unsafe array iteration
aduh95 Dec 29, 2020
d5a9799
wasi: refactor to avoid unsafe array iteration
aduh95 Dec 31, 2020
258aa50
tty: refactor to avoid unsafe array iteration
aduh95 Dec 31, 2020
ad1d8fb
doc: fix broken link for ChildProcess
jasnell Jan 4, 2021
c6eb2b4
doc: clarify Buffer.from when using ArrayBuffer
jasnell Jan 4, 2021
a7bb4da
doc: clarify that --require only supports cjs
jasnell Jan 5, 2021
b17130a
readline: fix behaviour of Interface plugged to a non-terminal output
aduh95 Jan 4, 2021
61b0393
doc: avoid memory leak warning in async_hooks example
jasnell Jan 4, 2021
b4091ea
doc: clarify when messageerror is emitted
jasnell Jan 4, 2021
4601886
benchmark: fix http/headers.js with test-double
Trott Jan 5, 2021
757b966
doc: revise method text in async_hooks.md
Trott Jan 2, 2021
a956fb3
doc: add dark mode
AjayPoshak Nov 22, 2020
4e4deca
crypto: implement randomuuid
jasnell Jan 2, 2021
d4bcb36
doc: clarify subprocess.stdout/in/err/io properties
jasnell Jan 4, 2021
835bdf0
doc: improve crypto.randomUUID() text
Trott Jan 7, 2021
ff6edbc
doc: add dnlup to collaborators
dnlup Jan 8, 2021
c64db20
test: use faster variant for rss test-memoryusage-emfile
PoojaDurgad Jan 4, 2021
9d25d25
test: mark test-cluster-bind-privileged-port flaky on arm
jasnell Jan 8, 2021
7c7180a
doc: document buffer's "Uint" aliases clearly
targos Jan 5, 2021
a38ad07
http2: refactor to use primordials instead of <string>.indexOf
rchougule Dec 29, 2020
1a4d34e
doc: clarify descriptions of _writev chunks argument
jasnell Jan 6, 2021
94afc3e
process: passing -1 to setuid/setgid should not abort
jasnell Jan 4, 2021
9b9b6d5
domain: make node resilient to Array prototype tempering
aduh95 Dec 29, 2020
41e278b
docs: add references to punycode.md
isaacl Jan 3, 2021
c4ad50e
crypto: introduce X509Certificate API
jasnell Jan 5, 2021
2d8423d
doc: clarify child_process.exec inherits cwd
ugultopu Jan 6, 2021
24246a2
net: throw ERR_OUT_OF_RANGE if blockList.addSubnet prefix is NaN
Lxxyx Jan 2, 2021
8e8b16f
timers: refactor to use optional chaining
Lxxyx Jan 4, 2021
da49624
doc: update release key for Danielle Adams
danielleadams Dec 28, 2020
3b64b38
doc: os.uptime() temporary bug notice
schamberg97 Dec 13, 2020
d70824f
src: fix typo in crypto_aes.cc
eltociear Jan 1, 2021
b6f74b0
zlib: refactor to use primordial instead of <string>.startsWith
rchougule Jan 1, 2021
153be6c
doc: fix module syncBuiltinESMExports example
bmacnaughton Jul 10, 2020
95219ea
lib: refactor to use mapping in cluster master
yashLadha Nov 24, 2020
0c11a17
console: refactor to avoid unsafe array iteration
aduh95 Jan 1, 2021
cb0b53e
stream: lazy read ReadStream
mmomtchev Nov 26, 2020
3ca7a78
benchmark: fix http2 benchmarks
Trott Jan 10, 2021
cfdbb79
tools: update doc tool dependencies
targos Jan 8, 2021
ff5bd04
deps: update nghttp2 to 1.42.0
targos Jan 8, 2021
54bd4ab
cluster: fix edge cases that throw ERR_INTERNAL_ASSERTION
oyyd Jan 4, 2021
21f3295
build: refactor Makefile
RaisinTen Jan 4, 2021
3fa470a
events: refactor to use optional chaining
Lxxyx Jan 4, 2021
37becfd
tools: update all lint-md rollup dependencies
targos Jan 8, 2021
c23cca2
tls: refactor to avoid unsafe array iteration
aduh95 Dec 31, 2020
1c9ec25
deps: upgrade npm to 7.4.0
ruyadorno Jan 7, 2021
4c819d6
stream: fix .end() error propagation
ronag Jan 6, 2021
42aca13
crypto: fixup bug in keygen error handling
jasnell Jan 8, 2021
53cf996
crypto: implement basic secure heap support
jasnell Jan 4, 2021
daad0ab
test: use faster variant for rss in test-vm-memleak.js
PoojaDurgad Jan 4, 2021
cc37ff2
test: use faster variant for rss in test-crypto-dh-leak
PoojaDurgad Jan 4, 2021
abae61e
stream: finished waits for 'close' on OutgoingMessage
ronag Dec 27, 2020
e8bb1f7
doc: clarify event.isTrusted text
Trott Jan 7, 2021
a9a2dd3
http: don't cork noop .end()
ronag Dec 26, 2020
17a5233
test: http complete response after socket double end
mitsos1os Jan 10, 2021
01213c7
module: fix Windows folder exports deprecation warning
guybedford Jan 10, 2021
1db3772
lib: simplify `primordials.uncurryThis`
ExE-Boss Jan 10, 2021
05f34c6
doc: define "browser", "production", "development"
guybedford Jan 9, 2021
abc2ff4
test: disable test-crypto-secure-heap with asan
jasnell Jan 12, 2021
7e3ad1b
Revert "http: remove dead code from internal/http.js"
Lxxyx Dec 25, 2020
d858c95
http: remove dead code from internal/http.js
Lxxyx Dec 25, 2020
1700bbd
2021-01-14, Version 15.6.0 (Current)
danielleadams Jan 12, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .eslintignore
@@ -1,5 +1,4 @@
node_modules
lib/internal/v8_prof_polyfill.js
lib/punycode.js
test/addons/??_*
test/fixtures
Expand Down
26 changes: 8 additions & 18 deletions .github/PULL_REQUEST_TEMPLATE.md
@@ -1,25 +1,15 @@
<!--
Thank you for your pull request. Please provide a description above and review
the requirements below.
Before submitting a pull request, please read
https://github.com/nodejs/node/blob/master/CONTRIBUTING.md.

Bug fixes and new features should include tests and possibly benchmarks.
Commit message formatting guidelines:
https://github.com/nodejs/node/blob/master/doc/guides/contributing/pull-requests.md#commit-message-guidelines

Contributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md
-->

#### Related Issues

Fixes: https://github.com/nodejs/node/issues/<issue_number>
For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

##### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [ ] `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes
- [ ] tests and/or benchmarks are included
- [ ] documentation is changed or added
- [ ] commit message follows [commit guidelines](https://github.com/nodejs/node/blob/master/doc/guides/contributing/pull-requests.md#commit-message-guidelines)

<!--
Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:
Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/notify-force-push.yml
@@ -0,0 +1,25 @@
on:
push:
branches:
- master

name: Notify on Force Push
jobs:
slackNotification:
name: Slack Notification
if: ${{ github.event.forced && github.repository == 'nodejs/node' }}
runs-on: ubuntu-latest
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@master
env:
SLACK_COLOR: '#DE512A'
SLACK_ICON: https://github.com/nodejs.png?size=48
SLACK_TITLE: '${{ github.actor }} force-pushed to ${{ github.ref }}'
SLACK_MESSAGE: |
A commit was force-pushed to <https://github.com/${{ github.repository }}/tree/master|${{ github.repository }}@master> by <https://github.com/${{ github.actor }}|${{ github.actor }}>

Before: <https://github.com/${{ github.repository }}/commit/${{ github.event.before }}|${{ github.event.before }}>
After: <https://github.com/${{ github.repository }}/commit/${{ github.event.after }}|${{ github.event.after }}>
SLACK_USERNAME: nodejs-bot
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
3 changes: 2 additions & 1 deletion CHANGELOG.md
Expand Up @@ -32,7 +32,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V15.md#15.5.1">15.5.1</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V15.md#15.6.0">15.6.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.5.1">15.5.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.5.0">15.5.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.4.0">15.4.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.3.0">15.3.0</a><br/>
Expand Down
12 changes: 6 additions & 6 deletions Makefile
Expand Up @@ -9,7 +9,7 @@ FLAKY_TESTS ?= run
TEST_CI_ARGS ?=
STAGINGSERVER ?= node-www
LOGLEVEL ?= silent
OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
OSTYPE := $(shell uname -s | tr '[:upper:]' '[:lower:]')
COVTESTS ?= test-cov
COV_SKIP_TESTS ?= core_line_numbers.js,testFinalizer.js,test_function/test.js
GTEST_FILTER ?= "*"
Expand Down Expand Up @@ -40,7 +40,7 @@ ifeq ($(OSTYPE), darwin)
GCOV = xcrun llvm-cov gcov
endif

BUILDTYPE_LOWER := $(shell echo $(BUILDTYPE) | tr '[A-Z]' '[a-z]')
BUILDTYPE_LOWER := $(shell echo $(BUILDTYPE) | tr '[:upper:]' '[:lower:]')

# Determine EXEEXT
EXEEXT := $(shell $(PYTHON) -c \
Expand Down Expand Up @@ -85,7 +85,7 @@ endif
# To add a target to the help, add a double comment (##) on the target line.
help: ## Print help for targets with comments.
@printf "For more targets and info see the comments in the Makefile.\n\n"
@grep -E '^[a-zA-Z0-9._-]+:.*?## .*$$' Makefile | sort | \
@grep -E '^[[:alnum:]._-]+:.*?## .*$$' Makefile | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'

# The .PHONY is needed to ensure that we recursively use the out/Makefile
Expand Down Expand Up @@ -243,10 +243,10 @@ coverage-test: coverage-build
--gcov-exclude='.*\b(deps|usr|out|cctest|embedding)\b' -v \
-r Release/obj.target --html --html-detail -o ../coverage/cxxcoverage.html \
--gcov-executable="$(GCOV)")
@echo -n "Javascript coverage %: "
@printf "Javascript coverage %%: "
@grep -B1 Lines coverage/index.html | head -n1 \
| sed 's/<[^>]*>//g'| sed 's/ //g'
@echo -n "C++ coverage %: "
@printf "C++ coverage %%: "
@grep -A3 Lines coverage/cxxcoverage.html | grep style \
| sed 's/<[^>]*>//g'| sed 's/ //g'

Expand Down Expand Up @@ -1360,7 +1360,7 @@ lint: ## Run JS, C++, MD and doc linters.
$(MAKE) lint-addon-docs || EXIT_STATUS=$$? ; \
$(MAKE) lint-md || EXIT_STATUS=$$? ; \
exit $$EXIT_STATUS
CONFLICT_RE=^>>>>>>> [0-9A-Fa-f]+|^<<<<<<< [A-Za-z]+
CONFLICT_RE=^>>>>>>> [[:xdigit:]]+|^<<<<<<< [[:alpha:]]+

# Related CI job: node-test-linter
lint-ci: lint-js-ci lint-cpp lint-py lint-md lint-addon-docs
Expand Down
14 changes: 11 additions & 3 deletions README.md
Expand Up @@ -53,7 +53,7 @@ Looking for help? Check out the
* **LTS**: Releases that receive Long-term Support, with a focus on stability
and security. Every even-numbered major version will become an LTS release.
LTS releases receive 12 months of _Active LTS_ support and a further 18 months
of _Maintenance_. LTS release lines have alphabetically-ordered codenames,
of _Maintenance_. LTS release lines have alphabetically-ordered code names,
beginning with v4 Argon. There are no breaking changes or feature additions,
except in some special circumstances.
* **Nightly**: Code from the Current branch built every 24-hours when there are
Expand Down Expand Up @@ -289,6 +289,8 @@ For information about the governance of the Node.js project, see
**David Carlier** &lt;devnexen@gmail.com&gt;
* [devsnek](https://github.com/devsnek) -
**Gus Caplan** &lt;me@gus.host&gt; (they/them)
* [dnlup](https://github.com/dnlup)
**Daniele Belardi** &lt;dwon.dnl@gmail.com&gt; (he/him)
* [edsadr](https://github.com/edsadr) -
**Adrian Estrada** &lt;edsadr@gmail.com&gt; (he/him)
* [eugeneo](https://github.com/eugeneo) -
Expand Down Expand Up @@ -371,6 +373,8 @@ For information about the governance of the Node.js project, see
**Ali Ijaz Sheikh** &lt;ofrobots@google.com&gt; (he/him)
* [oyyd](https://github.com/oyyd) -
**Ouyang Yadong** &lt;oyydoibh@gmail.com&gt; (he/him)
* [panva](https://github.com/panva) -
**Filip Skokan** &lt;panva.ip@gmail.com&gt;
* [PoojaDurgad](https://github.com/PoojaDurgad) -
**Pooja D P** &lt;Pooja.D.P@ibm.com&gt; (she/her)
* [psmarshall](https://github.com/psmarshall) -
Expand Down Expand Up @@ -431,6 +435,8 @@ For information about the governance of the Node.js project, see
**Thomas Watson** &lt;w@tson.dk&gt;
* [XadillaX](https://github.com/XadillaX) -
**Khaidi Chu** &lt;i@2333.moe&gt; (he/him)
* [yashLadha](https://github.com/yashLadha) -
**Yash Ladha** &lt;yash@yashladha.in&gt; (he/him)
* [yhwang](https://github.com/yhwang) -
**Yihong Wang** &lt;yh.wang@ibm.com&gt;
* [yorkie](https://github.com/yorkie) -
Expand Down Expand Up @@ -589,7 +595,7 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
* **Colin Ihrig** &lt;cjihrig@gmail.com&gt;
`94AE36675C464D64BAFA68DD7434390BDBE9B9C5`
* **Danielle Adams** &lt;adamzdanielle@gmail.com&gt;
`1C050899334244A8AF75E53792EF661D867B9DFA`
`74F12602B6F1C4E913FAA37AD3A89613643B6201`
* **James M Snell** &lt;jasnell@keybase.io&gt;
`71DCFD284A79C3B38668286BC97EC7A07EDE3FC1`
* **Michaël Zasso** &lt;targos@protonmail.com&gt;
Expand All @@ -613,7 +619,7 @@ to sign releases):
```bash
gpg --keyserver pool.sks-keyservers.net --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C
gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5
gpg --keyserver pool.sks-keyservers.net --recv-keys 1C050899334244A8AF75E53792EF661D867B9DFA
gpg --keyserver pool.sks-keyservers.net --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201
gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1
gpg --keyserver pool.sks-keyservers.net --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600
gpg --keyserver pool.sks-keyservers.net --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8
Expand All @@ -631,6 +637,8 @@ Other keys used to sign some previous releases:

* **Chris Dickinson** &lt;christopher.s.dickinson@gmail.com&gt;
`9554F04D7259F04124DE6B476D5A82AC7E37093B`
* **Danielle Adams** &lt;adamzdanielle@gmail.com&gt;
`1C050899334244A8AF75E53792EF661D867B9DFA`
* **Evan Lucas** &lt;evanlucas@me.com&gt;
`B9AE9905FFD7803F25714661B63B535A4C206CA9`
* **Gibson Fahnestock** &lt;gibfahn@gmail.com&gt;
Expand Down
6 changes: 3 additions & 3 deletions android-configure
Expand Up @@ -10,7 +10,7 @@

if [ $# -ne 3 ]; then
echo "$0 should have 3 parameters: ndk_path, target_arch and sdk_version"
exit 1
return 1
fi

NDK_PATH=$1
Expand Down Expand Up @@ -44,7 +44,7 @@ case $ARCH in
;;
*)
echo "Unsupported architecture provided: $ARCH"
exit 1
return 1
;;
esac

Expand All @@ -58,7 +58,7 @@ major=$(echo $host_gcc_version | awk -F . '{print $1}')
minor=$(echo $host_gcc_version | awk -F . '{print $2}')
if [ -z $major ] || [ -z $minor ] || [ $major -lt 6 ] || [ $major -eq 6 -a $minor -lt 3 ]; then
echo "host gcc $host_gcc_version is too old, need gcc 6.3.0"
exit 1
return 1
fi

SUFFIX="$TOOLCHAIN_NAME$ANDROID_SDK_VERSION"
Expand Down
14 changes: 9 additions & 5 deletions benchmark/_http-benchmarkers.js
Expand Up @@ -29,7 +29,8 @@ class AutocannonBenchmarker {
for (const field in options.headers) {
args.push('-H', `${field}=${options.headers[field]}`);
}
args.push(`http://127.0.0.1:${options.port}${options.path}`);
const scheme = options.scheme || 'http';
args.push(`${scheme}://127.0.0.1:${options.port}${options.path}`);
const child = child_process.spawn(this.executable, args);
return child;
}
Expand Down Expand Up @@ -60,11 +61,12 @@ class WrkBenchmarker {
const duration = typeof options.duration === 'number' ?
Math.max(options.duration, 1) :
options.duration;
const scheme = options.scheme || 'http';
const args = [
'-d', duration,
'-c', options.connections,
'-t', Math.min(options.connections, require('os').cpus().length || 8),
`http://127.0.0.1:${options.port}${options.path}`,
`${scheme}://127.0.0.1:${options.port}${options.path}`,
];
for (const field in options.headers) {
args.push('-H', `${field}: ${options.headers[field]}`);
Expand All @@ -90,8 +92,8 @@ class WrkBenchmarker {
*/
class TestDoubleBenchmarker {
constructor(type) {
// `type` is the type of benchmarker. Possible values are 'http' and
// 'http2'.
// `type` is the type of benchmarker. Possible values are 'http', 'https',
// and 'http2'.
this.name = `test-double-${type}`;
this.executable = path.resolve(__dirname, '_test-double-benchmarker.js');
this.present = fs.existsSync(this.executable);
Expand All @@ -101,8 +103,9 @@ class TestDoubleBenchmarker {
create(options) {
process.env.duration = process.env.duration || options.duration || 5;

const scheme = options.scheme || 'http';
const env = {
test_url: `http://127.0.0.1:${options.port}${options.path}`,
test_url: `${scheme}://127.0.0.1:${options.port}${options.path}`,
...process.env
};

Expand Down Expand Up @@ -179,6 +182,7 @@ const http_benchmarkers = [
new WrkBenchmarker(),
new AutocannonBenchmarker(),
new TestDoubleBenchmarker('http'),
new TestDoubleBenchmarker('https'),
new TestDoubleBenchmarker('http2'),
new H2LoadBenchmarker(),
];
Expand Down
17 changes: 13 additions & 4 deletions benchmark/_test-double-benchmarker.js
@@ -1,10 +1,15 @@
'use strict';

const myModule = process.argv[2];
if (!['http', 'http2'].includes(myModule)) {
if (!['http', 'https', 'http2'].includes(myModule)) {
throw new Error(`Invalid module for benchmark test double: ${myModule}`);
}

let options;
if (myModule === 'https') {
options = { rejectUnauthorized: false };
}

const http = require(myModule);

const duration = +process.env.duration;
Expand Down Expand Up @@ -33,11 +38,15 @@ function request(res, client) {
}

function run() {
if (http.get) { // HTTP
http.get(url, request);
if (http.get) { // HTTP or HTTPS
if (options) {
http.get(url, options, request);
} else {
http.get(url, request);
}
} else { // HTTP/2
const client = http.connect(url);
client.on('error', (e) => { throw e; });
client.on('error', () => {});
request(client.request(), client);
}
}
Expand Down
17 changes: 17 additions & 0 deletions benchmark/crypto/randomUUID.js
@@ -0,0 +1,17 @@
'use strict';

const common = require('../common.js');
const { randomUUID } = require('crypto');

const bench = common.createBenchmark(main, {
n: [1e7],
disableEntropyCache: [0, 1],
});

function main({ n, disableEntropyCache }) {
disableEntropyCache = !!disableEntropyCache;
bench.start();
for (let i = 0; i < n; ++i)
randomUUID({ disableEntropyCache });
bench.end(n);
}
72 changes: 72 additions & 0 deletions benchmark/fixtures/simple-https-server.js
@@ -0,0 +1,72 @@
'use strict';

const fixtures = require('../../test/common/fixtures');
const https = require('https');

const options = {
key: fixtures.readKey('rsa_private.pem'),
cert: fixtures.readKey('rsa_cert.crt')
};

const storedBytes = Object.create(null);
const storedBuffer = Object.create(null);

module.exports = https.createServer(options, (req, res) => {
// URL format: /<type>/<length>/<chunks>/chunkedEnc
const params = req.url.split('/');
const command = params[1];
let body = '';
const arg = params[2];
const n_chunks = parseInt(params[3], 10);
const chunkedEnc = params.length >= 5 && params[4] === '0' ? false : true;
let status = 200;

let n, i;
if (command === 'bytes') {
n = ~~arg;
if (n <= 0)
throw new Error('bytes called with n <= 0');
if (storedBytes[n] === undefined) {
storedBytes[n] = 'C'.repeat(n);
}
body = storedBytes[n];
} else if (command === 'buffer') {
n = ~~arg;
if (n <= 0)
throw new Error('buffer called with n <= 0');
if (storedBuffer[n] === undefined) {
storedBuffer[n] = Buffer.allocUnsafe(n);
for (i = 0; i < n; i++) {
storedBuffer[n][i] = 'C'.charCodeAt(0);
}
}
body = storedBuffer[n];
} else {
status = 404;
body = 'not found\n';
}

// example: https://localhost:port/bytes/512/4
// sends a 512 byte body in 4 chunks of 128 bytes
const len = body.length;
if (chunkedEnc) {
res.writeHead(status, {
'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked'
});
} else {
res.writeHead(status, {
'Content-Type': 'text/plain',
'Content-Length': len.toString()
});
}
// send body in chunks
if (n_chunks > 1) {
const step = Math.floor(len / n_chunks) || 1;
for (i = 0, n = (n_chunks - 1); i < n; ++i)
res.write(body.slice(i * step, i * step + step));
res.end(body.slice((n_chunks - 1) * step));
} else {
res.end(body);
}
});