nodejs / nodejs/performance

Avoid passing `process.env` if not exist on spawnSync and execSync

Open
#164 4 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Shell
Stars
399
Forks
11
Avg merge
29m
Merged PRs (30d)
1

Description

This line (ref: https://github.com/nodejs/node/blob/main/lib/child_process.js#L653) passes the whole process.env javascript object even though it is not required. We should get the environment variable from C++ to avoid paying the serialization cost of the extremely large env variable.

cc @nodejs/child_process @nodejs/performance

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at lib/child_process.js around line 653 and trace how spawnSync and execSync receive their environment. Check the corresponding C++ environment handling before changing the boundary. Done means these calls avoid serializing the whole process.env object while preserving environment behavior and improving the relevant performance cost.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, javascript, node.js
Domain
performance
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.