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

v16.4.0 proposal #39031

Merged
merged 118 commits into from Jun 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
a71df76
dns: allow `--dns-result-order` to change default dns verbatim
oyyd Apr 6, 2021
f959cb3
worker: do not look up context twice in PostMessage
addaleax May 23, 2021
7d35fa7
tools: update gyp-next to v0.9.1
gengjiawen May 31, 2021
db4b192
src: add not-weak DCHECK to PersistentToLocal::Strong
addaleax May 31, 2021
82c2939
crypto: add missing rand.h include
codebytere May 31, 2021
17a9846
doc: fix .mjs syntax in crypto.md
himself65 Jun 1, 2021
00c20e6
tools,doc: forbid CJS globals in ESM code snippets
aduh95 Jun 1, 2021
7de57d4
build: dont-land gyp-next PRs on LTS branches
targos Jun 1, 2021
3481b02
doc: mark Node.js v15.x as EOL
aduh95 Jun 1, 2021
f6964dc
doc: clarify when `readable._read(...)` is called
sploders101 May 18, 2021
0706565
tools: bump remark-preset-lint-node to 2.3.0
Trott Jun 2, 2021
69fa9e1
child_process: allow `options.cwd` receive a URL
XadillaX May 31, 2021
379b5f7
tls: tweak clientCertEngine argument parsing
codebytere Jun 2, 2021
5203c9c
build: fast-track npm PRs and dont-land them on LTS
targos Jun 1, 2021
8115e6e
async_hooks: stabilize part of AsyncLocalStorage
vdeturckheim Mar 9, 2021
74f5e30
node-api: rtn pending excep on napi_new_instance
legendecas May 24, 2021
03e75fd
async_hooks: switch between native and context hooks correctly
Qard Jun 3, 2021
6e93c17
crypto: use EVP_get_cipherbynid directly
codebytere Jun 2, 2021
6d5dc63
crypto: fix label cast in EVP_PKEY_CTX_set0_rsa_oaep_label
codebytere Jun 4, 2021
06afb8d
src: make InitializeOncePerProcess more flexible
codebytere Jun 1, 2021
651c58b
build: correct Xcode spelling in .gitignore
bl-ue Jun 1, 2021
e87cd45
child_process: refactor to use `validateBoolean`
Ayase-252 Jun 4, 2021
f40725f
vm: use missing validator
VoltrexKeyva Jun 4, 2021
0f65e41
debugger: reduce scope of eslint disable comment
Trott Jun 6, 2021
9ba5518
src: skip test_fatal/test_threads for Debug builds
danbev May 25, 2021
1799ea3
crypto: use compatible version of EVP_CIPHER_name
codebytere Jun 4, 2021
08b2a4a
src,test: raise error for --enable-fips when no FIPS
danbev May 31, 2021
5b5e07a
meta: update label-pr-config
targos Jun 6, 2021
ec3e5b4
node-api: avoid SecondPassCallback crash
mhdawson Jun 2, 2021
336571f
Revert "http: make HEAD method to work with keep-alive"
targos Jun 6, 2021
70af146
deps: upgrade npm to 7.16.0
npm-robot Jun 3, 2021
1f10e84
test: suppress warning in test_environment.cc
danbev May 31, 2021
e939e24
build: don't pass python override to V8 build
richardlau Jun 8, 2021
7a7c058
doc: mark util.inherits as legacy
VoltrexKeyva Jun 1, 2021
711916a
debugger: remove unnecessary boilerplate copyright comment
Trott Jun 6, 2021
9bf9ddb
tools: refactor snapshot builder
joyeecheung May 26, 2021
99161b0
url,src: simplify ipv6 logic by using uv_inet_pton
XadillaX May 29, 2021
ff8313c
src: throw error in LoadBuiltinModuleSource when reading fails
joyeecheung May 28, 2021
be5101e
tools: update ESLint to 7.28.0
lpinca Jun 7, 2021
173292b
build: fix commit-queue default branch
mmarchini Jun 10, 2021
0bdeeda
doc: update write callback documentation
simoneb Jun 7, 2021
f903ad8
doc: add missing semis after classes
RaisinTen Jun 4, 2021
e82111f
test: http outgoing _headers setter null
ycjcl868 Jun 1, 2021
5218fe8
doc: fixed typo in process.md
maks-der Jun 5, 2021
405b50c
doc: use `await` in filehandle.truncate() snippet
RA80533 Jun 5, 2021
81bbeab
test: improve coverage of lib/events.js
pd4d10 May 7, 2021
7b21999
doc: fix markup for aesImportParams
tniessen Jun 2, 2021
f817c2d
tools: fix typo in commit-queue.sh
bl-ue Jun 10, 2021
a19170e
doc: clarify that only one Python version is required to build
bl-ue Jun 1, 2021
0c90fd8
tools: avoid crashing CQ when git push fails
aduh95 Jan 10, 2021
8c7b2ba
doc,fs: remove experimental status for WHATWG URL as path
aduh95 May 31, 2021
f7724ab
node-api: avoid crashing on passed-in null string
gabrielschulhof Jun 4, 2021
c0d236f
build: make build-addons errors fail the build
richardlau Jun 9, 2021
637c1fa
lib: refactor debuglog init
aduh95 May 29, 2021
51561f3
doc: add missing changelog links
aduh95 Jun 12, 2021
f652284
test: remove obsolete TLS test
Trott Jun 11, 2021
92ed1c6
module: fix legacy `node` specifier resolution to resolve `"main"` field
aduh95 Jun 9, 2021
ed91379
doc: clearify that http does chunked encoding itself
micromaomao Jun 22, 2019
e82ef41
deps: update V8 to 9.1.269.36
targos Jun 10, 2021
1853127
build: reset embedder string to "-node.0"
targos Jun 10, 2021
7c61c6e
deps: V8: un-cherry-pick bd019bd
refack Mar 27, 2019
4ef37c8
deps: V8: patch register-arm64.h
refack May 22, 2019
8ed2583
deps: V8: forward declaration of `Rtl*FunctionTable`
refack May 22, 2019
3c9a755
deps: make v8.h compatible with VS2015
joaocgreis Nov 1, 2019
1a7c8a1
deps: fix V8 build issue with inline methods
gengjiawen Oct 14, 2020
eac377b
deps: V8: backport aaacffa1e003
targos Apr 19, 2021
bf7aa9f
deps: silence irrelevant V8 warnings
targos Jan 30, 2021
7197fce
deps: V8: cherry-pick d59db06bf542
targos Apr 17, 2021
f56c785
deps: V8: cherry-pick c0fceaa0669b
targos May 17, 2021
3433559
deps: V8: cherry-pick 272445f10927
targos May 17, 2021
3c37396
deps: V8: cherry-pick 5f4413194480
targos May 17, 2021
3c6c28b
deps: V8: cherry-pick 4c074516397b
targos May 17, 2021
c93f357
deps: V8: cherry-pick fa4cb172cde2
targos May 17, 2021
2a292cf
tools: update V8 gypfiles for 9.1
targos Mar 3, 2021
32961c4
test: fix V8 serdes test for V8 9.1
targos Mar 27, 2021
1816d46
test: adapt test-linux-perf to V8 changes
targos May 18, 2021
6111671
test: adapt abort tests for new Windows code
targos May 19, 2021
864fe99
deps: make V8 9.1 abi-compatible with 9.0
targos Mar 8, 2021
ded8335
lib: make primordials Promise methods safe
aduh95 May 12, 2021
10370c5
src: fix multiple AddLinkedBinding() calls
addaleax Jun 11, 2021
4174f13
net: use missing validator
VoltrexKeyva Jun 9, 2021
4c6193f
report: generates report on threads with no isolates
legendecas Jun 10, 2021
c20e28e
stream: fix pipeline pump
ronag Jun 11, 2021
858f66e
doc: add missing parameter types
VoltrexKeyva Jun 12, 2021
902bb85
src: refactor to use locale functions
RaisinTen Jun 12, 2021
a1d0aef
tools: update doctool dependencies, migrate to ESM
targos Jun 8, 2021
d50df5d
test: fix typo in test-http2-invalidheaderfield.js
eltociear Jun 13, 2021
c6aa685
deps: upgrade npm to 7.17.0
npm-robot Jun 10, 2021
cf9d686
crypto: fix aes crash when tag length too small
XadillaX Jun 3, 2021
7f225a0
Revert "build: work around bug in MSBuild v16.10.0"
targos Jun 9, 2021
631856e
errors: add ERR_DEBUGGER_ERROR
Trott Jun 13, 2021
dc92181
debugger: use ERR_DEBUGGER_ERROR in debugger client
Trott Jun 13, 2021
b43cb69
debugger: use error codes in debugger REPL
Trott Jun 13, 2021
3d7892e
errors: add ERR_DEBUGGER_STARTUP_ERROR
Trott Jun 13, 2021
1e8bdab
debugger: use ERR_DEBUGGER_STARTUP_ERROR in _inspect.js
Trott Jun 13, 2021
bd92461
test: fix typo
houssemchebeb Jun 15, 2021
3ae2a0b
tools: fix typo
houssemchebeb Jun 15, 2021
1afff98
doc: fix typos
bl-ue Jun 15, 2021
5e9175f
test: fix name of variable in inspector-cli test
tniessen May 31, 2021
284d9c6
src: cleanup uv_fs_t regardless of success or not
legendecas Jun 10, 2021
5d92c09
src,url: separate some tables out of node_url.cc
XadillaX Jun 10, 2021
dce256b
doc: remove references to deleted freenode channels
devsnek Jun 15, 2021
5514305
lib: add JSDoc typings for child_process
VoltrexKeyva Apr 13, 2021
a53911b
test: improve buffer coverage
pd4d10 May 4, 2021
1fa724e
deps: upgrade npm to 7.18.1
npm-robot Jun 17, 2021
7b026d8
test: move inspector-cli tests to sequential
Trott Jun 19, 2021
e4f802d
debugger: rename internal library for clarity
Trott Jun 19, 2021
2aaf2f2
build: reconfigure when gyp files change on Windows
joyeecheung Jun 17, 2021
9d100aa
bootstrap: split NodeMainInstance::Run()
joyeecheung Jun 11, 2021
5f51729
bootstrap: move event loop handle checking into snapshot builder
joyeecheung Jun 11, 2021
f17dde8
lib: make internal/options lazy
joyeecheung Jun 10, 2021
fed6411
tools: update ESLint to 7.29.0
Trott Jun 19, 2021
3c7a7d9
src: allow to negate boolean CLI flags
targos Jun 13, 2021
c2b4fbb
lib: remove semicolon in preparation for babel/eslint-parser update
Trott Jun 19, 2021
78d2e0e
tools: update babel-eslint-parser to 7.14.5
Trott Jun 19, 2021
d2b972e
async_hooks: check for empty contexts before removing
bengl Jun 19, 2021
eddde6c
errors: don't rekey on primitive type
bcoe Jun 13, 2021
4b2085f
2021-06-23, Version 16.4.0 (Current)
danielleadams Jun 13, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
23 changes: 23 additions & 0 deletions .eslintrc.js
Expand Up @@ -76,6 +76,29 @@ module.exports = {
'doc/api/packages.md/*.js',
],
parserOptions: { sourceType: 'module' },
rules: { 'no-restricted-globals': [
'error',
{
name: '__filename',
message: 'Use import.meta.url instead',
},
{
name: '__dirname',
message: 'Not available in ESM',
},
{
name: 'exports',
message: 'Not available in ESM',
},
{
name: 'module',
message: 'Not available in ESM',
},
{
name: 'require',
message: 'Use import instead',
},
] },
},
],
rules: {
Expand Down
2 changes: 1 addition & 1 deletion .github/SUPPORT.md
Expand Up @@ -16,7 +16,7 @@ resources:

* [Questions tagged 'node.js' on Stack Overflow](https://stackoverflow.com/questions/tagged/node.js)
* [#nodejs](https://openjs-foundation.slack.com/archives/CK9Q4MB53) channel on the OpenJS Foundation Slack ([join here](https://slack-invite.openjsf.org/))
* [#node.js channel on chat.freenode.net](https://webchat.freenode.net?channels=node.js&uio=d4)
* [#node.js channel on libera.chat](https://web.libera.chat?channels=node.js&uio=d4)
* [Node.js Slack Community](https://node-js.slack.com/)
* To register: [nodeslackers.com](https://www.nodeslackers.com/)

Expand Down
49 changes: 25 additions & 24 deletions .github/label-pr-config.yml
Expand Up @@ -11,22 +11,22 @@ subSystemLabels:
/^src\/udp_/: c++, dgram
/^src\/(?:fs_|node_file|node_stat_watcher)/: c++, fs
/^src\/node_http_parser/: c++, http_parser
/^src\/node_i18n/: c++, intl
/^src\/node_i18n/: c++, i18n-api
/^src\/uv\./: c++, libuv
/^src\/(?:connect(?:ion)?|pipe|tcp)_/: c++, net
/^src\/node_os/: c++, os
/^src\/(?:node_main|signal_)/: c++, process
/^src\/timer_/: c++, timers
/^src\/(?:CNNICHashWhitelist|node_root_certs|tls_)/: c++, tls
/^src\/tty_/: c++, tty
/^src\/node_url/: c++, url-whatwg
/^src\/node_url/: c++, whatwg-url
/^src\/node_util/: c++, util
/^src\/(?:node_v8|v8abbr)/: c++, V8 Engine
/^src\/(?:node_v8|v8abbr)/: c++, v8 engine
/^src\/node_contextify/: c++, vm
/^src\/.*win32.*/: c++, windows
/^src\/node_zlib/: c++, zlib
/^src\/tracing/: c++, tracing
/^src\/node_api/: c++, n-api
/^src\/node_api/: c++, node-api
/^src\/node_http2/: c++, http2
/^src\/node_report/: c++, report
/^src\/node_wasi/: c++, wasi
Expand All @@ -35,7 +35,7 @@ subSystemLabels:
/^src\/node_bob*/: c++, quic, dont-land-on-v14.x, dont-land-on-v12.x

# don't label python files as c++
/^src\/.+\.py$/: lib / src, needs-ci
/^src\/.+\.py$/: python, needs-ci

# properly label changes to v8 inspector integration-related files
/^src\/inspector_/: c++, inspector, needs-ci
Expand All @@ -50,23 +50,24 @@ subSystemLabels:
/^\w+\.md$/: doc
# different variants of *Makefile and build files
/^(tools\/)?(Makefile|BSDmakefile|create_android_makefiles|\.travis\.yml)$/: build, needs-ci
/^tools\/(install\.py|genv8constants\.py|getnodeversion\.py|js2c\.py|utils\.py|configure\.d\/.*)$/: build, needs-ci
/^tools\/(install\.py|genv8constants\.py|getnodeversion\.py|js2c\.py|utils\.py|configure\.d\/.*)$/: build, python, needs-ci
/^vcbuild\.bat$/: build, windows, needs-ci
/^(android-)?configure|node\.gyp|common\.gypi$/: build, needs-ci
# more specific tools
/^tools\/gyp/: tools, build, needs-ci
/^tools\/gyp/: tools, build, gyp, needs-ci, dont-land-on-v14.x, dont-land-on-v12.x
/^tools\/doc\//: tools, doc
/^tools\/icu\//: tools, intl, needs-ci
/^tools\/icu\//: tools, i18n-api, icu, needs-ci
/^tools\/(?:osx-pkg\.pmdoc|pkgsrc)\//: tools, macos, install
/^tools\/(?:(?:mac)?osx-)/: tools, macos
/^tools\/test-npm/: tools, test, npm
/^tools\/test/: tools, test
/^tools\/(?:certdata|mkssldef|mk-ca-bundle)/: tools, openssl, tls
/^tools\/msvs\//: tools, windows, install, needs-ci
/^tools\/[^/]+\.bat$/: tools, windows, needs-ci
/^tools\/make-v8/: tools, V8 Engine, needs-ci
/^tools\/(code_cache|snapshot|v8_gypfiles)/: needs-ci,
/^tools\/build-addons.js/: needs-ci,
/^tools\/make-v8/: tools, v8 engine, needs-ci
/^tools\/v8_gypfiles/: tools, v8 engine, needs-ci
/^tools\/(code_cache|snapshot)/: needs-ci
/^tools\/build-addons.js/: needs-ci
# all other tool changes should be marked as such
/^tools\//: tools
/^\.eslint|\.remark|\.editorconfig/: tools
Expand All @@ -75,9 +76,10 @@ subSystemLabels:
# libuv needs an explicit mapping, as the ordinary /deps/ mapping below would
# end up as libuv changes labeled with "uv" (which is a non-existing label)
/^deps\/uv\//: libuv
/^deps\/v8\/tools\/gen-postmortem-metadata\.py/: V8 Engine, post-mortem
/^deps\/v8\//: V8 Engine
/^deps\/v8\/tools\/gen-postmortem-metadata\.py/: v8 engine, python, post-mortem
/^deps\/v8\//: v8 engine
/^deps\/uvwasi\//: wasi
/^deps\/npm\//: npm, fast-track, dont-land-on-v14.x, dont-land-on-v12.x
/^deps\/nghttp2\/nghttp2\.gyp/: build, http2
/^deps\/nghttp2\//: http2
/^deps\/ngtcp2\//: quic, dont-land-on-v14.x, dont-land-on-v12.x
Expand All @@ -96,8 +98,8 @@ subSystemLabels:
/^lib\/\w+\/streams$/: stream
/^lib\/.*http2/: http2
/^lib\/worker_threads.js$/: worker
/^lib\/internal\/url\.js$/: url-whatwg
/^lib\/internal\/modules\/esm/: ES Modules
/^lib\/internal\/url\.js$/: whatwg-url
/^lib\/internal\/modules\/esm/: esm
/^lib\/internal\/quic\/*/: quic, dont-land-on-v14.x, dont-land-on-v12.x

# All other lib/ files map directly
Expand All @@ -114,24 +116,22 @@ exlusiveLabels:
/^test\/pseudo-tty\//: test, tty
/^test\/inspector\//: test, inspector
/^test\/cctest\/test_inspector/: test, inspector
/^test\/cctest\/test_url/: test, url-whatwg
/^test\/addons-napi\//: test, n-api
/^test\/cctest\/test_url/: test, whatwg-url
/^test\/addons-napi\//: test, node-api
/^test\/async-hooks\//: test, async_hooks
/^test\/report\//: test, report
/^test\/fixtures\/es-module/: test, ES Modules
/^test\/es-module\//: test, ES Modules
/^test\/fixtures\/es-module/: test, esm
/^test\/es-module\//: test, esm

/^test\//: test

# specific map for webcrypto.md as it should be labeled 'crypto'
/^doc\/api\/webcrypto.md$/: doc, crypto
# specific map for modules.md as it should be labeled 'module' not 'modules'
/^doc\/api\/modules.md$/: doc, module
# specific map for esm.md as it should be labeled 'ES Modules' not 'esm'
/^doc\/api\/esm.md$/: doc, ES Modules
# n-api is treated separately since it is not a JS core module but is still
# node-api is treated separately since it is not a JS core module but is still
# considered a subsystem of sorts
/^doc\/api\/n-api.md$/: doc, n-api
/^doc\/api\/n-api.md$/: doc, node-api
# quic
/^doc\/api\/quic.md$/: doc, quic, dont-land-on-v14.x, dont-land-on-v12.x
# add worker label to PRs that affect doc/api/worker_threads.md
Expand All @@ -140,12 +140,13 @@ exlusiveLabels:
/^doc\/api\/(\w+)\.md$/: doc, $1
# add deprecations label to PRs that affect doc/api/deprecations.md
/^doc\/api\/deprecations.md$/: doc, deprecations
/^doc\/changelogs\//: release

/^doc\//: doc

# more specific benchmarks
/^benchmark\/buffers\//: benchmark, buffer
/^benchmark\/(?:arrays|es)\//: benchmark, V8 Engine
/^benchmark\/(?:arrays|es)\//: benchmark, v8 engine
/^benchmark\/_http/: benchmark, http
/^benchmark\/(?:misc|fixtures)\//: benchmark
/^benchmark\/streams\//: benchmark, stream
Expand Down
11 changes: 6 additions & 5 deletions .github/workflows/commit-queue.yml
Expand Up @@ -45,6 +45,7 @@ jobs:
run: |
echo "REPOSITORY=$(echo ${{ github.repository }} | cut -d/ -f2)" >> $GITHUB_ENV
echo "OWNER=${{ github.repository_owner }}" >> $GITHUB_ENV
echo "DEFAULT_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV

- name: Get Pull Requests
uses: octokit/graphql-action@v2.x
Expand All @@ -63,19 +64,19 @@ jobs:
owner: ${{ env.OWNER }}
repo: ${{ env.REPOSITORY }}
# Commit queue is only enabled for the default branch on the repository
base_ref: ${{ github.repository.default_branch }}
base_ref: ${{ env.DEFAULT_BRANCH }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Configure node-core-utils
run: |
ncu-config set branch ${{ github.repository.default_branch }}
ncu-config set branch ${DEFAULT_BRANCH}
ncu-config set upstream origin
ncu-config set username "${{ secrets.GH_USER_NAME }}"
ncu-config set token "${{ secrets.GH_USER_TOKEN }}"
ncu-config set jenkins_token "${{ secrets.JENKINS_TOKEN }}"
ncu-config set repo "${{ env.REPOSITORY }}"
ncu-config set owner "${{ env.OWNER }}"
ncu-config set repo "${REPOSITORY}"
ncu-config set owner "${OWNER}"

- name: Start the commit queue
run: ./tools/actions/commit-queue.sh ${{ env.OWNER }} ${{ env.REPOSITORY }} ${{ secrets.GITHUB_TOKEN }} $(echo '${{ steps.get_mergable_pull_requests.outputs.data }}' | jq '.repository.pullRequests.nodes | map(.number) | .[]')
run: ./tools/actions/commit-queue.sh ${OWNER} ${REPOSITORY} ${{ secrets.GITHUB_TOKEN }} $(echo '${{ steps.get_mergable_pull_requests.outputs.data }}' | jq '.repository.pullRequests.nodes | map(.number) | .[]')
2 changes: 1 addition & 1 deletion .gitignore
Expand Up @@ -117,7 +117,7 @@ tools/*/*.i.tmp
/build
/coverage

# === Rules for XCode artifacts ===
# === Rules for Xcode artifacts ===
*.xcodeproj
*.xcworkspace
*.pbxproj
Expand Down
4 changes: 2 additions & 2 deletions BUILDING.md
Expand Up @@ -234,7 +234,7 @@ The Node.js project supports Python >= 3 for building and testing.

* `gcc` and `g++` >= 8.3 or newer, or
* GNU Make 3.81 or newer
* Python 3.6, 3.7, 3.8, and 3.9 (see note above)
* Python 3.6, 3.7, 3.8, or 3.9 (see note above)

Installation via Linux package manager can be achieved with:

Expand All @@ -249,7 +249,7 @@ FreeBSD and OpenBSD users may also need to install `libexecinfo`.
#### macOS prerequisites

* Xcode Command Line Tools >= 11 for macOS
* Python 3.6, 3.7, 3.8, and 3.9 (see note above)
* Python 3.6, 3.7, 3.8, or 3.9 (see note above)

macOS users can install the `Xcode Command Line Tools` by running
`xcode-select --install`. Alternatively, if you already have the full Xcode
Expand Down
30 changes: 6 additions & 24 deletions CHANGELOG.md
Expand Up @@ -3,7 +3,7 @@
Select a Node.js version below to view the changelog history:

* [Node.js 16](doc/changelogs/CHANGELOG_V16.md) **Current**
* [Node.js 15](doc/changelogs/CHANGELOG_V15.md) **Current**
* [Node.js 15](doc/changelogs/CHANGELOG_V15.md) End-of-Life
* [Node.js 14](doc/changelogs/CHANGELOG_V14.md) **Long Term Support**
* [Node.js 13](doc/changelogs/CHANGELOG_V13.md) End-of-Life
* [Node.js 12](doc/changelogs/CHANGELOG_V12.md) Long Term Support
Expand All @@ -27,38 +27,20 @@ release.
<table>
<tr>
<th title="Current"><a href="doc/changelogs/CHANGELOG_V16.md">16</a><sup>Current</sup></th>
<th title="Current"><a href="doc/changelogs/CHANGELOG_V15.md">15</a><sup>Current</sup></th>
<th title="LTS Until 2023-04"><a href="doc/changelogs/CHANGELOG_V14.md">14</a><sup>LTS</sup></th>
<th title="LTS Until 2022-04"><a href="doc/changelogs/CHANGELOG_V12.md">12</a><sup>LTS</sup></th>
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V16.md#16.2.0">16.2.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V16.md#16.4.0">16.4.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.3.0">16.3.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.2.0">16.2.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.1.0">16.1.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.0.0">16.0.0</a><br/>
</td>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V15.md#15.14.0">15.14.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.13.0">15.13.0</a><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/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.8.0">15.8.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.7.0">15.7.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.6.0">15.6.0</a><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/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.2.1">15.2.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.2.0">15.2.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.1.0">15.1.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.0.1">15.0.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V15.md#15.0.0">15.0.0</a><br/>
</td>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V14.md#14.16.1">14.16.1</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V14.md#14.17.0">14.17.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V14.md#14.16.1">14.16.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V14.md#14.16.0">14.16.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V14.md#14.15.5">14.15.5</a><br/>
<a href="doc/changelogs/CHANGELOG_V14.md#14.15.4">14.15.4</a><br/>
Expand Down