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 }}
This repository was archived by the owner on Nov 9, 2017. It is now read-only.
V8 5.9 will be the first version with TurboFan + Ignition (TF+I) turned on by default. As parts of the Node.js codebase have been tuned to CrankShaft, there will be a non trivial amount of churn to adapt to the new pipeline. This also creates a security risk as CrankShaft and FullCodeGen are no longer maintained by the V8 team or tested by the Chrome security team.
If TF + I lands in Node.js 9.x backporting any changes to Node.js 8.x is going to prove extremely difficult and time consuming.
Below are three proposals of how we can approach this problem. To anyone in @nodejs/collaborators, and the community at large, we would love to hear your opinions on this. Further we really want to get some real world benchmarks, so if you have a way of testing builds to get non micro benchmarks please chime in and I'll get you binaries to work with.
Three Proposals:
Target 5.7 or 5.8 in 8.x release with standard APi / ABI:
Do not change anything.
Pros:
Uses classic pipeline based on FullCodeGen and CrankShaft which has an execution profile that is well known
Cons:
V8 will no longer be maintaining FullCodeGen+Crankshaft pipeline
Backports from V8 will be much harder
Chrome security group no longer be testing Crankshaft pipeline
With Turbo Fan + Ignition landing in 9.x there will be a lot of churn. This will make backporting much harder
Backports will require different performance profiling due to different pipeline
Target 5.8 in 8.x release with forward compatible ABI to 5.9, upgrade to TF+I as semver minor:
Land 5.8 with 5.9 forward compatible API / ABI in 8.x beta
We could potentially do so with TF+I turned on, this has been tested by V8 team
5.8 will go stable April 25
Upgrade to 5.9 with TF+I when it goes stable in early June.
Backport from upstream to 5.9 as changes land
Pros:
Uses Ignition+TurboFan which will be the supported pipeline from V8 for the foreseeable future
Lower risk of unknown security exploits
Easier to backport
Cons:
TF + I will be a newer pipeline and the performance profile is not yet clear
There are potentially 10’s of thousands of lines of churn between 5.9 -> 6.0 which may make future backports more difficult
Potential for large churn in core in an LTS release to fix performance issues and subtle changes to runtime
Target 5.8 in 8.x release. Delay release 3 - 4 weeks to allow forward compatible ABI to 6.0. Upgrade to TF+I as semver minor
Land 5.8 with 6.0 forward compatible API / ABI in 8.x beta
We could potentially do so with TF+I turned on, this has been tested by V8 team
5.8 will go stable April 25
6.0 API / ABI should be relatively stable between May 17 - 25
Upgrade to 5.9 with TF+I when it goes stable in early June
Upgrade to 6.0 when it goes stable in early August
Pros:
Uses Ignition+TurboFan which will be the supported pipeline from V8 for the foreseeable future
Lower risk of unknown security exploits
Easier to backport
Cons:
TF + I will be a newer pipeline and the performance profile is not yet clear
Release delayed by 3-4 weeks
Potential for large churn in core in an LTS release to fix performance issues and subtle changes to runtime
What needs to be done?
We need to get the opinions of our community. What would they prefer?
We need to do more benchmarking. While microbenchmarks can be helpful it would be good to test using real life code.
Testing
Test build of 8.x including V8 5.9 (TF + I turned on)
EDIT: CTC voting tally for this issue
Problem
V8 5.9 will be the first version with TurboFan + Ignition (TF+I) turned on by default. As parts of the Node.js codebase have been tuned to CrankShaft, there will be a non trivial amount of churn to adapt to the new pipeline. This also creates a security risk as CrankShaft and FullCodeGen are no longer maintained by the V8 team or tested by the Chrome security team.
If TF + I lands in Node.js 9.x backporting any changes to Node.js 8.x is going to prove extremely difficult and time consuming.
Below are three proposals of how we can approach this problem. To anyone in @nodejs/collaborators, and the community at large, we would love to hear your opinions on this. Further we really want to get some real world benchmarks, so if you have a way of testing builds to get non micro benchmarks please chime in and I'll get you binaries to work with.
Three Proposals:
What needs to be done?
Testing
Test build of 8.x including V8 5.9 (TF + I turned on)
Install with nvm
EDIT: CTC voting tally for this issue