I am currently working on integrating V8 6.6 into node (see PR #19201). If everything goes well, this will be the version that we ship with Node 10.
I open this issue specifically to ask the V8 team if it would be useful, like we did last year for Node 8, to make V8 6.6 forward compatible with V8 6.7 (or even 6.8?).
Are there major API or ABI changes planned for those versions?
/cc @nodejs/v8
I haven't had a look with this specifically in mind yet, but I think we had quite a few APIs that went from V8_DEPRECATE_SOON to V8_DEPRECATED.
@psmarshall could you take a look at what we need to do to make 6.6's API forward compatible so that we have the option to easily upgrade to 6.7 later?
Okay so I talked to @fhinkel, @ofrobots, and @psmarshall. And we have a plan. Let's look at the dates:
Source for Node.
Source for Chromium and by extension, V8.
So the furthest we can go before LTS is V8 6.9. I think it is realistic to aim for 6.8. We will, when 6.7 branch cuts, come up with a patch to float on V8 6.6 to make it ABI forward compatible to 6.7. This allows us to get the 6.7 ABI into the initial Node 10 release.
When V8 6.8 turns stable, we float a patch to make it ABI backwards compatible with 6.7.
So we will at least end up with V8 6.7, with the option to go as far as 6.9, but realistically targeting 6.8.
Note that BigInt is scheduled to ship with V8 6.7.
WDYT?
This sounds like a great plan. Thanks!
Note that BigInt is scheduled to ship with V8 6.7.
You mean without a flag?
Yup.
It would be great to ship V8 6.7 with Node 10, then.
Instance class fields (public and private) also arrive in V8 6.7, behind the flag though. Not sure what is target stable release for them
@MylesBorins
Hi all, I worked on the forward-compat patch from v8 6.6 to 6.7 today. This should make it possible to use v8 6.7 in Node 10 when it is ready, by keeping 6.6 and 6.7 ABI compatible. I was a bit cautious and where I wasn't sure whether something could cause ABI incompatibility, just patched it anyway.
https://github.com/psmarshall/node/commit/3b7202ad0da09d3aa9cc6452bdec64db927cf74b
@addaleax Maybe you could review the code?
@psmarshall Yup, looks like that’s ABI compatible to V8 master – thanks! I think you can go ahead and open a PR with it?
Okey doke - here we go https://github.com/nodejs/node/pull/19999
https://github.com/nodejs/node/pull/19999 landed. Closing.
Most helpful comment
Okay so I talked to @fhinkel, @ofrobots, and @psmarshall. And we have a plan. Let's look at the dates:
Source for Node.
Source for Chromium and by extension, V8.
So the furthest we can go before LTS is V8 6.9. I think it is realistic to aim for 6.8. We will, when 6.7 branch cuts, come up with a patch to float on V8 6.6 to make it ABI forward compatible to 6.7. This allows us to get the 6.7 ABI into the initial Node 10 release.
When V8 6.8 turns stable, we float a patch to make it ABI backwards compatible with 6.7.
So we will at least end up with V8 6.7, with the option to go as far as 6.9, but realistically targeting 6.8.
Note that BigInt is scheduled to ship with V8 6.7.
WDYT?