For R's official support for various C++ versions, see
https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-C_002b_002b11-code
and below. Empirically, C++ > 11 is not really used: there are only 6
packages on CRAN that declare it as a requirement, and none of those
are widely used.
$ R
> df <- tools::CRAN_package_db()
> table(grepl("C++11", df$SystemRequirements, fixed=TRUE))
FALSE TRUE
14502 275
> table(grepl("C++14", df$SystemRequirements, fixed=TRUE))
FALSE TRUE
14771 6
> df[grepl("C++14", df$SystemRequirements, fixed=TRUE), c("Package", "Reverse
> depends", "Reverse imports", "Reverse suggests")]
Package Reverse depends Reverse imports Reverse suggests
6071 IsoSpecR <NA> <NA> <NA>
8004 multinet <NA> <NA> <NA>
8200 ndjson streamR <NA> <NA>
10487 RcppAlgos <NA> STraTUS bigIntegerAlgos
11115 rmdcev <NA> <NA> <NA>
14391 walker <NA> <NA> <NA>
> table(grepl("C++17", df$SystemRequirements, fixed=TRUE))
FALSE
14777
On Fri, Aug 16, 2019 at 8:32 AM Antoine Pitrou <[email protected]> wrote:
>
>
> Le 16/08/2019 à 17:11, Hatem Helal a écrit :
> > Hi all,
> >
> > I ran into a surprising (to me) limitation when working on an issue [1].
> > To summarize, supporting the manylinux1 standard ties Arrow development to
> > gcc 4.8.x which is technically not C++11 complete. This brought on few
> > questions for me:
> >
> > * What are the pre-conditions for dropping manylinux1 / gcc 4.8.x? I found
> > an open task to remove support altogether [2] .
>
> Not much IMHO. 1) The people who have been producing Python wheels up
> to now have decided to stop spending valuable time on hairy binary
> compatibility and distribution issues. 2) Last I tried, manylinux2010
> works and someone who's interested in reviving Python Linux wheels can
> probably produce such wheels instead of manylinux1.
>
> So IMHO we can drop manylinux1 support right now. However:
>
> > * What is needed to move to C++ 14?
>
> Make sure that all important toolchains support it. Unfortunately, I
> don't think that's the case for the MinGW version that's used to build R
> packages on Windows. It's using gcc 4.9.3.
>
> See e.g.
> https://ci.appveyor.com/project/ApacheSoftwareFoundation/arrow/builds/26742063/job/7k57qamlpb5cchfh?fullLog=true#L666
>
> > * Would either of these changes normally require a PMC-driven vote?
>
> I don't think dropping manylinux1 needs a PMC vote. It's simply a case
> of a high-cost recurring activity that doesn't find a volunteer anymore.
> The PMC can't simply claim that we continue supporting manylinux1 if
> there's nobody around to do the actual work.
>
> As for switching the baseline to C++14, it would probably require a vote
> indeed. And I expect a -1 if the R Windows build can't be migrated to a
> newer compiler.
>
> Regards
>
> Antoine.