Node: Making V8 6.6 forward compatible with a later version

Created on 14 Mar 2018  Â·  11Comments  Â·  Source: nodejs/node

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

V8 Engine discuss

Most helpful comment

Okay so I talked to @fhinkel, @ofrobots, and @psmarshall. And we have a plan. Let's look at the dates:

  • Node 10 initially releases on 30th April.
  • Node 10 reaches LTS on 1st October.
  • V8 6.6 turns stable on 17th April.
  • V8 6.7 branch cut is a bit before 12th April.
  • V8 6.9 turns stable on 4th September.

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?

All 11 comments

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:

  • Node 10 initially releases on 30th April.
  • Node 10 reaches LTS on 1st October.
  • V8 6.6 turns stable on 17th April.
  • V8 6.7 branch cut is a bit before 12th April.
  • V8 6.9 turns stable on 4th September.

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?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

akdor1154 picture akdor1154  Â·  3Comments

addaleax picture addaleax  Â·  3Comments

willnwhite picture willnwhite  Â·  3Comments

dfahlander picture dfahlander  Â·  3Comments

srl295 picture srl295  Â·  3Comments