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.13.0 proposal #37977

Merged
merged 85 commits into from Mar 31, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
01dcf4d
tools: update ESLint to 7.22.0
cjihrig Mar 12, 2021
836cb67
src: add .note.GNU-stack section
jayaddison Mar 9, 2021
4487483
test: fix test-fs-utimes on non-Y2K38 file systems
Trott Mar 11, 2021
a8edf1a
test: add known_issues test for #13683
Trott Mar 13, 2021
2e82a97
doc: add gyp maintain info
gengjiawen Mar 16, 2021
dc9cd43
buffer: implement btoa and atob
jasnell Mar 17, 2021
505f9c9
test: app atob web platform tests
jasnell Mar 17, 2021
bfe3f21
crypto: fix crypto.verify callback invocation with a private keyobject
panva Mar 18, 2021
d1a3e0e
node-api: stop ref gc during environment teardown
gabrielschulhof Mar 4, 2021
95aa032
child_process: add timeout to spawn and fork
Feb 6, 2021
6ed9e0b
test: improve test-arm-math-illegal-instruction
marsonya Mar 15, 2021
50f3ad1
doc: fix typo in stream docs
isker Mar 11, 2021
c4183bb
doc: fix AbortError example for timers
dbachko Mar 13, 2021
3a440ec
lib: fix typo in lib/internal/crypto/certificate.js
marsonya Mar 13, 2021
6e2b609
lib: fix typo in internal/modules/esm/module_job.js
marsonya Mar 16, 2021
2227aa6
tools: partially detect quic support in shared_openssl
jasnell Mar 9, 2021
9e6aa19
deps: add ngtcp2 and nghttp3
jasnell Mar 9, 2021
4700042
doc: add @linkgoron to collaborators
Linkgoron Mar 19, 2021
af7489c
lib: add brand checks to AbortController and AbortSignal
MattiasBuelens Mar 11, 2021
c37806d
crypto: use macro map for NodeCryptoError
RaisinTen Mar 14, 2021
9d160da
doc: add legacy status to stability index
jasnell Mar 17, 2021
185d4cd
doc: revoke deprecation of legacy url, change status to legacy
jasnell Mar 17, 2021
6da0a0e
doc: apply style for legacy status
jasnell Mar 19, 2021
b09d032
doc: move Derek Lewis back to collaborators
DerekNonGeneric Mar 12, 2021
b6be472
tools: update gitignore for CMake
gengjiawen Mar 18, 2021
3376051
doc: fix JS flavor selection
aduh95 Mar 17, 2021
e85f311
test: refactor code to use AbortSignal.abort()
manekinekko Mar 18, 2021
a520581
http: add http.ClientRequest.getRawHeaderNames()
simov Mar 8, 2021
9f61cbd
test: account for OOM risks in heapsnapshot-near-heap-limit tests
joyeecheung Mar 15, 2021
e9c161c
http: fix double AbortSignal registration
Linkgoron Mar 12, 2021
8f18133
doc: use sentence case in issues.md headers
marsonya Mar 10, 2021
11d4585
crypto: fix header name
gengjiawen Mar 18, 2021
71fde07
doc: add Ayase-252 to triagers
Ayase-252 Mar 17, 2021
f07428a
test: remove skip for fixed test-benchmark-fs
Trott Mar 19, 2021
43c3b43
stream: make Readable.from performance better
wwwzbwcom Mar 5, 2021
9bc6fe7
test: remove references to unsupported AIX versions
richardlau Mar 20, 2021
f97a5dd
doc: use sentence-style capitlaztion in template header
Trott Mar 20, 2021
9defe10
doc: fix legacy stability indicator display
Trott Mar 20, 2021
cdfc1c8
child_process: cleanup AbortSignal duplication
Linkgoron Mar 19, 2021
44490af
test: relax Y2K38 check in test-fs-utimes-y2K38
richardlau Mar 20, 2021
0f2e142
tools: make genv8constants.py Python3-compatible
targos Mar 20, 2021
9557dda
stream: pipeline accept Buffer as a valid first argument
Linkgoron Mar 13, 2021
c0a424f
doc: clarify when child process 'spawn' event is *not* emitted
zenflow Mar 20, 2021
5d4c610
test: remove duplicated test for eventtarget
himself65 Mar 21, 2021
30bc2e4
doc: add examples for WHATWG URL objects
jasnell Mar 19, 2021
d9ab1d5
test: fix flaky test-vm-timeout-escape-promise-module-2
Trott Mar 20, 2021
aa529b7
test: fix ibmi skip message
tniessen Mar 19, 2021
3452618
tty: validate file descriptor to avoid int32 overflow
aduh95 Mar 19, 2021
7925938
crypto: fix DiffieHellman argument validation
aduh95 Mar 19, 2021
86bf341
test: fix deprecation warning in test-doctool-html
aduh95 Mar 22, 2021
dbc4804
tools: simplify eslint comma-dangle configuration
Trott Mar 20, 2021
b5879ef
tools: improve macos-firewall.sh output
Trott Mar 20, 2021
d5b472b
deps: upgrade npm to 7.7.0
ruyadorno Mar 23, 2021
33c35a3
test: add OpenSSL 3.0 checks to test-crypto-keygen
danbev Mar 22, 2021
5cdeb76
test: add OpenSSL 3.0 checks to tls-passphrase
danbev Mar 22, 2021
3ab223d
node-api: fix crash in finalization
mhdawson Mar 23, 2021
649e04c
deps: upgrade npm to 7.7.4
ruyadorno Mar 24, 2021
76ebc4b
test: increase wiggle room for memory in test-worker-resource-limits
Trott Mar 25, 2021
a6f21e2
doc: fix wording in outgoingMessage.write
tniessen Mar 24, 2021
e84252b
doc: reduce header nesting in async_hooks.md
Trott Mar 20, 2021
3925458
doc,tools: use only one level 1 header per page
Trott Mar 20, 2021
50fc6b9
crypto: clear errors in SignTraits::DeriveBits
panva Mar 19, 2021
2da532c
src: report idle time correctly
Qard Mar 22, 2021
ca93e52
tools: simplify eslint comma-dangle configuration (tools)
Trott Mar 23, 2021
364c8ac
doc: update GOVERNANCE.md for TSC Charter changes
Trott Mar 24, 2021
a5bf7de
http2: fix setting options before handle exists
addaleax Mar 23, 2021
1c04327
http2: treat non-EOF empty frames like other invalid frames
addaleax Mar 23, 2021
ec82feb
deps: upgrade npm to 7.7.5
ruyadorno Mar 25, 2021
0fe3c7e
doc: spell out ICU acronym on first occurrence
Trott Mar 27, 2021
377830f
child_process: remove unused argument
Trott Mar 26, 2021
e256c4d
test: fix typeof comparison
Trott Mar 26, 2021
b7e7384
tools: improve valid-typeof lint rule
Trott Mar 26, 2021
bd87e19
src: fix typo in src code guide
tniessen Mar 28, 2021
ac60d01
doc: add more commands for cherry-picking and changelog to release docs
danielleadams Mar 17, 2021
d44b268
timers: fix arbitrary object clearImmediate errors
Linkgoron Mar 19, 2021
13ecff6
src: document newer values for --unhandled-rejections flag
glasser Mar 24, 2021
b6ad8e4
src: indent long help text properly
glasser Mar 25, 2021
659fc5d
doc: fix typos in lib/internal/bootstrap/pre_execution.js
marsonya Mar 8, 2021
d33f446
util: remove unreachable inspect code
Trott Mar 27, 2021
e60bd1a
perf_hooks: make Performance extend EventTarget
targos Mar 6, 2021
b0226b3
test: split promisified timers test for coverage purposes
Trott Mar 27, 2021
f2cef54
deps: upgrade npm to 7.7.6
ruyadorno Mar 29, 2021
2fd97ce
deps: v8 backport 9689b17687b
guybedford Mar 22, 2021
f09c033
deps: backport v8 f19142e6
guybedford Mar 22, 2021
71a7722
2021-03-31, Version 15.13.0 (Current)
ruyadorno Mar 30, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .eslintrc.js
Expand Up @@ -307,7 +307,7 @@ module.exports = {
'template-curly-spacing': 'error',
'unicode-bom': 'error',
'use-isnan': 'error',
'valid-typeof': 'error',
'valid-typeof': ['error', { requireStringLiterals: true }],

// Custom rules from eslint-plugin-node-core
'node-core/no-unescaped-regexp-dot': 'error',
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Expand Up @@ -139,6 +139,15 @@ tools/*/*.i.tmp
# === Rules for Windows vcbuild.bat ===
/temp-vcbuild

# === Rules for CMake ===
cmake-build-debug/
CMakeCache.txt
CMakeFiles
CTestTestfile.cmake
cmake_install.cmake
install_manifest.txt
*.cbp

# === Global Rules ===
# Keep last to avoid being excluded
*.pyc
Expand Down
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.12.0">15.12.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V15.md#15.13.0">15.13.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.12.0">15.12.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.11.0">15.11.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.10.0">15.10.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.9.0">15.9.0</a><br/>
Expand Down
2 changes: 1 addition & 1 deletion GOVERNANCE.md
Expand Up @@ -82,7 +82,7 @@ The current list of TSC members is in
[the project README](./README.md#current-project-team-members).

The [TSC Charter][] governs the operations of the TSC. All changes to the
Charter need approval by the OpenJS Foundation Board of Directors.
Charter need approval by the OpenJS Foundation Cross-Project Council (CPC).

### TSC meetings

Expand Down
52 changes: 52 additions & 0 deletions LICENSE
Expand Up @@ -1578,3 +1578,55 @@ The externally maintained libraries used by Node.js are:
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""

- ngtcp2, located at deps/ngtcp2/ngtcp2/, is licensed as follows:
"""
The MIT License

Copyright (c) 2016 ngtcp2 contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

- nghttp3, located at deps/ngtcp2/nghttp3/, is licensed as follows:
"""
The MIT License

Copyright (c) 2019 nghttp3 contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
8 changes: 6 additions & 2 deletions README.md
Expand Up @@ -285,6 +285,8 @@ For information about the governance of the Node.js project, see
**Danielle Adams** &lt;adamzdanielle@gmail.com&gt; (she/her)
* [davisjam](https://github.com/davisjam) -
**Jamie Davis** &lt;davisjam@vt.edu&gt; (he/him)
* [DerekNonGeneric](https://github.com/DerekNonGeneric) -
**Derek Lewis** &lt;DerekNonGeneric@inf.is&gt; (he/him)
* [devnexen](https://github.com/devnexen) -
**David Carlier** &lt;devnexen@gmail.com&gt;
* [devsnek](https://github.com/devsnek) -
Expand Down Expand Up @@ -353,6 +355,8 @@ For information about the governance of the Node.js project, see
**Chengzhong Wu** &lt;legendecas@gmail.com&gt; (he/him)
* [Leko](https://github.com/Leko) -
**Shingo Inoue** &lt;leko.noor@gmail.com&gt; (he/him)
* [linkgoron](https://github.com/linkgoron) -
**Nitzan Uziely** &lt;linkgoron@gmail.com&gt;
* [lpinca](https://github.com/lpinca) -
**Luigi Pinca** &lt;luigipinca@gmail.com&gt; (he/him)
* [lundibundi](https://github.com/lundibundi) -
Expand Down Expand Up @@ -476,8 +480,6 @@ For information about the governance of the Node.js project, see
**Claudio Rodriguez** &lt;cjrodr@yahoo.com&gt;
* [DavidCai1993](https://github.com/DavidCai1993) -
**David Cai** &lt;davidcai1993@yahoo.com&gt; (he/him)
* [DerekNonGeneric](https://github.com/DerekNonGeneric) -
**Derek Lewis** &lt;DerekNonGeneric@inf.is&gt; (he/him)
* [digitalinfinity](https://github.com/digitalinfinity) -
**Hitesh Kanwathirtha** &lt;digitalinfinity@gmail.com&gt; (he/him)
* [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) -
Expand Down Expand Up @@ -591,6 +593,8 @@ maintaining the Node.js project.

### Triagers

* [Ayase-252](https://github.com/Ayase-252) -
**Qingyu Deng** &lt;i@ayase-lab.com&gt;
* [marsonya](https://github.com/marsonya) -
**Akhil Marsonya** &lt;akhil.marsonya27@gmail.com&gt; (he/him)
* [PoojaDurgad](https://github.com/PoojaDurgad) -
Expand Down
6 changes: 0 additions & 6 deletions benchmark/.eslintrc.yaml
Expand Up @@ -6,10 +6,4 @@ env:

rules:
no-var: error
comma-dangle:
- error
- arrays: 'always-multiline'
objects: 'only-multiline'
imports: 'only-multiline'
exports: 'only-multiline'
prefer-arrow-callback: error
26 changes: 26 additions & 0 deletions benchmark/streams/readable-from.js
@@ -0,0 +1,26 @@
'use strict';

const common = require('../common');
const Readable = require('stream').Readable;

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

async function main({ n }) {
const arr = [];
for (let i = 0; i < n; i++) {
arr.push(`${i}`);
}

const s = new Readable.from(arr);

bench.start();
s.on('data', (data) => {
// eslint-disable-next-line no-unused-expressions
data;
});
s.on('close', () => {
bench.end(n);
});
}
2 changes: 1 addition & 1 deletion common.gypi
Expand Up @@ -36,7 +36,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.27',
'v8_embedder_string': '-node.28',

##### V8 defaults for Node.js #####

Expand Down
53 changes: 53 additions & 0 deletions configure.py
Expand Up @@ -38,6 +38,7 @@
sys.path.insert(0, 'tools')
import getmoduleversion
import getnapibuildversion
import getsharedopensslhasquic
from gyp_node import run_gyp

# parse our options
Expand Down Expand Up @@ -283,6 +284,50 @@
dest='shared_nghttp2_libpath',
help='a directory to search for the shared nghttp2 DLLs')

shared_optgroup.add_argument('--shared-nghttp3',
action='store_true',
dest='shared_nghttp3',
default=None,
help='link to a shared nghttp3 DLL instead of static linking')

shared_optgroup.add_argument('--shared-nghttp3-includes',
action='store',
dest='shared_nghttp3_includes',
help='directory containing nghttp3 header files')

shared_optgroup.add_argument('--shared-nghttp3-libname',
action='store',
dest='shared_nghttp3_libname',
default='nghttp3',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-nghttp3-libpath',
action='store',
dest='shared_nghttp3_libpath',
help='a directory to search for the shared nghttp3 DLLs')

shared_optgroup.add_argument('--shared-ngtcp2',
action='store_true',
dest='shared_ngtcp2',
default=None,
help='link to a shared ngtcp2 DLL instead of static linking')

shared_optgroup.add_argument('--shared-ngtcp2-includes',
action='store',
dest='shared_ngtcp2_includes',
help='directory containing ngtcp2 header files')

shared_optgroup.add_argument('--shared-ngtcp2-libname',
action='store',
dest='shared_ngtcp2_libname',
default='ngtcp2',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-ngtcp2-libpath',
action='store',
dest='shared_ngtcp2_libpath',
help='a directory to search for the shared tcp2 DLLs')

shared_optgroup.add_argument('--shared-openssl',
action='store_true',
dest='shared_openssl',
Expand Down Expand Up @@ -1346,8 +1391,11 @@ def configure_openssl(o):
variables = o['variables']
variables['node_use_openssl'] = b(not options.without_ssl)
variables['node_shared_openssl'] = b(options.shared_openssl)
variables['node_shared_ngtcp2'] = b(options.shared_ngtcp2)
variables['node_shared_nghttp3'] = b(options.shared_nghttp3)
variables['openssl_is_fips'] = b(options.openssl_is_fips)
variables['openssl_fips'] = ''
variables['openssl_quic'] = b(True)

if options.openssl_no_asm:
variables['openssl_no_asm'] = 1
Expand Down Expand Up @@ -1403,6 +1451,9 @@ def without_ssl_error(option):
if options.openssl_fips or options.openssl_fips == '':
error('FIPS is not supported in this version of Node.js')

if options.shared_openssl:
variables['openssl_quic'] = b(getsharedopensslhasquic.get_has_quic(options.__dict__['shared_openssl_includes']))

configure_library('openssl', o)


Expand Down Expand Up @@ -1831,6 +1882,8 @@ def make_bin_override():
configure_library('brotli', output, pkgname=['libbrotlidec', 'libbrotlienc'])
configure_library('cares', output, pkgname='libcares')
configure_library('nghttp2', output, pkgname='libnghttp2')
configure_library('nghttp3', output, pkgname='libnghttp3')
configure_library('ngtcp2', output, pkgname='libngtcp2')
configure_v8(output)
configure_openssl(output)
configure_intl(output)
Expand Down
8 changes: 8 additions & 0 deletions deps/ngtcp2/.gitignore
@@ -0,0 +1,8 @@
*.in
*.am
*.txt
*.pc
Makefile
*gnutls*
ngtcp2/**/.gitignore
ngtcp2/**/.deps
22 changes: 22 additions & 0 deletions deps/ngtcp2/LICENSE_nghttp3
@@ -0,0 +1,22 @@
The MIT License

Copyright (c) 2019 nghttp3 contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 changes: 22 additions & 0 deletions deps/ngtcp2/LICENSE_ngtcp2
@@ -0,0 +1,22 @@
The MIT License

Copyright (c) 2016 ngtcp2 contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
45 changes: 45 additions & 0 deletions deps/ngtcp2/README.md
@@ -0,0 +1,45 @@
# ngtcp2 and nghttp3

The ngtcp2 and nghttp3 dependencies provide the core functionality for
QUIC and HTTP/3.

The sources are pulled from:

* ngtcp2: https://github.com/ngtcp2/ngtcp2
* nghttp3: https://github.com/ngtcp2/nghttp3

In both the `ngtcp2` and `nghttp3` git repos, the active development occurs
in the default branch (currently named `master` in each).

We only use a subset of the sources for each.

## Updating

The `nghttp3` library depends on `ngtcp2`. Both should always be updated
together. From `ngtcp2` we only want the contents of the `lib` and `crypto`
directories; from `nghttp3` we only want the contents o the `lib`.

### Updating ngtcp2

To update ngtcp2:

```sh
$ git clone https://github.com/ngtcp2/ngtcp2
$ cd ngtcp2
$ autoreconf -i
$ ./configure --prefix=$PWD/build --enable-lib-only
$ cp -R lib/* ../node/deps/ngtcp2/ngtcp2/lib/
$ cp -R crypto/* ../node/deps/ngtcp2/ngtcp2/crypto/
```

### Updating nghttp3

To update ngtcp2:

```sh
$ git clone https://github.com/ngtcp2/nghttp3
$ cd nghttp3
$ autoreconf -i
$ ./configure --prefix=$PWD/build --enable-lib-only
$ cp -R lib/* ../node/deps/ngtcp2/nghttp3/lib/
```