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.3.0 proposal #38874

Merged
merged 74 commits into from Jun 3, 2021
Merged
Show file tree
Hide file tree
Changes from 73 commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
929e8df
test: improve coverage of stream.Readable
pd4d10 May 16, 2021
2268d1c
lib: refactor to reuse validators
pd4d10 May 16, 2021
a98d631
bootstrap: include vm and contextify binding into the snapshot
joyeecheung May 13, 2021
5553be3
doc: update code examples for `node:url` module
fisker May 12, 2021
a47fd67
src: replace `auto`s in node_contextify.cc
XadillaX May 12, 2021
6da4aa3
test: give js-native-api tests consistent names
gabrielschulhof May 14, 2021
496f7ea
node-api: fix shutdown crashes
mhdawson Apr 30, 2021
4131f94
stream: allow empty string as source of pipeline
Ayase-252 May 18, 2021
96fa387
doc: document null target pattern
guybedford May 18, 2021
f5dd85b
src: remove more extra semis from member fns
codebytere May 20, 2021
15aaf14
deps: update llhttp to 6.0.2
indutny May 13, 2021
ba96f14
src: remove unused `iostream` library
juanarbol May 15, 2021
61c95f0
src: write named pipe info in diagnostic report
legendecas May 11, 2021
e8192b5
deps: upgrade npm to 7.14.0
ruyadorno May 20, 2021
c576311
src: remove commented code in `node_file.cc`
juanarbol May 15, 2021
2054efa
events: refactor to use primordials in lib/events
marsonya Apr 16, 2021
4e33532
src: use HandleScope in StreamReq::Done()
RaisinTen May 17, 2021
7fb809b
typings: add JSDoc typings for events
VoltrexKeyva May 17, 2021
11ac9c6
test: improve coverage of lib/_http_outgoing.js
pd4d10 May 19, 2021
695e982
test: improve coverage of lib/fs.js
pd4d10 May 8, 2021
e9be209
build: replace non-POSIX test -a|o
concatime May 19, 2021
7773d58
url: exit early when : delimiter is seen in hostname
TimothyGu May 20, 2021
7a9d0fd
benchmark: fix http elapsed time
aduh95 May 20, 2021
717a8b6
child_process: retain reference to data with advanced serialization
addaleax May 18, 2021
3741595
src: set CONF_MFLAGS_DEFAULT_SECTION for OpenSSL 3
danbev May 18, 2021
18f3ba3
worker: leave TODO comments for using std::variant when possible
addaleax May 23, 2021
c7a5857
test: set locale for datetime-change-notify test
Lxxyx May 20, 2021
9ca5c0e
src: fix compiler warnings in node_buffer.cc
RaisinTen May 18, 2021
30c0020
typings: add JSDoc typings for https
VoltrexKeyva May 8, 2021
80c32b7
build: allow LTO with Clang 3.9.1+
jesec May 21, 2021
bc84001
cli: add -C alias for --conditions flag
guybedford May 21, 2021
3e6b3b2
src: use SPrintF in ProcessEmitWarning
RaisinTen May 21, 2021
a2da9e2
worker: use rwlock for sibling group
addaleax May 23, 2021
e2f28c8
doc: fixup code sample in http.md
todortotev May 22, 2021
9054d25
stream: add a non-destroying iterator to Readable
Linkgoron Apr 17, 2021
6d86f8a
test: os, replace custom flatten method with built-in Array.flat
waelsy123 May 22, 2021
4e58ec4
benchmark: output JSON-compatible numbers
targos May 23, 2021
1f5baaa
test: improve coverage for `question` in readline
Ayase-252 May 24, 2021
ab44106
tools: use PrintCaughtException in the snapshot builder
joyeecheung May 20, 2021
4e11971
doc: fix grammar in `fs.md`
yotamselementor May 26, 2021
0c063a1
doc,url: clarify domainTo* when built without ICU
RaisinTen May 23, 2021
36d4a43
src: remove redundant v8 namespaces in `env.cc`
juanarbol May 24, 2021
21ce3af
tools: update ESLint to 7.27.0
lpinca May 22, 2021
a1b0e64
src: support fs_event_wrap binding in the snapshot
joyeecheung May 19, 2021
5d9442a
lib: load internal/fs/watchers and internal/fs/read_file_context early
joyeecheung May 19, 2021
7d3a8cb
lib: remove unnecessary lazy loads
joyeecheung May 19, 2021
e91d14c
test: simplify test-path-resolve.js
himself65 May 13, 2021
24cca7c
build: add lto build to CI
gengjiawen May 6, 2021
3c492ba
test: fix writefile with fd
Linkgoron May 26, 2021
ee1056d
debugger: wait for V8 debugger to be enabled
targos May 26, 2021
c0bde0c
tools: update setup-node to setup-node@v2
JayFate May 27, 2021
f1e823b
doc: use "Long Term Support" in README
phershbe May 29, 2021
4844337
doc: use "Long Term Support" in technical values doc
Trott May 29, 2021
131a691
doc: use "Long Term Support" in collaborator guide
Trott May 29, 2021
6986154
build: work around bug in MSBuild v16.10.0
targos May 31, 2021
be8d934
tools: remove exception for Node.js 8 and earlier
Trott May 29, 2021
6b8c712
tools: bump cpplint to 1.5.5
Trott May 30, 2021
36ffd58
tools: refloat 7 Node.js patches to cpplint.py
Trott Oct 9, 2020
f1000e0
debugger: removed unused function argument
Trott May 30, 2021
108ffdb
doc: fixed typo in n-api.md
julianjany May 27, 2021
f25cd4f
src: fix typos
bl-ue May 29, 2021
08ad2f6
lib: fix typos
bl-ue May 31, 2021
120849f
src: cache necessary isolate & context in api/*
XadillaX Apr 23, 2021
74205b3
src: replace `auto`s in node_api.cc
XadillaX May 30, 2021
e119531
os: add os.devNull
lpinca May 6, 2021
48ebebd
test: remove unnecessary `--pending-deprecation` flag
aduh95 May 23, 2021
47ad448
deps: upgrade npm to 7.15.1
npm-robot May 31, 2021
eb7c932
debugger: revise async iterator usage to comply with lint rules
Trott May 29, 2021
4884991
lib: include url in bootstrap snapshot and remove unnecessary lazy-loads
joyeecheung May 19, 2021
0aa3cb5
test: improve coverage of fs internal utils
pd4d10 May 20, 2021
f162896
build: remove outdated dont-land-on-v6.x label
targos Jun 1, 2021
7ba3055
src: set PromiseHooks by Environment
bengl May 26, 2021
e65a25c
2021-06-02, Version 16.3.0 (Current)
danielleadams May 31, 2021
84c3990
Working on v16.3.1
danielleadams Jun 3, 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
  •  
  •  
  •  
5 changes: 1 addition & 4 deletions .eslintrc.js
Expand Up @@ -25,10 +25,7 @@ Module._findPath = (request, paths, isMain) => {
if (!r && hacks.includes(request)) {
try {
return require.resolve(`./tools/node_modules/${request}`);
// Keep the variable in place to ensure that ESLint started by older Node.js
// versions work as expected.
// eslint-disable-next-line no-unused-vars
} catch (e) {
} catch {
return require.resolve(
`./tools/node_modules/eslint/node_modules/${request}`);
}
Expand Down
8 changes: 4 additions & 4 deletions .github/label-pr-config.yml
Expand Up @@ -27,7 +27,7 @@ subSystemLabels:
/^src\/node_zlib/: c++, zlib
/^src\/tracing/: c++, tracing
/^src\/node_api/: c++, n-api
/^src\/node_http2/: c++, http2, dont-land-on-v6.x
/^src\/node_http2/: c++, http2
/^src\/node_report/: c++, report
/^src\/node_wasi/: c++, wasi
/^src\/node_worker/: c++, worker
Expand Down Expand Up @@ -78,8 +78,8 @@ subSystemLabels:
/^deps\/v8\/tools\/gen-postmortem-metadata\.py/: V8 Engine, post-mortem
/^deps\/v8\//: V8 Engine
/^deps\/uvwasi\//: wasi
/^deps\/nghttp2\/nghttp2\.gyp/: build, http2, dont-land-on-v6.x
/^deps\/nghttp2\//: http2, dont-land-on-v6.x
/^deps\/nghttp2\/nghttp2\.gyp/: build, http2
/^deps\/nghttp2\//: http2
/^deps\/ngtcp2\//: quic, dont-land-on-v14.x, dont-land-on-v12.x
/^deps\/nghttp3\//: quic, dont-land-on-v14.x, dont-land-on-v12.x
/^deps\/([^/]+)/: $1
Expand All @@ -94,7 +94,7 @@ subSystemLabels:
/^lib\/\w+\/v8_prof_/: tools
/^lib\/\w+\/socket_list/: net
/^lib\/\w+\/streams$/: stream
/^lib\/.*http2/: http2, dont-land-on-v6.x
/^lib\/.*http2/: http2
/^lib\/worker_threads.js$/: worker
/^lib\/internal\/url\.js$/: url-whatwg
/^lib\/internal\/modules\/esm/: ES Modules
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto-start-ci.yml
Expand Up @@ -21,7 +21,7 @@ jobs:

# Install dependencies
- name: Install Node.js
uses: actions/setup-node@v2-beta
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install node-core-utils
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/commit-queue.yml
Expand Up @@ -35,7 +35,7 @@ jobs:

# Install dependencies
- name: Install Node.js
uses: actions/setup-node@v2-beta
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install node-core-utils
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/daily.yml
@@ -0,0 +1,28 @@
name: Node.js daily job

on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"

env:
NODE_VERSION: 14.x

jobs:
build-lto:
runs-on: ubuntu-latest
# not working on gcc-8 and gcc-9 see https://github.com/nodejs/node/issues/38570
container: gcc:11
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Environment Information
run: npx envinfo
- name: Build lto
run: |
apt-get update && apt-get install ninja-build python-is-python3 -y
./configure --enable-lto --ninja
ninja -C out/Release
6 changes: 3 additions & 3 deletions .github/workflows/linters.yml
Expand Up @@ -20,7 +20,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Environment Information
Expand All @@ -46,7 +46,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Environment Information
Expand All @@ -68,7 +68,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Environment Information
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/misc.yml
Expand Up @@ -19,7 +19,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v1
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Environment Information
Expand Down
12 changes: 6 additions & 6 deletions Makefile
Expand Up @@ -103,7 +103,7 @@ $(NODE_EXE): build_type:=Release
$(NODE_G_EXE): build_type:=Debug
$(NODE_EXE) $(NODE_G_EXE): config.gypi out/Makefile
$(MAKE) -C out BUILDTYPE=${build_type} V=$(V)
if [ ! -r $@ -o ! -L $@ ]; then \
if [ ! -r $@ ] || [ ! -L $@ ]; then \
ln -fs out/${build_type}/$(NODE_EXE) $@; fi
else
ifeq ($(BUILD_WITH), ninja)
Expand All @@ -117,11 +117,11 @@ else
endif
$(NODE_EXE): config.gypi out/Release/build.ninja
ninja -C out/Release $(NINJA_ARGS)
if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Release/$(NODE_EXE) $@; fi
if [ ! -r $@ ] || [ ! -L $@ ]; then ln -fs out/Release/$(NODE_EXE) $@; fi

$(NODE_G_EXE): config.gypi out/Debug/build.ninja
ninja -C out/Debug $(NINJA_ARGS)
if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi
if [ ! -r $@ ] || [ ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi
else
$(NODE_EXE) $(NODE_G_EXE):
$(warning This Makefile currently only supports building with 'make' or 'ninja')
Expand Down Expand Up @@ -908,7 +908,7 @@ BINARYTAR=$(BINARYNAME).tar
HAS_XZ ?= $(shell command -v xz > /dev/null 2>&1; [ $$? -eq 0 ] && echo 1 || echo 0)
# Supply SKIP_XZ=1 to explicitly skip .tar.xz creation
SKIP_XZ ?= 0
XZ = $(shell [ $(HAS_XZ) -eq 1 -a $(SKIP_XZ) -eq 0 ] && echo 1 || echo 0)
XZ = $(shell [ $(HAS_XZ) -eq 1 ] && [ $(SKIP_XZ) -eq 0 ] && echo 1 || echo 0)
XZ_COMPRESSION ?= 9e
PKG=$(TARNAME).pkg
MACOSOUTDIR=out/macos
Expand Down Expand Up @@ -949,7 +949,7 @@ release-only: check-xz
echo "" >&2 ; \
exit 1 ; \
fi
@if [ "$(DISTTYPE)" != "release" -o "$(RELEASE)" = "1" ]; then \
@if [ "$(DISTTYPE)" != "release" ] || [ "$(RELEASE)" = "1" ]; then \
exit 0; \
else \
echo "" >&2 ; \
Expand All @@ -958,7 +958,7 @@ release-only: check-xz
echo "" >&2 ; \
exit 1 ; \
fi
@if [ "$(RELEASE)" = "0" -o -f "$(CHANGELOG)" ]; then \
@if [ "$(RELEASE)" = "0" ] || [ -f "$(CHANGELOG)" ]; then \
exit 0; \
else \
echo "" >&2 ; \
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -50,7 +50,7 @@ Looking for help? Check out the
April and October every year. Releases appearing each October have a support
life of 8 months. Releases appearing each April convert to LTS (see below)
each October.
* **LTS**: Releases that receive Long-term Support, with a focus on stability
* **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 code names,
Expand Down
2 changes: 1 addition & 1 deletion android-configure
Expand Up @@ -56,7 +56,7 @@ export CXX_host=$(command -v g++)
host_gcc_version=$($CC_host --version | grep gcc | awk '{print $NF}')
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
if [ -z $major ] || [ -z $minor ] || [ $major -lt 6 ] || ( [ $major -eq 6 ] && [ $minor -lt 3 ] ); then
echo "host gcc $host_gcc_version is too old, need gcc 6.3.0"
return 1
fi
Expand Down
5 changes: 3 additions & 2 deletions benchmark/_http-benchmarkers.js
Expand Up @@ -222,7 +222,7 @@ exports.run = function(options, callback) {
return;
}

const benchmarker_start = process.hrtime();
const benchmarker_start = process.hrtime.bigint();

const child = benchmarker.create(options);

Expand All @@ -233,7 +233,7 @@ exports.run = function(options, callback) {
child.stdout.on('data', (chunk) => stdout += chunk);

child.once('close', (code) => {
const elapsed = process.hrtime(benchmarker_start);
const benchmark_end = process.hrtime.bigint();
if (code) {
let error_message = `${options.benchmarker} failed with ${code}.`;
if (stdout !== '') {
Expand All @@ -250,6 +250,7 @@ exports.run = function(options, callback) {
return;
}

const elapsed = benchmark_end - benchmarker_start;
callback(null, code, options.benchmarker, result, elapsed);
});

Expand Down
2 changes: 1 addition & 1 deletion benchmark/common.js
Expand Up @@ -267,7 +267,7 @@ class Benchmark {
function nanoSecondsToString(bigint) {
const str = bigint.toString();
const decimalPointIndex = str.length - 9;
if (decimalPointIndex < 0) {
if (decimalPointIndex <= 0) {
return `0.${'0'.repeat(-decimalPointIndex)}${str}`;
}
return `${str.slice(0, decimalPointIndex)}.${str.slice(decimalPointIndex)}`;
Expand Down
17 changes: 12 additions & 5 deletions common.gypi
Expand Up @@ -164,17 +164,28 @@
'v8_enable_handle_zapping': 0,
'pgo_generate': ' -fprofile-generate ',
'pgo_use': ' -fprofile-use -fprofile-correction ',
'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ',
'conditions': [
['node_shared != "true"', {
'MSVC_runtimeType': 0 # MultiThreaded (/MT)
}, {
'MSVC_runtimeType': 2 # MultiThreadedDLL (/MD)
}],
['llvm_version=="0.0"', {
'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ', # GCC
}, {
'lto': ' -flto ', # Clang
}],
],
},
'cflags': [ '-O3' ],
'conditions': [
['enable_lto=="true"', {
'cflags': ['<(lto)'],
'ldflags': ['<(lto)'],
'xcode_settings': {
'LLVM_LTO': 'YES',
},
}],
['OS=="linux"', {
'conditions': [
['node_section_ordering_info!=""', {
Expand Down Expand Up @@ -206,10 +217,6 @@
'cflags': ['<(pgo_use)'],
'ldflags': ['<(pgo_use)'],
},],
['enable_lto=="true"', {
'cflags': ['<(lto)'],
'ldflags': ['<(lto)'],
},],
],
},],
['OS == "android"', {
Expand Down
37 changes: 23 additions & 14 deletions configure.py
Expand Up @@ -173,7 +173,7 @@
dest="enable_lto",
default=None,
help="Enable compiling with lto of a binary. This feature is only available "
"on linux with gcc and g++ 5.4.1 or newer.")
"with gcc 5.4.1+ or clang 3.9.1+.")

parser.add_argument("--link-module",
action="append",
Expand Down Expand Up @@ -952,6 +952,7 @@ def get_gas_version(cc):
# quite prepared to go that far yet.
def check_compiler(o):
if sys.platform == 'win32':
o['variables']['llvm_version'] = '0.0'
if not options.openssl_no_asm and options.dest_cpu in ('x86', 'x64'):
nasm_version = get_nasm_version('nasm')
o['variables']['nasm_version'] = nasm_version
Expand Down Expand Up @@ -1131,12 +1132,19 @@ def configure_mips(o, target_arch):
host_byteorder = 'little' if target_arch in ('mipsel', 'mips64el') else 'big'
o['variables']['v8_host_byteorder'] = host_byteorder

def clang_version_ge(version_checked):
for compiler in [(CC, 'c'), (CXX, 'c++')]:
ok, is_clang, clang_version, gcc_version = \
try_check_compiler(compiler[0], compiler[1])
if is_clang and clang_version >= version_checked:
return True
return False

def gcc_version_ge(version_checked):
for compiler in [(CC, 'c'), (CXX, 'c++')]:
ok, is_clang, clang_version, compiler_version = \
ok, is_clang, clang_version, gcc_version = \
try_check_compiler(compiler[0], compiler[1])
if is_clang or compiler_version < version_checked:
if is_clang or gcc_version < version_checked:
return False
return True

Expand Down Expand Up @@ -1217,18 +1225,19 @@ def configure_node(o):
o['variables']['enable_pgo_generate'] = b(options.enable_pgo_generate)
o['variables']['enable_pgo_use'] = b(options.enable_pgo_use)

if flavor != 'linux' and (options.enable_lto):
if flavor == 'win' and (options.enable_lto):
raise Exception(
'The lto option is supported only on linux.')

if flavor == 'linux':
if options.enable_lto:
version_checked = (5, 4, 1)
if not gcc_version_ge(version_checked):
version_checked_str = ".".join(map(str, version_checked))
raise Exception(
'The option --enable-lto is supported for gcc and gxx %s'
' or newer only.' % (version_checked_str))
'Use Link Time Code Generation instead.')

if options.enable_lto:
gcc_version_checked = (5, 4, 1)
clang_version_checked = (3, 9, 1)
if not gcc_version_ge(gcc_version_checked) and not clang_version_ge(clang_version_checked):
gcc_version_checked_str = ".".join(map(str, gcc_version_checked))
clang_version_checked_str = ".".join(map(str, clang_version_checked))
raise Exception(
'The option --enable-lto is supported for gcc %s+'
'or clang %s+ only.' % (gcc_version_checked_str, clang_version_checked_str))

o['variables']['enable_lto'] = b(options.enable_lto)

Expand Down
2 changes: 1 addition & 1 deletion deps/llhttp/include/llhttp.h
Expand Up @@ -3,7 +3,7 @@

#define LLHTTP_VERSION_MAJOR 6
#define LLHTTP_VERSION_MINOR 0
#define LLHTTP_VERSION_PATCH 1
#define LLHTTP_VERSION_PATCH 2

#ifndef LLHTTP_STRICT_MODE
# define LLHTTP_STRICT_MODE 0
Expand Down
8 changes: 4 additions & 4 deletions deps/llhttp/src/llhttp.c
Expand Up @@ -1103,7 +1103,7 @@ static llparse_state_t llhttp__internal__run(
case s_n_llhttp__internal__n_consume_content_length:
s_n_llhttp__internal__n_consume_content_length: {
size_t avail;
size_t need;
uint64_t need;

avail = endp - p;
need = state->content_length;
Expand Down Expand Up @@ -1458,7 +1458,7 @@ static llparse_state_t llhttp__internal__run(
case s_n_llhttp__internal__n_consume_content_length_1:
s_n_llhttp__internal__n_consume_content_length_1: {
size_t avail;
size_t need;
uint64_t need;

avail = endp - p;
need = state->content_length;
Expand Down Expand Up @@ -8677,7 +8677,7 @@ static llparse_state_t llhttp__internal__run(
case s_n_llhttp__internal__n_consume_content_length:
s_n_llhttp__internal__n_consume_content_length: {
size_t avail;
size_t need;
uint64_t need;

avail = endp - p;
need = state->content_length;
Expand Down Expand Up @@ -9025,7 +9025,7 @@ static llparse_state_t llhttp__internal__run(
case s_n_llhttp__internal__n_consume_content_length_1:
s_n_llhttp__internal__n_consume_content_length_1: {
size_t avail;
size_t need;
uint64_t need;

avail = endp - p;
need = state->content_length;
Expand Down
7 changes: 7 additions & 0 deletions deps/npm/AUTHORS
Expand Up @@ -776,3 +776,10 @@ Marco Sirabella <marco@sirabella.org>
wangsai <wangsai@bootcss.com>
Luke Hefson <luke@github.com>
mrmlnc <mrmlnc@yandex-team.ru>
Juan Picado <juanpicado19@gmail.com>
Kevin Cormier <kcormier@redhat.com>
Nariyasu Heseri <heserisiyookang@gmail.com>
rethab <rethab@protonmail.ch>
Spencer Wilson <5624115+spencerwilson@users.noreply.github.com>
Daniel Park <gimli01@github.com>
Daniel Park <daniel.park@endevors.io>