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
Node.js 14 initial release: 2020-04-21
V8 stable version at that date: 8.1
Node.js 14 LTS start: 2020-10-20
V8 stable version at that date: 8.5
For v12, we prepared forward-compatible patches for 7.4, and the V8 team was extra careful with ABI changes between 7.4 and 7.6 (#25082 (comment)). So based on the roadmap for v12, we would be aiming for 8.3, depending on breaking changes across V8 version. It's worth noting that we were able to upgrade v12 to 7.8, so maybe we can push further on v14 as well.
I'm working on the 8.1 upgrade and I'm seeing a few things we can make forward compatible (renaming globalThis.FinalizationGroup to globalThis.FinalizationRegistry, some C++ methods which were deprecated and are now removed, etc.). I'm not sure if there are more ABI/API breaking changes we should make forward-compatible, but with 8.2 branch cut scheduled for today we'll find out soon. It would be nice to have the same care wrt ABI changes for a few V8 versions (at least until 8.3 or 8.4), so we can upgrading V8 on v14 (cc @nodejs/v8 is that possible?).
As a heads up, I plan on removing the deprecated Isolate::SetHostCleanupFinalizationGroupCallback in M84. The FinalizationGroup hooks in C++ in node can be all removed without impacting the functionality of FinalizationRegistry today, so I recommend doing so.
In the current V8 version we have on master, SetHostCleanupFinalizationGroupCallback is not deprecated yet. Also, the method exists on Node.js v13 (and maybe earlier). @nodejs/v8-update I think we'll need to add a forward-compatibility patch deprecating this function on v14, and when we upgrade to M84 we'll need to keep this function as a no-op. Does that make sense? Alternatively, can we deprecate it on v13 and remove it on v14? Not sure how we dealt with situations like this in the past.
@mmarchini keeping it as a no-op sgtm, we already did that in the past.
Another solution would be to backport the patch(es) that deprecated it. Is that possible?
A native module could in theory have used it to enable FinalizationGroups, but i find it extraordinary unlikely that such a thing happened. cc @ChALkeR for possible gzemnid analysis?
I don't think any more V8 upgrade will be done on Node.js 14.x, so this issue can probably be closed.
There is no specific roadmap for Node.js 16, as I am trying a new incremental approach at V8 upgrades (you can see some of the work here: https://github.com/targos/abi-stable-v8). Expect a pull request backporting #38273 very soon :)
Reacted by Richard Lau, Myles Borins and mary marchini
Activity
sam-github commentedon Mar 5, 2020
mmarchini commentedon Mar 5, 2020
ryzokuken commentedon Mar 5, 2020
mmarchini commentedon Mar 5, 2020
BethGriggs commentedon Mar 5, 2020
The v14.x release is expected to be 2020-04-21, and promoted to LTS on 2020-10-20.
(Just opened nodejs/Release#544 to add the specific dates to the schedule.)
mmarchini commentedon Mar 5, 2020
Thanks @BethGriggs! I updated the issue with these dates and correct stable V8 versions based on that.
joyeecheung commentedon Mar 10, 2020
As FinalizationGroup was only available behind
--harmony-weak-refsit probably would be fine not to do anything about the renamingsyg commentedon Apr 6, 2020
As a heads up, I plan on removing the deprecated
Isolate::SetHostCleanupFinalizationGroupCallbackin M84. TheFinalizationGrouphooks in C++ in node can be all removed without impacting the functionality ofFinalizationRegistrytoday, so I recommend doing so.mmarchini commentedon Apr 6, 2020
Sounds good. Thank you for the heads up @syg!
mmarchini commentedon Apr 7, 2020
In the current V8 version we have on
master,SetHostCleanupFinalizationGroupCallbackis not deprecated yet. Also, the method exists on Node.js v13 (and maybe earlier). @nodejs/v8-update I think we'll need to add a forward-compatibility patch deprecating this function on v14, and when we upgrade to M84 we'll need to keep this function as a no-op. Does that make sense? Alternatively, can we deprecate it on v13 and remove it on v14? Not sure how we dealt with situations like this in the past.targos commentedon Apr 8, 2020
@mmarchini keeping it as a no-op sgtm, we already did that in the past.
Another solution would be to backport the patch(es) that deprecated it. Is that possible?
Flarna commentedon Apr 8, 2020
@mmarchini I would not deprecated it in v13 as there is no replacement to use instead. Therefore users will get compiler warnings they can't avoid.
We had something similar in the past which resulted in terrible workarounds like https://github.com/nodejs/nan/blob/2c023bd447661a61071da318b0ff4003c3858d39/nan.h#L1150-L1167
targos commentedon Apr 8, 2020
Is
SetHostCleanupFinalizationGroupCallbacksomething that native modules can really use? If not, we can remove it directly in v14.mmarchini commentedon Apr 8, 2020
It's an experimental feature, and the replacement is to not use the API.
I'll need to investigate. According to @syg on IRC, it's unlikely a native module can use it without unwanted side effects.
devsnek commentedon Apr 8, 2020
A native module could in theory have used it to enable FinalizationGroups, but i find it extraordinary unlikely that such a thing happened. cc @ChALkeR for possible gzemnid analysis?
tchetwin commentedon Jun 10, 2021
Is Node.js 14 likely to see any more "minor" V8 version updates at this stage (i.e. 8.5+)?
Does an Issue exist similar to this one for the roadmap of V8 versions in Node.js 16? Didn't see anything referenced from #38273 (amazing stuff! 🎉)
targos commentedon Jun 10, 2021
I don't think any more V8 upgrade will be done on Node.js 14.x, so this issue can probably be closed.
There is no specific roadmap for Node.js 16, as I am trying a new incremental approach at V8 upgrades (you can see some of the work here: https://github.com/targos/abi-stable-v8). Expect a pull request backporting #38273 very soon :)