nodejs / nodejs/nan

PropertyCallbackInfo::This() deleted in v8 14.6

Open
#1,014 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
3.4k
Forks
531
Avg merge
21m
Merged PRs (30d)
1

Description

I've been updating our addon to electron 41(v8 14.6.202) and it fails to compile for 2 reasons:

  1. v8::PropertyCallbackInfo::This() has been removed (commit, chromium-issue)
  2. v8::PropertyCallbackInfo::Holder() has been renamed to HolderV2 (chromium-issue)

I'm not an expert on this subject and the fact that it's 2 separate deprecations occurring at the same time is confusing me as to the proper way to go. It seems like Holder was deprecated in favor of This which was deprecated in favor of HolderV2.

Our addon can switch from This to HolderV2 trivially but cloudflare has taken issue with this change. I've made a fork to naively delete nan::PropertyCallbackInfo::This and make nan::PropertyCallbackInfo::Holder() call v8::PropertyCallbackInfo::HolderV2() but I don't know if this covers all the expected cases, hence the issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by examining NAN's PropertyCallbackInfo::This() and Holder() wrappers alongside the linked V8 changes and Cloudflare's analysis of the deprecation. Confirm the correct compatibility behavior for HolderV2 and This across callback cases, then verify that an addon builds with Electron 41 and V8 14.6.202.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, node.js
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.