Repository navigation
V8 13.0 Deprecations #55452
Description
Another PR is updated V8 to 13.0, so I compiled a list of deprecations from that version onward. While they don't need to be fixed immediately, it's important to know they exist.
-
template<class T> struct v8::FastApiTypedArray- Reason: When an API function expects a TypedArray as a parameter, the type in the signature should be
v8::Local<v8::Value>instead ofFastApiTypedArray<>. - Action: Type-check the parameter and convert it to
v8::Local<v8::TypedArray>to access the data. Handle the parameter the same way as for a regular API call. - Details:
‘template<class T> struct v8::FastApiTypedArray’ is deprecated: When an API function expects a TypedArray as a parameter, the type in the signature should be `v8::Local<v8::Value>` instead of FastApiTypedArray<>. The API function then has to type-check the parameter and convert it to a `v8::Local<v8::TypedArray` to access the data. In essence, the parameter should be handled the same as for a regular API call.
- Reason: When an API function expects a TypedArray as a parameter, the type in the signature should be
-
v8::Local<v8::Value> v8::Object::GetPrototype()(src: switch fromGet/SetPrototypetoGet/SetPrototypeV2#55453)- Reason: V8 will stop providing access to the hidden prototype (i.e., JSGlobalObject).
- Action: Use
GetPrototypeV2()instead. - Reference: crbug.com/333672197
- Details:
‘v8::Local<v8::Value> v8::Object::GetPrototype()’ is deprecated: V8 will stop providing access to hidden prototype (i.e. JSGlobalObject). Use GetPrototypeV2() instead. See http://crbug.com/333672197.
-
v8::Maybe<bool> v8::Object::SetPrototype(v8::Local<v8::Context>, v8::Local<v8::Value>)(src: switch fromGet/SetPrototypetoGet/SetPrototypeV2#55453)- Reason: V8 will stop providing access to the hidden prototype (i.e., JSGlobalObject).
- Action: Use
SetPrototypeV2()instead. - Reference: crbug.com/333672197
- Details:
‘v8::Maybe<bool> v8::Object::SetPrototype(v8::Local<v8::Context>, v8::Local<v8::Value>)’ is deprecated: V8 will stop providing access to hidden prototype (i.e. JSGlobalObject). Use SetPrototypeV2() instead. See http://crbug.com/333672197.
-
v8::SnapshotCreator::SnapshotCreator(v8::Isolate*, const intptr_t*, const v8::StartupData*, bool)(src: migrate from deprecated SnapshotCreator constructor #55337)- Reason: Deprecated in favor of a version that passes
CreateParams. - Action: Use the version that passes
CreateParams. - Details:
‘v8::SnapshotCreator::SnapshotCreator(v8::Isolate*, const intptr_t*, const v8::StartupData*, bool)’ is deprecated: Use the version that passes CreateParams instead.
- Reason: Deprecated in favor of a version that passes
-
v8::String::Value::Value(v8::Isolate*, v8::Local<v8::Value>)(src: migrateString::ValuetoString::ValueView#55458)- Reason: Prefer alternatives for better performance.
- Action: Use
String::ValueViewif possible, or usestring->Writeto a buffer if not. - Details:
‘v8::String::Value::Value(v8::Isolate*, v8::Local<v8::Value>)’ is deprecated: Prefer using String::ValueView if you can, or string->Write to a buffer if you cannot.
-
void v8::Isolate::AttachCppHeap(v8::CppHeap*)- Reason: Set the heap on Isolate creation.
- Action: Use
CreateParamsinstead. - Details:
‘void v8::Isolate::AttachCppHeap(v8::CppHeap*)’ is deprecated: Set the heap on Isolate creation using CreateParams instead.
-
void v8::Isolate::DetachCppHeap()- Reason: Set the heap on Isolate creation.
- Action: Use
CreateParamsinstead. - Details:
‘void v8::Isolate::DetachCppHeap()’ is deprecated: Set the heap on Isolate creation using CreateParams instead.
Activity
richardlau commentedon Oct 18, 2024
Refs: #55337
malinjawi commentedon Oct 20, 2024
hey @redyetidev I am gonna try to have a crack at solving one of these tasks. I am new to node.js and looking forward to making my first contribution.
avivkeller commentedon Oct 20, 2024
Be my guest 😃. By the way, for issues specifically labeled to help get you started, see issues with the "good first issue" label.
ronag commentedon Oct 21, 2024
Regarding this one. Both us (me) and Deno has commented on the Chromium issue tracker that we believe this deprecation is problematic. IMHO we should try to stick with it while it still works even if deprecated. The alternative is significantly slower (at least the way we compile V8).
Refs: https://issues.chromium.org/issues/356158110
Refs: https://x.com/rough__sea/status/1819296459071598668
Refs: v8#197
Refs: #54087
Refs: #54103
src: migrate `String::Value` to `String::ValueView`
src: migrate `String::Value` to `String::ValueView`
targos commentedon Nov 14, 2024
@ronag FastApiTypedArray has just been removed from upstream: https://chromium-review.googlesource.com/c/v8/v8/+/5982984
targos commentedon Nov 14, 2024
IIUC we should use this instead: https://chromium-review.googlesource.com/c/v8/v8/+/5915615
Revert "[fastapi] Promote deprecation of FastApiTypedArray"
github-actions commentedon Apr 27, 2026
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
github-actions commentedon May 27, 2026
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 240 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.