Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.
Sign updoc: update supported platforms for Node.js 12 #26714
Conversation
This comment has been minimized.
This comment has been minimized.
nodejs-github-bot
added
build
doc
labels
Mar 17, 2019
rvagg
reviewed
Mar 17, 2019
| | GNU/Linux | armv6 | kernel >= 4.14, glibc >= 2.24 | Experimental | Downgraded as of Node.js 12 | | ||
| | GNU/Linux | ppc64le >=power8 | kernel >= 3.13.0, glibc >= 2.19 | Tier 2 | e.g. Ubuntu 16.04, EL 7 | | ||
| | GNU/Linux | s390x | kernel >= 3.13.0, glibc >= 2.19 | Tier 2 | e.g. EL 7 | | ||
| | Windows | x64, x86 (WoW64) | >= Windows 7/2008 R2/2012 R2 | Tier 1 | [2](#fn2),[3](#fn3) | |
This comment has been minimized.
This comment has been minimized.
rvagg
Mar 17, 2019
Author
Member
@joaocgreis @refack please confirm this reflects our discussion, it's essentially unchanged
This comment has been minimized.
This comment has been minimized.
refack
Mar 17, 2019
•
Member
Maybe add another footnote that Windows 7 is expected to go EOL in 2020, and will be dropped.
This comment has been minimized.
This comment has been minimized.
rvagg
Mar 18, 2019
Author
Member
yeah, but Ubuntu 16.04 goes early too, there's this directly above the table to cover these cases:
Node.js does not support a platform version if a vendor has expired support
for it. In other words, Node.js does not support running on End-of-Life (EoL)
platforms. This is true regardless of entries in the table below.
This comment has been minimized.
This comment has been minimized.
refack
Mar 18, 2019
Member
As I see it the difference is Windows7 and 2008R2 are mentioned by name...
Maybe the correct terminology is WINNT >= 6.1 as in kernel version, similar to Linux, making it independent of the "name" of the OS.
Refs: https://en.wikipedia.org/wiki/Windows_NT#cite_ref-msdn-win7-ver_27-0
This comment has been minimized.
This comment has been minimized.
joaocgreis
Mar 18, 2019
Member
I think this is clear as it is, but to make it clearer perhaps just adding Until EOL in the Notes column would suffice?
Mentioning the full OS name looks looks much clearer to me than using WINNT version. Also note that we don't test on Windows 2012 (we only test on 2012R2). To be thorough, that would have to be added as experimental, but given the usage for that OS, I don't think this is needed.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
rvagg
Mar 19, 2019
Author
Member
too hard, too cluttered (my brain and this table). How about we revisit if someone raises it as an issue, maybe we're overthinking it?
rvagg
reviewed
Mar 17, 2019
rvagg
reviewed
Mar 17, 2019
rvagg
referenced this pull request
Mar 17, 2019
Open
Node.js 12 TODO: SmartOS 18 in ci and ci-release #1733
rvagg
reviewed
Mar 17, 2019
rvagg
reviewed
Mar 17, 2019
rvagg
reviewed
Mar 17, 2019
rvagg
reviewed
Mar 17, 2019
rvagg
reviewed
Mar 17, 2019
BUILDING.md Outdated
rvagg
reviewed
Mar 17, 2019
BUILDING.md Outdated
rvagg
reviewed
Mar 17, 2019
| | Binary package | Platform and Toolchain | | ||
| | --------------------- | ---------------------------------------------------------------------- | | ||
| | aix-ppc64 | AIX 7.1 TL05 on PPC64BE with GCC 6 | | ||
| | darwin-x64 (and .pkg) | macOS 10.11, Xcode Command Line Tools 7 with -mmacosx-version-min=10.7 | |
This comment has been minimized.
This comment has been minimized.
rvagg
reviewed
Mar 17, 2019
| | aix-ppc64 | AIX 7.1 TL05 on PPC64BE with GCC 6 | | ||
| | darwin-x64 (and .pkg) | macOS 10.11, Xcode Command Line Tools 7 with -mmacosx-version-min=10.7 | | ||
| | linux-arm64 | CentOS 7 with devtoolset-6 / GCC 6 | | ||
| | linux-armv7l | Cross-compiled on Ubuntu 16.04 x64 with [custom GCC toolchain](https://github.com/rvagg/rpi-newer-crosstools) | |
This comment has been minimized.
This comment has been minimized.
rvagg
reviewed
Mar 17, 2019
BUILDING.md Outdated
rvagg
reviewed
Mar 17, 2019
| * `gcc` and `g++` 4.9.4 or newer, or | ||
| * `clang` and `clang++` 3.4.2 or newer (macOS: latest Xcode Command Line Tools) | ||
| * `gcc` and `g++` >=6.3 or newer, or | ||
| * `clang` and `clang++` 3.4.2 or newer (macOS: Xcode Command Line Tools >= 7) | ||
| * Python 2.7 |
This comment has been minimized.
This comment has been minimized.
rvagg
Mar 17, 2019
Author
Member
@nodejs/python is it time to bump this to Python 3 since Python 2 EOL will hit us pretty quickly in Node 12's lifetime?
This comment has been minimized.
This comment has been minimized.
thefourtheye
Mar 25, 2019
Contributor
We are nearly there. But we cannot drop Python 2.7 dependency in this release.
rvagg
reviewed
Mar 17, 2019
| | Windows | Visual Studio 2017 with the Windows 10 SDK on a 64-bit host | | ||
| | macOS | Xcode / Apple LLVM >= 7 | | ||
|
|
||
| ### Official binary platforms and toolchains |
This comment has been minimized.
This comment has been minimized.
rvagg
Mar 17, 2019
Author
Member
this isn't strictly related to users "BUILDING" Node but we've been needing to list this somewhere for a long time and this seems like a good place to record everything related to our versions.
This comment has been minimized.
This comment has been minimized.
|
I'm a bit confused by these changes. For example, Ubuntu 16.04 only has gcc 5.4.0 in its official repositories, but this document now both says that we need gcc 6.3+ and that we support Ubuntu 16.04 (called out specifically as an example of tier 1 x64 support). What is it about gcc 6.3+ that is needed to support node on those platforms anyway? Why can we not support gcc 5.x? |
richardlau
added
the
semver-major
label
Mar 17, 2019
This comment has been minimized.
This comment has been minimized.
|
@mscdex Newer GCC is easy on Ubuntu 16.04+ with the toolchain ppa—official and commonly used, similar to the EL devtoolsets (although they maintain libc compat which is nice for our releases). (NOTE that is much more difficult on Debian which is why we're listing Debian 9). There's three primary pressures pushing us toward more recent GCCs:
My ideal would be to still support 4.8, but that ship has sailed. I'm not totally opposed to pulling it down to 5 for Linux x64 since it just means for now that we have to keep Ubuntu 16.04 without the PPA in our mix. But, if it's at all likely that Node 13 or 14 is going to force us into GCC 6 anyway (V8?) then the overlap of GCC 4.9, 5, and 6 is going to increase our complexity because we'll need to maintain even more toolchains on test machines (or multiple test machines to cover it all) and have more switching logic for the Node version and toolchain differences (it's already quite complex, see here and here as well as additional logic embedded in some Jenkins jobs). i.e. I'd rather have few big jumps than many small jumps and I think the others on @nodejs/build share this view. |
This comment has been minimized.
This comment has been minimized.
|
I think if we're going to be supporting specific distro versions that require additional repositories to be added in order to be supported, it might be worth indicating that in the document somewhere. For Ubuntu you could link to the PPA, for CentOS/RHEL you could link to the devtoolset page. |
This comment has been minimized.
This comment has been minimized.
|
@mscdex I'll add those as footnotes to the table, perhaps the "e.g." is locking us in to more than we want though? It was only meant to be informational (and because nobody keeps kernel and libc versions in their head). |
This comment has been minimized.
This comment has been minimized.
|
RE compiler levels. I'd like to bring forward three points:
Moving to the newest stable compiler level will also alleviate BuildWG burden, in that skipping over support for GCC-6 saves us complexity, now and in the future. (For reference currently we do already support GCC-4.8 & GCC-4.9 (& GCC-6 at tier 2), and will need to for at until node8 and node10 go EoL) |
refack
added this to the 12.0.0 milestone
Mar 17, 2019
richardlau
added a commit
to richardlau/node-1
that referenced
this pull request
Mar 17, 2019
This was referenced Mar 17, 2019
Trott
reviewed
Mar 18, 2019
| the broader community. | ||
| the broader community. All commits to the Node.js repository are tested on | ||
| multiple variants of these platforms. Breakages are considered critical for | ||
| the purpose of creating releases. |
This comment has been minimized.
This comment has been minimized.
Trott
Mar 18, 2019
Member
This sentence seems to boil down to "Breakages are critical to creating releases." That can't be right, but I'm not sure what it's supposed to mean. Is it supposed to indicate that failing tests on Tier 1 platforms will block a release? Or something else?
Trott
reviewed
Mar 18, 2019
| * **Experimental**: May not compile or test suite may not pass. | ||
| These are often approaching Tier 2 support but are not quite ready. | ||
| There is at least one individual providing maintenance. | ||
| vendor of the platform. All commits to the Node.js repository are generally |
This comment has been minimized.
This comment has been minimized.
Trott
Mar 18, 2019
Member
Remove generally? If the statement is true without "generally", cool. If not...I'm not sure what "generally" means here. If it just means that the statement isn't strictly true, then write the statement so that it's strictly true. (Maybe "usually" instead of "generally" and drop "All" at the start of the sentence?)
This comment has been minimized.
This comment has been minimized.
rvagg
Mar 18, 2019
Author
Member
explained later in the sentence:
is not considered essential if there are temporary problems with the test infrastructure.
I'll try and be more clear but tbh getting rid of ambiguity with these is tricky because I'm inventing policy on the fly, they're pretty vague now and are more emergent ideas than anything concrete.
mhdawson
approved these changes
Apr 16, 2019
|
LGTM with one small comment. |
rvagg
referenced this pull request
Apr 17, 2019
Closed
build: increase MACOS_DEPLOYMENT_TARGET to 10.10 for Node 12 #27275
rvagg
force-pushed the
rvagg:rvagg/node_12_platforms_building.md
branch
from
502b8e3
to
b923598
Apr 18, 2019
This comment has been minimized.
This comment has been minimized.
|
Discussion in nodejs/build#1773 made me realise we should capture the compatibility benefits of devtoolset-6 in this doc because of the confusing situation between minimum compile systems and minimum supported systems for our binaries. Even though we have minimum building requirements of GCC 6 which puts you on Ubuntu 18.04 (or 16.04 with the toolchain ppa) level of distributions, with devtoolset-6 on EL 7 our binaries have super powers. So in the latest commit, b923598, I've added a footnote to the binaries table:
@refack @mhdawson ^ (@Trott if you have language adjustment suggestions, go ahead and push 'em in) |
This comment has been minimized.
This comment has been minimized.
|
@rvagg your language in last comment sounds good to me. |
rvagg
added a commit
that referenced
this pull request
Apr 18, 2019
rvagg
force-pushed the
rvagg:rvagg/node_12_platforms_building.md
branch
from
b923598
to
aa094e3
Apr 18, 2019
This comment has been minimized.
This comment has been minimized.
|
With Node 12 a few days away, this has to move from aspirational to reality. I've rolled back two critical changes that are unfortunate but I can't control them for the purpose of this document and what we're locking in for Node 12. Future changes in these areas will have to be dealt with as isolated cases:
PTAL, this needs to get merged so it can get into 12 ASAP. |
rvagg
referenced this pull request
Apr 18, 2019
Open
Node.js 12 TODO: macOS 10.13 on MacStadium (also change #1732
rvagg
force-pushed the
rvagg:rvagg/node_12_platforms_building.md
branch
from
aa094e3
to
42e1887
Apr 19, 2019
This comment has been minimized.
This comment has been minimized.
|
I had some conflicts between my computers that stopped my latest from getting to this branch but it's fixed now and what's here should be good to go. A review or two would be appreciated before I merge this and I'd like to try and do it tomorrow. |
targos
approved these changes
Apr 19, 2019
joyeecheung
approved these changes
Apr 19, 2019
rvagg
force-pushed the
rvagg:rvagg/node_12_platforms_building.md
branch
from
42e1887
to
6894480
Apr 20, 2019
This comment has been minimized.
This comment has been minimized.
|
Landed in b581d59 thanks all for help on this and thanks @nodejs/build for all the hard work on Node 12 prep |
rvagg commentedMar 17, 2019
As promised in the last @nodejs/tsc meeting, a proposal from @nodejs/build on supported platforms for Node.js 12.
Notable changes:
There are some items that need clarification, I'll call them out to specific individuals inline.
macOS was one area where we didn't feel confident making a clear call and would like input from people who probably have greater expertise in the toolchains and compatibility. I'm thinking specifically of @bnoordhuis and @ofrobots (or someone on the V8 team perhaps?).
For macOS, we need to answer the following:
MACOSX_DEPLOYMENT_TARGET/-mmacosx-version-mindo we set for compiling our binaries (has been10.7for a long time, but maybe we should bring that right up to whatever the answer to question 1 is?)Discussion in @nodejs/build suggested moving to 10.13 for compiling binaries but we didn't land on an Xcode (maybe 10) or a minimum supported version (maybe 10.11 still but with
MACOSX_DEPLOYMENT_TARGETlifted to10.11).