Skip to content

V8 13.0 Deprecations #55452

Description

@avivkeller

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 of FastApiTypedArray<>.
    • 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. 
      
  • v8::Local<v8::Value> v8::Object::GetPrototype() (src: switch from Get/SetPrototype to Get/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 from Get/SetPrototype to Get/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. 
      
  • v8::String::Value::Value(v8::Isolate*, v8::Local<v8::Value>) (src: migrate String::Value to String::ValueView #55458)

    • Reason: Prefer alternatives for better performance.
    • Action: Use String::ValueView if possible, or use string->Write to 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 CreateParams instead.
    • 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 CreateParams instead.
    • Details:
      ‘void v8::Isolate::DetachCppHeap()’ is deprecated: 
      Set the heap on Isolate creation using CreateParams instead. 
      

Activity

  1. added
    c++Issues and PRs that require attention from people who are familiar with C++.
    v8 engineIssues and PRs related to the V8 dependency.
    deprecationsIssues and PRs related to deprecations.
    on Oct 18, 2024
  2. richardlau commented on Oct 18, 2024

    @richardlau
    Member
    * [ ]  **`v8::SnapshotCreator::SnapshotCreator(v8::Isolate*, const intptr_t*, const v8::StartupData*, bool)`**
      
      * **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. 
        ```
    

    Refs: #55337

  3. malinjawi commented on Oct 20, 2024

    @malinjawi

    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.

  4. avivkeller commented on Oct 20, 2024

    @avivkeller
    MemberAuthor

    I am new to node.js and looking forward to making my first contribution.

    Be my guest 😃. By the way, for issues specifically labeled to help get you started, see issues with the "good first issue" label.

  5. ronag commented on Oct 21, 2024

    @ronag
    Member

    template struct v8::FastApiTypedArray

    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

  6. targos commented on Nov 14, 2024

    @targos
    Member

    @ronag FastApiTypedArray has just been removed from upstream: https://chromium-review.googlesource.com/c/v8/v8/+/5982984

  7. targos commented on Nov 14, 2024

    @targos
    Member
  8. github-actions commented on Apr 27, 2026

    @github-actions
    Contributor

    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.

  9. added
    staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.
    on Apr 27, 2026
  10. github-actions commented on May 27, 2026

    @github-actions
    Contributor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    c++Issues and PRs that require attention from people who are familiar with C++.deprecationsIssues and PRs related to deprecations.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.v8 engineIssues and PRs related to the V8 dependency.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions