You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Removal of functions in V8 ~14.6 / Node 26.1.0 prevents building V8Js #546
#545 fixed a bunch of issues and deprecations, etc but unfortunately now after trying to build against Node 26.1.0's V8 (14.6), a load more breaking changes were made to V8. e.g.
I have managed to make changes that result in a successful build but need to properly verify they're the right changes. It affects ~7 files. Example changes across the V8Js lib:
// old
v8::Local<v8::Object> self = info.This();
// new
v8::Local<v8::Object> self = info.HolderV2();
// old
php_obj->SetAlignedPointerInInternalField(1, Z_OBJ_P(getThis()));
// new
php_obj->SetAlignedPointerInInternalField(1, Z_OBJ_P(getThis()), v8::kEmbedderDataTypeTagDefault);
// old
zend_object *object = reinterpret_cast<zend_object *>(self->GetAlignedPointerFromInternalField(1));
// new
zend_object *object = reinterpret_cast<zend_object *>(self->GetAlignedPointerFromInternalField(1, {}));
// old
newobj->SetAlignedPointerInInternalField(0, ext_tmpl->Value());
// new
newobj->SetAlignedPointerInInternalField(0, ext_tmpl->Value(), v8::kEmbedderDataTypeTagDefault);
// old
str->Write(isolate, &c, 0, 1);
// new
str->WriteV2(isolate, 0, 1, &c); // different func *and* params switched around
Happy to get a PR in for this stuff (perhaps as part of 3.0.0 ?) but I'd be grateful for any guidance from someone that knows a bit more about all this than myself!
Do the changes above look like acceptable swaps?
Probably one for @stesie - I'm not sure how far back these changes would be in terms of compatible V8 version (yet). So we could either set a new minimum version of V8, or accept that we might have a whole heap of version guards (or perhaps some more abstraction, which might be a little cleaner).
Might see about doing something with the output too to make deprecations a little easier to spot. Think I've seen somewhere that eventually HolderV2() will be renamed back to Holder() at somet point, so it's certainly an awkward moving target :)
Activity
Add release workflow: publish prebuilt PIE binaries on tag push