Skip to content

src: improve utf8 string generation performance - #54873

Merged
nodejs-github-bot merged 4 commits into
nodejs:mainfrom
anonrig:speed-up-utf8value
Sep 17, 2024
Merged

src: improve utf8 string generation performance#54873
nodejs-github-bot merged 4 commits into
nodejs:mainfrom
anonrig:speed-up-utf8value

Conversation

@anonrig

@anonriganonrig commented Sep 10, 2024

Copy link
Copy Markdown
Member

This speeds up Utf8Value across all Node.js codebase. We add a fast path for one byte strings and use the new V8 API (String::ValueView) with simdutf for non-byte strings. Once simdutf supports null termination and invalid character replacement, we can improve the performance more.

cc @nodejs/performance @lemire

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1637/

@nodejs-github-botnodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. labels Sep 10, 2024
@anonriganonrig added the performance Issues and PRs related to the performance of Node.js. label Sep 10, 2024
@anonrig
anonrig requested a review from lemireSeptember 10, 2024 14:35
@anonriganonrig added the request-ci Add this label to start a Jenkins CI on a PR. label Sep 10, 2024
@github-actionsgithub-actionsBot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels Sep 10, 2024
@github-actions

Copy link
Copy Markdown
Contributor
Failed to start CI
- Validating Jenkins credentials
✔ Jenkins credentials valid
- Starting PR CI job
✘ Failed to start PR CI: 400 Bad Request
https://github.com/nodejs/node/actions/runs/10795045779

@jasnell

Copy link
Copy Markdown
Member

CI failures look relevant to this change.

Comment threadsrc/util.cc Outdated
Comment threadsrc/util.cc Outdated
Comment threadsrc/util.cc Outdated
Comment threadsrc/util.cc Outdated
@RafaelGSS

Copy link
Copy Markdown
Member

Since the PR is claiming for performance, we should have benchmarks.

@codecov

codecovBot commented Sep 10, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 84.61538% with 4 lines in your changes missing coverage. Please review.

Project coverage is 88.08%. Comparing base (9db6327) to head (4b28cf1).
Report is 271 commits behind head on main.

Files with missing linesPatch %Lines
src/string_bytes.cc66.66%2 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #54873 +/- ##
==========================================
+ Coverage 88.05% 88.08% +0.02% 
==========================================
Files 651 651 Lines 183405 183551 +146 Branches 35822 35867 +45 ==========================================
+ Hits 161499 161676 +177 + Misses 15159 15133 -26 + Partials 6747 6742 -5 
Files with missing linesCoverage Δ
src/util.cc87.34% <100.00%> (+0.32%)⬆️
src/string_bytes.cc68.43% <66.66%> (+4.48%)⬆️

... and 50 files with indirect coverage changes

@anonrig

Copy link
Copy Markdown
MemberAuthor

Since the PR is claiming for performance, we should have benchmarks.

I don't know how to have an isolated benchmark for this. Any recommendations @RafaelGSS?

@RafaelGSS

Copy link
Copy Markdown
Member

I don't know how to have an isolated benchmark for this.

So, how do you know this PR is improving performance then?

Any recommendations?

I suspect if you measure any public API that makes use of this new branch behind the scenes you should get a feasible result

@anonrig
anonrigforce-pushed the speed-up-utf8value branch 4 times, most recently from 7556dc8 to 70263e8CompareSeptember 11, 2024 15:22

@mcollinamcollina left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RSLGTM

@mcollinamcollina added the request-ci Add this label to start a Jenkins CI on a PR. label Sep 11, 2024
Co-authored-by: Robert Nagy <ronagy@icloud.com>
@anonrig
anonrig requested a review from ronagSeptember 12, 2024 15:57
Comment threadsrc/util.cc Outdated
Co-authored-by: Robert Nagy <ronagy@icloud.com>
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@anonrig

Copy link
Copy Markdown
MemberAuthor

@ronag Can you review?

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@anonrig
anonrig dismissed ronag’s stale reviewSeptember 17, 2024 00:14

Addressed the recommendation. Dismissing.

