Notable changes: Deprecations and Removals: - **(SEMVER-MAJOR)** **fs**: remove permissive rmdir recursive (Antoine du Hamel) [https://github.com/nodejs/node/pull/37216] - **(SEMVER-MAJOR)** **fs**: runtime deprecate rmdir recursive option (Antoine du Hamel) [https://github.com/nodejs/node/pull/37302] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('http_parser') (James M Snell) [https://github.com/nodejs/node/pull/37813] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('url') (James M Snell) [https://github.com/nodejs/node/pull/37799] - **(SEMVER-MAJOR)** **lib**: make process.binding('util') return only type checkers (Anna Henningsen) [https://github.com/nodejs/node/pull/37819] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('crypto') (James M Snell) [https://github.com/nodejs/node/pull/37790] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('signal_wrap') (James M Snell) [https://github.com/nodejs/node/pull/37800] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('v8') (James M Snell) [https://github.com/nodejs/node/pull/37789] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('async_wrap') (James M Snell) [https://github.com/nodejs/node/pull/37576] - **(SEMVER-MAJOR)** **module**: remove module.createRequireFromPath (Antoine du Hamel) [https://github.com/nodejs/node/pull/37201] - **(SEMVER-MAJOR)** **module**: runtime deprecate subpath folder mappings (Antoine du Hamel) [https://github.com/nodejs/node/pull/37215] - **(SEMVER-MAJOR)** **module**: runtime deprecate "main" index and extension lookups (Antoine du Hamel) [https://github.com/nodejs/node/pull/37206] - **(SEMVER-MAJOR)** **module**: runtime deprecate invalid package.json main entries (Antoine du Hamel) [https://github.com/nodejs/node/pull/37204] - **(SEMVER-MAJOR)** **process**: runtime deprecate changing process.config (James M Snell) [https://github.com/nodejs/node/pull/36902] Stable Timers Promises API: The Timers Promises API provides an alternative set of timer functions that return Promise objects. Added in Node.js v15.0.0, in this release they graduate from experimental status to stable. Contributed by James Snell - [https://github.com/nodejs/node/pull/38112] Toolchain and Compiler Upgrades: Node.js v16.0.0 will be the first release where we ship prebuilt binaries for Apple Silicon. While we’ll be providing separate tarballs for the Intel (`darwin-x64`) and ARM (`darwin-arm64`) architectures the macOS installer (`.pkg`) will be shipped as a ‘fat’ (multi-architecture) binary. - **(SEMVER-MAJOR)** **build**: remove support for Python 2 (Christian Clauss) [https://github.com/nodejs/node/pull/36691] - **(SEMVER-MAJOR)** **build**: default PYTHON to python3 in Makefile (Michaël Zasso) [https://github.com/nodejs/node/pull/37764] - **build**: update Makefile to support fat binary (Ash Cripps) [https://github.com/nodejs/node/pull/37861] - **(SEMVER-MAJOR)** **build**: enable ASLR (PIE) on OS X (woodfairy) [https://github.com/nodejs/node/pull/35704] - **build**: warn for gcc versions earlier than 8.3.0 (Richard Lau) [https://github.com/nodejs/node/pull/37935] - **(SEMVER-MAJOR)** **doc**: update minimum supported Xcode to 11 (Michaël Zasso) [https://github.com/nodejs/node/pull/37872] - **(SEMVER-MAJOR)** **doc**: update minimum supported GCC to 8.3 (Michaël Zasso) [https://github.com/nodejs/node/pull/37871] - **(SEMVER-MAJOR)** **doc**: update AIX to GCC8 for v16.x (Ash Cripps) [https://github.com/nodejs/node/pull/37677] - **tools**: set arch in Distribution.xml (Ash Cripps) [https://github.com/nodejs/node/pull/38261] V8 9.0: The V8 JavaScript engine is updated to V8 9.0, including performance tweaks and improvements. This update also brings the ECMAScript RegExp Match Indices, which provide the start and end indices of the captured string. The indices array is available via the `.indices` property on match objects when the regular expression has the `/d` flag. Contributed by Michaël Zasso - [https://github.com/nodejs/node/pull/37587] Other Notable Changes: - **(SEMVER-MINOR)** **assert**: graduate assert.match and assert.doesNotMatch (James M Snell) [https://github.com/nodejs/node/pull/38111] - **(SEMVER-MAJOR)** **buffer**: expose btoa and atob as globals (James M Snell) [https://github.com/nodejs/node/pull/37786] - **(SEMVER-MAJOR)** **deps**: bump minimum ICU version to 68 (Michaël Zasso) [https://github.com/nodejs/node/pull/37330] - **deps**: update ICU to 69.1 (Michaël Zasso) [https://github.com/nodejs/node/pull/38178] - **deps**: update llhttp to 6.0.0 (Fedor Indutny) [https://github.com/nodejs/node/pull/38277] - **deps**: upgrade npm to 7.10.0 (Ruy Adorno) [https://github.com/nodejs/node/pull/38254] - **(SEMVER-MINOR)** **http**: add http.ClientRequest.getRawHeaderNames() (simov) [https://github.com/nodejs/node/pull/37660] - **(SEMVER-MAJOR)** **lib,src**: update cluster to use Parent (Michael Dawson) [https://github.com/nodejs/node/pull/36478] - **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed `require(…)` calls (ExE Boss) [https://github.com/nodejs/node/pull/37246] - **(SEMVER-MINOR)** **perf_hooks**: add histogram option to timerify (James M Snell) [https://github.com/nodejs/node/pull/37475] - **(SEMVER-MINOR)** **repl**: add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) [https://github.com/nodejs/node/pull/37246] - **(SEMVER-MINOR)** **util**: add getSystemErrorMap() impl (eladkeyshawn) [https://github.com/nodejs/node/pull/38101] Semver-Major Commits: - **(SEMVER-MAJOR)** **async_hooks**: add thisArg to AsyncResource.bind (James M Snell) [https://github.com/nodejs/node/pull/36782] - **(SEMVER-MAJOR)** **buffer**: expose btoa and atob as globals (James M Snell) [https://github.com/nodejs/node/pull/37786] - **(SEMVER-MAJOR)** **build**: remove support for Python 2 (Christian Clauss) [https://github.com/nodejs/node/pull/36691] - **(SEMVER-MAJOR)** **build**: default PYTHON to python3 in Makefile (Michaël Zasso) [https://github.com/nodejs/node/pull/37764] - **(SEMVER-MAJOR)** **build**: update Makefile to support fat binary (Ash Cripps) [https://github.com/nodejs/node/pull/37861] - **(SEMVER-MAJOR)** **build**: include minimal V8 headers in distribution (Michaël Zasso) [https://github.com/nodejs/node/pull/37570] - **(SEMVER-MAJOR)** **build**: use C++11 ABI with libstdc++ (Anna Henningsen) [https://github.com/nodejs/node/pull/36634] - **(SEMVER-MAJOR)** **build**: enable ASLR (PIE) on OS X (woodfairy) [https://github.com/nodejs/node/pull/35704] - **(SEMVER-MAJOR)** **deps**: update V8 to 9.0.257.11 (Michaël Zasso) [https://github.com/nodejs/node/pull/37587] - **(SEMVER-MAJOR)** **deps**: bump minimum ICU version to 68 (Michaël Zasso) [https://github.com/nodejs/node/pull/37330] - **(SEMVER-MAJOR)** **deps**: update V8 to 8.9.255.19 (Michaël Zasso) [https://github.com/nodejs/node/pull/37330] - **(SEMVER-MAJOR)** **deps**: update V8 to 8.8.278.17 (Michaël Zasso) [https://github.com/nodejs/node/pull/36139] - **(SEMVER-MAJOR)** **deps**: update V8 to 8.7.220 (Michaël Zasso) [https://github.com/nodejs/node/pull/35700] - **(SEMVER-MAJOR)** **dns**: use url module instead of punycode for IDNA (Antoine du Hamel) [https://github.com/nodejs/node/pull/35091] - **(SEMVER-MAJOR)** **doc**: update minimum supported Xcode to 11 (Michaël Zasso) [https://github.com/nodejs/node/pull/37872] - **(SEMVER-MAJOR)** **doc**: update minimum supported GCC to 8.3 (Michaël Zasso) [https://github.com/nodejs/node/pull/37871] - **(SEMVER-MAJOR)** **doc**: update AIX to GCC8 for v16.x (Ash Cripps) [https://github.com/nodejs/node/pull/37677] - **(SEMVER-MAJOR)** **doc**: add http.IncomingMessage#connection (Pranshu Srivastava) [https://github.com/nodejs/node/pull/33768] - **(SEMVER-MAJOR)** **events**: change EventTarget handler exception behavior (Nitzan Uziely) [https://github.com/nodejs/node/pull/37237] - **(SEMVER-MAJOR)** **fs**: remove permissive rmdir recursive (Antoine du Hamel) [https://github.com/nodejs/node/pull/37216] - **(SEMVER-MAJOR)** **fs**: add validation for fd and path (Dylan Elliott) [https://github.com/nodejs/node/pull/35187] - **(SEMVER-MAJOR)** **fs**: runtime deprecate rmdir recursive option (Antoine du Hamel) [https://github.com/nodejs/node/pull/37302] - **(SEMVER-MAJOR)** **fs**: fix flag and mode validation (James M Snell) [https://github.com/nodejs/node/pull/37480] - **(SEMVER-MAJOR)** **http**: use objects with null prototype in Agent (Michaël Zasso) [https://github.com/nodejs/node/pull/36409] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('http_parser') (James M Snell) [https://github.com/nodejs/node/pull/37813] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('url') (James M Snell) [https://github.com/nodejs/node/pull/37799] - **(SEMVER-MAJOR)** **lib**: make process.binding('util') return only type checkers (Anna Henningsen) [https://github.com/nodejs/node/pull/37819] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('crypto') (James M Snell) [https://github.com/nodejs/node/pull/37790] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('signal_wrap') (James M Snell) [https://github.com/nodejs/node/pull/37800] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('v8') (James M Snell) [https://github.com/nodejs/node/pull/37789] - **(SEMVER-MAJOR)** **lib**: aggregate errors to avoid error swallowing (Antoine du Hamel) [https://github.com/nodejs/node/pull/37460] - **(SEMVER-MAJOR)** **lib**: runtime deprecate access to process.binding('async_wrap') (James M Snell) [https://github.com/nodejs/node/pull/37576] - **(SEMVER-MAJOR)** **lib**: remove usage of url.parse (raisinten) [https://github.com/nodejs/node/pull/36853] - **(SEMVER-MAJOR)** **lib**: add error handling for input stream (rexagod) [https://github.com/nodejs/node/pull/31603] - **(SEMVER-MAJOR)** **lib,src**: update cluster to use Parent (Michael Dawson) [https://github.com/nodejs/node/pull/36478] - **(SEMVER-MAJOR)** **module**: runtime deprecate subpath folder mappings (Antoine du Hamel) [https://github.com/nodejs/node/pull/37215] - **(SEMVER-MAJOR)** **module**: runtime deprecate "main" index and extension lookups (Antoine du Hamel) [https://github.com/nodejs/node/pull/37206] - **(SEMVER-MAJOR)** **module**: runtime deprecate invalid package.json main entries (Antoine du Hamel) [https://github.com/nodejs/node/pull/37204] - **(SEMVER-MAJOR)** **module**: remove module.createRequireFromPath (Antoine du Hamel) [https://github.com/nodejs/node/pull/37201] - **(SEMVER-MAJOR)** **module**: only set cache when finding module succeeds (Yongsheng Zhang) [https://github.com/nodejs/node/pull/36642] - **(SEMVER-MAJOR)** **perf_hooks**: make performance a global (James M Snell) [https://github.com/nodejs/node/pull/37970] - **(SEMVER-MAJOR)** **perf_hooks**: complete overhaul of the implementation (James M Snell) [https://github.com/nodejs/node/pull/37136] - **(SEMVER-MAJOR)** **process**: disallow adding options to process.allowedNodeEnvironmentFlags (Antoine du Hamel) [https://github.com/nodejs/node/pull/36660] - **(SEMVER-MAJOR)** **process**: runtime deprecate changing process.config (James M Snell) [https://github.com/nodejs/node/pull/36902] - **(SEMVER-MAJOR)** **readline**: cursorTo throw error on NaN (Zijian Liu) [https://github.com/nodejs/node/pull/36379] - **(SEMVER-MAJOR)** **src**: mark internally exported functions as explicitly internal (Tyler Ang-Wanek) [https://github.com/nodejs/node/pull/37000] - **(SEMVER-MAJOR)** **src**: inline AsyncCleanupHookHandle in headers (Tyler Ang-Wanek) [https://github.com/nodejs/node/pull/37000] - **(SEMVER-MAJOR)** **src**: clean up embedder API (Anna Henningsen) [https://github.com/nodejs/node/pull/35897] - **(SEMVER-MAJOR)** **worker**: send correct error status for worker init (Yash Ladha) [https://github.com/nodejs/node/pull/36242] PR-URL: https://github.com/nodejs/node/pull/37678
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. The OpenJS Foundation provides support for the project.
This project is bound by a Code of Conduct.
Table of contents
- Support
- Release types
- Building Node.js
- Security
- Contributing to Node.js
- Current project team members
- License
Support
Looking for help? Check out the instructions for getting support.
Release types
- Current: Under active development. Code for the Current release is in the branch for its major version number (for example, 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 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, beginning with v4 Argon. There are no breaking changes or feature additions, except in some special circumstances.
- Nightly: Code from the Current branch built every 24-hours when there are changes. Use with caution.
Current and LTS releases follow Semantic Versioning. A member of the Release Team signs each Current and LTS release. For more information, see the Release README.
Download
Binaries, installers, and source tarballs are available at https://nodejs.org/en/download/.
Current and LTS releases
https://nodejs.org/download/release/
The 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 directory contains the latest Fermium (Node.js 14) release.
Nightly releases
https://nodejs.org/download/nightly/
Each directory name and filename contains a date (in UTC) and the commit SHA at the HEAD of the release.
API documentation
Documentation for the latest Current release is at https://nodejs.org/api/. Version-specific documentation is available in each release directory in the docs subdirectory. Version-specific documentation is also at https://nodejs.org/download/docs/.
Verifying binaries
Download directories contain a SHASUMS256.txt file with SHA checksums for the
files.
To download SHASUMS256.txt using curl:
$ curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt
To check that a downloaded file matches the checksum, run
it through sha256sum with a command such as:
$ 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
the GPG keys of individuals authorized to create releases. To
import the keys:
$ gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D
See the bottom of this README for a full script to import active release keys.
Next, download the SHASUMS256.txt.sig for the release:
$ curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.sig
Then use gpg --verify SHASUMS256.txt.sig SHASUMS256.txt to verify
the file's signature.
Building Node.js
See BUILDING.md for instructions on how to build Node.js from source and a list of supported platforms.
Security
For information on reporting security vulnerabilities in Node.js, see SECURITY.md.
Contributing to Node.js
- Contributing to the project
- Working Groups
- Strategic Initiatives
- Technical values and prioritization
Current project team members
For information about the governance of the Node.js project, see GOVERNANCE.md.
TSC (Technical Steering Committee)
- apapirovski - Anatoli Papirovski <apapirovski@mac.com> (he/him)
- BethGriggs - Beth Griggs <bgriggs@redhat.com> (she/her)
- BridgeAR - Ruben Bridgewater <ruben@bridgewater.de> (he/him)
- ChALkeR - Сковорода Никита Андреевич <chalkerx@gmail.com> (he/him)
- cjihrig - Colin Ihrig <cjihrig@gmail.com> (he/him)
- codebytere - Shelley Vohr <codebytere@gmail.com> (she/her)
- danbev - Daniel Bevenius <daniel.bevenius@gmail.com> (he/him)
- fhinkel - Franziska Hinkelmann <franziska.hinkelmann@gmail.com> (she/her)
- gabrielschulhof - Gabriel Schulhof <gabriel.schulhof@intel.com>
- gireeshpunathil - Gireesh Punathil <gpunathi@in.ibm.com> (he/him)
- jasnell - James M Snell <jasnell@gmail.com> (he/him)
- joyeecheung - Joyee Cheung <joyeec9h3@gmail.com> (she/her)
- mcollina - Matteo Collina <matteo.collina@gmail.com> (he/him)
- mhdawson - Michael Dawson <midawson@redhat.com> (he/him)
- mmarchini - Mary Marchini <oss@mmarchini.me> (she/her)
- MylesBorins - Myles Borins <myles.borins@gmail.com> (he/him)
- targos - Michaël Zasso <targos@protonmail.com> (he/him)
- tniessen - Tobias Nießen <tniessen@tnie.de>
- Trott - Rich Trott <rtrott@gmail.com> (he/him)
TSC emeriti
- addaleax - Anna Henningsen <anna@addaleax.net> (she/her)
- bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
- chrisdickinson - Chris Dickinson <christopher.s.dickinson@gmail.com>
- evanlucas - Evan Lucas <evanlucas@me.com> (he/him)
- Fishrock123 - Jeremiah Senkpiel <fishrock123@rocketmail.com> (he/they)
- gibfahn - Gibson Fahnestock <gibfahn@gmail.com> (he/him)
- indutny - Fedor Indutny <fedor.indutny@gmail.com>
- isaacs - Isaac Z. Schlueter <i@izs.me>
- joshgav - Josh Gavant <josh.gavant@outlook.com>
- mscdex - Brian White <mscdex@mscdex.net>
- nebrius - Bryan Hughes <bryan@nebri.us>
- ofrobots - Ali Ijaz Sheikh <ofrobots@google.com> (he/him)
- orangemocha - Alexis Campailla <orangemocha@nodejs.org>
- piscisaureus - Bert Belder <bertbelder@gmail.com>
- rvagg - Rod Vagg <r@va.gg>
- sam-github - Sam Roberts <vieuxtech@gmail.com>
- shigeki - Shigeki Ohtsu <ohtsu@ohtsu.org> (he/him)
- thefourtheye - Sakthipriyan Vairamani <thechargingvolcano@gmail.com> (he/him)
- TimothyGu - Tiancheng "Timothy" Gu <timothygu99@gmail.com> (he/him)
- trevnorris - Trevor Norris <trev.norris@gmail.com>
Collaborators
- addaleax - Anna Henningsen <anna@addaleax.net> (she/her)
- aduh95 - Antoine du Hamel <duhamelantoine1995@gmail.com> (he/him)
- ak239 - Aleksei Koziatinskii <ak239spb@gmail.com>
- AndreasMadsen - Andreas Madsen <amwebdk@gmail.com> (he/him)
- antsmartian - Anto Aravinth <anto.aravinth.cse@gmail.com> (he/him)
- apapirovski - Anatoli Papirovski <apapirovski@mac.com> (he/him)
- AshCripps - Ash Cripps <acripps@redhat.com>
- bcoe - Ben Coe <bencoe@gmail.com> (he/him)
- bengl - Bryan English <bryan@bryanenglish.com> (he/him)
- benjamingr - Benjamin Gruenbaum <benjamingr@gmail.com>
- BethGriggs - Beth Griggs <bgriggs@redhat.com> (she/her)
- bmeck - Bradley Farias <bradley.meck@gmail.com>
- bmeurer - Benedikt Meurer <benedikt.meurer@gmail.com>
- boneskull - Christopher Hiller <boneskull@boneskull.com> (he/him)
- BridgeAR - Ruben Bridgewater <ruben@bridgewater.de> (he/him)
- bzoz - Bartosz Sosnowski <bartosz@janeasystems.com>
- cclauss - Christian Clauss <cclauss@me.com> (he/him)
- ChALkeR - Сковорода Никита Андреевич <chalkerx@gmail.com> (he/him)
- cjihrig - Colin Ihrig <cjihrig@gmail.com> (he/him)
- codebytere - Shelley Vohr <codebytere@gmail.com> (she/her)
- danbev - Daniel Bevenius <daniel.bevenius@gmail.com> (he/him)
- danielleadams - Danielle Adams <adamzdanielle@gmail.com> (she/her)
- davisjam - Jamie Davis <davisjam@vt.edu> (he/him)
- DerekNonGeneric - Derek Lewis <DerekNonGeneric@inf.is> (he/him)
- devnexen - David Carlier <devnexen@gmail.com>
- devsnek - Gus Caplan <me@gus.host> (they/them)
- dmabupt - Xu Meng <dmabupt@gmail.com> (he/him)
- dnlup Daniele Belardi <dwon.dnl@gmail.com> (he/him)
- edsadr - Adrian Estrada <edsadr@gmail.com> (he/him)
- eugeneo - Eugene Ostroukhov <eostroukhov@google.com>
- evanlucas - Evan Lucas <evanlucas@me.com> (he/him)
- fhinkel - Franziska Hinkelmann <franziska.hinkelmann@gmail.com> (she/her)
- Fishrock123 - Jeremiah Senkpiel <fishrock123@rocketmail.com> (he/they)
- Flarna - Gerhard Stöbich <deb2001-github@yahoo.de> (he/they)
- gabrielschulhof - Gabriel Schulhof <gabriel.schulhof@intel.com>
- gdams - George Adams <george.adams@uk.ibm.com> (he/him)
- geek - Wyatt Preul <wpreul@gmail.com>
- gengjiawen - Jiawen Geng <technicalcute@gmail.com>
- GeoffreyBooth - Geoffrey Booth <webmaster@geoffreybooth.com> (he/him)
- gireeshpunathil - Gireesh Punathil <gpunathi@in.ibm.com> (he/him)
- guybedford - Guy Bedford <guybedford@gmail.com> (he/him)
- HarshithaKP - Harshitha K P <harshitha014@gmail.com> (she/her)
- hashseed - Yang Guo <yangguo@chromium.org> (he/him)
- himself65 - Zeyu Yang <himself65@outlook.com> (he/him)
- hiroppy - Yuta Hiroto <hello@hiroppy.me> (he/him)
- iansu - Ian Sutherland <ian@iansutherland.ca>
- indutny - Fedor Indutny <fedor.indutny@gmail.com>
- JacksonTian - Jackson Tian <shyvo1987@gmail.com>
- jasnell - James M Snell <jasnell@gmail.com> (he/him)
- jdalton - John-David Dalton <john.david.dalton@gmail.com>
- jkrems - Jan Krems <jan.krems@gmail.com> (he/him)
- joaocgreis - João Reis <reis@janeasystems.com>
- joyeecheung - Joyee Cheung <joyeec9h3@gmail.com> (she/her)
- juanarbol - Juan José Arboleda <soyjuanarbol@gmail.com> (he/him)
- JungMinu - Minwoo Jung <nodecorelab@gmail.com> (he/him)
- lance - Lance Ball <lball@redhat.com> (he/him)
- legendecas - Chengzhong Wu <legendecas@gmail.com> (he/him)
- Leko - Shingo Inoue <leko.noor@gmail.com> (he/him)
- linkgoron - Nitzan Uziely <linkgoron@gmail.com>
- lpinca - Luigi Pinca <luigipinca@gmail.com> (he/him)
- lundibundi - Denys Otrishko <shishugi@gmail.com> (he/him)
- Lxxyx - Zijian Liu <lxxyxzj@gmail.com> (he/him)
- mafintosh - Mathias Buus <mathiasbuus@gmail.com> (he/him)
- mcollina - Matteo Collina <matteo.collina@gmail.com> (he/him)
- mhdawson - Michael Dawson <midawson@redhat.com> (he/him)
- miladfarca - Milad Fa <mfarazma@redhat.com> (he/him)
- mildsunrise - Alba Mendez <me@alba.sh> (she/her)
- misterdjules - Julien Gilli <jgilli@nodejs.org>
- mmarchini - Mary Marchini <oss@mmarchini.me> (she/her)
- mscdex - Brian White <mscdex@mscdex.net>
- MylesBorins - Myles Borins <myles.borins@gmail.com> (he/him)
- ofrobots - Ali Ijaz Sheikh <ofrobots@google.com> (he/him)
- oyyd - Ouyang Yadong <oyydoibh@gmail.com> (he/him)
- panva - Filip Skokan <panva.ip@gmail.com>
- PoojaDurgad - Pooja D P <Pooja.D.P@ibm.com> (she/her)
- puzpuzpuz - Andrey Pechkurov <apechkurov@gmail.com> (he/him)
- Qard - Stephen Belanger <admin@stephenbelanger.com> (he/him)
- RaisinTen - Darshan Sen <raisinten@gmail.com> (he/him)
- refack - Refael Ackermann (רפאל פלחי) <refack@gmail.com> (he/him/הוא/אתה)
- rexagod - Pranshu Srivastava <rexagod@gmail.com> (he/him)
- richardlau - Richard Lau <rlau@redhat.com>
- rickyes - Ricky Zhou <0x19951125@gmail.com> (he/him)
- ronag - Robert Nagy <ronagy@icloud.com>
- rubys - Sam Ruby <rubys@intertwingly.net>
- ruyadorno - Ruy Adorno <ruyadorno@github.com> (he/him)
- rvagg - Rod Vagg <rod@vagg.org>
- ryzokuken - Ujjwal Sharma <ryzokuken@disroot.org> (he/him)
- saghul - Saúl Ibarra Corretgé <saghul@gmail.com>
- santigimeno - Santiago Gimeno <santiago.gimeno@gmail.com>
- seishun - Nikolai Vavilov <vvnicholas@gmail.com>
- shisama - Masashi Hirano <shisama07@gmail.com> (he/him)
- silverwind - Roman Reiss <me@silverwind.io>
- srl295 - Steven R Loomis <srloomis@us.ibm.com>
- starkwang - Weijia Wang <starkwang@126.com>
- sxa - Stewart X Addison <sxa@redhat.com> (he/him)
- targos - Michaël Zasso <targos@protonmail.com> (he/him)
- TimothyGu - Tiancheng "Timothy" Gu <timothygu99@gmail.com> (he/him)
- tniessen - Tobias Nießen <tniessen@tnie.de>
- trivikr - Trivikram Kamat <trivikr.dev@gmail.com>
- Trott - Rich Trott <rtrott@gmail.com> (he/him)
- vdeturckheim - Vladimir de Turckheim <vlad2t@hotmail.com> (he/him)
- watilde - Daijiro Wachi <daijiro.wachi@gmail.com> (he/him)
- watson - Thomas Watson <w@tson.dk>
- XadillaX - Khaidi Chu <i@2333.moe> (he/him)
- yashLadha - Yash Ladha <yash@yashladha.in> (he/him)
- yhwang - Yihong Wang <yh.wang@ibm.com>
- yorkie - Yorkie Liu <yorkiefixer@gmail.com>
- yosuke-furukawa - Yosuke Furukawa <yosuke.furukawa@gmail.com>
- ZYSzys - Yongsheng Zhang <zyszys98@gmail.com> (he/him)
Collaborator emeriti
- andrasq - Andras <andras@kinvey.com>
- AnnaMag - Anna M. Kedzierska <anna.m.kedzierska@gmail.com>
- aqrln - Alexey Orlenko <eaglexrlnk@gmail.com> (he/him)
- bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
- brendanashworth - Brendan Ashworth <brendan.ashworth@me.com>
- calvinmetcalf - Calvin Metcalf <calvin.metcalf@gmail.com>
- chrisdickinson - Chris Dickinson <christopher.s.dickinson@gmail.com>
- claudiorodriguez - Claudio Rodriguez <cjrodr@yahoo.com>
- DavidCai1993 - David Cai <davidcai1993@yahoo.com> (he/him)
- digitalinfinity - Hitesh Kanwathirtha <digitalinfinity@gmail.com> (he/him)
- eljefedelrodeodeljefe - Robert Jefe Lindstaedt <robert.lindstaedt@gmail.com>
- estliberitas - Alexander Makarenko <estliberitas@gmail.com>
- firedfox - Daniel Wang <wangyang0123@gmail.com>
- gibfahn - Gibson Fahnestock <gibfahn@gmail.com> (he/him)
- glentiki - Glen Keane <glenkeane.94@gmail.com> (he/him)
- iarna - Rebecca Turner <me@re-becca.org>
- imran-iq - Imran Iqbal <imran@imraniqbal.org>
- imyller - Ilkka Myller <ilkka.myller@nodefield.com>
- isaacs - Isaac Z. Schlueter <i@izs.me>
- italoacasas - Italo A. Casas <me@italoacasas.com> (he/him)
- jasongin - Jason Ginchereau <jasongin@microsoft.com>
- jbergstroem - Johan Bergström <bugs@bergstroem.nu>
- jhamhader - Yuval Brik <yuval@brik.org.il>
- joshgav - Josh Gavant <josh.gavant@outlook.com>
- julianduque - Julian Duque <julianduquej@gmail.com> (he/him)
- kfarnung - Kyle Farnung <kfarnung@microsoft.com> (he/him)
- kunalspathak - Kunal Pathak <kunal.pathak@microsoft.com>
- lucamaraschi - Luca Maraschi <luca.maraschi@gmail.com> (he/him)
- lxe - Aleksey Smolenchuk <lxe@lxe.co>
- maclover7 - Jon Moss <me@jonathanmoss.me> (he/him)
- matthewloring - Matthew Loring <mattloring@google.com>
- micnic - Nicu Micleușanu <micnic90@gmail.com> (he/him)
- mikeal - Mikeal Rogers <mikeal.rogers@gmail.com>
- monsanto - Christopher Monsanto <chris@monsan.to>
- MoonBall - Chen Gang <gangc.cxy@foxmail.com>
- not-an-aardvark - Teddy Katz <teddy.katz@gmail.com> (he/him)
- Olegas - Oleg Elifantiev <oleg@elifantiev.ru>
- orangemocha - Alexis Campailla <orangemocha@nodejs.org>
- othiym23 - Forrest L Norvell <ogd@aoaioxxysz.net> (he/him)
- petkaantonov - Petka Antonov <petka_antonov@hotmail.com>
- phillipj - Phillip Johnsen <johphi@gmail.com>
- piscisaureus - Bert Belder <bertbelder@gmail.com>
- pmq20 - Minqi Pan <pmq2001@gmail.com>
- princejwesley - Prince John Wesley <princejohnwesley@gmail.com>
- psmarshall - Peter Marshall <petermarshall@chromium.org> (he/him)
- rlidwka - Alex Kocharin <alex@kocharin.ru>
- rmg - Ryan Graham <r.m.graham@gmail.com>
- robertkowalski - Robert Kowalski <rok@kowalski.gd>
- romankl - Roman Klauke <romaaan.git@gmail.com>
- ronkorving - Ron Korving <ron@ronkorving.nl>
- RReverser - Ingvar Stepanyan <me@rreverser.com>
- sam-github - Sam Roberts <vieuxtech@gmail.com>
- sebdeckers - Sebastiaan Deckers <sebdeckers83@gmail.com>
- shigeki - Shigeki Ohtsu <ohtsu@ohtsu.org> (he/him)
- stefanmb - Stefan Budeanu <stefan@budeanu.com>
- tellnes - Christian Tellnes <christian@tellnes.no>
- thefourtheye - Sakthipriyan Vairamani <thechargingvolcano@gmail.com> (he/him)
- thlorenz - Thorsten Lorenz <thlorenz@gmx.de>
- trevnorris - Trevor Norris <trev.norris@gmail.com>
- tunniclm - Mike Tunnicliffe <m.j.tunnicliffe@gmail.com>
- vkurchatkin - Vladimir Kurchatkin <vladimir.kurchatkin@gmail.com>
- vsemozhetbyt - Vse Mozhet Byt <vsemozhetbyt@gmail.com> (he/him)
- whitlockjc - Jeremy Whitlock <jwhitlock@apache.org>
Collaborators follow the Collaborator Guide in maintaining the Node.js project.
Triagers
- Ayase-252 - Qingyu Deng <i@ayase-lab.com>
- marsonya - Akhil Marsonya <akhil.marsonya27@gmail.com> (he/him)
- PoojaDurgad - Pooja Durgad <Pooja.D.P@ibm.com>
- RaisinTen - Darshan Sen <raisinten@gmail.com>
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
To import the full set of trusted release keys (including subkeys possibly used to sign releases):
gpg --keyserver pool.sks-keyservers.net --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C
gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5
gpg --keyserver pool.sks-keyservers.net --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201
gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1
gpg --keyserver pool.sks-keyservers.net --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600
gpg --keyserver pool.sks-keyservers.net --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8
gpg --keyserver pool.sks-keyservers.net --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C
gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D
gpg --keyserver pool.sks-keyservers.net --recv-keys A48C2BEE680E841632CD4E44F07496B3EB3C1762
gpg --keyserver pool.sks-keyservers.net --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A
gpg --keyserver pool.sks-keyservers.net --recv-keys B9E2F5981AA6E0CD28160D9FF13993A75599653C
See the section above on 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
License
Node.js is available under the MIT license. Node.js also includes external libraries that are available under a variety of licenses. See LICENSE for the full license text.