#53136: perf: boot every Node.js-hosting process from the Node snapshot / code cache
Backport of #52873
See that PR for details. The node patches it touches conflicted in their index/context lines, and node_main.cc / node_service.cc differ here (WASM streaming is still conditional on 42-x-y); the node patch files were regenerated against this branch's patch series and the source conflicts resolved by hand. It also carries https://chromium-review.googlesource.com/c/v8/v8/+/8188320 as a V8 cherry-pick: with the Node builtins consuming or producing a code cache, ScriptCompiler::CreateCodeCache() on their external-string sources left the strings with a null resource_data_ handle under V8_ENABLE_SANDBOX and the next startsWith() on them aborted (async-hooks/test-pipewrap and test-querywrap in the Node suite); main got that fix with the 153.0.8001.0 roll. 42-x-y additionally carries https://chromium-review.googlesource.com/c/v8/v8/+/7723678 (in V8 since 14.9): booting ELECTRON_RUN_AS_NODE children from the snapshot rehashes its strings, and without that fix small TransitionArrays were left out of hash order afterwards (parallel/test-npm-install's npm child aborted on IsSortedNoDuplicates()).
Notes: Improved startup time of utilityProcess.fork(), child_process.fork() / ELECTRON_RUN_AS_NODE child processes and Node.js-enabled renderers.
Backport Information
Semver Impact
Semantic Versioning helps users understand the impact of updates:
- Major (X.y.z): Breaking changes that may require code modifications
- Minor (x.Y.z): New features that maintain backward compatibility
- Patch (x.y.Z): Bug fixes that don't change the API
- None: Changes that don't affect using facing parts of Electron