@anonriganonrig added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. labels Sep 17, 2024
@nodejs-github-botnodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Sep 17, 2024
@nodejs-github-bot
nodejs-github-bot merged commit 8191e1f into nodejs:mainSep 17, 2024
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in 8191e1f

@targostargos added the dont-land-on-v22.x PRs that should not land on the v22.x-staging branch and should not be released in v22.x. label Oct 4, 2024
codebytere added a commit to electron/electron that referenced this pull request Oct 21, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 28, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 30, 2025
codebytere added a commit to electron/electron that referenced this pull request Oct 30, 2025
* chore: upgrade Node.js to v24.10.0
* chore: fixup crypto patch
* chore: fixup crypto test patch
* src: prepare for v8 sandboxing
nodejs/node#58376
* esm: fix module.exports export on CJS modules
nodejs/node#57366
* chore: fixup lazyload fs patch
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* module: remove --experimental-default-type
nodejs/node#56092
* lib,src: refactor assert to load error source from memory
nodejs/node#59751
* src: add source location to v8::TaskRunner
nodejs/node#54077
* src: remove dependency on wrapper-descriptor-based CppHeap
nodejs/node#54077
* src: do not use soon-to-be-deprecated V8 API
nodejs/node#53174
* src: stop using deprecated fields of v8::FastApiCallbackOptions
nodejs/node#54077
* test: update v8-stats test for V8 12.6
nodejs/node#54077
* esm: unflag --experimental-wasm-modules
nodejs/node#57038
* test: adapt assert tests to stack trace changes
nodejs/node#58070
* src,test: unregister the isolate after disposal and before freeing
nodejs/node#58070
* src: use cppgc to manage ContextifyContext
nodejs/node#56522
* src: replace uses of FastApiTypedArray
nodejs/node#58070
* module: integrate TypeScript into compile cache
nodejs/node#56629
* deps: update ada to 3.2.7
nodejs/node#59336
* src: make minor cleanups in encoding_binding.cc
nodejs/node#57448
* src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
nodejs/node#55453
* src: use non-deprecated Get/SetPrototype methods
nodejs/node#59671
* src: simplify string_bytes with views
nodejs/node#54876
* src: improve utf8 string generation performance
nodejs/node#54873
* src: use non-deprecated Utf8LengthV2() method
nodejs/node#58070
* src: use non-deprecated WriteUtf8V2() method
nodejs/node#58070
* src: refactor WriteUCS2 and remove flags argument
nodejs/node#58163
* src: use String::WriteV2() in TwoByteValue
nodejs/node#58164
* node-api: use WriteV2 in napi_get_value_string_utf16
nodejs/node#58165
* node-api: use WriteOneByteV2 in napi_get_value_string_latin1
nodejs/node#58325
* src: migrate WriteOneByte to WriteOneByteV2
nodejs/node#59634
* fs: introduce dirent\.parentPath
nodejs/node#50976
* src: avoid copy by using std::views::keys
nodejs/node#56080
* chore: fixup patch indices
* fix: errant use of context->GetIsolate()
* fix: tweak BoringSSL compat patch for new changes
* fix: add back missing isolate dtor declaration
* fixup! esm: fix module.exports export on CJS modules
* cli: remove --no-experimental-fetch flag
https://github.com/nodejs/node/pull/52611/files
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* fixup! src: prepare for v8 sandboxing
* chore: bump @types/node to v24
* chore: fix const assignment in crypto test
* fix: sandbox pointer patch issues
* chore: rework source phase import patch
* src: add percentage support to --max-old-space-size
nodejs/node#59082
* chore: fixup crypto tests
* chore: HostImportModuleWithPhaseDynamically todo
* fix: cjs esm failures
* fix: v8::Object::Wrappable issues
- v8/node@b72a615
- v8/node@490bac2
- v8/node@4896a0d
* chore: remove deleted specs
* src: use v8::ExternalMemoryAccounter
nodejs/node#58070
* fs: port SonicBoom module to fs module as FastUtf8Stream
nodejs/node#58897
* chore: tweak sandboxed pr patch
* test: disable parallel/test-os-checked-function
* test: use WHATWG URL instead of url.parse
* fix: OPENSSL_secure_zalloc doesn't work in BoringSSL
* chore: fix accidental extra line
* 7017517: [defer-import-eval] Parse import defer syntax
https://chromium-review.googlesource.com/c/v8/v8/+/7017517
tropBot added a commit to electron/electron that referenced this pull request Oct 30, 2025
nodejs/node#54873
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
TheCommieAxolotl pushed a commit to TheCommieAxolotl/electron that referenced this pull request Nov 2, 2025
* chore: upgrade Node.js to v24.10.0
* chore: fixup crypto patch
* chore: fixup crypto test patch
* src: prepare for v8 sandboxing
nodejs/node#58376
* esm: fix module.exports export on CJS modules
nodejs/node#57366
* chore: fixup lazyload fs patch
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* module: remove --experimental-default-type
nodejs/node#56092
* lib,src: refactor assert to load error source from memory
nodejs/node#59751
* src: add source location to v8::TaskRunner
nodejs/node#54077
* src: remove dependency on wrapper-descriptor-based CppHeap
nodejs/node#54077
* src: do not use soon-to-be-deprecated V8 API
nodejs/node#53174
* src: stop using deprecated fields of v8::FastApiCallbackOptions
nodejs/node#54077
* test: update v8-stats test for V8 12.6
nodejs/node#54077
* esm: unflag --experimental-wasm-modules
nodejs/node#57038
* test: adapt assert tests to stack trace changes
nodejs/node#58070
* src,test: unregister the isolate after disposal and before freeing
nodejs/node#58070
* src: use cppgc to manage ContextifyContext
nodejs/node#56522
* src: replace uses of FastApiTypedArray
nodejs/node#58070
* module: integrate TypeScript into compile cache
nodejs/node#56629
* deps: update ada to 3.2.7
nodejs/node#59336
* src: make minor cleanups in encoding_binding.cc
nodejs/node#57448
* src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
nodejs/node#55453
* src: use non-deprecated Get/SetPrototype methods
nodejs/node#59671
* src: simplify string_bytes with views
nodejs/node#54876
* src: improve utf8 string generation performance
nodejs/node#54873
* src: use non-deprecated Utf8LengthV2() method
nodejs/node#58070
* src: use non-deprecated WriteUtf8V2() method
nodejs/node#58070
* src: refactor WriteUCS2 and remove flags argument
nodejs/node#58163
* src: use String::WriteV2() in TwoByteValue
nodejs/node#58164
* node-api: use WriteV2 in napi_get_value_string_utf16
nodejs/node#58165
* node-api: use WriteOneByteV2 in napi_get_value_string_latin1
nodejs/node#58325
* src: migrate WriteOneByte to WriteOneByteV2
nodejs/node#59634
* fs: introduce dirent\.parentPath
nodejs/node#50976
* src: avoid copy by using std::views::keys
nodejs/node#56080
* chore: fixup patch indices
* fix: errant use of context->GetIsolate()
* fix: tweak BoringSSL compat patch for new changes
* fix: add back missing isolate dtor declaration
* fixup! esm: fix module.exports export on CJS modules
* cli: remove --no-experimental-fetch flag
https://github.com/nodejs/node/pull/52611/files
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* fixup! src: prepare for v8 sandboxing
* chore: bump @types/node to v24
* chore: fix const assignment in crypto test
* fix: sandbox pointer patch issues
* chore: rework source phase import patch
* src: add percentage support to --max-old-space-size
nodejs/node#59082
* chore: fixup crypto tests
* chore: HostImportModuleWithPhaseDynamically todo
* fix: cjs esm failures
* fix: v8::Object::Wrappable issues
- v8/node@b72a615
- v8/node@490bac2
- v8/node@4896a0d
* chore: remove deleted specs
* src: use v8::ExternalMemoryAccounter
nodejs/node#58070
* fs: port SonicBoom module to fs module as FastUtf8Stream
nodejs/node#58897
* chore: tweak sandboxed pr patch
* test: disable parallel/test-os-checked-function
* test: use WHATWG URL instead of url.parse
* fix: OPENSSL_secure_zalloc doesn't work in BoringSSL
* chore: fix accidental extra line
* 7017517: [defer-import-eval] Parse import defer syntax
https://chromium-review.googlesource.com/c/v8/v8/+/7017517
codebytere added a commit to electron/electron that referenced this pull request Nov 4, 2025
* chore: upgrade Node.js to v24.10.0
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fixup crypto patch
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fixup crypto test patch
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: prepare for v8 sandboxing
nodejs/node#58376
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* esm: fix module.exports export on CJS modules
nodejs/node#57366
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fixup lazyload fs patch
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* module: remove --experimental-default-type
nodejs/node#56092
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* lib,src: refactor assert to load error source from memory
nodejs/node#59751
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: add source location to v8::TaskRunner
nodejs/node#54077
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: remove dependency on wrapper-descriptor-based CppHeap
nodejs/node#54077
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: do not use soon-to-be-deprecated V8 API
nodejs/node#53174
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: stop using deprecated fields of v8::FastApiCallbackOptions
nodejs/node#54077
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* test: update v8-stats test for V8 12.6
nodejs/node#54077
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* esm: unflag --experimental-wasm-modules
nodejs/node#57038
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* test: adapt assert tests to stack trace changes
nodejs/node#58070
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src,test: unregister the isolate after disposal and before freeing
nodejs/node#58070
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: use cppgc to manage ContextifyContext
nodejs/node#56522
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: replace uses of FastApiTypedArray
nodejs/node#58070
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* module: integrate TypeScript into compile cache
nodejs/node#56629
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* deps: update ada to 3.2.7
nodejs/node#59336
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: make minor cleanups in encoding_binding.cc
nodejs/node#57448
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
nodejs/node#55453
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: use non-deprecated Get/SetPrototype methods
nodejs/node#59671
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: simplify string_bytes with views
nodejs/node#54876
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: improve utf8 string generation performance
nodejs/node#54873
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: use non-deprecated Utf8LengthV2() method
nodejs/node#58070
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: use non-deprecated WriteUtf8V2() method
nodejs/node#58070
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: refactor WriteUCS2 and remove flags argument
nodejs/node#58163
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: use String::WriteV2() in TwoByteValue
nodejs/node#58164
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* node-api: use WriteV2 in napi_get_value_string_utf16
nodejs/node#58165
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* node-api: use WriteOneByteV2 in napi_get_value_string_latin1
nodejs/node#58325
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: migrate WriteOneByte to WriteOneByteV2
nodejs/node#59634
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fs: introduce dirent\.parentPath
nodejs/node#50976
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: avoid copy by using std::views::keys
nodejs/node#56080
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fixup patch indices
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: errant use of context->GetIsolate()
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: tweak BoringSSL compat patch for new changes
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: add back missing isolate dtor declaration
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fixup! esm: fix module.exports export on CJS modules
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* cli: remove --no-experimental-fetch flag
https://github.com/nodejs/node/pull/52611/files
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fixup! src: prepare for v8 sandboxing
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: bump @types/node to v24
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fix const assignment in crypto test
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: sandbox pointer patch issues
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: rework source phase import patch
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: add percentage support to --max-old-space-size
nodejs/node#59082
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fixup crypto tests
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: HostImportModuleWithPhaseDynamically todo
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: cjs esm failures
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: v8::Object::Wrappable issues
- v8/node@b72a615
- v8/node@490bac2
- v8/node@4896a0d
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: remove deleted specs
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* src: use v8::ExternalMemoryAccounter
nodejs/node#58070
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fs: port SonicBoom module to fs module as FastUtf8Stream
nodejs/node#58897
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: tweak sandboxed pr patch
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* test: disable parallel/test-os-checked-function
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* test: use WHATWG URL instead of url.parse
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: OPENSSL_secure_zalloc doesn't work in BoringSSL
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fix accidental extra line
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* 7017517: [defer-import-eval] Parse import defer syntax
https://chromium-review.googlesource.com/c/v8/v8/+/7017517
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
nilayarya pushed a commit to nilayarya/electron that referenced this pull request Nov 21, 2025
* chore: upgrade Node.js to v24.10.0
* chore: fixup crypto patch
* chore: fixup crypto test patch
* src: prepare for v8 sandboxing
nodejs/node#58376
* esm: fix module.exports export on CJS modules
nodejs/node#57366
* chore: fixup lazyload fs patch
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* module: remove --experimental-default-type
nodejs/node#56092
* lib,src: refactor assert to load error source from memory
nodejs/node#59751
* src: add source location to v8::TaskRunner
nodejs/node#54077
* src: remove dependency on wrapper-descriptor-based CppHeap
nodejs/node#54077
* src: do not use soon-to-be-deprecated V8 API
nodejs/node#53174
* src: stop using deprecated fields of v8::FastApiCallbackOptions
nodejs/node#54077
* test: update v8-stats test for V8 12.6
nodejs/node#54077
* esm: unflag --experimental-wasm-modules
nodejs/node#57038
* test: adapt assert tests to stack trace changes
nodejs/node#58070
* src,test: unregister the isolate after disposal and before freeing
nodejs/node#58070
* src: use cppgc to manage ContextifyContext
nodejs/node#56522
* src: replace uses of FastApiTypedArray
nodejs/node#58070
* module: integrate TypeScript into compile cache
nodejs/node#56629
* deps: update ada to 3.2.7
nodejs/node#59336
* src: make minor cleanups in encoding_binding.cc
nodejs/node#57448
* src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
nodejs/node#55453
* src: use non-deprecated Get/SetPrototype methods
nodejs/node#59671
* src: simplify string_bytes with views
nodejs/node#54876
* src: improve utf8 string generation performance
nodejs/node#54873
* src: use non-deprecated Utf8LengthV2() method
nodejs/node#58070
* src: use non-deprecated WriteUtf8V2() method
nodejs/node#58070
* src: refactor WriteUCS2 and remove flags argument
nodejs/node#58163
* src: use String::WriteV2() in TwoByteValue
nodejs/node#58164
* node-api: use WriteV2 in napi_get_value_string_utf16
nodejs/node#58165
* node-api: use WriteOneByteV2 in napi_get_value_string_latin1
nodejs/node#58325
* src: migrate WriteOneByte to WriteOneByteV2
nodejs/node#59634
* fs: introduce dirent\.parentPath
nodejs/node#50976
* src: avoid copy by using std::views::keys
nodejs/node#56080
* chore: fixup patch indices
* fix: errant use of context->GetIsolate()
* fix: tweak BoringSSL compat patch for new changes
* fix: add back missing isolate dtor declaration
* fixup! esm: fix module.exports export on CJS modules
* cli: remove --no-experimental-fetch flag
https://github.com/nodejs/node/pull/52611/files
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* fixup! src: prepare for v8 sandboxing
* chore: bump @types/node to v24
* chore: fix const assignment in crypto test
* fix: sandbox pointer patch issues
* chore: rework source phase import patch
* src: add percentage support to --max-old-space-size
nodejs/node#59082
* chore: fixup crypto tests
* chore: HostImportModuleWithPhaseDynamically todo
* fix: cjs esm failures
* fix: v8::Object::Wrappable issues
- v8/node@b72a615
- v8/node@490bac2
- v8/node@4896a0d
* chore: remove deleted specs
* src: use v8::ExternalMemoryAccounter
nodejs/node#58070
* fs: port SonicBoom module to fs module as FastUtf8Stream
nodejs/node#58897
* chore: tweak sandboxed pr patch
* test: disable parallel/test-os-checked-function
* test: use WHATWG URL instead of url.parse
* fix: OPENSSL_secure_zalloc doesn't work in BoringSSL
* chore: fix accidental extra line
* 7017517: [defer-import-eval] Parse import defer syntax
https://chromium-review.googlesource.com/c/v8/v8/+/7017517
nilayarya added a commit to nilayarya/electron that referenced this pull request Nov 21, 2025
* chore: upgrade Node.js to v24.10.0
* chore: fixup crypto patch
* chore: fixup crypto test patch
* src: prepare for v8 sandboxing
nodejs/node#58376
* esm: fix module.exports export on CJS modules
nodejs/node#57366
* chore: fixup lazyload fs patch
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* module: remove --experimental-default-type
nodejs/node#56092
* lib,src: refactor assert to load error source from memory
nodejs/node#59751
* src: add source location to v8::TaskRunner
nodejs/node#54077
* src: remove dependency on wrapper-descriptor-based CppHeap
nodejs/node#54077
* src: do not use soon-to-be-deprecated V8 API
nodejs/node#53174
* src: stop using deprecated fields of v8::FastApiCallbackOptions
nodejs/node#54077
* test: update v8-stats test for V8 12.6
nodejs/node#54077
* esm: unflag --experimental-wasm-modules
nodejs/node#57038
* test: adapt assert tests to stack trace changes
nodejs/node#58070
* src,test: unregister the isolate after disposal and before freeing
nodejs/node#58070
* src: use cppgc to manage ContextifyContext
nodejs/node#56522
* src: replace uses of FastApiTypedArray
nodejs/node#58070
* module: integrate TypeScript into compile cache
nodejs/node#56629
* deps: update ada to 3.2.7
nodejs/node#59336
* src: make minor cleanups in encoding_binding.cc
nodejs/node#57448
* src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
nodejs/node#55453
* src: use non-deprecated Get/SetPrototype methods
nodejs/node#59671
* src: simplify string_bytes with views
nodejs/node#54876
* src: improve utf8 string generation performance
nodejs/node#54873
* src: use non-deprecated Utf8LengthV2() method
nodejs/node#58070
* src: use non-deprecated WriteUtf8V2() method
nodejs/node#58070
* src: refactor WriteUCS2 and remove flags argument
nodejs/node#58163
* src: use String::WriteV2() in TwoByteValue
nodejs/node#58164
* node-api: use WriteV2 in napi_get_value_string_utf16
nodejs/node#58165
* node-api: use WriteOneByteV2 in napi_get_value_string_latin1
nodejs/node#58325
* src: migrate WriteOneByte to WriteOneByteV2
nodejs/node#59634
* fs: introduce dirent\.parentPath
nodejs/node#50976
* src: avoid copy by using std::views::keys
nodejs/node#56080
* chore: fixup patch indices
* fix: errant use of context->GetIsolate()
* fix: tweak BoringSSL compat patch for new changes
* fix: add back missing isolate dtor declaration
* fixup! esm: fix module.exports export on CJS modules
* cli: remove --no-experimental-fetch flag
https://github.com/nodejs/node/pull/52611/files
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* fixup! src: prepare for v8 sandboxing
* chore: bump @types/node to v24
* chore: fix const assignment in crypto test
* fix: sandbox pointer patch issues
* chore: rework source phase import patch
* src: add percentage support to --max-old-space-size
nodejs/node#59082
* chore: fixup crypto tests
* chore: HostImportModuleWithPhaseDynamically todo
* fix: cjs esm failures
* fix: v8::Object::Wrappable issues
- v8/node@b72a615
- v8/node@490bac2
- v8/node@4896a0d
* chore: remove deleted specs
* src: use v8::ExternalMemoryAccounter
nodejs/node#58070
* fs: port SonicBoom module to fs module as FastUtf8Stream
nodejs/node#58897
* chore: tweak sandboxed pr patch
* test: disable parallel/test-os-checked-function
* test: use WHATWG URL instead of url.parse
* fix: OPENSSL_secure_zalloc doesn't work in BoringSSL
* chore: fix accidental extra line
* 7017517: [defer-import-eval] Parse import defer syntax
https://chromium-review.googlesource.com/c/v8/v8/+/7017517
nilayarya added a commit to nilayarya/electron that referenced this pull request Nov 21, 2025
* chore: upgrade Node.js to v24.10.0
* chore: fixup crypto patch
* chore: fixup crypto test patch
* src: prepare for v8 sandboxing
nodejs/node#58376
* esm: fix module.exports export on CJS modules
nodejs/node#57366
* chore: fixup lazyload fs patch
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* module: remove --experimental-default-type
nodejs/node#56092
* lib,src: refactor assert to load error source from memory
nodejs/node#59751
* src: add source location to v8::TaskRunner
nodejs/node#54077
* src: remove dependency on wrapper-descriptor-based CppHeap
nodejs/node#54077
* src: do not use soon-to-be-deprecated V8 API
nodejs/node#53174
* src: stop using deprecated fields of v8::FastApiCallbackOptions
nodejs/node#54077
* test: update v8-stats test for V8 12.6
nodejs/node#54077
* esm: unflag --experimental-wasm-modules
nodejs/node#57038
* test: adapt assert tests to stack trace changes
nodejs/node#58070
* src,test: unregister the isolate after disposal and before freeing
nodejs/node#58070
* src: use cppgc to manage ContextifyContext
nodejs/node#56522
* src: replace uses of FastApiTypedArray
nodejs/node#58070
* module: integrate TypeScript into compile cache
nodejs/node#56629
* deps: update ada to 3.2.7
nodejs/node#59336
* src: make minor cleanups in encoding_binding.cc
nodejs/node#57448
* src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
nodejs/node#55453
* src: use non-deprecated Get/SetPrototype methods
nodejs/node#59671
* src: simplify string_bytes with views
nodejs/node#54876
* src: improve utf8 string generation performance
nodejs/node#54873
* src: use non-deprecated Utf8LengthV2() method
nodejs/node#58070
* src: use non-deprecated WriteUtf8V2() method
nodejs/node#58070
* src: refactor WriteUCS2 and remove flags argument
nodejs/node#58163
* src: use String::WriteV2() in TwoByteValue
nodejs/node#58164
* node-api: use WriteV2 in napi_get_value_string_utf16
nodejs/node#58165
* node-api: use WriteOneByteV2 in napi_get_value_string_latin1
nodejs/node#58325
* src: migrate WriteOneByte to WriteOneByteV2
nodejs/node#59634
* fs: introduce dirent\.parentPath
nodejs/node#50976
* src: avoid copy by using std::views::keys
nodejs/node#56080
* chore: fixup patch indices
* fix: errant use of context->GetIsolate()
* fix: tweak BoringSSL compat patch for new changes
* fix: add back missing isolate dtor declaration
* fixup! esm: fix module.exports export on CJS modules
* cli: remove --no-experimental-fetch flag
https://github.com/nodejs/node/pull/52611/files
* esm: Source Phase Imports for WebAssembly
nodejs/node#56919
* fixup! src: prepare for v8 sandboxing
* chore: bump @types/node to v24
* chore: fix const assignment in crypto test
* fix: sandbox pointer patch issues
* chore: rework source phase import patch
* src: add percentage support to --max-old-space-size
nodejs/node#59082
* chore: fixup crypto tests
* chore: HostImportModuleWithPhaseDynamically todo
* fix: cjs esm failures
* fix: v8::Object::Wrappable issues
- v8/node@b72a615
- v8/node@490bac2
- v8/node@4896a0d
* chore: remove deleted specs
* src: use v8::ExternalMemoryAccounter
nodejs/node#58070
* fs: port SonicBoom module to fs module as FastUtf8Stream
nodejs/node#58897
* chore: tweak sandboxed pr patch
* test: disable parallel/test-os-checked-function
* test: use WHATWG URL instead of url.parse
* fix: OPENSSL_secure_zalloc doesn't work in BoringSSL
* chore: fix accidental extra line
* 7017517: [defer-import-eval] Parse import defer syntax
https://chromium-review.googlesource.com/c/v8/v8/+/7017517
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++Issues and PRs that require attention from people who are familiar with C++.commit-queue-squashAdd this label to instruct the Commit Queue to squash all the PR commits into the first one.dont-land-on-v22.xPRs that should not land on the v22.x-staging branch and should not be released in v22.x.performanceIssues and PRs related to the performance of Node.js.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@anonrig@jasnell@RafaelGSS@nodejs-github-bot@lemire@mcollina@Qard@addaleax@ronag@targos