From b0c41ed8d91787330083d32e5a8f8bfd5412bd28 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 16:45:48 +0300 Subject: [PATCH 01/13] cluster: make kill to be just process.kill --- README.md | 715 ++++++++---------- doc/api/cluster.md | 15 +- lib/internal/cluster/primary.js | 11 +- .../test-cluster-worker-kill-signal.js | 96 +++ 4 files changed, 415 insertions(+), 422 deletions(-) create mode 100644 test/parallel/test-cluster-worker-kill-signal.js diff --git a/README.md b/README.md index def1132051456b..58442bc444d054 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -

-Node.js is an open-source, cross-platform, JavaScript runtime environment. - -For information on using Node.js, see the [Node.js Website][]. +Node.js is an open-source, cross-platform, JavaScript runtime environment. It +executes JavaScript code outside of a browser. For more information on using +Node.js, see the [Node.js Website][]. The Node.js project uses an [open governance model](./GOVERNANCE.md). The [OpenJS Foundation][] provides support for the project. -**This project has a [Code of Conduct][].** +**This project is bound by a [Code of Conduct][].** -# Table of contents +# Table of Contents * [Support](#support) -* [Release types](#release-types) +* [Release Types](#release-types) * [Download](#download) - * [Current and LTS releases](#current-and-lts-releases) - * [Nightly releases](#nightly-releases) - * [API documentation](#api-documentation) - * [Verifying binaries](#verifying-binaries) + * [Current and LTS Releases](#current-and-lts-releases) + * [Nightly Releases](#nightly-releases) + * [API Documentation](#api-documentation) + * [Verifying Binaries](#verifying-binaries) * [Building Node.js](#building-nodejs) * [Security](#security) * [Contributing to Node.js](#contributing-to-nodejs) -* [Current project team members](#current-project-team-members) +* [Current Project Team Members](#current-project-team-members) * [TSC (Technical Steering Committee)](#tsc-technical-steering-committee) * [Collaborators](#collaborators) - * [Triagers](#triagers) - * [Release keys](#release-keys) + * [Release Keys](#release-keys) * [License](#license) ## Support @@ -43,16 +41,16 @@ The Node.js project uses an [open governance model](./GOVERNANCE.md). The Looking for help? Check out the [instructions for getting support](.github/SUPPORT.md). -## Release types +## Release Types * **Current**: Under active development. Code for the Current release is in the branch for its major version number (for example, - [v15.x](https://github.com/nodejs/node/tree/v15.x)). Node.js releases a new + [v10.x](https://github.com/nodejs/node/tree/v10.x)). Node.js releases a new major version every 6 months, allowing for breaking changes. This happens in 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, @@ -71,31 +69,29 @@ For more information, see the Binaries, installers, and source tarballs are available at . -#### Current and LTS releases - +#### Current and LTS Releases The [latest](https://nodejs.org/download/release/latest/) directory is an alias for the latest Current release. The latest-_codename_ directory is an alias for the latest release from an LTS line. For example, the -[latest-fermium](https://nodejs.org/download/release/latest-fermium/) directory -contains the latest Fermium (Node.js 14) release. - -#### Nightly releases +[latest-carbon](https://nodejs.org/download/release/latest-carbon/) directory +contains the latest Carbon (Node.js 8) release. +#### Nightly Releases Each directory name and filename contains a date (in UTC) and the commit SHA at the HEAD of the release. -#### API documentation +#### API Documentation Documentation for the latest Current release is at . Version-specific documentation is available in each release directory in the _docs_ subdirectory. Version-specific documentation is also at . -### Verifying binaries +### Verifying Binaries Download directories contain a `SHASUMS256.txt` file with SHA checksums for the files. @@ -115,7 +111,7 @@ $ grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - For Current and LTS, the GPG detached signature of `SHASUMS256.txt` is in `SHASUMS256.txt.sig`. You can use it with `gpg` to verify the integrity of -`SHASUMS256.txt`. You will first need to import +`SHASUM256.txt`. You will first need to import [the GPG keys of individuals authorized to create releases](#release-keys). To import the keys: @@ -148,541 +144,482 @@ For information on reporting security vulnerabilities in Node.js, see * [Contributing to the project][] * [Working Groups][] -* [Strategic initiatives][] +* [Strategic Initiatives][] * [Technical values and prioritization][] -## Current project team members +## Current Project Team Members For information about the governance of the Node.js project, see [GOVERNANCE.md](./GOVERNANCE.md). - - ### TSC (Technical Steering Committee) - -* [aduh95](https://github.com/aduh95) - - **Antoine du Hamel** <> (he/him) * [apapirovski](https://github.com/apapirovski) - - **Anatoli Papirovski** <> (he/him) +**Anatoli Papirovski** <apapirovski@mac.com> (he/him) * [BethGriggs](https://github.com/BethGriggs) - - **Beth Griggs** <> (she/her) +**Beth Griggs** <bgriggs@redhat.com> (she/her) * [BridgeAR](https://github.com/BridgeAR) - - **Ruben Bridgewater** <> (he/him) +**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) * [ChALkeR](https://github.com/ChALkeR) - - **Сковорода Никита Андреевич** <> (he/him) +**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) * [cjihrig](https://github.com/cjihrig) - - **Colin Ihrig** <> (he/him) -* [danielleadams](https://github.com/danielleadams) - - **Danielle Adams** <> (she/her) +**Colin Ihrig** <cjihrig@gmail.com> (he/him) +* [codebytere](https://github.com/codebytere) - +**Shelley Vohr** <codebytere@gmail.com> (she/her) +* [danbev](https://github.com/danbev) - +**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) * [fhinkel](https://github.com/fhinkel) - - **Franziska Hinkelmann** <> (she/her) +**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) +* [gabrielschulhof](https://github.com/gabrielschulhof) - +**Gabriel Schulhof** <gabriel.schulhof@intel.com> * [gireeshpunathil](https://github.com/gireeshpunathil) - - **Gireesh Punathil** <> (he/him) +**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) * [jasnell](https://github.com/jasnell) - - **James M Snell** <> (he/him) +**James M Snell** <jasnell@gmail.com> (he/him) * [joyeecheung](https://github.com/joyeecheung) - - **Joyee Cheung** <> (she/her) +**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) * [mcollina](https://github.com/mcollina) - - **Matteo Collina** <> (he/him) +**Matteo Collina** <matteo.collina@gmail.com> (he/him) * [mhdawson](https://github.com/mhdawson) - - **Michael Dawson** <> (he/him) +**Michael Dawson** <midawson@redhat.com> (he/him) * [mmarchini](https://github.com/mmarchini) - - **Mary Marchini** <> (she/her) +**Mary Marchini** <oss@mmarchini.me> (she/her) * [MylesBorins](https://github.com/MylesBorins) - - **Myles Borins** <> (he/him) -* [RaisinTen](https://github.com/RaisinTen) - - **Darshan Sen** <> (he/him) -* [richardlau](https://github.com/richardlau) - - **Richard Lau** <> -* [ronag](https://github.com/ronag) - - **Robert Nagy** <> +**Myles Borins** <myles.borins@gmail.com> (he/him) * [targos](https://github.com/targos) - - **Michaël Zasso** <> (he/him) +**Michaël Zasso** <targos@protonmail.com> (he/him) * [tniessen](https://github.com/tniessen) - - **Tobias Nießen** <> (he/him) +**Tobias Nießen** <tniessen@tnie.de> * [Trott](https://github.com/Trott) - - **Rich Trott** <> (he/him) +**Rich Trott** <rtrott@gmail.com> (he/him) -
- -Emeriti - -### TSC emeriti +### TSC Emeriti * [addaleax](https://github.com/addaleax) - - **Anna Henningsen** <> (she/her) +**Anna Henningsen** <anna@addaleax.net> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - - **Ben Noordhuis** <> +**Ben Noordhuis** <info@bnoordhuis.nl> * [chrisdickinson](https://github.com/chrisdickinson) - - **Chris Dickinson** <> -* [codebytere](https://github.com/codebytere) - - **Shelley Vohr** <> (she/her) -* [danbev](https://github.com/danbev) - - **Daniel Bevenius** <> (he/him) +**Chris Dickinson** <christopher.s.dickinson@gmail.com> * [evanlucas](https://github.com/evanlucas) - - **Evan Lucas** <> (he/him) +**Evan Lucas** <evanlucas@me.com> (he/him) * [Fishrock123](https://github.com/Fishrock123) - - **Jeremiah Senkpiel** <> (he/they) -* [gabrielschulhof](https://github.com/gabrielschulhof) - - **Gabriel Schulhof** <> +**Jeremiah Senkpiel** <fishrock123@rocketmail.com> (he/they) * [gibfahn](https://github.com/gibfahn) - - **Gibson Fahnestock** <> (he/him) +**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) * [indutny](https://github.com/indutny) - - **Fedor Indutny** <> +**Fedor Indutny** <fedor.indutny@gmail.com> * [isaacs](https://github.com/isaacs) - - **Isaac Z. Schlueter** <> +**Isaac Z. Schlueter** <i@izs.me> * [joshgav](https://github.com/joshgav) - - **Josh Gavant** <> +**Josh Gavant** <josh.gavant@outlook.com> * [mscdex](https://github.com/mscdex) - - **Brian White** <> +**Brian White** <mscdex@mscdex.net> * [nebrius](https://github.com/nebrius) - - **Bryan Hughes** <> +**Bryan Hughes** <bryan@nebri.us> * [ofrobots](https://github.com/ofrobots) - - **Ali Ijaz Sheikh** <> (he/him) +**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) * [orangemocha](https://github.com/orangemocha) - - **Alexis Campailla** <> +**Alexis Campailla** <orangemocha@nodejs.org> * [piscisaureus](https://github.com/piscisaureus) - - **Bert Belder** <> +**Bert Belder** <bertbelder@gmail.com> * [rvagg](https://github.com/rvagg) - - **Rod Vagg** <> +**Rod Vagg** <r@va.gg> * [sam-github](https://github.com/sam-github) - - **Sam Roberts** <> +**Sam Roberts** <vieuxtech@gmail.com> * [shigeki](https://github.com/shigeki) - - **Shigeki Ohtsu** <> (he/him) +**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) * [thefourtheye](https://github.com/thefourtheye) - - **Sakthipriyan Vairamani** <> (he/him) +**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) * [TimothyGu](https://github.com/TimothyGu) - - **Tiancheng "Timothy" Gu** <> (he/him) +**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) * [trevnorris](https://github.com/trevnorris) - - **Trevor Norris** <> - -
- - +**Trevor Norris** <trev.norris@gmail.com> ### Collaborators * [addaleax](https://github.com/addaleax) - - **Anna Henningsen** <> (she/her) +**Anna Henningsen** <anna@addaleax.net> (she/her) * [aduh95](https://github.com/aduh95) - - **Antoine du Hamel** <> (he/him) +**Antoine du Hamel** <duhamelantoine1995@gmail.com> (he/him) * [ak239](https://github.com/ak239) - - **Aleksei Koziatinskii** <> +**Aleksei Koziatinskii** <ak239spb@gmail.com> +* [AndreasMadsen](https://github.com/AndreasMadsen) - +**Andreas Madsen** <amwebdk@gmail.com> (he/him) * [antsmartian](https://github.com/antsmartian) - - **Anto Aravinth** <> (he/him) +**Anto Aravinth** <anto.aravinth.cse@gmail.com> (he/him) * [apapirovski](https://github.com/apapirovski) - - **Anatoli Papirovski** <> (he/him) +**Anatoli Papirovski** <apapirovski@mac.com> (he/him) * [AshCripps](https://github.com/AshCripps) - - **Ash Cripps** <> -* [Ayase-252](https://github.com/Ayase-252) - - **Qingyu Deng** <> +**Ash Cripps** <acripps@redhat.com> * [bcoe](https://github.com/bcoe) - - **Ben Coe** <> (he/him) +**Ben Coe** <bencoe@gmail.com> (he/him) * [bengl](https://github.com/bengl) - - **Bryan English** <> (he/him) +**Bryan English** <bryan@bryanenglish.com> (he/him) * [benjamingr](https://github.com/benjamingr) - - **Benjamin Gruenbaum** <> +**Benjamin Gruenbaum** <benjamingr@gmail.com> * [BethGriggs](https://github.com/BethGriggs) - - **Beth Griggs** <> (she/her) +**Beth Griggs** <bgriggs@redhat.com> (she/her) * [bmeck](https://github.com/bmeck) - - **Bradley Farias** <> -* [bnb](https://github.com/bnb) - - **Tierney Cyren** <> (they/he) +**Bradley Farias** <bradley.meck@gmail.com> +* [bmeurer](https://github.com/bmeurer) - +**Benedikt Meurer** <benedikt.meurer@gmail.com> * [boneskull](https://github.com/boneskull) - - **Christopher Hiller** <> (he/him) +**Christopher Hiller** <boneskull@boneskull.com> (he/him) * [BridgeAR](https://github.com/BridgeAR) - - **Ruben Bridgewater** <> (he/him) +**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) * [bzoz](https://github.com/bzoz) - - **Bartosz Sosnowski** <> +**Bartosz Sosnowski** <bartosz@janeasystems.com> * [cclauss](https://github.com/cclauss) - - **Christian Clauss** <> (he/him) +**Christian Clauss** <cclauss@me.com> (he/him) * [ChALkeR](https://github.com/ChALkeR) - - **Сковорода Никита Андреевич** <> (he/him) +**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) * [cjihrig](https://github.com/cjihrig) - - **Colin Ihrig** <> (he/him) +**Colin Ihrig** <cjihrig@gmail.com> (he/him) * [codebytere](https://github.com/codebytere) - - **Shelley Vohr** <> (she/her) +**Shelley Vohr** <codebytere@gmail.com> (she/her) * [danbev](https://github.com/danbev) - - **Daniel Bevenius** <> (he/him) +**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) * [danielleadams](https://github.com/danielleadams) - - **Danielle Adams** <> (she/her) -* [DerekNonGeneric](https://github.com/DerekNonGeneric) - - **Derek Lewis** <> (he/him) +**Danielle Adams** <adamzdanielle@gmail.com> (she/her) +* [davisjam](https://github.com/davisjam) - +**Jamie Davis** <davisjam@vt.edu> (he/him) * [devnexen](https://github.com/devnexen) - - **David Carlier** <> +**David Carlier** <devnexen@gmail.com> * [devsnek](https://github.com/devsnek) - - **Gus Caplan** <> (they/them) -* [dmabupt](https://github.com/dmabupt) - - **Xu Meng** <> (he/him) +**Gus Caplan** <me@gus.host> (they/them) * [dnlup](https://github.com/dnlup) - **Daniele Belardi** <> (he/him) +**Daniele Belardi** <dwon.dnl@gmail.com> (he/him) * [edsadr](https://github.com/edsadr) - - **Adrian Estrada** <> (he/him) +**Adrian Estrada** <edsadr@gmail.com> (he/him) +* [eugeneo](https://github.com/eugeneo) - +**Eugene Ostroukhov** <eostroukhov@google.com> * [evanlucas](https://github.com/evanlucas) - - **Evan Lucas** <> (he/him) +**Evan Lucas** <evanlucas@me.com> (he/him) * [fhinkel](https://github.com/fhinkel) - - **Franziska Hinkelmann** <> (she/her) +**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) +* [Fishrock123](https://github.com/Fishrock123) - +**Jeremiah Senkpiel** <fishrock123@rocketmail.com> (he/they) * [Flarna](https://github.com/Flarna) - - **Gerhard Stöbich** <> (he/they) +**Gerhard Stöbich** <deb2001-github@yahoo.de> (he/they) * [gabrielschulhof](https://github.com/gabrielschulhof) - - **Gabriel Schulhof** <> +**Gabriel Schulhof** <gabriel.schulhof@intel.com> +* [gdams](https://github.com/gdams) - +**George Adams** <george.adams@uk.ibm.com> (he/him) +* [geek](https://github.com/geek) - +**Wyatt Preul** <wpreul@gmail.com> * [gengjiawen](https://github.com/gengjiawen) - - **Jiawen Geng** <> +**Jiawen Geng** <technicalcute@gmail.com> * [GeoffreyBooth](https://github.com/geoffreybooth) - - **Geoffrey Booth** <> (he/him) +**Geoffrey Booth** <webmaster@geoffreybooth.com> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - - **Gireesh Punathil** <> (he/him) +**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) * [guybedford](https://github.com/guybedford) - - **Guy Bedford** <> (he/him) +**Guy Bedford** <guybedford@gmail.com> (he/him) * [HarshithaKP](https://github.com/HarshithaKP) - - **Harshitha K P** <> (she/her) +**Harshitha K P** <harshitha014@gmail.com> (she/her) * [hashseed](https://github.com/hashseed) - - **Yang Guo** <> (he/him) +**Yang Guo** <yangguo@chromium.org> (he/him) * [himself65](https://github.com/himself65) - - **Zeyu Yang** <> (he/him) +**Zeyu Yang** <himself65@outlook.com> (he/him) * [hiroppy](https://github.com/hiroppy) - - **Yuta Hiroto** <> (he/him) +**Yuta Hiroto** <hello@hiroppy.me> (he/him) * [iansu](https://github.com/iansu) - - **Ian Sutherland** <> +**Ian Sutherland** <ian@iansutherland.ca> * [indutny](https://github.com/indutny) - - **Fedor Indutny** <> +**Fedor Indutny** <fedor.indutny@gmail.com> * [JacksonTian](https://github.com/JacksonTian) - - **Jackson Tian** <> +**Jackson Tian** <shyvo1987@gmail.com> * [jasnell](https://github.com/jasnell) - - **James M Snell** <> (he/him) +**James M Snell** <jasnell@gmail.com> (he/him) +* [jdalton](https://github.com/jdalton) - +**John-David Dalton** <john.david.dalton@gmail.com> * [jkrems](https://github.com/jkrems) - - **Jan Krems** <> (he/him) +**Jan Krems** <jan.krems@gmail.com> (he/him) * [joaocgreis](https://github.com/joaocgreis) - - **João Reis** <> +**João Reis** <reis@janeasystems.com> * [joyeecheung](https://github.com/joyeecheung) - - **Joyee Cheung** <> (she/her) +**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) * [juanarbol](https://github.com/juanarbol) - - **Juan José Arboleda** <> (he/him) +**Juan José Arboleda** <soyjuanarbol@gmail.com> (he/him) * [JungMinu](https://github.com/JungMinu) - - **Minwoo Jung** <> (he/him) +**Minwoo Jung** <nodecorelab@gmail.com> (he/him) +* [lance](https://github.com/lance) - +**Lance Ball** <lball@redhat.com> (he/him) * [legendecas](https://github.com/legendecas) - - **Chengzhong Wu** <> (he/him) +**Chengzhong Wu** <legendecas@gmail.com> (he/him) * [Leko](https://github.com/Leko) - - **Shingo Inoue** <> (he/him) -* [linkgoron](https://github.com/linkgoron) - - **Nitzan Uziely** <> +**Shingo Inoue** <leko.noor@gmail.com> (he/him) * [lpinca](https://github.com/lpinca) - - **Luigi Pinca** <> (he/him) +**Luigi Pinca** <luigipinca@gmail.com> (he/him) * [lundibundi](https://github.com/lundibundi) - - **Denys Otrishko** <> (he/him) -* [Lxxyx](https://github.com/Lxxyx) - - **Zijian Liu** <> (he/him) +**Denys Otrishko** <shishugi@gmail.com> (he/him) +* [mafintosh](https://github.com/mafintosh) - +**Mathias Buus** <mathiasbuus@gmail.com> (he/him) * [mcollina](https://github.com/mcollina) - - **Matteo Collina** <> (he/him) -* [Mesteery](https://github.com/Mesteery) - - **Mestery** <> (he/him) +**Matteo Collina** <matteo.collina@gmail.com> (he/him) * [mhdawson](https://github.com/mhdawson) - - **Michael Dawson** <> (he/him) +**Michael Dawson** <midawson@redhat.com> (he/him) * [miladfarca](https://github.com/miladfarca) - - **Milad Fa** <> (he/him) +**Milad Fa** <mfarazma@redhat.com> (he/him) * [mildsunrise](https://github.com/mildsunrise) - - **Alba Mendez** <> (she/her) +**Alba Mendez** <me@alba.sh> (she/her) +* [misterdjules](https://github.com/misterdjules) - +**Julien Gilli** <jgilli@nodejs.org> * [mmarchini](https://github.com/mmarchini) - - **Mary Marchini** <> (she/her) +**Mary Marchini** <oss@mmarchini.me> (she/her) * [mscdex](https://github.com/mscdex) - - **Brian White** <> +**Brian White** <mscdex@mscdex.net> * [MylesBorins](https://github.com/MylesBorins) - - **Myles Borins** <> (he/him) +**Myles Borins** <myles.borins@gmail.com> (he/him) +* [ofrobots](https://github.com/ofrobots) - +**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) * [oyyd](https://github.com/oyyd) - - **Ouyang Yadong** <> (he/him) +**Ouyang Yadong** <oyydoibh@gmail.com> (he/him) * [panva](https://github.com/panva) - - **Filip Skokan** <> +**Filip Skokan** <panva.ip@gmail.com> * [PoojaDurgad](https://github.com/PoojaDurgad) - - **Pooja D P** <> (she/her) +**Pooja D P** <Pooja.D.P@ibm.com> (she/her) +* [psmarshall](https://github.com/psmarshall) - +**Peter Marshall** <petermarshall@chromium.org> (he/him) * [puzpuzpuz](https://github.com/puzpuzpuz) - - **Andrey Pechkurov** <> (he/him) +**Andrey Pechkurov** <apechkurov@gmail.com> (he/him) * [Qard](https://github.com/Qard) - - **Stephen Belanger** <> (he/him) +**Stephen Belanger** <admin@stephenbelanger.com> (he/him) * [RaisinTen](https://github.com/RaisinTen) - - **Darshan Sen** <> (he/him) +**Darshan Sen** <raisinten@gmail.com> (he/him) +* [refack](https://github.com/refack) - +**Refael Ackermann (רפאל פלחי)** <refack@gmail.com> (he/him/הוא/אתה) * [rexagod](https://github.com/rexagod) - - **Pranshu Srivastava** <> (he/him) +**Pranshu Srivastava** <rexagod@gmail.com> (he/him) * [richardlau](https://github.com/richardlau) - - **Richard Lau** <> +**Richard Lau** <rlau@redhat.com> * [rickyes](https://github.com/rickyes) - - **Ricky Zhou** <<0x19951125@gmail.com>> (he/him) +**Ricky Zhou** <0x19951125@gmail.com> (he/him) * [ronag](https://github.com/ronag) - - **Robert Nagy** <> +**Robert Nagy** <ronagy@icloud.com> +* [rubys](https://github.com/rubys) - +**Sam Ruby** <rubys@intertwingly.net> * [ruyadorno](https://github.com/ruyadorno) - - **Ruy Adorno** <> (he/him) +**Ruy Adorno** <ruyadorno@github.com> (he/him) * [rvagg](https://github.com/rvagg) - - **Rod Vagg** <> +**Rod Vagg** <rod@vagg.org> * [ryzokuken](https://github.com/ryzokuken) - - **Ujjwal Sharma** <> (he/him) +**Ujjwal Sharma** <ryzokuken@disroot.org> (he/him) +* [saghul](https://github.com/saghul) - +**Saúl Ibarra Corretgé** <saghul@gmail.com> * [santigimeno](https://github.com/santigimeno) - - **Santiago Gimeno** <> +**Santiago Gimeno** <santiago.gimeno@gmail.com> +* [seishun](https://github.com/seishun) - +**Nikolai Vavilov** <vvnicholas@gmail.com> * [shisama](https://github.com/shisama) - - **Masashi Hirano** <> (he/him) +**Masashi Hirano** <shisama07@gmail.com> (he/him) +* [silverwind](https://github.com/silverwind) - +**Roman Reiss** <me@silverwind.io> * [srl295](https://github.com/srl295) - - **Steven R Loomis** <> +**Steven R Loomis** <srloomis@us.ibm.com> * [starkwang](https://github.com/starkwang) - - **Weijia Wang** <> +**Weijia Wang** <starkwang@126.com> * [sxa](https://github.com/sxa) - - **Stewart X Addison** <> (he/him) +**Stewart X Addison** <sxa@redhat.com> (he/him) * [targos](https://github.com/targos) - - **Michaël Zasso** <> (he/him) +**Michaël Zasso** <targos@protonmail.com> (he/him) * [TimothyGu](https://github.com/TimothyGu) - - **Tiancheng "Timothy" Gu** <> (he/him) +**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) * [tniessen](https://github.com/tniessen) - - **Tobias Nießen** <> (he/him) +**Tobias Nießen** <tniessen@tnie.de> * [trivikr](https://github.com/trivikr) - - **Trivikram Kamat** <> +**Trivikram Kamat** <trivikr.dev@gmail.com> * [Trott](https://github.com/Trott) - - **Rich Trott** <> (he/him) +**Rich Trott** <rtrott@gmail.com> (he/him) * [vdeturckheim](https://github.com/vdeturckheim) - - **Vladimir de Turckheim** <> (he/him) -* [VoltrexMaster](https://github.com/VoltrexMaster) - - **Mohammed Keyvanzadeh** <> (he/him) +**Vladimir de Turckheim** <vlad2t@hotmail.com> (he/him) * [watilde](https://github.com/watilde) - - **Daijiro Wachi** <> (he/him) +**Daijiro Wachi** <daijiro.wachi@gmail.com> (he/him) +* [watson](https://github.com/watson) - +**Thomas Watson** <w@tson.dk> * [XadillaX](https://github.com/XadillaX) - - **Khaidi Chu** <> (he/him) +**Khaidi Chu** <i@2333.moe> (he/him) * [yashLadha](https://github.com/yashLadha) - - **Yash Ladha** <> (he/him) +**Yash Ladha** <yash@yashladha.in> (he/him) +* [yhwang](https://github.com/yhwang) - +**Yihong Wang** <yh.wang@ibm.com> +* [yorkie](https://github.com/yorkie) - +**Yorkie Liu** <yorkiefixer@gmail.com> * [yosuke-furukawa](https://github.com/yosuke-furukawa) - - **Yosuke Furukawa** <> +**Yosuke Furukawa** <yosuke.furukawa@gmail.com> * [ZYSzys](https://github.com/ZYSzys) - - **Yongsheng Zhang** <> (he/him) - -
+**Yongsheng Zhang** <zyszys98@gmail.com> (he/him) +* [baradm100](https://github.com/baradm100) - +**Bar Admoni** <admoni.bar1@gmail.com> (he/him) -Emeriti - - - -### Collaborator emeriti +### Collaborator Emeriti * [andrasq](https://github.com/andrasq) - - **Andras** <> +**Andras** <andras@kinvey.com> * [AnnaMag](https://github.com/AnnaMag) - - **Anna M. Kedzierska** <> -* [AndreasMadsen](https://github.com/AndreasMadsen) - - **Andreas Madsen** <> (he/him) +**Anna M. Kedzierska** <anna.m.kedzierska@gmail.com> * [aqrln](https://github.com/aqrln) - - **Alexey Orlenko** <> (he/him) -* [bmeurer](https://github.com/bmeurer) - - **Benedikt Meurer** <> +**Alexey Orlenko** <eaglexrlnk@gmail.com> (he/him) * [bnoordhuis](https://github.com/bnoordhuis) - - **Ben Noordhuis** <> +**Ben Noordhuis** <info@bnoordhuis.nl> * [brendanashworth](https://github.com/brendanashworth) - - **Brendan Ashworth** <> +**Brendan Ashworth** <brendan.ashworth@me.com> * [calvinmetcalf](https://github.com/calvinmetcalf) - - **Calvin Metcalf** <> +**Calvin Metcalf** <calvin.metcalf@gmail.com> * [chrisdickinson](https://github.com/chrisdickinson) - - **Chris Dickinson** <> +**Chris Dickinson** <christopher.s.dickinson@gmail.com> * [claudiorodriguez](https://github.com/claudiorodriguez) - - **Claudio Rodriguez** <> +**Claudio Rodriguez** <cjrodr@yahoo.com> * [DavidCai1993](https://github.com/DavidCai1993) - - **David Cai** <> (he/him) -* [davisjam](https://github.com/davisjam) - - **Jamie Davis** <> (he/him) +**David Cai** <davidcai1993@yahoo.com> (he/him) +* [DerekNonGeneric](https://github.com/DerekNonGeneric) - +**Derek Lewis** <DerekNonGeneric@inf.is> (he/him) * [digitalinfinity](https://github.com/digitalinfinity) - - **Hitesh Kanwathirtha** <> (he/him) +**Hitesh Kanwathirtha** <digitalinfinity@gmail.com> (he/him) * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - - **Robert Jefe Lindstaedt** <> +**Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> * [estliberitas](https://github.com/estliberitas) - - **Alexander Makarenko** <> -* [eugeneo](https://github.com/eugeneo) - - **Eugene Ostroukhov** <> +**Alexander Makarenko** <estliberitas@gmail.com> * [firedfox](https://github.com/firedfox) - - **Daniel Wang** <> -* [Fishrock123](https://github.com/Fishrock123) - - **Jeremiah Senkpiel** <> (he/they) -* [gdams](https://github.com/gdams) - - **George Adams** <> (he/him) -* [geek](https://github.com/geek) - - **Wyatt Preul** <> +**Daniel Wang** <wangyang0123@gmail.com> * [gibfahn](https://github.com/gibfahn) - - **Gibson Fahnestock** <> (he/him) +**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) * [glentiki](https://github.com/glentiki) - - **Glen Keane** <> (he/him) +**Glen Keane** <glenkeane.94@gmail.com> (he/him) * [iarna](https://github.com/iarna) - - **Rebecca Turner** <> +**Rebecca Turner** <me@re-becca.org> * [imran-iq](https://github.com/imran-iq) - - **Imran Iqbal** <> +**Imran Iqbal** <imran@imraniqbal.org> * [imyller](https://github.com/imyller) - - **Ilkka Myller** <> +**Ilkka Myller** <ilkka.myller@nodefield.com> * [isaacs](https://github.com/isaacs) - - **Isaac Z. Schlueter** <> +**Isaac Z. Schlueter** <i@izs.me> * [italoacasas](https://github.com/italoacasas) - - **Italo A. Casas** <> (he/him) +**Italo A. Casas** <me@italoacasas.com> (he/him) * [jasongin](https://github.com/jasongin) - - **Jason Ginchereau** <> +**Jason Ginchereau** <jasongin@microsoft.com> * [jbergstroem](https://github.com/jbergstroem) - - **Johan Bergström** <> -* [jdalton](https://github.com/jdalton) - - **John-David Dalton** <> +**Johan Bergström** <bugs@bergstroem.nu> * [jhamhader](https://github.com/jhamhader) - - **Yuval Brik** <> +**Yuval Brik** <yuval@brik.org.il> * [joshgav](https://github.com/joshgav) - - **Josh Gavant** <> +**Josh Gavant** <josh.gavant@outlook.com> * [julianduque](https://github.com/julianduque) - - **Julian Duque** <> (he/him) +**Julian Duque** <julianduquej@gmail.com> (he/him) * [kfarnung](https://github.com/kfarnung) - - **Kyle Farnung** <> (he/him) +**Kyle Farnung** <kfarnung@microsoft.com> (he/him) * [kunalspathak](https://github.com/kunalspathak) - - **Kunal Pathak** <> -* [lance](https://github.com/lance) - - **Lance Ball** <> (he/him) +**Kunal Pathak** <kunal.pathak@microsoft.com> * [lucamaraschi](https://github.com/lucamaraschi) - - **Luca Maraschi** <> (he/him) +**Luca Maraschi** <luca.maraschi@gmail.com> (he/him) * [lxe](https://github.com/lxe) - - **Aleksey Smolenchuk** <> +**Aleksey Smolenchuk** <lxe@lxe.co> * [maclover7](https://github.com/maclover7) - - **Jon Moss** <> (he/him) -* [mafintosh](https://github.com/mafintosh) - - **Mathias Buus** <> (he/him) +**Jon Moss** <me@jonathanmoss.me> (he/him) * [matthewloring](https://github.com/matthewloring) - - **Matthew Loring** <> +**Matthew Loring** <mattloring@google.com> * [micnic](https://github.com/micnic) - - **Nicu Micleușanu** <> (he/him) +**Nicu Micleușanu** <micnic90@gmail.com> (he/him) * [mikeal](https://github.com/mikeal) - - **Mikeal Rogers** <> -* [misterdjules](https://github.com/misterdjules) - - **Julien Gilli** <> +**Mikeal Rogers** <mikeal.rogers@gmail.com> * [monsanto](https://github.com/monsanto) - - **Christopher Monsanto** <> +**Christopher Monsanto** <chris@monsan.to> * [MoonBall](https://github.com/MoonBall) - - **Chen Gang** <> +**Chen Gang** <gangc.cxy@foxmail.com> * [not-an-aardvark](https://github.com/not-an-aardvark) - - **Teddy Katz** <> (he/him) -* [ofrobots](https://github.com/ofrobots) - - **Ali Ijaz Sheikh** <> (he/him) +**Teddy Katz** <teddy.katz@gmail.com> (he/him) * [Olegas](https://github.com/Olegas) - - **Oleg Elifantiev** <> +**Oleg Elifantiev** <oleg@elifantiev.ru> * [orangemocha](https://github.com/orangemocha) - - **Alexis Campailla** <> +**Alexis Campailla** <orangemocha@nodejs.org> * [othiym23](https://github.com/othiym23) - - **Forrest L Norvell** <> (they/them/themself) +**Forrest L Norvell** <ogd@aoaioxxysz.net> (he/him) * [petkaantonov](https://github.com/petkaantonov) - - **Petka Antonov** <> +**Petka Antonov** <petka_antonov@hotmail.com> * [phillipj](https://github.com/phillipj) - - **Phillip Johnsen** <> +**Phillip Johnsen** <johphi@gmail.com> * [piscisaureus](https://github.com/piscisaureus) - - **Bert Belder** <> +**Bert Belder** <bertbelder@gmail.com> * [pmq20](https://github.com/pmq20) - - **Minqi Pan** <> +**Minqi Pan** <pmq2001@gmail.com> * [princejwesley](https://github.com/princejwesley) - - **Prince John Wesley** <> -* [psmarshall](https://github.com/psmarshall) - - **Peter Marshall** <> (he/him) -* [refack](https://github.com/refack) - - **Refael Ackermann (רפאל פלחי)** <> (he/him/הוא/אתה) +**Prince John Wesley** <princejohnwesley@gmail.com> * [rlidwka](https://github.com/rlidwka) - - **Alex Kocharin** <> +**Alex Kocharin** <alex@kocharin.ru> * [rmg](https://github.com/rmg) - - **Ryan Graham** <> +**Ryan Graham** <r.m.graham@gmail.com> * [robertkowalski](https://github.com/robertkowalski) - - **Robert Kowalski** <> +**Robert Kowalski** <rok@kowalski.gd> * [romankl](https://github.com/romankl) - - **Roman Klauke** <> +**Roman Klauke** <romaaan.git@gmail.com> * [ronkorving](https://github.com/ronkorving) - - **Ron Korving** <> +**Ron Korving** <ron@ronkorving.nl> * [RReverser](https://github.com/RReverser) - - **Ingvar Stepanyan** <> -* [rubys](https://github.com/rubys) - - **Sam Ruby** <> -* [saghul](https://github.com/saghul) - - **Saúl Ibarra Corretgé** <> +**Ingvar Stepanyan** <me@rreverser.com> * [sam-github](https://github.com/sam-github) - - **Sam Roberts** <> +**Sam Roberts** <vieuxtech@gmail.com> * [sebdeckers](https://github.com/sebdeckers) - - **Sebastiaan Deckers** <> -* [seishun](https://github.com/seishun) - - **Nikolai Vavilov** <> +**Sebastiaan Deckers** <sebdeckers83@gmail.com> * [shigeki](https://github.com/shigeki) - - **Shigeki Ohtsu** <> (he/him) -* [silverwind](https://github.com/silverwind) - - **Roman Reiss** <> +**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) * [stefanmb](https://github.com/stefanmb) - - **Stefan Budeanu** <> +**Stefan Budeanu** <stefan@budeanu.com> * [tellnes](https://github.com/tellnes) - - **Christian Tellnes** <> +**Christian Tellnes** <christian@tellnes.no> * [thefourtheye](https://github.com/thefourtheye) - - **Sakthipriyan Vairamani** <> (he/him) +**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) * [thlorenz](https://github.com/thlorenz) - - **Thorsten Lorenz** <> +**Thorsten Lorenz** <thlorenz@gmx.de> * [trevnorris](https://github.com/trevnorris) - - **Trevor Norris** <> +**Trevor Norris** <trev.norris@gmail.com> * [tunniclm](https://github.com/tunniclm) - - **Mike Tunnicliffe** <> +**Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com> * [vkurchatkin](https://github.com/vkurchatkin) - - **Vladimir Kurchatkin** <> +**Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> * [vsemozhetbyt](https://github.com/vsemozhetbyt) - - **Vse Mozhet Byt** <> (he/him) -* [watson](https://github.com/watson) - - **Thomas Watson** <> +**Vse Mozhet Byt** <vsemozhetbyt@gmail.com> (he/him) * [whitlockjc](https://github.com/whitlockjc) - - **Jeremy Whitlock** <> -* [yhwang](https://github.com/yhwang) - - **Yihong Wang** <> -* [yorkie](https://github.com/yorkie) - - **Yorkie Liu** <> - -
- +**Jeremy Whitlock** <jwhitlock@apache.org> -Collaborators follow the [Collaborator Guide](./doc/contributing/collaborator-guide.md) in +Collaborators follow the [Collaborator Guide](./doc/guides/collaborator-guide.md) in maintaining the Node.js project. ### Triagers -* [Ayase-252](https://github.com/Ayase-252) - - **Qingyu Deng** <> -* [himadriganguly](https://github.com/himadriganguly) - - **Himadri Ganguly** <> (he/him) -* [iam-frankqiu](https://github.com/iam-frankqiu) - - **Frank Qiu** <> (he/him) -* [marsonya](https://github.com/marsonya) - - **Akhil Marsonya** <> (he/him) -* [Mesteery](https://github.com/Mesteery) - - **Mestery** <> (he/him) * [PoojaDurgad](https://github.com/PoojaDurgad) - - **Pooja Durgad** <> +**Pooja Durgad** <Pooja.D.P@ibm.com> * [RaisinTen](https://github.com/RaisinTen) - - **Darshan Sen** <> -* [VoltrexMaster](https://github.com/VoltrexMaster) - - **Mohammed Keyvanzadeh** <> (he/him) +**Darshan Sen** <raisinten@gmail.com> -### Release keys +### Release Keys Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): -* **Beth Griggs** <> - `4ED778F539E3634C779C87C6D7062848A1AB005C` -* **Colin Ihrig** <> - `94AE36675C464D64BAFA68DD7434390BDBE9B9C5` -* **Danielle Adams** <> - `74F12602B6F1C4E913FAA37AD3A89613643B6201` -* **James M Snell** <> - `71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` -* **Michaël Zasso** <> - `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` -* **Myles Borins** <> - `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **Richard Lau** <> - `C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` -* **Rod Vagg** <> - `DD8F2338BAE7501E3DD5AC78C273792F7D83545D` -* **Ruben Bridgewater** <> - `A48C2BEE680E841632CD4E44F07496B3EB3C1762` -* **Ruy Adorno** <> - `108F52B48DB57BB0CC439B2997B01419BD92F80A` -* **Shelley Vohr** <> - `B9E2F5981AA6E0CD28160D9FF13993A75599653C` +* **Beth Griggs** <bgriggs@redhat.com> +`4ED778F539E3634C779C87C6D7062848A1AB005C` +* **Colin Ihrig** <cjihrig@gmail.com> +`94AE36675C464D64BAFA68DD7434390BDBE9B9C5` +* **Danielle Adams** <adamzdanielle@gmail.com> +`74F12602B6F1C4E913FAA37AD3A89613643B6201` +* **James M Snell** <jasnell@keybase.io> +`71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` +* **Michaël Zasso** <targos@protonmail.com> +`8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` +* **Myles Borins** <myles.borins@gmail.com> +`C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` +* **Richard Lau** <rlau@redhat.com> +`C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` +* **Rod Vagg** <rod@vagg.org> +`DD8F2338BAE7501E3DD5AC78C273792F7D83545D` +* **Ruben Bridgewater** <ruben@bridgewater.de> +`A48C2BEE680E841632CD4E44F07496B3EB3C1762` +* **Ruy Adorno** <ruyadorno@hotmail.com> +`108F52B48DB57BB0CC439B2997B01419BD92F80A` +* **Shelley Vohr** <shelley.vohr@gmail.com> +`B9E2F5981AA6E0CD28160D9FF13993A75599653C` To import the full set of trusted release keys (including subkeys possibly used to sign releases): @@ -704,67 +641,39 @@ gpg --keyserver pool.sks-keyservers.net --recv-keys B9E2F5981AA6E0CD28160D9FF139 See the section above on [Verifying Binaries](#verifying-binaries) for how to use these keys to verify a downloaded file. -
- -Other keys used to sign some previous releases - -* **Chris Dickinson** <> - `9554F04D7259F04124DE6B476D5A82AC7E37093B` -* **Danielle Adams** <> - `1C050899334244A8AF75E53792EF661D867B9DFA` -* **Evan Lucas** <> - `B9AE9905FFD7803F25714661B63B535A4C206CA9` -* **Gibson Fahnestock** <> - `77984A986EBC2AA786BC0F66B01FBB92821C587A` -* **Isaac Z. Schlueter** <> - `93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` -* **Italo A. Casas** <> - `56730D5401028683275BD23C23EFEFE93C4CFFFE` -* **Jeremiah Senkpiel** <> - `FD3A5288F042B6850C66B31F09FE44734EB7990E` -* **Julien Gilli** <> - `114F43EE0176B71C7BC219DD50A3051F888C628D` -* **Timothy J Fontaine** <> - `7937DFD2AB06298B2293C3187D33FF9D0246406D` - -
- -### Security release stewards - -When possible, the commitment to take slots in the -security release steward rotation is made by companies in order -to ensure individuals who act as security stewards have the -support and recognition from their employer to be able to -prioritize security releases. Security release stewards manage security -releases on a rotation basis as outlined in the -[security release process](./doc/contributing/security-release-process.md). - -* Datadog - * [bengl](https://github.com/bengl) - - **Bryan English** <> (he/him) - * [vdeturckheim](https://github.com/vdeturckheim) - - **Vladimir de Turckheim** <> (he/him) -* NearForm - * [mcollina](https://github.com/mcollina) - - **Matteo Collina** <> (he/him) -* Red Hat and IBM - * [joesepi](https://github.com/joesepi)- - **Joe Sepi** <> (he/him) - * [mhdawson](https://github.com/mhdawson) - - **Michael Dawson** <> (he/him) +Other keys used to sign some previous releases: + +* **Chris Dickinson** <christopher.s.dickinson@gmail.com> +`9554F04D7259F04124DE6B476D5A82AC7E37093B` +* **Danielle Adams** <adamzdanielle@gmail.com> +`1C050899334244A8AF75E53792EF661D867B9DFA` +* **Evan Lucas** <evanlucas@me.com> +`B9AE9905FFD7803F25714661B63B535A4C206CA9` +* **Gibson Fahnestock** <gibfahn@gmail.com> +`77984A986EBC2AA786BC0F66B01FBB92821C587A` +* **Isaac Z. Schlueter** <i@izs.me> +`93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` +* **Italo A. Casas** <me@italoacasas.com> +`56730D5401028683275BD23C23EFEFE93C4CFFFE` +* **Jeremiah Senkpiel** <fishrock@keybase.io> +`FD3A5288F042B6850C66B31F09FE44734EB7990E` +* **Julien Gilli** <jgilli@fastmail.fm> +`114F43EE0176B71C7BC219DD50A3051F888C628D` +* **Timothy J Fontaine** <tjfontaine@gmail.com> +`7937DFD2AB06298B2293C3187D33FF9D0246406D` ## License Node.js is available under the [MIT license](https://opensource.org/licenses/MIT). Node.js also includes external libraries that are available under a variety of licenses. See -[LICENSE](https://github.com/nodejs/node/blob/HEAD/LICENSE) for the full +[LICENSE](https://github.com/nodejs/node/blob/master/LICENSE) for the full license text. -[Code of Conduct]: https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md +[Code of Conduct]: https://github.com/nodejs/admin/blob/master/CODE_OF_CONDUCT.md [Contributing to the project]: CONTRIBUTING.md [Node.js Website]: https://nodejs.org/ [OpenJS Foundation]: https://openjsf.org/ -[Strategic initiatives]: doc/contributing/strategic-initiatives.md -[Technical values and prioritization]: doc/contributing/technical-values.md -[Working Groups]: https://github.com/nodejs/TSC/blob/HEAD/WORKING_GROUPS.md +[Strategic Initiatives]: https://github.com/nodejs/TSC/blob/master/Strategic-Initiatives.md +[Technical values and prioritization]: doc/guides/technical-values.md +[Working Groups]: https://github.com/nodejs/TSC/blob/master/WORKING_GROUPS.md diff --git a/doc/api/cluster.md b/doc/api/cluster.md index ac199c34a3755a..6c832943ff9886 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -577,17 +577,12 @@ added: v0.9.12 * `signal` {string} Name of the kill signal to send to the worker process. **Default:** `'SIGTERM'` -This function will kill the worker. In the primary, it does this -by disconnecting the `worker.process`, and once disconnected, killing -with `signal`. In the worker, it does it by disconnecting the channel, -and then exiting with code `0`. +This function will kill the worker. In the master, it does this by disconnecting +the `worker.process`, and once disconnected, killing with `signal`. In the +worker, it does it by killing the process with the given `signal`. -Because `kill()` attempts to gracefully disconnect the worker process, it is -susceptible to waiting indefinitely for the disconnect to complete. For example, -if the worker enters an infinite loop, a graceful disconnect will never occur. -If the graceful disconnect behavior is not needed, use `worker.process.kill()`. - -Causes `.exitedAfterDisconnect` to be set. +The `kill()` function kills the worker process without waiting for a graceful +disconnect, it have the same behavior of `worker.process.kill()`. This method is aliased as `worker.destroy()` for backward compatibility. diff --git a/lib/internal/cluster/primary.js b/lib/internal/cluster/primary.js index 69e97eb8a6837f..ed5b06d798868c 100644 --- a/lib/internal/cluster/primary.js +++ b/lib/internal/cluster/primary.js @@ -374,14 +374,7 @@ Worker.prototype.disconnect = function() { Worker.prototype.destroy = function(signo) { const proc = this.process; + const signal = signo || 'SIGTERM'; - signo = signo || 'SIGTERM'; - - if (this.isConnected()) { - this.once('disconnect', () => proc.kill(signo)); - this.disconnect(); - return; - } - - proc.kill(signo); + proc.kill(signal); }; diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js new file mode 100644 index 00000000000000..902b62337533b4 --- /dev/null +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -0,0 +1,96 @@ +// Copyright Joyent, Inc. and other Node 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. + +'use strict'; +// test-cluster-worker-kill-signal.js +// verifies that when we're killing a worker using Worker.prototype.kill +// and the worker's process was killed with the given signal (SIGKILL) + + +const common = require('../common'); +const assert = require('assert'); +const cluster = require('cluster'); + +if (cluster.isWorker) { + const http = require('http'); + const server = http.Server(() => { }); + + server.once('listening', common.mustCall(() => { })); + server.listen(0, '127.0.0.1'); + +} else if (cluster.isMaster) { + const KILL_SIGNAL = 'SIGKILL'; + const expected_results = { + worker_emitDisconnect: [1, "the worker did not emit 'disconnect'"], + worker_emitExit: [1, "the worker did not emit 'exit'"], + worker_state: ['disconnected', 'the worker state is incorrect'], + worker_exitedAfter: [false, 'the .exitedAfterDisconnect flag is incorrect'], + worker_died: [true, 'the worker is still running'], + worker_exitCode: [null, 'the worker exited w/ incorrect exitCode'], + worker_signalCode: [KILL_SIGNAL, + 'the worker exited w/ incorrect signalCode'] + }; + const results = { + worker_emitDisconnect: 0, + worker_emitExit: 0 + }; + + + // start worker + const worker = cluster.fork(); + + // When the worker is up and running, kill it + worker.once('listening', common.mustCall(() => { + worker.kill(KILL_SIGNAL); + })); + + // Check worker events and properties + worker.on('disconnect', common.mustCall(() => { + results.worker_emitDisconnect += 1; + results.worker_exitedAfter = worker.exitedAfterDisconnect; + results.worker_state = worker.state; + })); + + // Check that the worker died + worker.once('exit', common.mustCall((exitCode, signalCode) => { + results.worker_exitCode = exitCode; + results.worker_signalCode = signalCode; + results.worker_emitExit += 1; + results.worker_died = !common.isAlive(worker.process.pid); + })); + + process.on('exit', () => { + checkResults(expected_results, results); + }); +} + +// Some helper functions ... + +function checkResults(expected_results, results) { + for (const k in expected_results) { + const actual = results[k]; + const expected = expected_results[k]; + + assert.strictEqual( + actual, expected && expected.length ? expected[0] : expected, + `${expected[1] || ''} [expected: ${expected[0]} / actual: ${actual}]`); + } +} From 4fb861a5efddfc5c7b529006739a8d127e01b872 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 16:45:48 +0300 Subject: [PATCH 02/13] cluster: make kill to be just process.kill Make `Worker.prototype.kill` to be just process.kill without preforming graceful disconnect beforehand. Refs: https://github.com/nodejs/node/issues/33715 --- doc/api/cluster.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/api/cluster.md b/doc/api/cluster.md index 6c832943ff9886..d3c06585029b0a 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -579,12 +579,12 @@ added: v0.9.12 This function will kill the worker. In the master, it does this by disconnecting the `worker.process`, and once disconnected, killing with `signal`. In the -worker, it does it by killing the process with the given `signal`. +worker, it does it by killing the process with `signal`. The `kill()` function kills the worker process without waiting for a graceful disconnect, it have the same behavior of `worker.process.kill()`. -This method is aliased as `worker.destroy()` for backward compatibility. +This method is aliased as `worker.destroy()` for backwards compatibility. In a worker, `process.kill()` exists, but it is not this function; it is [`kill()`][]. From fba0315b567bf1fc779185ac1d351d3a3c78045d Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 18:01:04 +0300 Subject: [PATCH 03/13] Remove from README --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 58442bc444d054..563c5a54118f07 100644 --- a/README.md +++ b/README.md @@ -451,8 +451,6 @@ For information about the governance of the Node.js project, see **Yosuke Furukawa** <yosuke.furukawa@gmail.com> * [ZYSzys](https://github.com/ZYSzys) - **Yongsheng Zhang** <zyszys98@gmail.com> (he/him) -* [baradm100](https://github.com/baradm100) - -**Bar Admoni** <admoni.bar1@gmail.com> (he/him) ### Collaborator Emeriti From c1dc038126c895106615714de9f725c7799a3252 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 18:34:22 +0300 Subject: [PATCH 04/13] Improve test-cluster-worker-kill-signal readbility --- .../test-cluster-worker-kill-signal.js | 75 ++++++++++++------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js index 902b62337533b4..3ff535802fed95 100644 --- a/test/parallel/test-cluster-worker-kill-signal.js +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -30,6 +30,7 @@ const assert = require('assert'); const cluster = require('cluster'); if (cluster.isWorker) { + // Make the worker run something const http = require('http'); const server = http.Server(() => { }); @@ -38,23 +39,42 @@ if (cluster.isWorker) { } else if (cluster.isMaster) { const KILL_SIGNAL = 'SIGKILL'; - const expected_results = { - worker_emitDisconnect: [1, "the worker did not emit 'disconnect'"], - worker_emitExit: [1, "the worker did not emit 'exit'"], - worker_state: ['disconnected', 'the worker state is incorrect'], - worker_exitedAfter: [false, 'the .exitedAfterDisconnect flag is incorrect'], - worker_died: [true, 'the worker is still running'], - worker_exitCode: [null, 'the worker exited w/ incorrect exitCode'], - worker_signalCode: [KILL_SIGNAL, - 'the worker exited w/ incorrect signalCode'] + const expectedResults = { + emitDisconnect: { + value: 1, + message: "the worker did not emit 'disconnect'" + }, + emitExit: { + value: 1, + message: "the worker did not emit 'exit'" + }, + state: { + value: 'disconnected', + message: 'the worker state is incorrect' + }, + exitedAfter: { + value: false, + message: 'the .exitedAfterDisconnect flag is incorrect' + }, + died: { + value: true, + message: 'the worker is still running' + }, + exitCode: { + value: null, + message: 'the worker exited w/ incorrect exitCode' + }, + signalCode: { + value: KILL_SIGNAL, + message: 'the worker exited w/ incorrect signalCode' + }, }; const results = { - worker_emitDisconnect: 0, - worker_emitExit: 0 + emitDisconnect: 0, + emitExit: 0 }; - - // start worker + // Start worker const worker = cluster.fork(); // When the worker is up and running, kill it @@ -64,33 +84,30 @@ if (cluster.isWorker) { // Check worker events and properties worker.on('disconnect', common.mustCall(() => { - results.worker_emitDisconnect += 1; - results.worker_exitedAfter = worker.exitedAfterDisconnect; - results.worker_state = worker.state; + results.emitDisconnect += 1; + results.exitedAfter = worker.exitedAfterDisconnect; + results.state = worker.state; })); // Check that the worker died worker.once('exit', common.mustCall((exitCode, signalCode) => { - results.worker_exitCode = exitCode; - results.worker_signalCode = signalCode; - results.worker_emitExit += 1; - results.worker_died = !common.isAlive(worker.process.pid); + results.exitCode = exitCode; + results.signalCode = signalCode; + results.emitExit += 1; + results.died = !common.isAlive(worker.process.pid); })); process.on('exit', () => { - checkResults(expected_results, results); + checkResults(expectedResults, results); }); } -// Some helper functions ... - -function checkResults(expected_results, results) { - for (const k in expected_results) { - const actual = results[k]; - const expected = expected_results[k]; +function checkResults(expectedResults, results) { + for (const [key, expected] of Object.entries(expectedResults)) { + const actual = results[key]; assert.strictEqual( - actual, expected && expected.length ? expected[0] : expected, - `${expected[1] || ''} [expected: ${expected[0]} / actual: ${actual}]`); + actual, expected.value, + `${expected.message} [expected: ${expected.value} / actual: ${actual}]`); } } From 60d10ca0c098bc8ee641ea90cd972b387ddbdb03 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 18:57:52 +0300 Subject: [PATCH 05/13] Addressing @mscdex comments --- .../test-cluster-worker-kill-signal.js | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js index 3ff535802fed95..a330954bcf46dc 100644 --- a/test/parallel/test-cluster-worker-kill-signal.js +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -91,23 +91,20 @@ if (cluster.isWorker) { // Check that the worker died worker.once('exit', common.mustCall((exitCode, signalCode) => { + // Setting the results results.exitCode = exitCode; results.signalCode = signalCode; results.emitExit += 1; results.died = !common.isAlive(worker.process.pid); - })); - - process.on('exit', () => { - checkResults(expectedResults, results); - }); -} -function checkResults(expectedResults, results) { - for (const [key, expected] of Object.entries(expectedResults)) { - const actual = results[key]; + // Checking if the results are as expected + for (const [key, expected] of Object.entries(expectedResults)) { + const actual = results[key]; - assert.strictEqual( - actual, expected.value, - `${expected.message} [expected: ${expected.value} / actual: ${actual}]`); - } + assert.strictEqual( + actual, expected.value, + `${expected.message} [expected: ${expected.value} / actual: ${actual}]` + ); + } + })); } From 13902f2ff5411d520e15f6d05685275f239039a9 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 19:40:57 +0300 Subject: [PATCH 06/13] Moved the assertion to the when the cluster is exiting --- test/parallel/test-cluster-worker-kill-signal.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js index a330954bcf46dc..1d52c8c89ce8fc 100644 --- a/test/parallel/test-cluster-worker-kill-signal.js +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -96,7 +96,9 @@ if (cluster.isWorker) { results.signalCode = signalCode; results.emitExit += 1; results.died = !common.isAlive(worker.process.pid); + })); + cluster.on('exit', common.mustCall(() => { // Checking if the results are as expected for (const [key, expected] of Object.entries(expectedResults)) { const actual = results[key]; From 9af5aca09549f224e50107fd7c433e165b4b9d18 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sat, 11 Jul 2020 19:42:03 +0300 Subject: [PATCH 07/13] Adding numberOfWorkers assertion --- test/parallel/test-cluster-worker-kill-signal.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js index 1d52c8c89ce8fc..bb68c96fb6b9c0 100644 --- a/test/parallel/test-cluster-worker-kill-signal.js +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -68,6 +68,10 @@ if (cluster.isWorker) { value: KILL_SIGNAL, message: 'the worker exited w/ incorrect signalCode' }, + numberOfWorkers: { + value: 0, + message: 'the number of workers running is wrong' + }, }; const results = { emitDisconnect: 0, @@ -96,6 +100,7 @@ if (cluster.isWorker) { results.signalCode = signalCode; results.emitExit += 1; results.died = !common.isAlive(worker.process.pid); + results.numberOfWorkers = Object.keys(cluster.workers).length; })); cluster.on('exit', common.mustCall(() => { From 84b8cf0cad056d1721fe26ffbe11fc7329c71fdf Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sun, 12 Jul 2020 13:56:14 +0300 Subject: [PATCH 08/13] Addressing @bnoordhuis comments --- doc/api/cluster.md | 6 +++--- .../test-cluster-worker-kill-signal.js | 21 ------------------- 2 files changed, 3 insertions(+), 24 deletions(-) diff --git a/doc/api/cluster.md b/doc/api/cluster.md index d3c06585029b0a..f6a478a614d19c 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -452,8 +452,8 @@ added: v6.0.0 * {boolean} -This property is `true` if the worker exited due to `.kill()` or -`.disconnect()`. If the worker exited any other way, it is `false`. If the +This property is `true` if the worker exited due to `.disconnect()`. +If the worker exited any other way, it is `false`. If the worker has not exited, it is `undefined`. The boolean [`worker.exitedAfterDisconnect`][] allows distinguishing between @@ -582,7 +582,7 @@ the `worker.process`, and once disconnected, killing with `signal`. In the worker, it does it by killing the process with `signal`. The `kill()` function kills the worker process without waiting for a graceful -disconnect, it have the same behavior of `worker.process.kill()`. +disconnect, it has the same behavior as `worker.process.kill()`. This method is aliased as `worker.destroy()` for backwards compatibility. diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js index bb68c96fb6b9c0..d9d66b93017958 100644 --- a/test/parallel/test-cluster-worker-kill-signal.js +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -1,24 +1,3 @@ -// Copyright Joyent, Inc. and other Node 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. - 'use strict'; // test-cluster-worker-kill-signal.js // verifies that when we're killing a worker using Worker.prototype.kill From 7de8040e7cbde3a4856617cb5925b7432f7675c7 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Sun, 12 Jul 2020 14:25:19 +0300 Subject: [PATCH 09/13] Make the assersion in the test and not in the end as suggested by @bnoordhuis --- .../test-cluster-worker-kill-signal.js | 71 ++++--------------- 1 file changed, 12 insertions(+), 59 deletions(-) diff --git a/test/parallel/test-cluster-worker-kill-signal.js b/test/parallel/test-cluster-worker-kill-signal.js index d9d66b93017958..2f1a8ae991dde4 100644 --- a/test/parallel/test-cluster-worker-kill-signal.js +++ b/test/parallel/test-cluster-worker-kill-signal.js @@ -18,44 +18,6 @@ if (cluster.isWorker) { } else if (cluster.isMaster) { const KILL_SIGNAL = 'SIGKILL'; - const expectedResults = { - emitDisconnect: { - value: 1, - message: "the worker did not emit 'disconnect'" - }, - emitExit: { - value: 1, - message: "the worker did not emit 'exit'" - }, - state: { - value: 'disconnected', - message: 'the worker state is incorrect' - }, - exitedAfter: { - value: false, - message: 'the .exitedAfterDisconnect flag is incorrect' - }, - died: { - value: true, - message: 'the worker is still running' - }, - exitCode: { - value: null, - message: 'the worker exited w/ incorrect exitCode' - }, - signalCode: { - value: KILL_SIGNAL, - message: 'the worker exited w/ incorrect signalCode' - }, - numberOfWorkers: { - value: 0, - message: 'the number of workers running is wrong' - }, - }; - const results = { - emitDisconnect: 0, - emitExit: 0 - }; // Start worker const worker = cluster.fork(); @@ -67,30 +29,21 @@ if (cluster.isWorker) { // Check worker events and properties worker.on('disconnect', common.mustCall(() => { - results.emitDisconnect += 1; - results.exitedAfter = worker.exitedAfterDisconnect; - results.state = worker.state; - })); + assert.strictEqual(worker.exitedAfterDisconnect, false); + assert.strictEqual(worker.state, 'disconnected'); + }, 1)); // Check that the worker died worker.once('exit', common.mustCall((exitCode, signalCode) => { - // Setting the results - results.exitCode = exitCode; - results.signalCode = signalCode; - results.emitExit += 1; - results.died = !common.isAlive(worker.process.pid); - results.numberOfWorkers = Object.keys(cluster.workers).length; - })); + const isWorkerProcessStillAlive = common.isAlive(worker.process.pid); + const numOfRunningWorkers = Object.keys(cluster.workers).length; - cluster.on('exit', common.mustCall(() => { - // Checking if the results are as expected - for (const [key, expected] of Object.entries(expectedResults)) { - const actual = results[key]; + assert.strictEqual(exitCode, null); + assert.strictEqual(signalCode, KILL_SIGNAL); + assert.strictEqual(isWorkerProcessStillAlive, false); + assert.strictEqual(numOfRunningWorkers, 0); + }, 1)); - assert.strictEqual( - actual, expected.value, - `${expected.message} [expected: ${expected.value} / actual: ${actual}]` - ); - } - })); + // Check if the cluster was killed as well + cluster.on('exit', common.mustCall(() => {}, 1)); } From 7f938072f96818c981b6c5cf38d91c36639d2f36 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Thu, 18 Mar 2021 21:25:15 +0200 Subject: [PATCH 10/13] Align terminology --- doc/api/cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/cluster.md b/doc/api/cluster.md index f6a478a614d19c..81e55b1a617057 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -577,7 +577,7 @@ added: v0.9.12 * `signal` {string} Name of the kill signal to send to the worker process. **Default:** `'SIGTERM'` -This function will kill the worker. In the master, it does this by disconnecting +This function will kill the worker. In the primary worker, it does this by disconnecting the `worker.process`, and once disconnected, killing with `signal`. In the worker, it does it by killing the process with `signal`. From 616a414beda50aa2daf11b4beff7e179d4fabf6f Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Thu, 18 Mar 2021 21:30:47 +0200 Subject: [PATCH 11/13] Fix markdown lint --- doc/api/cluster.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/api/cluster.md b/doc/api/cluster.md index 81e55b1a617057..c7ad13a206f1ea 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -577,9 +577,9 @@ added: v0.9.12 * `signal` {string} Name of the kill signal to send to the worker process. **Default:** `'SIGTERM'` -This function will kill the worker. In the primary worker, it does this by disconnecting -the `worker.process`, and once disconnected, killing with `signal`. In the -worker, it does it by killing the process with `signal`. +This function will kill the worker. In the primary worker, it does this by +disconnecting the `worker.process`, and once disconnected, killing with +`signal`. In the worker, it does it by killing the process with `signal`. The `kill()` function kills the worker process without waiting for a graceful disconnect, it has the same behavior as `worker.process.kill()`. From 080d8d48abd9318cd9647c59f767ea7bec57a36e Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Thu, 18 Mar 2021 21:36:23 +0200 Subject: [PATCH 12/13] Re-fix markdown lint --- doc/api/cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/cluster.md b/doc/api/cluster.md index c7ad13a206f1ea..0a5af1bcf27cda 100644 --- a/doc/api/cluster.md +++ b/doc/api/cluster.md @@ -578,7 +578,7 @@ added: v0.9.12 process. **Default:** `'SIGTERM'` This function will kill the worker. In the primary worker, it does this by -disconnecting the `worker.process`, and once disconnected, killing with +disconnecting the `worker.process`, and once disconnected, killing with `signal`. In the worker, it does it by killing the process with `signal`. The `kill()` function kills the worker process without waiting for a graceful From 99b7db71bfabb15d03728b4f4144d0b73a904357 Mon Sep 17 00:00:00 2001 From: Bar Admoni Date: Fri, 4 Feb 2022 14:00:14 +0200 Subject: [PATCH 13/13] Revert README.md --- README.md | 713 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 403 insertions(+), 310 deletions(-) diff --git a/README.md b/README.md index 563c5a54118f07..def1132051456b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ +

-Node.js is an open-source, cross-platform, JavaScript runtime environment. It -executes JavaScript code outside of a browser. For more information on using -Node.js, see the [Node.js Website][]. +Node.js is an open-source, cross-platform, JavaScript runtime environment. + +For information on using Node.js, see the [Node.js Website][]. The Node.js project uses an [open governance model](./GOVERNANCE.md). The [OpenJS Foundation][] provides support for the project. -**This project is bound by a [Code of Conduct][].** +**This project has a [Code of Conduct][].** -# Table of Contents +# Table of contents * [Support](#support) -* [Release Types](#release-types) +* [Release types](#release-types) * [Download](#download) - * [Current and LTS Releases](#current-and-lts-releases) - * [Nightly Releases](#nightly-releases) - * [API Documentation](#api-documentation) - * [Verifying Binaries](#verifying-binaries) + * [Current and LTS releases](#current-and-lts-releases) + * [Nightly releases](#nightly-releases) + * [API documentation](#api-documentation) + * [Verifying binaries](#verifying-binaries) * [Building Node.js](#building-nodejs) * [Security](#security) * [Contributing to Node.js](#contributing-to-nodejs) -* [Current Project Team Members](#current-project-team-members) +* [Current project team members](#current-project-team-members) * [TSC (Technical Steering Committee)](#tsc-technical-steering-committee) * [Collaborators](#collaborators) - * [Release Keys](#release-keys) + * [Triagers](#triagers) + * [Release keys](#release-keys) * [License](#license) ## Support @@ -41,16 +43,16 @@ The Node.js project uses an [open governance model](./GOVERNANCE.md). The Looking for help? Check out the [instructions for getting support](.github/SUPPORT.md). -## Release Types +## Release types * **Current**: Under active development. Code for the Current release is in the branch for its major version number (for example, - [v10.x](https://github.com/nodejs/node/tree/v10.x)). Node.js releases a new + [v15.x](https://github.com/nodejs/node/tree/v15.x)). Node.js releases a new major version every 6 months, allowing for breaking changes. This happens in 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, @@ -69,29 +71,31 @@ For more information, see the Binaries, installers, and source tarballs are available at . -#### Current and LTS Releases +#### Current and LTS releases + The [latest](https://nodejs.org/download/release/latest/) directory is an alias for the latest Current release. The latest-_codename_ directory is an alias for the latest release from an LTS line. For example, the -[latest-carbon](https://nodejs.org/download/release/latest-carbon/) directory -contains the latest Carbon (Node.js 8) release. +[latest-fermium](https://nodejs.org/download/release/latest-fermium/) directory +contains the latest Fermium (Node.js 14) release. + +#### Nightly releases -#### Nightly Releases Each directory name and filename contains a date (in UTC) and the commit SHA at the HEAD of the release. -#### API Documentation +#### API documentation Documentation for the latest Current release is at . Version-specific documentation is available in each release directory in the _docs_ subdirectory. Version-specific documentation is also at . -### Verifying Binaries +### Verifying binaries Download directories contain a `SHASUMS256.txt` file with SHA checksums for the files. @@ -111,7 +115,7 @@ $ grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - For Current and LTS, the GPG detached signature of `SHASUMS256.txt` is in `SHASUMS256.txt.sig`. You can use it with `gpg` to verify the integrity of -`SHASUM256.txt`. You will first need to import +`SHASUMS256.txt`. You will first need to import [the GPG keys of individuals authorized to create releases](#release-keys). To import the keys: @@ -144,480 +148,541 @@ For information on reporting security vulnerabilities in Node.js, see * [Contributing to the project][] * [Working Groups][] -* [Strategic Initiatives][] +* [Strategic initiatives][] * [Technical values and prioritization][] -## Current Project Team Members +## Current project team members For information about the governance of the Node.js project, see [GOVERNANCE.md](./GOVERNANCE.md). + + ### TSC (Technical Steering Committee) + +* [aduh95](https://github.com/aduh95) - + **Antoine du Hamel** <> (he/him) * [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) + **Anatoli Papirovski** <> (he/him) * [BethGriggs](https://github.com/BethGriggs) - -**Beth Griggs** <bgriggs@redhat.com> (she/her) + **Beth Griggs** <> (she/her) * [BridgeAR](https://github.com/BridgeAR) - -**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) + **Ruben Bridgewater** <> (he/him) * [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) + **Сковорода Никита Андреевич** <> (he/him) * [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> (he/him) -* [codebytere](https://github.com/codebytere) - -**Shelley Vohr** <codebytere@gmail.com> (she/her) -* [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) + **Colin Ihrig** <> (he/him) +* [danielleadams](https://github.com/danielleadams) - + **Danielle Adams** <> (she/her) * [fhinkel](https://github.com/fhinkel) - -**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) -* [gabrielschulhof](https://github.com/gabrielschulhof) - -**Gabriel Schulhof** <gabriel.schulhof@intel.com> + **Franziska Hinkelmann** <> (she/her) * [gireeshpunathil](https://github.com/gireeshpunathil) - -**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) + **Gireesh Punathil** <> (he/him) * [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> (he/him) + **James M Snell** <> (he/him) * [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) + **Joyee Cheung** <> (she/her) * [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> (he/him) + **Matteo Collina** <> (he/him) * [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <midawson@redhat.com> (he/him) + **Michael Dawson** <> (he/him) * [mmarchini](https://github.com/mmarchini) - -**Mary Marchini** <oss@mmarchini.me> (she/her) + **Mary Marchini** <> (she/her) * [MylesBorins](https://github.com/MylesBorins) - -**Myles Borins** <myles.borins@gmail.com> (he/him) + **Myles Borins** <> (he/him) +* [RaisinTen](https://github.com/RaisinTen) - + **Darshan Sen** <> (he/him) +* [richardlau](https://github.com/richardlau) - + **Richard Lau** <> +* [ronag](https://github.com/ronag) - + **Robert Nagy** <> * [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> (he/him) + **Michaël Zasso** <> (he/him) * [tniessen](https://github.com/tniessen) - -**Tobias Nießen** <tniessen@tnie.de> + **Tobias Nießen** <> (he/him) * [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> (he/him) + **Rich Trott** <> (he/him) -### TSC Emeriti +
+ +Emeriti + +### TSC emeriti * [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> (she/her) + **Anna Henningsen** <> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> + **Ben Noordhuis** <> * [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> + **Chris Dickinson** <> +* [codebytere](https://github.com/codebytere) - + **Shelley Vohr** <> (she/her) +* [danbev](https://github.com/danbev) - + **Daniel Bevenius** <> (he/him) * [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) + **Evan Lucas** <> (he/him) * [Fishrock123](https://github.com/Fishrock123) - -**Jeremiah Senkpiel** <fishrock123@rocketmail.com> (he/they) + **Jeremiah Senkpiel** <> (he/they) +* [gabrielschulhof](https://github.com/gabrielschulhof) - + **Gabriel Schulhof** <> * [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) + **Gibson Fahnestock** <> (he/him) * [indutny](https://github.com/indutny) - -**Fedor Indutny** <fedor.indutny@gmail.com> + **Fedor Indutny** <> * [isaacs](https://github.com/isaacs) - -**Isaac Z. Schlueter** <i@izs.me> + **Isaac Z. Schlueter** <> * [joshgav](https://github.com/joshgav) - -**Josh Gavant** <josh.gavant@outlook.com> + **Josh Gavant** <> * [mscdex](https://github.com/mscdex) - -**Brian White** <mscdex@mscdex.net> + **Brian White** <> * [nebrius](https://github.com/nebrius) - -**Bryan Hughes** <bryan@nebri.us> + **Bryan Hughes** <> * [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) + **Ali Ijaz Sheikh** <> (he/him) * [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> + **Alexis Campailla** <> * [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> + **Bert Belder** <> * [rvagg](https://github.com/rvagg) - -**Rod Vagg** <r@va.gg> + **Rod Vagg** <> * [sam-github](https://github.com/sam-github) - -**Sam Roberts** <vieuxtech@gmail.com> + **Sam Roberts** <> * [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) + **Shigeki Ohtsu** <> (he/him) * [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) + **Sakthipriyan Vairamani** <> (he/him) * [TimothyGu](https://github.com/TimothyGu) - -**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) + **Tiancheng "Timothy" Gu** <> (he/him) * [trevnorris](https://github.com/trevnorris) - -**Trevor Norris** <trev.norris@gmail.com> + **Trevor Norris** <> + +
+ + ### Collaborators * [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> (she/her) + **Anna Henningsen** <> (she/her) * [aduh95](https://github.com/aduh95) - -**Antoine du Hamel** <duhamelantoine1995@gmail.com> (he/him) + **Antoine du Hamel** <> (he/him) * [ak239](https://github.com/ak239) - -**Aleksei Koziatinskii** <ak239spb@gmail.com> -* [AndreasMadsen](https://github.com/AndreasMadsen) - -**Andreas Madsen** <amwebdk@gmail.com> (he/him) + **Aleksei Koziatinskii** <> * [antsmartian](https://github.com/antsmartian) - -**Anto Aravinth** <anto.aravinth.cse@gmail.com> (he/him) + **Anto Aravinth** <> (he/him) * [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) + **Anatoli Papirovski** <> (he/him) * [AshCripps](https://github.com/AshCripps) - -**Ash Cripps** <acripps@redhat.com> + **Ash Cripps** <> +* [Ayase-252](https://github.com/Ayase-252) - + **Qingyu Deng** <> * [bcoe](https://github.com/bcoe) - -**Ben Coe** <bencoe@gmail.com> (he/him) + **Ben Coe** <> (he/him) * [bengl](https://github.com/bengl) - -**Bryan English** <bryan@bryanenglish.com> (he/him) + **Bryan English** <> (he/him) * [benjamingr](https://github.com/benjamingr) - -**Benjamin Gruenbaum** <benjamingr@gmail.com> + **Benjamin Gruenbaum** <> * [BethGriggs](https://github.com/BethGriggs) - -**Beth Griggs** <bgriggs@redhat.com> (she/her) + **Beth Griggs** <> (she/her) * [bmeck](https://github.com/bmeck) - -**Bradley Farias** <bradley.meck@gmail.com> -* [bmeurer](https://github.com/bmeurer) - -**Benedikt Meurer** <benedikt.meurer@gmail.com> + **Bradley Farias** <> +* [bnb](https://github.com/bnb) - + **Tierney Cyren** <> (they/he) * [boneskull](https://github.com/boneskull) - -**Christopher Hiller** <boneskull@boneskull.com> (he/him) + **Christopher Hiller** <> (he/him) * [BridgeAR](https://github.com/BridgeAR) - -**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) + **Ruben Bridgewater** <> (he/him) * [bzoz](https://github.com/bzoz) - -**Bartosz Sosnowski** <bartosz@janeasystems.com> + **Bartosz Sosnowski** <> * [cclauss](https://github.com/cclauss) - -**Christian Clauss** <cclauss@me.com> (he/him) + **Christian Clauss** <> (he/him) * [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) + **Сковорода Никита Андреевич** <> (he/him) * [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> (he/him) + **Colin Ihrig** <> (he/him) * [codebytere](https://github.com/codebytere) - -**Shelley Vohr** <codebytere@gmail.com> (she/her) + **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) + **Daniel Bevenius** <> (he/him) * [danielleadams](https://github.com/danielleadams) - -**Danielle Adams** <adamzdanielle@gmail.com> (she/her) -* [davisjam](https://github.com/davisjam) - -**Jamie Davis** <davisjam@vt.edu> (he/him) + **Danielle Adams** <> (she/her) +* [DerekNonGeneric](https://github.com/DerekNonGeneric) - + **Derek Lewis** <> (he/him) * [devnexen](https://github.com/devnexen) - -**David Carlier** <devnexen@gmail.com> + **David Carlier** <> * [devsnek](https://github.com/devsnek) - -**Gus Caplan** <me@gus.host> (they/them) + **Gus Caplan** <> (they/them) +* [dmabupt](https://github.com/dmabupt) - + **Xu Meng** <> (he/him) * [dnlup](https://github.com/dnlup) -**Daniele Belardi** <dwon.dnl@gmail.com> (he/him) + **Daniele Belardi** <> (he/him) * [edsadr](https://github.com/edsadr) - -**Adrian Estrada** <edsadr@gmail.com> (he/him) -* [eugeneo](https://github.com/eugeneo) - -**Eugene Ostroukhov** <eostroukhov@google.com> + **Adrian Estrada** <> (he/him) * [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) + **Evan Lucas** <> (he/him) * [fhinkel](https://github.com/fhinkel) - -**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) -* [Fishrock123](https://github.com/Fishrock123) - -**Jeremiah Senkpiel** <fishrock123@rocketmail.com> (he/they) + **Franziska Hinkelmann** <> (she/her) * [Flarna](https://github.com/Flarna) - -**Gerhard Stöbich** <deb2001-github@yahoo.de> (he/they) + **Gerhard Stöbich** <> (he/they) * [gabrielschulhof](https://github.com/gabrielschulhof) - -**Gabriel Schulhof** <gabriel.schulhof@intel.com> -* [gdams](https://github.com/gdams) - -**George Adams** <george.adams@uk.ibm.com> (he/him) -* [geek](https://github.com/geek) - -**Wyatt Preul** <wpreul@gmail.com> + **Gabriel Schulhof** <> * [gengjiawen](https://github.com/gengjiawen) - -**Jiawen Geng** <technicalcute@gmail.com> + **Jiawen Geng** <> * [GeoffreyBooth](https://github.com/geoffreybooth) - -**Geoffrey Booth** <webmaster@geoffreybooth.com> (he/him) + **Geoffrey Booth** <> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - -**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) + **Gireesh Punathil** <> (he/him) * [guybedford](https://github.com/guybedford) - -**Guy Bedford** <guybedford@gmail.com> (he/him) + **Guy Bedford** <> (he/him) * [HarshithaKP](https://github.com/HarshithaKP) - -**Harshitha K P** <harshitha014@gmail.com> (she/her) + **Harshitha K P** <> (she/her) * [hashseed](https://github.com/hashseed) - -**Yang Guo** <yangguo@chromium.org> (he/him) + **Yang Guo** <> (he/him) * [himself65](https://github.com/himself65) - -**Zeyu Yang** <himself65@outlook.com> (he/him) + **Zeyu Yang** <> (he/him) * [hiroppy](https://github.com/hiroppy) - -**Yuta Hiroto** <hello@hiroppy.me> (he/him) + **Yuta Hiroto** <> (he/him) * [iansu](https://github.com/iansu) - -**Ian Sutherland** <ian@iansutherland.ca> + **Ian Sutherland** <> * [indutny](https://github.com/indutny) - -**Fedor Indutny** <fedor.indutny@gmail.com> + **Fedor Indutny** <> * [JacksonTian](https://github.com/JacksonTian) - -**Jackson Tian** <shyvo1987@gmail.com> + **Jackson Tian** <> * [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> (he/him) -* [jdalton](https://github.com/jdalton) - -**John-David Dalton** <john.david.dalton@gmail.com> + **James M Snell** <> (he/him) * [jkrems](https://github.com/jkrems) - -**Jan Krems** <jan.krems@gmail.com> (he/him) + **Jan Krems** <> (he/him) * [joaocgreis](https://github.com/joaocgreis) - -**João Reis** <reis@janeasystems.com> + **João Reis** <> * [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) + **Joyee Cheung** <> (she/her) * [juanarbol](https://github.com/juanarbol) - -**Juan José Arboleda** <soyjuanarbol@gmail.com> (he/him) + **Juan José Arboleda** <> (he/him) * [JungMinu](https://github.com/JungMinu) - -**Minwoo Jung** <nodecorelab@gmail.com> (he/him) -* [lance](https://github.com/lance) - -**Lance Ball** <lball@redhat.com> (he/him) + **Minwoo Jung** <> (he/him) * [legendecas](https://github.com/legendecas) - -**Chengzhong Wu** <legendecas@gmail.com> (he/him) + **Chengzhong Wu** <> (he/him) * [Leko](https://github.com/Leko) - -**Shingo Inoue** <leko.noor@gmail.com> (he/him) + **Shingo Inoue** <> (he/him) +* [linkgoron](https://github.com/linkgoron) - + **Nitzan Uziely** <> * [lpinca](https://github.com/lpinca) - -**Luigi Pinca** <luigipinca@gmail.com> (he/him) + **Luigi Pinca** <> (he/him) * [lundibundi](https://github.com/lundibundi) - -**Denys Otrishko** <shishugi@gmail.com> (he/him) -* [mafintosh](https://github.com/mafintosh) - -**Mathias Buus** <mathiasbuus@gmail.com> (he/him) + **Denys Otrishko** <> (he/him) +* [Lxxyx](https://github.com/Lxxyx) - + **Zijian Liu** <> (he/him) * [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> (he/him) + **Matteo Collina** <> (he/him) +* [Mesteery](https://github.com/Mesteery) - + **Mestery** <> (he/him) * [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <midawson@redhat.com> (he/him) + **Michael Dawson** <> (he/him) * [miladfarca](https://github.com/miladfarca) - -**Milad Fa** <mfarazma@redhat.com> (he/him) + **Milad Fa** <> (he/him) * [mildsunrise](https://github.com/mildsunrise) - -**Alba Mendez** <me@alba.sh> (she/her) -* [misterdjules](https://github.com/misterdjules) - -**Julien Gilli** <jgilli@nodejs.org> + **Alba Mendez** <> (she/her) * [mmarchini](https://github.com/mmarchini) - -**Mary Marchini** <oss@mmarchini.me> (she/her) + **Mary Marchini** <> (she/her) * [mscdex](https://github.com/mscdex) - -**Brian White** <mscdex@mscdex.net> + **Brian White** <> * [MylesBorins](https://github.com/MylesBorins) - -**Myles Borins** <myles.borins@gmail.com> (he/him) -* [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) + **Myles Borins** <> (he/him) * [oyyd](https://github.com/oyyd) - -**Ouyang Yadong** <oyydoibh@gmail.com> (he/him) + **Ouyang Yadong** <> (he/him) * [panva](https://github.com/panva) - -**Filip Skokan** <panva.ip@gmail.com> + **Filip Skokan** <> * [PoojaDurgad](https://github.com/PoojaDurgad) - -**Pooja D P** <Pooja.D.P@ibm.com> (she/her) -* [psmarshall](https://github.com/psmarshall) - -**Peter Marshall** <petermarshall@chromium.org> (he/him) + **Pooja D P** <> (she/her) * [puzpuzpuz](https://github.com/puzpuzpuz) - -**Andrey Pechkurov** <apechkurov@gmail.com> (he/him) + **Andrey Pechkurov** <> (he/him) * [Qard](https://github.com/Qard) - -**Stephen Belanger** <admin@stephenbelanger.com> (he/him) + **Stephen Belanger** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - -**Darshan Sen** <raisinten@gmail.com> (he/him) -* [refack](https://github.com/refack) - -**Refael Ackermann (רפאל פלחי)** <refack@gmail.com> (he/him/הוא/אתה) + **Darshan Sen** <> (he/him) * [rexagod](https://github.com/rexagod) - -**Pranshu Srivastava** <rexagod@gmail.com> (he/him) + **Pranshu Srivastava** <> (he/him) * [richardlau](https://github.com/richardlau) - -**Richard Lau** <rlau@redhat.com> + **Richard Lau** <> * [rickyes](https://github.com/rickyes) - -**Ricky Zhou** <0x19951125@gmail.com> (he/him) + **Ricky Zhou** <<0x19951125@gmail.com>> (he/him) * [ronag](https://github.com/ronag) - -**Robert Nagy** <ronagy@icloud.com> -* [rubys](https://github.com/rubys) - -**Sam Ruby** <rubys@intertwingly.net> + **Robert Nagy** <> * [ruyadorno](https://github.com/ruyadorno) - -**Ruy Adorno** <ruyadorno@github.com> (he/him) + **Ruy Adorno** <> (he/him) * [rvagg](https://github.com/rvagg) - -**Rod Vagg** <rod@vagg.org> + **Rod Vagg** <> * [ryzokuken](https://github.com/ryzokuken) - -**Ujjwal Sharma** <ryzokuken@disroot.org> (he/him) -* [saghul](https://github.com/saghul) - -**Saúl Ibarra Corretgé** <saghul@gmail.com> + **Ujjwal Sharma** <> (he/him) * [santigimeno](https://github.com/santigimeno) - -**Santiago Gimeno** <santiago.gimeno@gmail.com> -* [seishun](https://github.com/seishun) - -**Nikolai Vavilov** <vvnicholas@gmail.com> + **Santiago Gimeno** <> * [shisama](https://github.com/shisama) - -**Masashi Hirano** <shisama07@gmail.com> (he/him) -* [silverwind](https://github.com/silverwind) - -**Roman Reiss** <me@silverwind.io> + **Masashi Hirano** <> (he/him) * [srl295](https://github.com/srl295) - -**Steven R Loomis** <srloomis@us.ibm.com> + **Steven R Loomis** <> * [starkwang](https://github.com/starkwang) - -**Weijia Wang** <starkwang@126.com> + **Weijia Wang** <> * [sxa](https://github.com/sxa) - -**Stewart X Addison** <sxa@redhat.com> (he/him) + **Stewart X Addison** <> (he/him) * [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> (he/him) + **Michaël Zasso** <> (he/him) * [TimothyGu](https://github.com/TimothyGu) - -**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) + **Tiancheng "Timothy" Gu** <> (he/him) * [tniessen](https://github.com/tniessen) - -**Tobias Nießen** <tniessen@tnie.de> + **Tobias Nießen** <> (he/him) * [trivikr](https://github.com/trivikr) - -**Trivikram Kamat** <trivikr.dev@gmail.com> + **Trivikram Kamat** <> * [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> (he/him) + **Rich Trott** <> (he/him) * [vdeturckheim](https://github.com/vdeturckheim) - -**Vladimir de Turckheim** <vlad2t@hotmail.com> (he/him) + **Vladimir de Turckheim** <> (he/him) +* [VoltrexMaster](https://github.com/VoltrexMaster) - + **Mohammed Keyvanzadeh** <> (he/him) * [watilde](https://github.com/watilde) - -**Daijiro Wachi** <daijiro.wachi@gmail.com> (he/him) -* [watson](https://github.com/watson) - -**Thomas Watson** <w@tson.dk> + **Daijiro Wachi** <> (he/him) * [XadillaX](https://github.com/XadillaX) - -**Khaidi Chu** <i@2333.moe> (he/him) + **Khaidi Chu** <> (he/him) * [yashLadha](https://github.com/yashLadha) - -**Yash Ladha** <yash@yashladha.in> (he/him) -* [yhwang](https://github.com/yhwang) - -**Yihong Wang** <yh.wang@ibm.com> -* [yorkie](https://github.com/yorkie) - -**Yorkie Liu** <yorkiefixer@gmail.com> + **Yash Ladha** <> (he/him) * [yosuke-furukawa](https://github.com/yosuke-furukawa) - -**Yosuke Furukawa** <yosuke.furukawa@gmail.com> + **Yosuke Furukawa** <> * [ZYSzys](https://github.com/ZYSzys) - -**Yongsheng Zhang** <zyszys98@gmail.com> (he/him) + **Yongsheng Zhang** <> (he/him) + +
-### Collaborator Emeriti +Emeriti + + + +### Collaborator emeriti * [andrasq](https://github.com/andrasq) - -**Andras** <andras@kinvey.com> + **Andras** <> * [AnnaMag](https://github.com/AnnaMag) - -**Anna M. Kedzierska** <anna.m.kedzierska@gmail.com> + **Anna M. Kedzierska** <> +* [AndreasMadsen](https://github.com/AndreasMadsen) - + **Andreas Madsen** <> (he/him) * [aqrln](https://github.com/aqrln) - -**Alexey Orlenko** <eaglexrlnk@gmail.com> (he/him) + **Alexey Orlenko** <> (he/him) +* [bmeurer](https://github.com/bmeurer) - + **Benedikt Meurer** <> * [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> + **Ben Noordhuis** <> * [brendanashworth](https://github.com/brendanashworth) - -**Brendan Ashworth** <brendan.ashworth@me.com> + **Brendan Ashworth** <> * [calvinmetcalf](https://github.com/calvinmetcalf) - -**Calvin Metcalf** <calvin.metcalf@gmail.com> + **Calvin Metcalf** <> * [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> + **Chris Dickinson** <> * [claudiorodriguez](https://github.com/claudiorodriguez) - -**Claudio Rodriguez** <cjrodr@yahoo.com> + **Claudio Rodriguez** <> * [DavidCai1993](https://github.com/DavidCai1993) - -**David Cai** <davidcai1993@yahoo.com> (he/him) -* [DerekNonGeneric](https://github.com/DerekNonGeneric) - -**Derek Lewis** <DerekNonGeneric@inf.is> (he/him) + **David Cai** <> (he/him) +* [davisjam](https://github.com/davisjam) - + **Jamie Davis** <> (he/him) * [digitalinfinity](https://github.com/digitalinfinity) - -**Hitesh Kanwathirtha** <digitalinfinity@gmail.com> (he/him) + **Hitesh Kanwathirtha** <> (he/him) * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - -**Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> + **Robert Jefe Lindstaedt** <> * [estliberitas](https://github.com/estliberitas) - -**Alexander Makarenko** <estliberitas@gmail.com> + **Alexander Makarenko** <> +* [eugeneo](https://github.com/eugeneo) - + **Eugene Ostroukhov** <> * [firedfox](https://github.com/firedfox) - -**Daniel Wang** <wangyang0123@gmail.com> + **Daniel Wang** <> +* [Fishrock123](https://github.com/Fishrock123) - + **Jeremiah Senkpiel** <> (he/they) +* [gdams](https://github.com/gdams) - + **George Adams** <> (he/him) +* [geek](https://github.com/geek) - + **Wyatt Preul** <> * [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) + **Gibson Fahnestock** <> (he/him) * [glentiki](https://github.com/glentiki) - -**Glen Keane** <glenkeane.94@gmail.com> (he/him) + **Glen Keane** <> (he/him) * [iarna](https://github.com/iarna) - -**Rebecca Turner** <me@re-becca.org> + **Rebecca Turner** <> * [imran-iq](https://github.com/imran-iq) - -**Imran Iqbal** <imran@imraniqbal.org> + **Imran Iqbal** <> * [imyller](https://github.com/imyller) - -**Ilkka Myller** <ilkka.myller@nodefield.com> + **Ilkka Myller** <> * [isaacs](https://github.com/isaacs) - -**Isaac Z. Schlueter** <i@izs.me> + **Isaac Z. Schlueter** <> * [italoacasas](https://github.com/italoacasas) - -**Italo A. Casas** <me@italoacasas.com> (he/him) + **Italo A. Casas** <> (he/him) * [jasongin](https://github.com/jasongin) - -**Jason Ginchereau** <jasongin@microsoft.com> + **Jason Ginchereau** <> * [jbergstroem](https://github.com/jbergstroem) - -**Johan Bergström** <bugs@bergstroem.nu> + **Johan Bergström** <> +* [jdalton](https://github.com/jdalton) - + **John-David Dalton** <> * [jhamhader](https://github.com/jhamhader) - -**Yuval Brik** <yuval@brik.org.il> + **Yuval Brik** <> * [joshgav](https://github.com/joshgav) - -**Josh Gavant** <josh.gavant@outlook.com> + **Josh Gavant** <> * [julianduque](https://github.com/julianduque) - -**Julian Duque** <julianduquej@gmail.com> (he/him) + **Julian Duque** <> (he/him) * [kfarnung](https://github.com/kfarnung) - -**Kyle Farnung** <kfarnung@microsoft.com> (he/him) + **Kyle Farnung** <> (he/him) * [kunalspathak](https://github.com/kunalspathak) - -**Kunal Pathak** <kunal.pathak@microsoft.com> + **Kunal Pathak** <> +* [lance](https://github.com/lance) - + **Lance Ball** <> (he/him) * [lucamaraschi](https://github.com/lucamaraschi) - -**Luca Maraschi** <luca.maraschi@gmail.com> (he/him) + **Luca Maraschi** <> (he/him) * [lxe](https://github.com/lxe) - -**Aleksey Smolenchuk** <lxe@lxe.co> + **Aleksey Smolenchuk** <> * [maclover7](https://github.com/maclover7) - -**Jon Moss** <me@jonathanmoss.me> (he/him) + **Jon Moss** <> (he/him) +* [mafintosh](https://github.com/mafintosh) - + **Mathias Buus** <> (he/him) * [matthewloring](https://github.com/matthewloring) - -**Matthew Loring** <mattloring@google.com> + **Matthew Loring** <> * [micnic](https://github.com/micnic) - -**Nicu Micleușanu** <micnic90@gmail.com> (he/him) + **Nicu Micleușanu** <> (he/him) * [mikeal](https://github.com/mikeal) - -**Mikeal Rogers** <mikeal.rogers@gmail.com> + **Mikeal Rogers** <> +* [misterdjules](https://github.com/misterdjules) - + **Julien Gilli** <> * [monsanto](https://github.com/monsanto) - -**Christopher Monsanto** <chris@monsan.to> + **Christopher Monsanto** <> * [MoonBall](https://github.com/MoonBall) - -**Chen Gang** <gangc.cxy@foxmail.com> + **Chen Gang** <> * [not-an-aardvark](https://github.com/not-an-aardvark) - -**Teddy Katz** <teddy.katz@gmail.com> (he/him) + **Teddy Katz** <> (he/him) +* [ofrobots](https://github.com/ofrobots) - + **Ali Ijaz Sheikh** <> (he/him) * [Olegas](https://github.com/Olegas) - -**Oleg Elifantiev** <oleg@elifantiev.ru> + **Oleg Elifantiev** <> * [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> + **Alexis Campailla** <> * [othiym23](https://github.com/othiym23) - -**Forrest L Norvell** <ogd@aoaioxxysz.net> (he/him) + **Forrest L Norvell** <> (they/them/themself) * [petkaantonov](https://github.com/petkaantonov) - -**Petka Antonov** <petka_antonov@hotmail.com> + **Petka Antonov** <> * [phillipj](https://github.com/phillipj) - -**Phillip Johnsen** <johphi@gmail.com> + **Phillip Johnsen** <> * [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> + **Bert Belder** <> * [pmq20](https://github.com/pmq20) - -**Minqi Pan** <pmq2001@gmail.com> + **Minqi Pan** <> * [princejwesley](https://github.com/princejwesley) - -**Prince John Wesley** <princejohnwesley@gmail.com> + **Prince John Wesley** <> +* [psmarshall](https://github.com/psmarshall) - + **Peter Marshall** <> (he/him) +* [refack](https://github.com/refack) - + **Refael Ackermann (רפאל פלחי)** <> (he/him/הוא/אתה) * [rlidwka](https://github.com/rlidwka) - -**Alex Kocharin** <alex@kocharin.ru> + **Alex Kocharin** <> * [rmg](https://github.com/rmg) - -**Ryan Graham** <r.m.graham@gmail.com> + **Ryan Graham** <> * [robertkowalski](https://github.com/robertkowalski) - -**Robert Kowalski** <rok@kowalski.gd> + **Robert Kowalski** <> * [romankl](https://github.com/romankl) - -**Roman Klauke** <romaaan.git@gmail.com> + **Roman Klauke** <> * [ronkorving](https://github.com/ronkorving) - -**Ron Korving** <ron@ronkorving.nl> + **Ron Korving** <> * [RReverser](https://github.com/RReverser) - -**Ingvar Stepanyan** <me@rreverser.com> + **Ingvar Stepanyan** <> +* [rubys](https://github.com/rubys) - + **Sam Ruby** <> +* [saghul](https://github.com/saghul) - + **Saúl Ibarra Corretgé** <> * [sam-github](https://github.com/sam-github) - -**Sam Roberts** <vieuxtech@gmail.com> + **Sam Roberts** <> * [sebdeckers](https://github.com/sebdeckers) - -**Sebastiaan Deckers** <sebdeckers83@gmail.com> + **Sebastiaan Deckers** <> +* [seishun](https://github.com/seishun) - + **Nikolai Vavilov** <> * [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) + **Shigeki Ohtsu** <> (he/him) +* [silverwind](https://github.com/silverwind) - + **Roman Reiss** <> * [stefanmb](https://github.com/stefanmb) - -**Stefan Budeanu** <stefan@budeanu.com> + **Stefan Budeanu** <> * [tellnes](https://github.com/tellnes) - -**Christian Tellnes** <christian@tellnes.no> + **Christian Tellnes** <> * [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) + **Sakthipriyan Vairamani** <> (he/him) * [thlorenz](https://github.com/thlorenz) - -**Thorsten Lorenz** <thlorenz@gmx.de> + **Thorsten Lorenz** <> * [trevnorris](https://github.com/trevnorris) - -**Trevor Norris** <trev.norris@gmail.com> + **Trevor Norris** <> * [tunniclm](https://github.com/tunniclm) - -**Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com> + **Mike Tunnicliffe** <> * [vkurchatkin](https://github.com/vkurchatkin) - -**Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> + **Vladimir Kurchatkin** <> * [vsemozhetbyt](https://github.com/vsemozhetbyt) - -**Vse Mozhet Byt** <vsemozhetbyt@gmail.com> (he/him) + **Vse Mozhet Byt** <> (he/him) +* [watson](https://github.com/watson) - + **Thomas Watson** <> * [whitlockjc](https://github.com/whitlockjc) - -**Jeremy Whitlock** <jwhitlock@apache.org> + **Jeremy Whitlock** <> +* [yhwang](https://github.com/yhwang) - + **Yihong Wang** <> +* [yorkie](https://github.com/yorkie) - + **Yorkie Liu** <> + +
+ -Collaborators follow the [Collaborator Guide](./doc/guides/collaborator-guide.md) in +Collaborators follow the [Collaborator Guide](./doc/contributing/collaborator-guide.md) in maintaining the Node.js project. ### Triagers +* [Ayase-252](https://github.com/Ayase-252) - + **Qingyu Deng** <> +* [himadriganguly](https://github.com/himadriganguly) - + **Himadri Ganguly** <> (he/him) +* [iam-frankqiu](https://github.com/iam-frankqiu) - + **Frank Qiu** <> (he/him) +* [marsonya](https://github.com/marsonya) - + **Akhil Marsonya** <> (he/him) +* [Mesteery](https://github.com/Mesteery) - + **Mestery** <> (he/him) * [PoojaDurgad](https://github.com/PoojaDurgad) - -**Pooja Durgad** <Pooja.D.P@ibm.com> + **Pooja Durgad** <> * [RaisinTen](https://github.com/RaisinTen) - -**Darshan Sen** <raisinten@gmail.com> + **Darshan Sen** <> +* [VoltrexMaster](https://github.com/VoltrexMaster) - + **Mohammed Keyvanzadeh** <> (he/him) -### Release Keys +### Release keys Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): -* **Beth Griggs** <bgriggs@redhat.com> -`4ED778F539E3634C779C87C6D7062848A1AB005C` -* **Colin Ihrig** <cjihrig@gmail.com> -`94AE36675C464D64BAFA68DD7434390BDBE9B9C5` -* **Danielle Adams** <adamzdanielle@gmail.com> -`74F12602B6F1C4E913FAA37AD3A89613643B6201` -* **James M Snell** <jasnell@keybase.io> -`71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` -* **Michaël Zasso** <targos@protonmail.com> -`8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` -* **Myles Borins** <myles.borins@gmail.com> -`C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **Richard Lau** <rlau@redhat.com> -`C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` -* **Rod Vagg** <rod@vagg.org> -`DD8F2338BAE7501E3DD5AC78C273792F7D83545D` -* **Ruben Bridgewater** <ruben@bridgewater.de> -`A48C2BEE680E841632CD4E44F07496B3EB3C1762` -* **Ruy Adorno** <ruyadorno@hotmail.com> -`108F52B48DB57BB0CC439B2997B01419BD92F80A` -* **Shelley Vohr** <shelley.vohr@gmail.com> -`B9E2F5981AA6E0CD28160D9FF13993A75599653C` +* **Beth Griggs** <> + `4ED778F539E3634C779C87C6D7062848A1AB005C` +* **Colin Ihrig** <> + `94AE36675C464D64BAFA68DD7434390BDBE9B9C5` +* **Danielle Adams** <> + `74F12602B6F1C4E913FAA37AD3A89613643B6201` +* **James M Snell** <> + `71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` +* **Michaël Zasso** <> + `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` +* **Myles Borins** <> + `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` +* **Richard Lau** <> + `C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` +* **Rod Vagg** <> + `DD8F2338BAE7501E3DD5AC78C273792F7D83545D` +* **Ruben Bridgewater** <> + `A48C2BEE680E841632CD4E44F07496B3EB3C1762` +* **Ruy Adorno** <> + `108F52B48DB57BB0CC439B2997B01419BD92F80A` +* **Shelley Vohr** <> + `B9E2F5981AA6E0CD28160D9FF13993A75599653C` To import the full set of trusted release keys (including subkeys possibly used to sign releases): @@ -639,39 +704,67 @@ gpg --keyserver pool.sks-keyservers.net --recv-keys B9E2F5981AA6E0CD28160D9FF139 See the section above on [Verifying Binaries](#verifying-binaries) for how to use these keys to verify a downloaded file. -Other keys used to sign some previous releases: - -* **Chris Dickinson** <christopher.s.dickinson@gmail.com> -`9554F04D7259F04124DE6B476D5A82AC7E37093B` -* **Danielle Adams** <adamzdanielle@gmail.com> -`1C050899334244A8AF75E53792EF661D867B9DFA` -* **Evan Lucas** <evanlucas@me.com> -`B9AE9905FFD7803F25714661B63B535A4C206CA9` -* **Gibson Fahnestock** <gibfahn@gmail.com> -`77984A986EBC2AA786BC0F66B01FBB92821C587A` -* **Isaac Z. Schlueter** <i@izs.me> -`93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` -* **Italo A. Casas** <me@italoacasas.com> -`56730D5401028683275BD23C23EFEFE93C4CFFFE` -* **Jeremiah Senkpiel** <fishrock@keybase.io> -`FD3A5288F042B6850C66B31F09FE44734EB7990E` -* **Julien Gilli** <jgilli@fastmail.fm> -`114F43EE0176B71C7BC219DD50A3051F888C628D` -* **Timothy J Fontaine** <tjfontaine@gmail.com> -`7937DFD2AB06298B2293C3187D33FF9D0246406D` +
+ +Other keys used to sign some previous releases + +* **Chris Dickinson** <> + `9554F04D7259F04124DE6B476D5A82AC7E37093B` +* **Danielle Adams** <> + `1C050899334244A8AF75E53792EF661D867B9DFA` +* **Evan Lucas** <> + `B9AE9905FFD7803F25714661B63B535A4C206CA9` +* **Gibson Fahnestock** <> + `77984A986EBC2AA786BC0F66B01FBB92821C587A` +* **Isaac Z. Schlueter** <> + `93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` +* **Italo A. Casas** <> + `56730D5401028683275BD23C23EFEFE93C4CFFFE` +* **Jeremiah Senkpiel** <> + `FD3A5288F042B6850C66B31F09FE44734EB7990E` +* **Julien Gilli** <> + `114F43EE0176B71C7BC219DD50A3051F888C628D` +* **Timothy J Fontaine** <> + `7937DFD2AB06298B2293C3187D33FF9D0246406D` + +
+ +### Security release stewards + +When possible, the commitment to take slots in the +security release steward rotation is made by companies in order +to ensure individuals who act as security stewards have the +support and recognition from their employer to be able to +prioritize security releases. Security release stewards manage security +releases on a rotation basis as outlined in the +[security release process](./doc/contributing/security-release-process.md). + +* Datadog + * [bengl](https://github.com/bengl) - + **Bryan English** <> (he/him) + * [vdeturckheim](https://github.com/vdeturckheim) - + **Vladimir de Turckheim** <> (he/him) +* NearForm + * [mcollina](https://github.com/mcollina) - + **Matteo Collina** <> (he/him) +* Red Hat and IBM + * [joesepi](https://github.com/joesepi)- + **Joe Sepi** <> (he/him) + * [mhdawson](https://github.com/mhdawson) - + **Michael Dawson** <> (he/him) ## License Node.js is available under the [MIT license](https://opensource.org/licenses/MIT). Node.js also includes external libraries that are available under a variety of licenses. See -[LICENSE](https://github.com/nodejs/node/blob/master/LICENSE) for the full +[LICENSE](https://github.com/nodejs/node/blob/HEAD/LICENSE) for the full license text. -[Code of Conduct]: https://github.com/nodejs/admin/blob/master/CODE_OF_CONDUCT.md +[Code of Conduct]: https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md [Contributing to the project]: CONTRIBUTING.md [Node.js Website]: https://nodejs.org/ [OpenJS Foundation]: https://openjsf.org/ -[Strategic Initiatives]: https://github.com/nodejs/TSC/blob/master/Strategic-Initiatives.md -[Technical values and prioritization]: doc/guides/technical-values.md -[Working Groups]: https://github.com/nodejs/TSC/blob/master/WORKING_GROUPS.md +[Strategic initiatives]: doc/contributing/strategic-initiatives.md +[Technical values and prioritization]: doc/contributing/technical-values.md +[Working Groups]: https://github.com/nodejs/TSC/blob/HEAD/WORKING_GROUPS.md