Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Action plan for 16.x upgrades #2445

Closed
6 of 13 tasks
AshCripps opened this issue Sep 28, 2020 · 15 comments
Closed
6 of 13 tasks

Action plan for 16.x upgrades #2445

AshCripps opened this issue Sep 28, 2020 · 15 comments

Comments

@AshCripps
Copy link
Member

AshCripps commented Sep 28, 2020

This issue is the tracker for the updates and upgrades we need to undertake before the release date of 16.x in April 2021.

Toolchain updates

These machines will need the new versions installed and added to the ansible scripts

  • Linux x86
  • Linux arm
  • Linux cross compiling
  • MacOS
  • Windows
  • AIX
  • zLinux
  • Linux on P
  • IBMi
  • zOS
  • smartos

Scripts

  • Select-Compiler
  • Possible some other jenkins scripts?

Known Issues/Blockers

@rvagg
Copy link
Member

rvagg commented Sep 28, 2020

From #2423, so far there's agreement that we need to get to at least devtoolset-7 for all the Linux platforms. V8 will force this on us. If we can get to a later one then even better but this is probably going to be dictated by IBM folks.

@AshCripps
Copy link
Member Author

We would like to go to devtoolset-8 (GCC8) - A lot of our systems already have that available and ones we have in the pipleline are targeting 8 aswell.

@richardlau
Copy link
Member

We don't release on it, but we still test on smartos -- I assume we'll need to update those too?

@AshCripps
Copy link
Member Author

ah I forgot to mention feel free to update the list as I knew I wouldve forgotten something - Ill add smartos now

@rvagg
Copy link
Member

rvagg commented Sep 30, 2020

yeah, and we should also look at what we should retire when we do these, we often don't clean up old combos as we move forward.

@AshCripps
Copy link
Member Author

@rvagg 100% agree if we get on top of this early enough we can clear a lot of cruft from the buildfarm especially with 10.x going EOL roughly around the same time.

@anlexN
Copy link

anlexN commented Sep 30, 2020

i think we don't need more talking, many and many os already have newer toolchain that nodejs need. so please quickly upgrade. i need many modern C++ syntax (for example: smart pointer) to write nodejs, i think if so, nodejs source code can be decreased very much and lighter. can we go further? action plan for 15.x, not wait 16.x.

@AshCripps
Copy link
Member Author

@anlexN Unfortunatly we can't push the update to 15.x as not all the platforms we support have GCC8 compatability and won't have it until near 16.x's release date. Also V8 won't require c++17 support until mid 2021 - https://chromium.googlesource.com/chromium/src/+/master/styleguide/c++/c++.md#modern-c_features

@anlexN
Copy link

anlexN commented Oct 1, 2020

but at least, we must remove python 2. it is died.

@AshCripps
Copy link
Member Author

AshCripps commented Mar 10, 2021

With nodejs/node#37677 landing - AIX will be up to date and running GCC8 on master. IBMi has GCC10 coming but as its only running on daily jobs and not regular test runs it should be fine to wait - same with z/OS. The Linux on P and Z machines already run devtoolset-8 so from the RH/IBM side we should be in the clear.

from a little poking around on the other platforms -

  • smartos is running GCC7 so will need updating
  • I think linux will be fine as there are GCC6 and GCC8 builds and the others are running a later compiler
  • Windows was updated recently so should be fine
  • Macos is running a fairly recent xcode so is ok
  • Arm builds have GCC8 version so are fine
  • Cross compiling however does need an update

We also need to update configure.py in core to warn on anything below GCC8 and update the rest of the docs in core

@mhdawson
Copy link
Member

@rvagg are you going to be able to do the cross compilation updates?

@rvagg
Copy link
Member

rvagg commented Mar 11, 2021

this has completely exited my mental stack - what's the requirement here, gcc8 all-round? this is a hard requirement going in to 16.x because of future upgrades, or actual code problem today? I think I got an initial gcc8 cross for armv7 prepared, but I'd need to revisit that, it would have been quite a while ago.

@AshCripps
Copy link
Member Author

@rvagg I think we are future proofing as c++17 features are coming in V8 later this year IIRC

AshCripps pushed a commit to nodejs/node that referenced this issue Mar 15, 2021
PR-URL: #37677
Refs: nodejs/build#2445
Reviewed-By: Stewart X Addison <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
targos added a commit to targos/node that referenced this issue Mar 23, 2021
targos added a commit to targos/node that referenced this issue Mar 23, 2021
The last version of Xcode 10 was released in 2019.

Refs: nodejs/build#2445
@targos
Copy link
Member

targos commented Mar 23, 2021

nodejs/node#37871 updates the GCC requirement to 8.3
nodejs/node#37872 suggest to update Xcode to version 11

gengjiawen pushed a commit to nodejs/node that referenced this issue Mar 26, 2021
Refs: nodejs/build#2445

PR-URL: #37871
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Ash Cripps <[email protected]>
Reviewed-By: Darshan Sen <[email protected]>
Reviewed-By: Shelley Vohr <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
Reviewed-By: Juan José Arboleda <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
gengjiawen pushed a commit to nodejs/node that referenced this issue Mar 26, 2021
The last version of Xcode 10 was released in 2019.

Refs: nodejs/build#2445

PR-URL: #37872
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Ash Cripps <[email protected]>
Reviewed-By: Shelley Vohr <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
rvagg added a commit that referenced this issue Apr 8, 2021
rvagg added a commit that referenced this issue Apr 8, 2021
rvagg added a commit that referenced this issue Apr 8, 2021
rvagg added a commit that referenced this issue Apr 8, 2021
rvagg added a commit that referenced this issue Apr 9, 2021
rvagg added a commit that referenced this issue Apr 9, 2021
@rvagg
Copy link
Member

rvagg commented Apr 9, 2021

Need to test the next nightly but I think Linux cross compiling can soon be ticked off, >=16.x should be compiling with gcc 8.3.0 and glibc v2.24 🤞.

richardlau added a commit that referenced this issue May 28, 2021
* ansible: add gcc-8 to Ubuntu 18.04 hosts/containers

Baseline gcc/g++ compiler version for Node.js 16 and above is 8. The
default `gcc` and `g++` packages on Ubuntu 18.04 install version 7.

Moves `gcc*` and `g++*` out of the common `ubuntu` packages into
`ubuntu1604`.

Update `select-compiler.sh` to select GCC 8 for Node.js 16 and later,
otherwise use GCC 6.

Refs: #2445
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment