Skip to content

V8 13.0 Deprecations #55452

@avivkeller

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. 
      

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.stalev8 engineIssues and PRs related to the V8 dependency.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions