diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml
deleted file mode 100644
index 98f562fd00b767..00000000000000
--- a/.github/workflows/auto-start-ci.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-name: Auto Start CI
-
-on:
- schedule:
- # Runs every five minutes (fastest the scheduler can run). Five minutes is
- # optimistic, it can take longer to run.
- # To understand why `schedule` is used instead of other events, refer to
- # ./doc/contributing/commit-queue.md
- - cron: '*/5 * * * *'
-
-concurrency: ${{ github.workflow }}
-
-env:
- NODE_VERSION: lts/*
-
-permissions:
- contents: read
-
-jobs:
- get-prs-for-ci:
- permissions:
- pull-requests: read
- if: github.repository == 'nodejs/node'
- runs-on: ubuntu-latest
- outputs:
- numbers: ${{ steps.get_prs_for_ci.outputs.numbers }}
- steps:
- - name: Get Pull Requests
- id: get_prs_for_ci
- run: >
- gh pr list \
- --repo ${{ github.repository }} \
- --label 'request-ci' \
- --json 'number' \
- -t '::set-output name=numbers::{{ range . }}{{ .number }} {{ end }}' \
- --limit 100
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- start-ci:
- permissions:
- contents: read
- pull-requests: write
- needs: get-prs-for-ci
- if: needs.get-prs-for-ci.outputs.numbers != ''
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
-
- - name: Install Node.js
- uses: actions/setup-node@v3
- with:
- node-version: ${{ env.NODE_VERSION }}
-
- - name: Install node-core-utils
- run: npm install -g node-core-utils
-
- - name: Setup node-core-utils
- run: |
- ncu-config set username ${{ secrets.JENKINS_USER }}
- ncu-config set token none
- ncu-config set jenkins_token ${{ secrets.JENKINS_TOKEN }}
- ncu-config set owner "${{ github.repository_owner }}"
- ncu-config set repo "$(echo ${{ github.repository }} | cut -d/ -f2)"
-
- - name: Start the CI
- run: ./tools/actions/start-ci.sh ${{ needs.get-prs-for-ci.outputs.numbers }}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml
deleted file mode 100644
index 2ced884f35c539..00000000000000
--- a/.github/workflows/build-tarball.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-name: Build from tarball
-
-on:
- pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
- paths-ignore:
- - .mailmap
- - '**.md'
- - AUTHORS
- - doc/**
- - .github/**
- - '!.github/workflows/build-tarball.yml'
- push:
- branches:
- - main
- - v[0-9]+.x-staging
- - v[0-9]+.x
- paths-ignore:
- - .mailmap
- - '**.md'
- - AUTHORS
- - doc/**
- - .github/**
- - '!.github/workflows/build-tarball.yml'
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- PYTHON_VERSION: '3.10'
- FLAKY_TESTS: keep_retrying
-
-permissions:
- contents: read
-
-jobs:
- build-tarball:
- if: github.event.pull_request.draft == false
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Set up Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- - name: Make tarball
- run: |
- export DISTTYPE=nightly
- export DATESTRING=`date "+%Y-%m-%d"`
- export COMMIT=$(git rev-parse --short=10 "$GITHUB_SHA")
- ./configure && make tar -j8 SKIP_XZ=1
- mkdir tarballs
- mv *.tar.gz tarballs
- - name: Upload tarball artifact
- uses: actions/upload-artifact@v3
- with:
- name: tarballs
- path: tarballs
- test-tarball-linux:
- needs: build-tarball
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Set up Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- - name: Download tarball
- uses: actions/download-artifact@v3
- with:
- name: tarballs
- path: tarballs
- - name: Extract tarball
- run: |
- tar xzf tarballs/*.tar.gz -C $RUNNER_TEMP
- echo "TAR_DIR=$RUNNER_TEMP/`basename tarballs/*.tar.gz .tar.gz`" >> $GITHUB_ENV
- - name: Copy directories needed for testing
- run: |
- cp -r tools/node_modules $TAR_DIR/tools
- cp -r tools/eslint-rules $TAR_DIR/tools
- - name: Build
- run: |
- cd $TAR_DIR
- make build-ci -j2 V=1
- - name: Test
- run: |
- cd $TAR_DIR
- make run-ci -j2 V=1 TEST_CI_ARGS="-p dots --measure-flakiness 9"
diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml
deleted file mode 100644
index af376d3aa5c533..00000000000000
--- a/.github/workflows/build-windows.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: Build Windows
-
-on:
- pull_request:
- paths-ignore:
- - README.md
- - .github/**
- - '!.github/workflows/build-windows.yml'
- types: [opened, synchronize, reopened, ready_for_review]
- push:
- branches:
- - main
- - canary
- - v[0-9]+.x-staging
- - v[0-9]+.x
- paths-ignore:
- - README.md
- - .github/**
- - '!.github/workflows/build-windows.yml'
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- PYTHON_VERSION: '3.10'
- FLAKY_TESTS: keep_retrying
-
-permissions:
- contents: read
-
-jobs:
- build-windows:
- if: github.event.pull_request.draft == false
- strategy:
- matrix:
- windows: [windows-2019]
- fail-fast: false
- runs-on: ${{ matrix.windows }}
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Set up Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ env.PYTHON_VERSION }}
- - name: Install deps
- run: choco install nasm
- - name: Environment Information
- run: npx envinfo
- - name: Build
- run: ./vcbuild.bat
diff --git a/.github/workflows/close-stalled.yml b/.github/workflows/close-stalled.yml
deleted file mode 100644
index 509d79056f97e3..00000000000000
--- a/.github/workflows/close-stalled.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: Close stalled issues and PRs
-on:
- schedule:
- - cron: 0 0 * * *
-
-env:
- CLOSE_MESSAGE: >
- Closing this because it has stalled. Feel free to reopen if this issue/PR
- is still relevant, or to ping the collaborator who labelled it stalled if
- you have any questions.
-
-permissions:
- contents: read
-
-jobs:
- stale:
- permissions:
- issues: write # for actions/stale to close stale issues
- pull-requests: write # for actions/stale to close stale PRs
- if: github.repository == 'nodejs/node'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/stale@v4
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- days-before-close: 30
- stale-pr-label: stalled
- stale-issue-label: stalled
- close-issue-message: ${{ env.CLOSE_MESSAGE }}
- close-pr-message: ${{ env.CLOSE_MESSAGE }}
- # used to filter issues to check whether or not should be closed, avoids hitting maximum operations allowed if needing to paginate through all open issues
- only-labels: stalled
- # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits
- operations-per-run: 500
- # deactivates automatic removal of stalled label if issue gets any activity
- remove-stale-when-updated: false
- # deactivates automatic stale labelling as we prefer to do that manually
- days-before-stale: -1
diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml
deleted file mode 100644
index 5f59a48bb5a6d0..00000000000000
--- a/.github/workflows/comment-labeled.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: Comment on issues and PRs when labeled
-on:
- issues:
- types: [labeled]
- pull_request_target:
- types: [labeled]
-
-env:
- STALE_MESSAGE: >
- This issue/PR was marked as stalled, it will be automatically closed in 30 days.
- If it should remain open, please leave a comment explaining why it should remain open.
- FAST_TRACK_MESSAGE: Fast-track has been requested by @${{ github.actor }}. Please 👍 to approve.
-
-permissions:
- contents: read
-
-jobs:
- stale-comment:
- permissions:
- issues: write
- pull-requests: write
- if: github.repository == 'nodejs/node' && github.event.label.name == 'stalled'
- runs-on: ubuntu-latest
- steps:
- - name: Post stalled comment
- env:
- NUMBER: ${{ github.event.issue.number || github.event.pull_request.number }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: gh issue comment "$NUMBER" --repo ${{ github.repository }} --body "$STALE_MESSAGE"
-
- fast-track:
- permissions:
- pull-requests: write
- if: github.repository == 'nodejs/node' && github.event_name == 'pull_request_target' && github.event.label.name == 'fast-track'
- runs-on: ubuntu-latest
- steps:
- - name: Request Fast-Track
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$FAST_TRACK_MESSAGE"
diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml
deleted file mode 100644
index f14bde4c7fb629..00000000000000
--- a/.github/workflows/daily.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Node.js daily job
-
-on:
- workflow_dispatch:
- schedule:
- - cron: 0 0 * * *
-
-env:
- NODE_VERSION: lts/*
-
-permissions:
- contents: read
-
-jobs:
- build-lto:
- runs-on: ubuntu-latest
- # not working on gcc-8 and gcc-9 see https://github.com/nodejs/node/issues/38570
- container: gcc:11
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v3
- with:
- node-version: ${{ env.NODE_VERSION }}
- - name: Environment Information
- run: npx envinfo
- - name: Build lto
- run: |
- apt-get update && apt-get install ninja-build python-is-python3 -y
- ./configure --enable-lto --ninja
- ninja -C out/Release
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
deleted file mode 100644
index 76660343ca2f46..00000000000000
--- a/.github/workflows/doc.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Test and upload documentation to artifacts
-
-on:
- pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
- push:
- branches:
- - main
- - v[0-9]+.x-staging
- - v[0-9]+.x
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- NODE_VERSION: lts/*
-
-permissions:
- contents: read
-
-jobs:
- build-docs:
- if: github.event.pull_request.draft == false
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v3
- with:
- node-version: ${{ env.NODE_VERSION }}
- - name: Environment Information
- run: npx envinfo
- - name: Build
- run: NODE=$(command -v node) make doc-only
- - uses: actions/upload-artifact@v3
- with:
- name: docs
- path: out/doc
- - name: Test
- run: NODE=$(command -v node) make test-doc-ci TEST_CI_ARGS="-p actions --measure-flakiness 9"
diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml
deleted file mode 100644
index 922a9359f5ed20..00000000000000
--- a/.github/workflows/label-pr.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: Label PRs
-
-on:
- pull_request_target:
- types: [opened]
-
-permissions:
- contents: read
-
-jobs:
- label:
- runs-on: ubuntu-latest
-
- steps:
- - uses: nodejs/node-pr-labeler@v1
- with:
- repo-token: ${{ secrets.GH_USER_TOKEN }}
- configuration-path: .github/label-pr-config.yml
diff --git a/.github/workflows/test-asan.yml b/.github/workflows/test-asan.yml
deleted file mode 100644
index c8e7a09e2e4efd..00000000000000
--- a/.github/workflows/test-asan.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-name: Test ASan
-
-on:
- pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
- paths-ignore:
- - .mailmap
- - '**.md'
- - AUTHORS
- - doc/**
- - .github/**
- - '!.github/workflows/test-asan.yml'
- push:
- branches:
- - main
- - canary
- - v[0-9]+.x-staging
- - v[0-9]+.x
- paths-ignore:
- - .mailmap
- - '**.md'
- - AUTHORS
- - doc/**
- - .github/**
- - '!.github/workflows/test-asan.yml'
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- ASAN_OPTIONS: intercept_tls_get_addr=0
- PYTHON_VERSION: '3.10'
- FLAKY_TESTS: keep_retrying
-
-permissions:
- contents: read
-
-jobs:
- test-asan:
- if: github.event.pull_request.draft == false
- runs-on: ubuntu-latest
- env:
- CC: clang
- CXX: clang++
- LINK: clang++
- CONFIG_FLAGS: --enable-asan
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Set up Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- - name: Build
- run: make build-ci -j2 V=1
- - name: Test
- run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions -t 300 --measure-flakiness 9"
diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml
deleted file mode 100644
index 24196849d1bac8..00000000000000
--- a/.github/workflows/test-linux.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: Test Linux
-
-on:
- pull_request:
- paths-ignore:
- - README.md
- - .github/**
- - '!.github/workflows/test-linux.yml'
- types: [opened, synchronize, reopened, ready_for_review]
- push:
- branches:
- - main
- - canary
- - v[0-9]+.x-staging
- - v[0-9]+.x
- paths-ignore:
- - README.md
- - .github/**
- - '!.github/workflows/test-linux.yml'
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- PYTHON_VERSION: '3.10'
- FLAKY_TESTS: keep_retrying
-
-permissions:
- contents: read
-
-jobs:
- test-linux:
- if: github.event.pull_request.draft == false
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Set up Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- - name: Build
- run: make build-ci -j2 V=1 CONFIG_FLAGS="--error-on-warn"
- - name: Test
- run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9"
diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml
deleted file mode 100644
index 7faddc8eaedaec..00000000000000
--- a/.github/workflows/test-macos.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: Test macOS
-
-on:
- pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
- paths-ignore:
- - .mailmap
- - '**.md'
- - AUTHORS
- - doc/**
- - .github/**
- - '!.github/workflows/test-macos.yml'
- push:
- branches:
- - main
- - canary
- - v[0-9]+.x-staging
- - v[0-9]+.x
- paths-ignore:
- - .mailmap
- - '**.md'
- - AUTHORS
- - doc/**
- - .github/**
- - '!.github/workflows/test-macos.yml'
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- PYTHON_VERSION: '3.10'
- FLAKY_TESTS: keep_retrying
-
-permissions:
- contents: read
-
-jobs:
- test-macOS:
- if: github.event.pull_request.draft == false
- runs-on: macos-latest
- steps:
- - uses: actions/checkout@v3
- with:
- persist-credentials: false
- - name: Set up Python ${{ env.PYTHON_VERSION }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- # The `npm ci` for this step fails a lot as part of the Test step. Run it
- # now so that we don't have to wait 2 hours for the Build step to pass
- # first before that failure happens. (And if there's something about
- # `make run-ci -j2` that is causing the failure and the failure doesn't
- # happen anymore running this step here first, that's also useful
- # information.)
- - name: tools/doc/node_modules workaround
- run: make tools/doc/node_modules
- - name: Build
- run: make build-ci -j2 V=1 CONFIG_FLAGS="--error-on-warn"
- - name: Test
- run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9"
diff --git a/README.md b/README.md
index 1f3663be3ead30..6832e605e37c77 100644
--- a/README.md
+++ b/README.md
@@ -1,803 +1,27 @@
# Node.js
-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](https://nodejs.org/en/).
-The Node.js project uses an [open governance model](./GOVERNANCE.md). The
-[OpenJS Foundation][] provides support for the project.
+This is the official [V8](https://github.com/v8/v8/wiki) fork of [Node.js](https://github.com/nodejs/node).
-**This project has a [Code of Conduct][].**
+## Quick start
-## Table of contents
+* If you need to run Node.js with V8 ToT, you can
+ [build Node with GN](https://chromium.googlesource.com/v8/node-ci/).
+* See [what to do](https://v8.dev/docs/node-integration) if your CL broke the
+ Node.js integration build.
-* [Support](#support)
-* [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)
-* [Building Node.js](#building-nodejs)
-* [Security](#security)
-* [Contributing to Node.js](#contributing-to-nodejs)
-* [Current project team members](#current-project-team-members)
- * [TSC (Technical Steering Committee)](#tsc-technical-steering-committee)
- * [Collaborators](#collaborators)
- * [Triagers](#triagers)
- * [Release keys](#release-keys)
-* [License](#license)
-## Support
-
-Looking for help? Check out the
-[instructions for getting support](.github/SUPPORT.md).
-
-## 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
- 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](https://semver.org). A
-member of the Release Team [signs](#release-keys) each Current and LTS release.
-For more information, see the
-[Release README](https://github.com/nodejs/Release#readme).
-
-### Download
-
-Binaries, installers, and source tarballs are available at
-.
-
-#### 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
-
-
-
-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 .
-Version-specific documentation is available in each release directory in the
-_docs_ subdirectory. Version-specific documentation is also at
-.
-
-### Verifying binaries
-
-Download directories contain a `SHASUMS256.txt` file with SHA checksums for the
-files.
-
-To download `SHASUMS256.txt` using `curl`:
-
-```console
-$ 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:
-
-```console
-$ 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](#release-keys). To
-import the keys:
-
-```console
-$ gpg --keyserver hkps://keys.openpgp.org --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D
-```
-
-See [Release keys](#release-keys) for a script to import active release keys.
-
-Next, download the `SHASUMS256.txt.sig` for the release:
-
-```console
-$ 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](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](./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](./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)
-* [BethGriggs](https://github.com/BethGriggs) -
- **Beth Griggs** <> (she/her)
-* [BridgeAR](https://github.com/BridgeAR) -
- **Ruben Bridgewater** <> (he/him)
-* [ChALkeR](https://github.com/ChALkeR) -
- **Сковорода Никита Андреевич** <> (he/him)
-* [cjihrig](https://github.com/cjihrig) -
- **Colin Ihrig** <> (he/him)
-* [danielleadams](https://github.com/danielleadams) -
- **Danielle Adams** <> (she/her)
-* [fhinkel](https://github.com/fhinkel) -
- **Franziska Hinkelmann** <> (she/her)
-* [GeoffreyBooth](https://github.com/geoffreybooth) -
- **Geoffrey Booth** <> (he/him)
-* [gireeshpunathil](https://github.com/gireeshpunathil) -
- **Gireesh Punathil** <> (he/him)
-* [jasnell](https://github.com/jasnell) -
- **James M Snell** <> (he/him)
-* [joyeecheung](https://github.com/joyeecheung) -
- **Joyee Cheung** <> (she/her)
-* [mcollina](https://github.com/mcollina) -
- **Matteo Collina** <> (he/him)
-* [mhdawson](https://github.com/mhdawson) -
- **Michael Dawson** <> (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** <> (he/him)
-* [tniessen](https://github.com/tniessen) -
- **Tobias Nießen** <> (he/him)
-* [Trott](https://github.com/Trott) -
- **Rich Trott** <> (he/him)
-
-
-
-Emeriti
-
-### TSC emeriti
-
-* [addaleax](https://github.com/addaleax) -
- **Anna Henningsen** <> (she/her)
-* [bnoordhuis](https://github.com/bnoordhuis) -
- **Ben Noordhuis** <>
-* [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)
-* [evanlucas](https://github.com/evanlucas) -
- **Evan Lucas** <> (he/him)
-* [Fishrock123](https://github.com/Fishrock123) -
- **Jeremiah Senkpiel** <> (he/they)
-* [gabrielschulhof](https://github.com/gabrielschulhof) -
- **Gabriel Schulhof** <>
-* [gibfahn](https://github.com/gibfahn) -
- **Gibson Fahnestock** <> (he/him)
-* [indutny](https://github.com/indutny) -
- **Fedor Indutny** <>
-* [isaacs](https://github.com/isaacs) -
- **Isaac Z. Schlueter** <>
-* [joshgav](https://github.com/joshgav) -
- **Josh Gavant** <>
-* [mmarchini](https://github.com/mmarchini) -
- **Mary Marchini** <> (she/her)
-* [mscdex](https://github.com/mscdex) -
- **Brian White** <>
-* [MylesBorins](https://github.com/MylesBorins) -
- **Myles Borins** <> (he/him)
-* [nebrius](https://github.com/nebrius) -
- **Bryan Hughes** <>
-* [ofrobots](https://github.com/ofrobots) -
- **Ali Ijaz Sheikh** <> (he/him)
-* [orangemocha](https://github.com/orangemocha) -
- **Alexis Campailla** <>
-* [piscisaureus](https://github.com/piscisaureus) -
- **Bert Belder** <>
-* [rvagg](https://github.com/rvagg) -
- **Rod Vagg** <>
-* [sam-github](https://github.com/sam-github) -
- **Sam Roberts** <>
-* [shigeki](https://github.com/shigeki) -
- **Shigeki Ohtsu** <> (he/him)
-* [thefourtheye](https://github.com/thefourtheye) -
- **Sakthipriyan Vairamani** <> (he/him)
-* [TimothyGu](https://github.com/TimothyGu) -
- **Tiancheng "Timothy" Gu** <> (he/him)
-* [trevnorris](https://github.com/trevnorris) -
- **Trevor Norris** <>
-
-
-
-
-
-### Collaborators
-
-* [addaleax](https://github.com/addaleax) -
- **Anna Henningsen** <> (she/her)
-* [aduh95](https://github.com/aduh95) -
- **Antoine du Hamel** <> (he/him)
-* [antsmartian](https://github.com/antsmartian) -
- **Anto Aravinth** <> (he/him)
-* [apapirovski](https://github.com/apapirovski) -
- **Anatoli Papirovski** <> (he/him)
-* [AshCripps](https://github.com/AshCripps) -
- **Ash Cripps** <>
-* [Ayase-252](https://github.com/Ayase-252) -
- **Qingyu Deng** <>
-* [bcoe](https://github.com/bcoe) -
- **Ben Coe** <> (he/him)
-* [bengl](https://github.com/bengl) -
- **Bryan English** <> (he/him)
-* [benjamingr](https://github.com/benjamingr) -
- **Benjamin Gruenbaum** <>
-* [BethGriggs](https://github.com/BethGriggs) -
- **Beth Griggs** <> (she/her)
-* [bmeck](https://github.com/bmeck) -
- **Bradley Farias** <>
-* [bnb](https://github.com/bnb) -
- **Tierney Cyren** <> (they/he)
-* [bnoordhuis](https://github.com/bnoordhuis) -
- **Ben Noordhuis** <>
-* [BridgeAR](https://github.com/BridgeAR) -
- **Ruben Bridgewater** <> (he/him)
-* [cclauss](https://github.com/cclauss) -
- **Christian Clauss** <> (he/him)
-* [ChALkeR](https://github.com/ChALkeR) -
- **Сковорода Никита Андреевич** <> (he/him)
-* [cjihrig](https://github.com/cjihrig) -
- **Colin Ihrig** <> (he/him)
-* [codebytere](https://github.com/codebytere) -
- **Shelley Vohr** <> (she/her)
-* [danbev](https://github.com/danbev) -
- **Daniel Bevenius** <> (he/him)
-* [danielleadams](https://github.com/danielleadams) -
- **Danielle Adams** <> (she/her)
-* [devnexen](https://github.com/devnexen) -
- **David Carlier** <>
-* [devsnek](https://github.com/devsnek) -
- **Gus Caplan** <> (they/them)
-* [dmabupt](https://github.com/dmabupt) -
- **Xu Meng** <> (he/him)
-* [dnlup](https://github.com/dnlup)
- **Daniele Belardi** <> (he/him)
-* [edsadr](https://github.com/edsadr) -
- **Adrian Estrada** <> (he/him)
-* [erickwendel](https://github.com/erickwendel) -
- **Erick Wendel** <> (he/him)
-* [evanlucas](https://github.com/evanlucas) -
- **Evan Lucas** <> (he/him)
-* [fhinkel](https://github.com/fhinkel) -
- **Franziska Hinkelmann** <> (she/her)
-* [F3n67u](https://github.com/F3n67u) -
- **Feng Yu** <> (he/him)
-* [Flarna](https://github.com/Flarna) -
- **Gerhard Stöbich** <> (he/they)
-* [gabrielschulhof](https://github.com/gabrielschulhof) -
- **Gabriel Schulhof** <>
-* [gengjiawen](https://github.com/gengjiawen) -
- **Jiawen Geng** <>
-* [GeoffreyBooth](https://github.com/geoffreybooth) -
- **Geoffrey Booth** <> (he/him)
-* [gireeshpunathil](https://github.com/gireeshpunathil) -
- **Gireesh Punathil** <> (he/him)
-* [guybedford](https://github.com/guybedford) -
- **Guy Bedford** <> (he/him)
-* [HarshithaKP](https://github.com/HarshithaKP) -
- **Harshitha K P** <> (she/her)
-* [himself65](https://github.com/himself65) -
- **Zeyu "Alex" Yang** <> (he/him)
-* [iansu](https://github.com/iansu) -
- **Ian Sutherland** <>
-* [indutny](https://github.com/indutny) -
- **Fedor Indutny** <>
-* [JacksonTian](https://github.com/JacksonTian) -
- **Jackson Tian** <>
-* [JakobJingleheimer](https://github.com/JakobJingleheimer) -
- **Jacob Smith** <> (he/him)
-* [jasnell](https://github.com/jasnell) -
- **James M Snell** <> (he/him)
-* [jkrems](https://github.com/jkrems) -
- **Jan Krems** <> (he/him)
-* [joesepi](https://github.com/joesepi) -
- **Joe Sepi** <> (he/him)
-* [joyeecheung](https://github.com/joyeecheung) -
- **Joyee Cheung** <> (she/her)
-* [juanarbol](https://github.com/juanarbol) -
- **Juan José Arboleda** <> (he/him)
-* [JungMinu](https://github.com/JungMinu) -
- **Minwoo Jung** <> (he/him)
-* [kuriyosh](https://github.com/kuriyosh) -
- **Yoshiki Kurihara** <> (he/him)
-* [legendecas](https://github.com/legendecas) -
- **Chengzhong Wu** <> (he/him)
-* [Leko](https://github.com/Leko) -
- **Shingo Inoue** <> (he/him)
-* [linkgoron](https://github.com/linkgoron) -
- **Nitzan Uziely** <>
-* [LiviaMedeiros](https://github.com/LiviaMedeiros) -
- **LiviaMedeiros** <>
-* [lpinca](https://github.com/lpinca) -
- **Luigi Pinca** <> (he/him)
-* [Lxxyx](https://github.com/Lxxyx) -
- **Zijian Liu** <> (he/him)
-* [marsonya](https://github.com/marsonya) -
- **Akhil Marsonya** <> (he/him)
-* [mcollina](https://github.com/mcollina) -
- **Matteo Collina** <> (he/him)
-* [meixg](https://github.com/meixg) -
- **Xuguang Mei** <> (he/him)
-* [Mesteery](https://github.com/Mesteery) -
- **Mestery** <> (he/him)
-* [mhdawson](https://github.com/mhdawson) -
- **Michael Dawson** <> (he/him)
-* [miladfarca](https://github.com/miladfarca) -
- **Milad Fa** <> (he/him)
-* [mildsunrise](https://github.com/mildsunrise) -
- **Alba Mendez** <> (she/her)
-* [MoLow](https://github.com/MoLow) -
- **Moshe Atlow** <> (he/him)
-* [mscdex](https://github.com/mscdex) -
- **Brian White** <>
-* [MylesBorins](https://github.com/MylesBorins) -
- **Myles Borins** <> (he/him)
-* [oyyd](https://github.com/oyyd) -
- **Ouyang Yadong** <> (he/him)
-* [panva](https://github.com/panva) -
- **Filip Skokan** <>
-* [PoojaDurgad](https://github.com/PoojaDurgad) -
- **Pooja D P** <> (she/her)
-* [puzpuzpuz](https://github.com/puzpuzpuz) -
- **Andrey Pechkurov** <> (he/him)
-* [Qard](https://github.com/Qard) -
- **Stephen Belanger** <> (he/him)
-* [RafaelGSS](https://github.com/RafaelGSS) -
- **Rafael Gonzaga** <> (he/him)
-* [RaisinTen](https://github.com/RaisinTen) -
- **Darshan Sen** <> (he/him)
-* [richardlau](https://github.com/richardlau) -
- **Richard Lau** <>
-* [rickyes](https://github.com/rickyes) -
- **Ricky Zhou** <<0x19951125@gmail.com>> (he/him)
-* [ronag](https://github.com/ronag) -
- **Robert Nagy** <>
-* [ruyadorno](https://github.com/ruyadorno) -
- **Ruy Adorno** <> (he/him)
-* [rvagg](https://github.com/rvagg) -
- **Rod Vagg** <>
-* [ryzokuken](https://github.com/ryzokuken) -
- **Ujjwal Sharma** <> (he/him)
-* [santigimeno](https://github.com/santigimeno) -
- **Santiago Gimeno** <>
-* [shisama](https://github.com/shisama) -
- **Masashi Hirano** <> (he/him)
-* [ShogunPanda](https://github.com/ShogunPanda) -
- **Paolo Insogna** <> (he/him)
-* [srl295](https://github.com/srl295) -
- **Steven R Loomis** <>
-* [starkwang](https://github.com/starkwang) -
- **Weijia Wang** <>
-* [sxa](https://github.com/sxa) -
- **Stewart X Addison** <> (he/him)
-* [targos](https://github.com/targos) -
- **Michaël Zasso** <> (he/him)
-* [theanarkh](https://github.com/theanarkh) -
- **theanarkh** <> (he/him)
-* [TimothyGu](https://github.com/TimothyGu) -
- **Tiancheng "Timothy" Gu** <> (he/him)
-* [tniessen](https://github.com/tniessen) -
- **Tobias Nießen** <> (he/him)
-* [trivikr](https://github.com/trivikr) -
- **Trivikram Kamat** <>
-* [Trott](https://github.com/Trott) -
- **Rich Trott** <> (he/him)
-* [vdeturckheim](https://github.com/vdeturckheim) -
- **Vladimir de Turckheim** <> (he/him)
-* [VoltrexMaster](https://github.com/VoltrexMaster) -
- **Mohammed Keyvanzadeh** <> (he/him)
-* [watilde](https://github.com/watilde) -
- **Daijiro Wachi** <> (he/him)
-* [XadillaX](https://github.com/XadillaX) -
- **Khaidi Chu** <> (he/him)
-* [yashLadha](https://github.com/yashLadha) -
- **Yash Ladha** <> (he/him)
-* [ZYSzys](https://github.com/ZYSzys) -
- **Yongsheng Zhang** <> (he/him)
-
-
-
-Emeriti
-
-
-
-### Collaborator emeriti
-
-* [ak239](https://github.com/ak239) -
- **Aleksei Koziatinskii** <>
-* [andrasq](https://github.com/andrasq) -
- **Andras** <>
-* [AnnaMag](https://github.com/AnnaMag) -
- **Anna M. Kedzierska** <>
-* [AndreasMadsen](https://github.com/AndreasMadsen) -
- **Andreas Madsen** <> (he/him)
-* [aqrln](https://github.com/aqrln) -
- **Alexey Orlenko** <> (he/him)
-* [bmeurer](https://github.com/bmeurer) -
- **Benedikt Meurer** <>
-* [boneskull](https://github.com/boneskull) -
- **Christopher Hiller** <> (he/him)
-* [brendanashworth](https://github.com/brendanashworth) -
- **Brendan Ashworth** <>
-* [bzoz](https://github.com/bzoz) -
- **Bartosz Sosnowski** <>
-* [calvinmetcalf](https://github.com/calvinmetcalf) -
- **Calvin Metcalf** <>
-* [chrisdickinson](https://github.com/chrisdickinson) -
- **Chris Dickinson** <>
-* [claudiorodriguez](https://github.com/claudiorodriguez) -
- **Claudio Rodriguez** <>
-* [DavidCai1993](https://github.com/DavidCai1993) -
- **David Cai** <> (he/him)
-* [davisjam](https://github.com/davisjam) -
- **Jamie Davis** <> (he/him)
-* [digitalinfinity](https://github.com/digitalinfinity) -
- **Hitesh Kanwathirtha** <> (he/him)
-* [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) -
- **Robert Jefe Lindstaedt** <>
-* [estliberitas](https://github.com/estliberitas) -
- **Alexander Makarenko** <>
-* [eugeneo](https://github.com/eugeneo) -
- **Eugene Ostroukhov** <>
-* [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** <>
-* [gibfahn](https://github.com/gibfahn) -
- **Gibson Fahnestock** <> (he/him)
-* [glentiki](https://github.com/glentiki) -
- **Glen Keane** <> (he/him)
-* [hashseed](https://github.com/hashseed) -
- **Yang Guo** <> (he/him)
-* [hiroppy](https://github.com/hiroppy) -
- **Yuta Hiroto** <> (he/him)
-* [iarna](https://github.com/iarna) -
- **Rebecca Turner** <>
-* [imran-iq](https://github.com/imran-iq) -
- **Imran Iqbal** <>
-* [imyller](https://github.com/imyller) -
- **Ilkka Myller** <>
-* [isaacs](https://github.com/isaacs) -
- **Isaac Z. Schlueter** <>
-* [italoacasas](https://github.com/italoacasas) -
- **Italo A. Casas** <> (he/him)
-* [jasongin](https://github.com/jasongin) -
- **Jason Ginchereau** <>
-* [jbergstroem](https://github.com/jbergstroem) -
- **Johan Bergström** <>
-* [jdalton](https://github.com/jdalton) -
- **John-David Dalton** <>
-* [jhamhader](https://github.com/jhamhader) -
- **Yuval Brik** <>
-* [joaocgreis](https://github.com/joaocgreis) -
- **João Reis** <>
-* [joshgav](https://github.com/joshgav) -
- **Josh Gavant** <>
-* [julianduque](https://github.com/julianduque) -
- **Julian Duque** <> (he/him)
-* [kfarnung](https://github.com/kfarnung) -
- **Kyle Farnung** <> (he/him)
-* [kunalspathak](https://github.com/kunalspathak) -
- **Kunal Pathak** <>
-* [lance](https://github.com/lance) -
- **Lance Ball** <> (he/him)
-* [lucamaraschi](https://github.com/lucamaraschi) -
- **Luca Maraschi** <> (he/him)
-* [lundibundi](https://github.com/lundibundi) -
- **Denys Otrishko** <> (he/him)
-* [lxe](https://github.com/lxe) -
- **Aleksey Smolenchuk** <>
-* [maclover7](https://github.com/maclover7) -
- **Jon Moss** <> (he/him)
-* [mafintosh](https://github.com/mafintosh) -
- **Mathias Buus** <> (he/him)
-* [matthewloring](https://github.com/matthewloring) -
- **Matthew Loring** <>
-* [micnic](https://github.com/micnic) -
- **Nicu Micleușanu** <> (he/him)
-* [mikeal](https://github.com/mikeal) -
- **Mikeal Rogers** <>
-* [misterdjules](https://github.com/misterdjules) -
- **Julien Gilli** <>
-* [mmarchini](https://github.com/mmarchini) -
- **Mary Marchini** <> (she/her)
-* [monsanto](https://github.com/monsanto) -
- **Christopher Monsanto** <>
-* [MoonBall](https://github.com/MoonBall) -
- **Chen Gang** <>
-* [not-an-aardvark](https://github.com/not-an-aardvark) -
- **Teddy Katz** <> (he/him)
-* [ofrobots](https://github.com/ofrobots) -
- **Ali Ijaz Sheikh** <> (he/him)
-* [Olegas](https://github.com/Olegas) -
- **Oleg Elifantiev** <>
-* [orangemocha](https://github.com/orangemocha) -
- **Alexis Campailla** <>
-* [othiym23](https://github.com/othiym23) -
- **Forrest L Norvell** <> (they/them/themself)
-* [petkaantonov](https://github.com/petkaantonov) -
- **Petka Antonov** <>
-* [phillipj](https://github.com/phillipj) -
- **Phillip Johnsen** <>
-* [piscisaureus](https://github.com/piscisaureus) -
- **Bert Belder** <>
-* [pmq20](https://github.com/pmq20) -
- **Minqi Pan** <>
-* [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/הוא/אתה)
-* [rexagod](https://github.com/rexagod) -
- **Pranshu Srivastava** <> (he/him)
-* [rlidwka](https://github.com/rlidwka) -
- **Alex Kocharin** <>
-* [rmg](https://github.com/rmg) -
- **Ryan Graham** <>
-* [robertkowalski](https://github.com/robertkowalski) -
- **Robert Kowalski** <>
-* [romankl](https://github.com/romankl) -
- **Roman Klauke** <>
-* [ronkorving](https://github.com/ronkorving) -
- **Ron Korving** <>
-* [RReverser](https://github.com/RReverser) -
- **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** <>
-* [sebdeckers](https://github.com/sebdeckers) -
- **Sebastiaan Deckers** <>
-* [seishun](https://github.com/seishun) -
- **Nikolai Vavilov** <>
-* [shigeki](https://github.com/shigeki) -
- **Shigeki Ohtsu** <> (he/him)
-* [silverwind](https://github.com/silverwind) -
- **Roman Reiss** <>
-* [stefanmb](https://github.com/stefanmb) -
- **Stefan Budeanu** <>
-* [tellnes](https://github.com/tellnes) -
- **Christian Tellnes** <>
-* [thefourtheye](https://github.com/thefourtheye) -
- **Sakthipriyan Vairamani** <> (he/him)
-* [thlorenz](https://github.com/thlorenz) -
- **Thorsten Lorenz** <>
-* [trevnorris](https://github.com/trevnorris) -
- **Trevor Norris** <>
-* [tunniclm](https://github.com/tunniclm) -
- **Mike Tunnicliffe** <>
-* [vkurchatkin](https://github.com/vkurchatkin) -
- **Vladimir Kurchatkin** <>
-* [vsemozhetbyt](https://github.com/vsemozhetbyt) -
- **Vse Mozhet Byt** <> (he/him)
-* [watson](https://github.com/watson) -
- **Thomas Watson** <>
-* [whitlockjc](https://github.com/whitlockjc) -
- **Jeremy Whitlock** <>
-* [yhwang](https://github.com/yhwang) -
- **Yihong Wang** <>
-* [yorkie](https://github.com/yorkie) -
- **Yorkie Liu** <>
-* [yosuke-furukawa](https://github.com/yosuke-furukawa) -
- **Yosuke Furukawa** <>
-
-
-
-
-
-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** <>
-* [daeyeon](https://github.com/daeyeon) -
- **Daeyeon Jeong** <> (he/him)
-* [F3n67u](https://github.com/F3n67u) -
- **Feng Yu** <> (he/him)
-* [himadriganguly](https://github.com/himadriganguly) -
- **Himadri Ganguly** <> (he/him)
-* [iam-frankqiu](https://github.com/iam-frankqiu) -
- **Frank Qiu** <> (he/him)
-* [kvakil](https://github.com/kvakil) -
- **Keyhan Vakil** <> (they/them)
-* [marsonya](https://github.com/marsonya) -
- **Akhil Marsonya** <> (he/him)
-* [meixg](https://github.com/meixg) -
- **Xuguang Mei** <> (he/him)
-* [Mesteery](https://github.com/Mesteery) -
- **Mestery** <> (he/him)
-* [MoLow](https://github.com/MoLow) -
- **Moshe Atlow** <> (he/him)
-* [PoojaDurgad](https://github.com/PoojaDurgad) -
- **Pooja Durgad** <>
-* [RaisinTen](https://github.com/RaisinTen) -
- **Darshan Sen** <>
-* [VoltrexMaster](https://github.com/VoltrexMaster) -
- **Mohammed Keyvanzadeh** <> (he/him)
-
-### Release keys
-
-Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
-
-* **Beth Griggs** <>
- `4ED778F539E3634C779C87C6D7062848A1AB005C`
-* **Bryan English** <>
- `141F07595B7B3FFE74309A937405533BE57C7D57`
-* **Colin Ihrig** <>
- `94AE36675C464D64BAFA68DD7434390BDBE9B9C5`
-* **Danielle Adams** <>
- `74F12602B6F1C4E913FAA37AD3A89613643B6201`
-* **James M Snell** <>
- `71DCFD284A79C3B38668286BC97EC7A07EDE3FC1`
-* **Juan José Arboleda** <>
- `61FC681DFB92A079F1685E77973F295594EC4689`
-* **Michaël Zasso** <>
- `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600`
-* **Myles Borins** <>
- `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8`
-* **RafaelGSS** <>
- `890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4`
-* **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):
-
-```bash
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 61FC681DFB92A079F1685E77973F295594EC4689
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600
-gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4
-gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C
-gpg --keyserver hkps://keys.openpgp.org --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D
-gpg --keyserver hkps://keys.openpgp.org --recv-keys A48C2BEE680E841632CD4E44F07496B3EB3C1762
-gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A
-gpg --keyserver hkps://keys.openpgp.org --recv-keys B9E2F5981AA6E0CD28160D9FF13993A75599653C
-```
-
-See [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)
-
-## 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 text.
-
-[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]: 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
diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h
index 606083c87de579..fdb4cdb9d177d4 100644
--- a/deps/uv/include/uv.h
+++ b/deps/uv/include/uv.h
@@ -1072,7 +1072,7 @@ enum uv_process_flags {
struct uv_process_s {
UV_HANDLE_FIELDS
uv_exit_cb exit_cb;
- int pid;
+ uv_pid_t pid;
UV_PROCESS_PRIVATE_FIELDS
};
@@ -1082,6 +1082,7 @@ UV_EXTERN int uv_spawn(uv_loop_t* loop,
UV_EXTERN int uv_process_kill(uv_process_t*, int signum);
UV_EXTERN int uv_kill(int pid, int signum);
UV_EXTERN uv_pid_t uv_process_get_pid(const uv_process_t*);
+UV_EXTERN uv_pid_t uv__waitpid(uv_pid_t pid, int *status, int options);
/*
@@ -1213,7 +1214,9 @@ typedef struct {
uint64_t ru_nivcsw; /* involuntary context switches */
} uv_rusage_t;
+#ifndef __Fuchsia__
UV_EXTERN int uv_getrusage(uv_rusage_t* rusage);
+#endif
UV_EXTERN int uv_os_homedir(char* buffer, size_t* size);
UV_EXTERN int uv_os_tmpdir(char* buffer, size_t* size);
@@ -1239,8 +1242,10 @@ UV_EXTERN uv_pid_t uv_os_getppid(void);
# define UV_PRIORITY_HIGHEST -20
#endif
+#ifndef __Fuchsia__
UV_EXTERN int uv_os_getpriority(uv_pid_t pid, int* priority);
UV_EXTERN int uv_os_setpriority(uv_pid_t pid, int priority);
+#endif
UV_EXTERN int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count);
UV_EXTERN void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count);
diff --git a/deps/uv/include/uv/unix.h b/deps/uv/include/uv/unix.h
index ea37d78768654e..0ec9045bbd4cda 100644
--- a/deps/uv/include/uv/unix.h
+++ b/deps/uv/include/uv/unix.h
@@ -69,6 +69,9 @@
defined(__QNX__) || \
defined(__GNU__)
# include "uv/posix.h"
+#elif defined(__Fuchsia__)
+# include "uv/posix.h"
+# include
#endif
#ifndef NI_MAXHOST
@@ -126,7 +129,11 @@ typedef struct uv_buf_t {
typedef int uv_file;
typedef int uv_os_sock_t;
typedef int uv_os_fd_t;
+#ifdef __Fuchsia__
+typedef zx_handle_t uv_pid_t;
+#else
typedef pid_t uv_pid_t;
+#endif
#define UV_ONCE_INIT PTHREAD_ONCE_INIT
diff --git a/deps/uv/src/unix/core.c b/deps/uv/src/unix/core.c
index 71e9c525c4a77b..5ec0c43d861793 100644
--- a/deps/uv/src/unix/core.c
+++ b/deps/uv/src/unix/core.c
@@ -38,7 +38,9 @@
#include
#include /* INT_MAX, PATH_MAX, IOV_MAX */
#include /* writev */
+#ifndef __Fuchsia__
#include /* getrusage */
+#endif
#include
#include
#include
@@ -975,6 +977,7 @@ int uv__fd_exists(uv_loop_t* loop, int fd) {
}
+#ifndef __Fuchsia__
int uv_getrusage(uv_rusage_t* rusage) {
struct rusage usage;
@@ -1006,7 +1009,7 @@ int uv_getrusage(uv_rusage_t* rusage) {
return 0;
}
-
+#endif // !__Fuchsia__
int uv__open_cloexec(const char* path, int flags) {
#if defined(O_CLOEXEC)
@@ -1413,7 +1416,7 @@ uv_pid_t uv_os_getppid(void) {
return getppid();
}
-
+#ifndef __Fuchsia__
int uv_os_getpriority(uv_pid_t pid, int* priority) {
int r;
@@ -1440,7 +1443,7 @@ int uv_os_setpriority(uv_pid_t pid, int priority) {
return 0;
}
-
+#endif // !__Fuchsia__
int uv_os_uname(uv_utsname_t* buffer) {
struct utsname buf;
diff --git a/deps/uv/src/unix/fuchsia.c b/deps/uv/src/unix/fuchsia.c
new file mode 100644
index 00000000000000..e7693b9214bd27
--- /dev/null
+++ b/deps/uv/src/unix/fuchsia.c
@@ -0,0 +1,69 @@
+#include "uv.h"
+#include "internal.h"
+
+#include
+#include
+
+#include
+
+int uv_exepath(char* buffer, size_t* size) {
+ if (buffer == NULL || size == NULL || *size == 0) return UV_EINVAL;
+ const char* path = "/pkg/";
+ if (*size < strlen(path) + 1) return UV_EINVAL;
+ strcpy(buffer, "/pkg/");
+ return 0;
+}
+
+void uv_loadavg(double avg[3]) {
+ // Not implemented. As in the case of Windows, it returns [0, 0, 0].
+ avg[0] = avg[1] = avg[2] = 0;
+}
+
+int uv_uptime(double* uptime) {
+ if (uptime == NULL) return UV_EINVAL;
+ // TODO(victor): This is the number of nanoseconds since the system was
+ // powered on. It does not always reset on reboot and does not adjust during
+ // sleep, and thus should not be used as a reliable source of uptime.
+ zx_time_t time_ns = zx_clock_get_monotonic();
+ *uptime = time_ns / 1000000000.0; // in seconds
+ return 0;
+}
+
+int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
+ *cpu_infos = NULL;
+ *count = 0;
+ return UV_ENOSYS;
+}
+
+uint64_t uv_get_free_memory(void) {
+ assert(0 && "uv_get_free_memory not supported on Fuchsia.");
+ return 0;
+}
+
+uint64_t uv_get_constrained_memory(void) {
+ assert(0 && "uv_get_constrained_memory not supported on Fuchsia.");
+ return 0;
+}
+
+uint64_t uv_get_total_memory(void) {
+ assert(0 && "uv_get_total_memory not supported on Fuchsia.");
+ return 0;
+}
+
+int uv_resident_set_memory(size_t* rss) {
+ assert(0 && "uv_resident_set_memory not supported on Fuchsia.");
+ return 0;
+}
+
+int uv_interface_addresses(uv_interface_address_t** addresses, int* count) {
+ *count = 0;
+ *addresses = NULL;
+ return UV_ENOSYS;
+}
+
+void uv_free_interface_addresses(uv_interface_address_t* addresses, int count) {
+ for (int i = 0; i < count; i++) {
+ uv__free(addresses[i].name);
+ }
+ uv__free(addresses);
+}
diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c
index a88e71c339351f..4ce516d2ee01e3 100644
--- a/deps/uv/src/unix/loop.c
+++ b/deps/uv/src/unix/loop.c
@@ -31,7 +31,7 @@ int uv_loop_init(uv_loop_t* loop) {
uv__loop_internal_fields_t* lfields;
void* saved_data;
int err;
-
+
saved_data = loop->data;
memset(loop, 0, sizeof(*loop));
diff --git a/deps/uv/src/unix/pipe.c b/deps/uv/src/unix/pipe.c
index 788e038e8aaae9..51ecab59fb5210 100644
--- a/deps/uv/src/unix/pipe.c
+++ b/deps/uv/src/unix/pipe.c
@@ -160,11 +160,17 @@ int uv_pipe_open(uv_pipe_t* handle, uv_file fd) {
return err;
#endif /* defined(__APPLE__) */
+#ifdef __Fuchsia__
+ // TODO(victor): fcntl is not returning the correct mode.
+ // As a temporary hack, we set both flags.
+ flags |= UV_HANDLE_READABLE | UV_HANDLE_WRITABLE;
+#else
mode &= O_ACCMODE;
if (mode != O_WRONLY)
flags |= UV_HANDLE_READABLE;
if (mode != O_RDONLY)
flags |= UV_HANDLE_WRITABLE;
+#endif
return uv__stream_open((uv_stream_t*)handle, fd, flags);
}
diff --git a/deps/uv/src/unix/process.c b/deps/uv/src/unix/process.c
index 91bf3c507022b2..f9efb95da54511 100644
--- a/deps/uv/src/unix/process.c
+++ b/deps/uv/src/unix/process.c
@@ -34,6 +34,11 @@
#include
#include
+#ifdef __Fuchsia__
+# include
+# include
+#endif
+
#if defined(__APPLE__) && !TARGET_OS_IPHONE
# include
# define environ (*_NSGetEnviron())
@@ -49,6 +54,30 @@ extern char **environ;
# include "zos-base.h"
#endif
+uv_pid_t uv__waitpid(uv_pid_t pid, int *status, int options) {
+#ifdef __Fuchsia__
+ // TODO(victor): ignoring options for now
+ assert(options == 0);
+
+ zx_status_t result = zx_object_wait_one(pid, ZX_TASK_TERMINATED, ZX_TIME_INFINITE, NULL);
+ if (result != ZX_OK)
+ goto error;
+
+ zx_info_process_t proc_info;
+ result = zx_object_get_info(pid, ZX_INFO_PROCESS, &proc_info, sizeof(proc_info), NULL, NULL);
+ if (result != ZX_OK)
+ goto error;
+
+ *status = proc_info.return_code;
+ return 0;
+
+error:
+ errno = ECHILD;
+ return -1;
+#else
+ return waitpid(pid, status, options);
+#endif
+}
static void uv__chld(uv_signal_t* handle, int signum) {
uv_process_t* process;
@@ -56,7 +85,7 @@ static void uv__chld(uv_signal_t* handle, int signum) {
int exit_status;
int term_signal;
int status;
- pid_t pid;
+ uv_pid_t pid;
QUEUE pending;
QUEUE* q;
QUEUE* h;
@@ -73,7 +102,7 @@ static void uv__chld(uv_signal_t* handle, int signum) {
q = QUEUE_NEXT(q);
do
- pid = waitpid(process->pid, &status, WNOHANG);
+ pid = uv__waitpid(process->pid, &status, WNOHANG);
while (pid == -1 && errno == EINTR);
if (pid == 0)
@@ -188,6 +217,7 @@ static void uv__process_close_stream(uv_stdio_container_t* container) {
}
+#ifndef __Fuchsia__
static void uv__write_int(int fd, int val) {
ssize_t n;
@@ -200,6 +230,7 @@ static void uv__write_int(int fd, int val) {
assert(n == sizeof(val));
}
+#endif
static void uv__write_errno(int error_fd) {
@@ -208,7 +239,7 @@ static void uv__write_errno(int error_fd) {
}
-#if !(defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH))
+#if !(defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH)) && !defined(__Fuchsia__)
/* execvp is marked __WATCHOS_PROHIBITED __TVOS_PROHIBITED, so must be
* avoided. Since this isn't called on those targets, the function
* doesn't even need to be defined for them.
@@ -340,7 +371,6 @@ static void uv__process_child_init(const uv_process_options_t* options,
}
#endif
-
int uv_spawn(uv_loop_t* loop,
uv_process_t* process,
const uv_process_options_t* options) {
@@ -355,7 +385,7 @@ int uv_spawn(uv_loop_t* loop,
int (*pipes)[2];
int stdio_count;
ssize_t r;
- pid_t pid;
+ uv_pid_t pid;
int err;
int exec_errorno;
int i;
@@ -425,6 +455,29 @@ int uv_spawn(uv_loop_t* loop,
/* Acquire write lock to prevent opening new fds in worker threads */
uv_rwlock_wrlock(&loop->cloexec_lock);
+#ifdef __Fuchsia__
+ const char *executable_path;
+ if (*options->file == 0) {
+ // TODO(victor): This is not necessarilly the name of the process!!
+ executable_path = "/pkg/uv_tests";
+ } else {
+ executable_path = options->file;
+ }
+
+ // TODO(victor): missing uv_process_child_init logic before spawning.
+ char err_msg_out[FDIO_SPAWN_ERR_MSG_MAX_LENGTH];
+ zx_status_t zx_status = fdio_spawn_etc(ZX_HANDLE_INVALID, FDIO_SPAWN_CLONE_ALL, executable_path,
+ (const char* const *)options->args,
+ (const char* const *)options->env, 0, NULL,
+ &pid, err_msg_out);
+ if (zx_status != ZX_OK) {
+ err = UV__ERR(ENOENT);
+ uv_rwlock_wrunlock(&loop->cloexec_lock);
+ uv__close(signal_pipe[0]);
+ uv__close(signal_pipe[1]);
+ goto error;
+ }
+#else
/* Start the child with most signals blocked, to avoid any issues before we
* can reset them, but allow program failures to exit (and not hang). */
sigfillset(&signewset);
@@ -448,6 +501,7 @@ int uv_spawn(uv_loop_t* loop,
if (pthread_sigmask(SIG_SETMASK, &sigoldset, NULL) != 0)
abort();
+#endif
/* Release lock in parent process */
uv_rwlock_wrunlock(&loop->cloexec_lock);
@@ -469,12 +523,12 @@ int uv_spawn(uv_loop_t* loop,
; /* okay, EOF */
else if (r == sizeof(exec_errorno)) {
do
- err = waitpid(pid, &status, 0); /* okay, read errorno */
+ err = uv__waitpid(pid, &status, 0); /* okay, read errorno */
while (err == -1 && errno == EINTR);
assert(err == pid);
} else if (r == -1 && errno == EPIPE) {
do
- err = waitpid(pid, &status, 0); /* okay, got EPIPE */
+ err = uv__waitpid(pid, &status, 0); /* okay, got EPIPE */
while (err == -1 && errno == EINTR);
assert(err == pid);
} else
diff --git a/deps/uv/src/unix/signal.c b/deps/uv/src/unix/signal.c
index 1133c73a955525..c65f72167f0d56 100644
--- a/deps/uv/src/unix/signal.c
+++ b/deps/uv/src/unix/signal.c
@@ -63,6 +63,8 @@ RB_GENERATE_STATIC(uv__signal_tree_s,
static void uv__signal_global_reinit(void);
static void uv__signal_global_init(void) {
+// TODO(victor): not sure if I can skip the lock here for fuchsia
+#ifndef __Fuchsia__
if (uv__signal_lock_pipefd[0] == -1)
/* pthread_atfork can register before and after handlers, one
* for each child. This only registers one for the child. That
@@ -72,6 +74,7 @@ static void uv__signal_global_init(void) {
*/
if (pthread_atfork(NULL, NULL, &uv__signal_global_reinit))
abort();
+#endif
uv__signal_global_reinit();
}
diff --git a/deps/uv/src/unix/thread.c b/deps/uv/src/unix/thread.c
index c46450cc661270..54b71ba41a4e05 100644
--- a/deps/uv/src/unix/thread.c
+++ b/deps/uv/src/unix/thread.c
@@ -27,7 +27,10 @@
#include
#include
+#ifndef __Fuchsia__
#include /* getrlimit() */
+#endif
+
#include /* getpagesize() */
#include
diff --git a/deps/uv/test/runner-unix.c b/deps/uv/test/runner-unix.c
index a13648bc883878..0a2c16798a9023 100644
--- a/deps/uv/test/runner-unix.c
+++ b/deps/uv/test/runner-unix.c
@@ -21,6 +21,7 @@
#include "runner-unix.h"
#include "runner.h"
+#include "uv.h"
#include
#include /* uintptr_t */
@@ -40,6 +41,11 @@
#include
#include
+#ifdef __Fuchsia__
+# include
+# include
+#endif
+
extern char** environ;
static void closefd(int fd) {
@@ -75,23 +81,23 @@ void platform_init(int argc, char **argv) {
snprintf(executable_path, sizeof(executable_path), "%s", argv[0]);
}
-
/* Invoke "argv[0] test-name [test-part]". Store process info in *p. Make sure
* that all stdio output of the processes is buffered up. */
int process_start(char* name, char* part, process_info_t* p, int is_helper) {
FILE* stdout_file;
int stdout_fd;
- const char* arg;
- char* args[16];
+ const char* args[16];
int pipefd[2];
char fdstr[8];
ssize_t rc;
int n;
- pid_t pid;
- arg = getenv("UV_USE_VALGRIND");
n = 0;
+#ifndef __Fuchsia__
+ const char* arg;
+ arg = getenv("UV_USE_VALGRIND");
+
/* Disable valgrind for helpers, it complains about helpers leaking memory.
* They're killed after the test and as such never get a chance to clean up.
*/
@@ -102,6 +108,7 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
args[n++] = "--show-reachable=yes";
args[n++] = "--error-exitcode=125";
}
+#endif
args[n++] = executable_path;
args[n++] = name;
@@ -122,6 +129,7 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
}
snprintf(fdstr, sizeof(fdstr), "%d", pipefd[1]);
+ printf("setting UV_TEST_RUNNER_FD\n");
if (setenv("UV_TEST_RUNNER_FD", fdstr, /* overwrite */ 1)) {
perror("setenv");
return -1;
@@ -131,6 +139,17 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
p->terminated = 0;
p->status = 0;
+#ifdef __Fuchsia__
+ zx_status_t status;
+
+ status = fdio_spawn(ZX_HANDLE_INVALID, FDIO_SPAWN_CLONE_ALL, executable_path, args, &p->pid);
+ if (status != ZX_OK) {
+ perror("fdio_spawn");
+ return -1;
+ }
+#else
+ pid_t pid;
+
pid = fork();
if (pid < 0) {
@@ -151,6 +170,8 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
/* parent */
p->pid = pid;
+#endif
+
p->name = strdup(name);
p->stdout_file = stdout_file;
@@ -179,7 +200,6 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
return 0;
}
-
typedef struct {
int pipe[2];
process_info_t* vec;
@@ -199,7 +219,7 @@ static void* dowait(void* data) {
for (i = 0; i < args->n; i++) {
p = &args->vec[i];
if (p->terminated) continue;
- r = waitpid(p->pid, &p->status, 0);
+ r = uv__waitpid(p->pid, &p->status, 0);
if (r < 0) {
perror("waitpid");
return NULL;
@@ -219,7 +239,6 @@ static void* dowait(void* data) {
return NULL;
}
-
/* Wait for all `n` processes in `vec` to terminate. Time out after `timeout`
* msec, or never if timeout == -1. Return 0 if all processes are terminated,
* -1 on error, -2 on timeout. */
@@ -324,7 +343,11 @@ int process_wait(process_info_t* vec, int n, int timeout) {
/* Timeout. Kill all the children. */
for (i = 0; i < n; i++) {
p = &vec[i];
+#ifdef __Fuchsia__
+ assert(0 && "kill not supported!");
+#else
kill(p->pid, SIGTERM);
+#endif
}
retval = -2;
}
@@ -414,7 +437,12 @@ char* process_get_name(process_info_t *p) {
/* Terminate process `p`. */
int process_terminate(process_info_t *p) {
+#ifdef __Fuchsia__
+ assert(0 && "kill not supported");
+ return -1;
+#else
return kill(p->pid, SIGTERM);
+#endif
}
diff --git a/deps/uv/test/runner-unix.h b/deps/uv/test/runner-unix.h
index e21847f92c0865..bfb163edbb1df6 100644
--- a/deps/uv/test/runner-unix.h
+++ b/deps/uv/test/runner-unix.h
@@ -25,9 +25,17 @@
#include
#include /* FILE */
+#ifdef __Fuchsia__
+#include
+#endif
+
typedef struct {
FILE* stdout_file;
+#ifdef __Fuchsia__
+ zx_handle_t pid;
+#else
pid_t pid;
+#endif
char* name;
int status;
int terminated;
diff --git a/deps/uv/test/task.h b/deps/uv/test/task.h
index 925f1b1c0aeac6..44222889d9477e 100644
--- a/deps/uv/test/task.h
+++ b/deps/uv/test/task.h
@@ -36,7 +36,7 @@
# include
#endif
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__Fuchsia__)
# include
# include /* setrlimit() */
#endif
diff --git a/deps/uv/test/test-close-fd.c b/deps/uv/test/test-close-fd.c
index 0d3927f652ede0..8e046846ef43b6 100644
--- a/deps/uv/test/test-close-fd.c
+++ b/deps/uv/test/test-close-fd.c
@@ -44,7 +44,7 @@ static void read_cb(uv_stream_t* handle, ssize_t nread, const uv_buf_t* buf) {
uv_close((uv_handle_t *) handle, NULL);
break;
default:
- ASSERT(!"read_cb_called > 2");
+ ASSERT(0 && "read_cb_called > 2");
}
}
diff --git a/deps/uv/test/test-fs-copyfile.c b/deps/uv/test/test-fs-copyfile.c
index c785a4b51fbb10..4495a1b498a305 100644
--- a/deps/uv/test/test-fs-copyfile.c
+++ b/deps/uv/test/test-fs-copyfile.c
@@ -25,7 +25,8 @@
#if defined(__unix__) || defined(__POSIX__) || \
defined(__APPLE__) || defined(__sun) || \
defined(_AIX) || defined(__MVS__) || \
- defined(__HAIKU__) || defined(__QNX__)
+ defined(__HAIKU__) || defined(__QNX__) || \
+ defined(__Fuchsia__)
#include /* unlink, etc. */
#else
# include
diff --git a/deps/uv/test/test-list.h b/deps/uv/test/test-list.h
index 1f566861a0e2e9..a3cfc2fc367e80 100644
--- a/deps/uv/test/test-list.h
+++ b/deps/uv/test/test-list.h
@@ -74,7 +74,9 @@ TEST_DECLARE (tty_full_reset)
TEST_DECLARE (tty_escape_sequence_processing)
#endif
TEST_DECLARE (tty_file)
+#ifndef __Fuchsia__
TEST_DECLARE (tty_pty)
+#endif
TEST_DECLARE (stdio_over_pipes)
TEST_DECLARE (stdio_emulate_iocp)
TEST_DECLARE (ip6_pton)
@@ -230,7 +232,9 @@ TEST_DECLARE (idle_starvation)
TEST_DECLARE (loop_handles)
TEST_DECLARE (get_loadavg)
TEST_DECLARE (walk_handles)
+#ifndef __Fuchsia__
TEST_DECLARE (watcher_cross_stop)
+#endif
TEST_DECLARE (ref)
TEST_DECLARE (idle_ref)
TEST_DECLARE (async_ref)
@@ -259,7 +263,9 @@ TEST_DECLARE (pipe_close_stdout_read_stdin)
TEST_DECLARE (pipe_set_non_blocking)
TEST_DECLARE (pipe_set_chmod)
TEST_DECLARE (process_ref)
+#ifndef __Fuchsia__
TEST_DECLARE (process_priority)
+#endif
TEST_DECLARE (has_ref)
TEST_DECLARE (active)
TEST_DECLARE (embed)
@@ -481,7 +487,9 @@ TEST_DECLARE (spawn_with_an_odd_path)
TEST_DECLARE (ipc_listen_after_bind_twice)
TEST_DECLARE (win32_signum_number)
#else
+#ifndef __Fuchsia__
TEST_DECLARE (emfile)
+#endif
TEST_DECLARE (spawn_setuid_setgid)
TEST_DECLARE (we_get_signal)
TEST_DECLARE (we_get_signals)
@@ -531,9 +539,11 @@ TEST_DECLARE (fork_threadpool_queue_work_simple)
#endif
#endif
+#ifndef __Fuchsia__
TEST_DECLARE (idna_toascii)
TEST_DECLARE (utf8_decode1)
TEST_DECLARE (utf8_decode1_overrun)
+#endif
TEST_DECLARE (uname)
TEST_DECLARE (metrics_idle_time)
@@ -610,7 +620,9 @@ TASK_LIST_START
TEST_ENTRY (tty_escape_sequence_processing)
#endif
TEST_ENTRY (tty_file)
+#ifndef __Fuchsia__
TEST_ENTRY (tty_pty)
+#endif
TEST_ENTRY (stdio_over_pipes)
TEST_ENTRY (stdio_emulate_iocp)
TEST_ENTRY (ip6_pton)
@@ -848,13 +860,17 @@ TASK_LIST_START
TEST_ENTRY (pipe_ref4)
TEST_HELPER (pipe_ref4, pipe_echo_server)
TEST_ENTRY (process_ref)
+#ifndef __Fuchsia__
TEST_ENTRY (process_priority)
+#endif
TEST_ENTRY (has_ref)
TEST_ENTRY (loop_handles)
TEST_ENTRY (walk_handles)
+#ifndef __Fuchsia__
TEST_ENTRY (watcher_cross_stop)
+#endif
TEST_ENTRY (active)
@@ -977,7 +993,9 @@ TASK_LIST_START
TEST_ENTRY (ipc_listen_after_bind_twice)
TEST_ENTRY (win32_signum_number)
#else
+#ifndef __Fuchsia__
TEST_ENTRY (emfile)
+#endif
TEST_ENTRY (spawn_setuid_setgid)
TEST_ENTRY (we_get_signal)
TEST_ENTRY (we_get_signals)
@@ -1087,7 +1105,9 @@ TASK_LIST_START
TEST_ENTRY (fs_get_system_error)
TEST_ENTRY (get_osfhandle_valid_handle)
TEST_ENTRY (open_osfhandle_valid_handle)
+#ifndef __Fuchsia__
TEST_ENTRY (strscpy)
+#endif
TEST_ENTRY (threadpool_queue_work_simple)
TEST_ENTRY (threadpool_queue_work_einval)
TEST_ENTRY_CUSTOM (threadpool_multiple_event_loops, 0, 0, 60000)
@@ -1136,12 +1156,14 @@ TASK_LIST_START
#endif
#endif
+#ifndef __Fuchsia__
TEST_ENTRY (utf8_decode1)
TEST_ENTRY (utf8_decode1_overrun)
+#endif
TEST_ENTRY (uname)
/* Doesn't work on z/OS because that platform uses EBCDIC, not ASCII. */
-#ifndef __MVS__
+#if !defined(__MVS__) && !defined(__Fuchsia__)
TEST_ENTRY (idna_toascii)
#endif
diff --git a/deps/uv/test/test-platform-output.c b/deps/uv/test/test-platform-output.c
index 341c7ae54ed28b..5199d635a6381d 100644
--- a/deps/uv/test/test-platform-output.c
+++ b/deps/uv/test/test-platform-output.c
@@ -29,14 +29,12 @@ TEST_IMPL(platform_output) {
#if defined(__QEMU__)
RETURN_SKIP("Test does not currently work in QEMU");
#endif
-
char buffer[512];
size_t rss;
size_t size;
double uptime;
uv_pid_t pid;
uv_pid_t ppid;
- uv_rusage_t rusage;
uv_cpu_info_t* cpus;
uv_interface_address_t* interfaces;
uv_passwd_t pwd;
@@ -71,6 +69,8 @@ TEST_IMPL(platform_output) {
printf("uv_uptime: %f\n", uptime);
#endif
+#ifndef __Fuchsia__
+ uv_rusage_t rusage;
err = uv_getrusage(&rusage);
ASSERT(err == 0);
ASSERT(rusage.ru_utime.tv_sec >= 0);
@@ -87,6 +87,7 @@ TEST_IMPL(platform_output) {
printf(" page faults: %llu\n", (unsigned long long) rusage.ru_majflt);
printf(" maximum resident set size: %llu\n",
(unsigned long long) rusage.ru_maxrss);
+#endif
err = uv_cpu_info(&cpus, &count);
#if defined(__CYGWIN__) || defined(__MSYS__)
diff --git a/deps/uv/test/test-spawn.c b/deps/uv/test/test-spawn.c
index 9f2eb24b2d6daf..d71bef24e8136f 100644
--- a/deps/uv/test/test-spawn.c
+++ b/deps/uv/test/test-spawn.c
@@ -214,7 +214,7 @@ TEST_IMPL(spawn_fails_check_for_waitpid_cleanup) {
/* verify the child is successfully cleaned up within libuv */
do
- err = waitpid(process.pid, &status, 0);
+ err = uv__waitpid(process.pid, &status, 0);
while (err == -1 && errno == EINTR);
ASSERT(err == -1);
diff --git a/deps/uv/test/test-strscpy.c b/deps/uv/test/test-strscpy.c
index 4e7db6ffec8ef2..43f3329f9ba7a1 100644
--- a/deps/uv/test/test-strscpy.c
+++ b/deps/uv/test/test-strscpy.c
@@ -23,7 +23,6 @@
#include "task.h"
#include
-#include "../src/strscpy.h"
#include "../src/strscpy.c"
TEST_IMPL(strscpy) {
diff --git a/deps/uvwasi/src/clocks.c b/deps/uvwasi/src/clocks.c
index 8dc5d6557ed2b5..4e2a729e3f434e 100644
--- a/deps/uvwasi/src/clocks.c
+++ b/deps/uvwasi/src/clocks.c
@@ -1,9 +1,9 @@
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(__Fuchsia__)
# include
# include
# include
# include
-#endif /* _WIN32 */
+#endif /* _WIN32 && __Fuchsia */
#include "uv.h"
#include "clocks.h"
diff --git a/node.gyp b/node.gyp
index 9563073fd6c898..987c193caa0d01 100644
--- a/node.gyp
+++ b/node.gyp
@@ -35,17 +35,6 @@
'<@(node_library_files)',
],
'deps_files': [
- 'deps/v8/tools/splaytree.mjs',
- 'deps/v8/tools/codemap.mjs',
- 'deps/v8/tools/consarray.mjs',
- 'deps/v8/tools/csvparser.mjs',
- 'deps/v8/tools/profile.mjs',
- 'deps/v8/tools/profile_view.mjs',
- 'deps/v8/tools/logreader.mjs',
- 'deps/v8/tools/arguments.mjs',
- 'deps/v8/tools/tickprocessor.mjs',
- 'deps/v8/tools/sourcemap.mjs',
- 'deps/v8/tools/tickprocessor-driver.mjs',
'deps/acorn/acorn/dist/acorn.js',
'deps/acorn/acorn-walk/dist/walk.js',
'deps/cjs-module-lexer/lexer.js',
diff --git a/src/api/environment.cc b/src/api/environment.cc
index bdf67521cbf80c..2e51745c930f18 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -211,6 +211,7 @@ void FreeArrayBufferAllocator(ArrayBufferAllocator* allocator) {
}
void SetIsolateCreateParamsForNode(Isolate::CreateParams* params) {
+#ifndef __Fuchsia__
const uint64_t constrained_memory = uv_get_constrained_memory();
const uint64_t total_memory = constrained_memory > 0 ?
std::min(uv_get_total_memory(), constrained_memory) :
@@ -223,6 +224,7 @@ void SetIsolateCreateParamsForNode(Isolate::CreateParams* params) {
}
params->embedder_wrapper_object_index = BaseObject::InternalFields::kSlot;
params->embedder_wrapper_type_index = std::numeric_limits::max();
+#endif
}
void SetIsolateErrorHandlers(v8::Isolate* isolate, const IsolateSettings& s) {
diff --git a/src/debug_utils.cc b/src/debug_utils.cc
index f721a672f10e67..27bf6116187ba4 100644
--- a/src/debug_utils.cc
+++ b/src/debug_utils.cc
@@ -14,7 +14,8 @@
#if defined(__linux__) && !defined(__GLIBC__) || \
defined(__UCLIBC__) || \
- defined(_AIX)
+ defined(_AIX) || \
+ defined(__Fuchsia__)
#define HAVE_EXECINFO_H 0
#else
#define HAVE_EXECINFO_H 1
diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc
index 34bb11e7d7122c..f889c04099e83a 100644
--- a/src/inspector_agent.cc
+++ b/src/inspector_agent.cc
@@ -129,11 +129,13 @@ static int StartDebugSignalHandler() {
// receiving the signal would terminate the process.
return -err;
}
+#ifndef __Fuchsia__
RegisterSignalHandler(SIGUSR1, StartIoThreadWakeup);
// Unblock SIGUSR1. A pending SIGUSR1 signal will now be delivered.
sigemptyset(&sigmask);
sigaddset(&sigmask, SIGUSR1);
CHECK_EQ(0, pthread_sigmask(SIG_UNBLOCK, &sigmask, nullptr));
+#endif
return 0;
}
#endif // __POSIX__
@@ -217,7 +219,8 @@ class ChannelImpl final : public v8_inspector::V8Inspector::Channel,
bool prevent_shutdown)
: delegate_(std::move(delegate)), prevent_shutdown_(prevent_shutdown),
retaining_context_(false) {
- session_ = inspector->connect(CONTEXT_GROUP_ID, this, StringView());
+ session_ = inspector->connect(
+ CONTEXT_GROUP_ID, this, StringView(), V8Inspector::kFullyTrusted);
node_dispatcher_ = std::make_unique(this);
tracing_agent_ =
std::make_unique(env, main_thread_);
diff --git a/src/node.cc b/src/node.cc
index 2891c18bb9aa9a..e80fae12183e01 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -102,7 +102,9 @@
#define STDIN_FILENO 0
#else
#include
+#ifndef __Fuchsia__
#include // getrlimit, setrlimit
+#endif
#include // tcgetattr, tcsetattr
#include // STDIN_FILENO, STDERR_FILENO
#endif
@@ -535,7 +537,7 @@ void TrapWebAssemblyOrContinue(int signo, siginfo_t* info, void* ucontext) {
#endif // defined(_WIN32)
#endif // NODE_USE_V8_WASM_TRAP_HANDLER
-#ifdef __POSIX__
+#if defined(__POSIX__) && !defined(__Fuchsia__)
void RegisterSignalHandler(int signal,
sigaction_cb handler,
bool reset_handler) {
@@ -730,6 +732,11 @@ void ResetStdio() {
for (auto& s : stdio) {
const int fd = &s - stdio;
+#ifdef __Fuchsia__
+ // In fuchsia stdin is not readily available.
+ if (fd == 0) continue;
+#endif
+
struct stat tmp;
if (-1 == fstat(fd, &tmp)) {
CHECK_EQ(errno, EBADF); // Program closed file descriptor.
@@ -885,6 +892,11 @@ int InitializeNodeWithArgs(std::vector* argv,
// used in diagnostic reports.
per_process::cli_options->cmdline = *argv;
+ // Node provides a "v8.setFlagsFromString" method to dynamically change flags.
+ // Hence do not freeze flags when initializing V8. In a browser setting, this
+ // is security relevant, for Node it's less important.
+ V8::SetFlagsFromString("--no-freeze-flags-after-init");
+
#if defined(NODE_V8_OPTIONS)
// Should come before the call to V8::SetFlagsFromCommandLine()
// so the user can disable a flag --foo at run-time by passing
diff --git a/src/node_os.cc b/src/node_os.cc
index 23218310974b7b..ee1266442816f7 100644
--- a/src/node_os.cc
+++ b/src/node_os.cc
@@ -78,7 +78,15 @@ static void GetHostname(const FunctionCallbackInfo& args) {
static void GetOSInformation(const FunctionCallbackInfo& args) {
Environment* env = Environment::GetCurrent(args);
uv_utsname_t info;
- int err = uv_os_uname(&info);
+ int err = 0;
+#ifdef __Fuchsia__
+ // TODO(victor): Update uv_os_uname to get these informations for Fuchsia
+ info.sysname[0] = 0;
+ info.version[0] = 0;
+ info.release[0] = 0;
+#else
+ err = uv_os_uname(&info);
+#endif
if (err != 0) {
CHECK_GE(args.Length(), 1);
@@ -336,6 +344,7 @@ static void GetUserInfo(const FunctionCallbackInfo& args) {
args.GetReturnValue().Set(entry);
}
+#ifndef __Fuchsia__
static void SetPriority(const FunctionCallbackInfo& args) {
Environment* env = Environment::GetCurrent(args);
@@ -375,7 +384,7 @@ static void GetPriority(const FunctionCallbackInfo& args) {
args.GetReturnValue().Set(priority);
}
-
+#endif // !__Fuchsia__
void Initialize(Local