Description
There is currently work under way to pull in V8 6.0 into Node 8 (#14004). In order to reduce the number of cherry-picks to Node 8 there might be the option to later on adopt V8 6.1 (to be cut next week). This means V8 6.1 needs to be ABI compatible with V8 6.0.
The V8 team is currently analyzing the information (tracking issue) and there are the following issues found:
Node likely needs to float these
AllowCodeGenerationFromStringsCallback
Signature changed for AllowCodeGenerationFromStringsCallback in https://chromium-review.googlesource.com/c/532875/
The old signature still exists as DeprecatedAllowCodeGenerationFromStringsCallback. Should V8 rename the new signature to AllowCodeGenerationFromStringCallback2 and restore the old signature? Is this being used in Node.js anywhere?
Does node need to float these?
Are these removals used/important for Node?
bool Object::ForceSet
Removed bool Object::ForceSet(Local key, Local value, PropertyAttribute attribs = None) in https://chromium-review.googlesource.com/c/518162/
That was already deprecated and removed which means there should be no usage?
void Isolate::SetWasmCompileCallback
Removed void Isolate::SetWasmCompileCallback(ExtensionCallback callback) and void Isolate::SetWasmInstantiateCallback(ExtensionCallback callback) in https://chromium-review.googlesource.com/c/525141/
Can we simply assume that people are not going to use these Wasm APIs yet?
Changes that shouldn't be a problem
These removals change the symbol table but the APIs were experimental so nobody should depend on them.
- Removed class DynamicImportResult in https://chromium-review.googlesource.com/c/492646/
- Removed Isolate::CreateParams::host_import_module_dynamically_callback_ in https://codereview.chromium.org/2897103002
- Signature changed for HostImportModuleDynamicallyCallback in https://chromium-review.googlesource.com/c/492646/
Fixed on V8 upstream
Class layout changed for ArrayBuffer::Contents
Class layout changed for ArrayBuffer::Contents in https://chromium-review.googlesource.com/c/523271/
This is being fixed by reordering the new fields to the end. This works because native modules that are built for V8 6.0 will be able to access correct fields in ArrayBuffer::Contents objects created in V8 6.1. Fix is here: https://chromium-review.googlesource.com/c/569758/
Class layout changed for SharedArrayBuffer::Contents
Class layout changed for SharedArrayBuffer::Contents in https://chromium-review.googlesource.com/c/523271/
This is being fixed by reordering the new fields to the end. Fix is here: https://chromium-review.googlesource.com/c/569758/
Constants changed in Internals
Constants changed in Internals in https://chromium-review.googlesource.com/c/526001/ and https://chromium-review.googlesource.com/c/500447/
This is being fixed by removing padding instance types in https://chromium-review.googlesource.com/c/569618/