I've been digging a bit to try and put numbers on those users the Neal mentions. Specifically, we know that requiring C++17 will mean that R users on windows using versions of R before 4.0.0 will not be able to compile/install arrow. Although R version 3.6 is no longer supported by CRAN [1], many people hang on to older versions for an extended period of time.
We are still working on getting more solid numbers about how many people might still be on these old versions, but here is what I have so far: Using Rstudio's cran mirror logs of package installations [2] (and with the help of Arrow datasets to process/filter these files 🎉) for the period from 2020-05-18 [3] to today, for the installations that have an r version reported approximately 27% of the windows package installs are on versions before 4.0.0 (and therefore would be unable to install arrow if we require C++17 right now). There are a number of caveats about this data, however: * the "that have an r version reported" is very important: only ~17% of the installations provide an R version. It's possible (and very likely) that the installations that don't include this information are not distributed like those that do. This is the biggest problem with this dataset/analysis and we're trying to see if others have better information here. * This is limited to one of many cran repositories. There's no indication that folks using this repository are more likely to be using older versions (if anything it is probably the opposite), but we don't have that information directly. * There isn't a way to filter out CI and other automated installations that aren't representative of real-world use cases. If we get a more reliable dataset for this I will update these numbers. I'm not sure what the threshold is for if this impacts too many people (and if these numbers are above that). But wanted to get this information out here for us to think about. Additionally, it might be useful to think about how quickly we cut off support for client languages: if we release on our typical schedule (in July), people who installed R 1.25 years ago (on windows) would be required to upgrade R in order to install arrow. That might be long enough, or the benefits of C++17 outweigh this, but like Neal mentions: the people likely to run into this are likely not on this list. [1] - the last release in the 3.6 line (3.6.3) was released on 2020-02-29, and was superceded by 4.0.0 2020-04-24 [2] - http://cran-logs.rstudio.com [3] - this is the day that R 4.1.0 was released and 3.6.0 stopped being supported by CRAN -Jon On Tue, Jun 8, 2021 at 4:39 PM Neal Richardson <neal.p.richard...@gmail.com> wrote: > > I'm guessing there hasn't been opposition on this thread because the users > that this might affect aren't following this mailing list. > > I'd be interested to see which other major C++ projects out there have > bumped their requirement to C++17, and how that experience was for > everyone--the user community as well as the developers. Do you know of good > examples? I just checked on CRAN today, and of the 17,694 R packages there, > only 3 require C++17 (none of which have wide adoption) and only 20 require > C++14. > > Neal > > On Tue, Jun 8, 2021 at 6:17 AM Antoine Pitrou <anto...@python.org> wrote: > > > > > Hello, > > > > Note the change in the message topic :-) > > We now have a draft PR up to switch the C++ standard level to C++17. > > This allows very nice simplifications in the code, especially the use > > of elegant constructs that can replace some cumbersome uses of > > std::enable_if, SFINAE and other pain points. > > > > https://github.com/apache/arrow/pull/10414 > > > > It seems we were finally able to overcome the main platform > > compatibility (CI) hurdles, though some effort will probably be > > necessary to squash all regressions in that area. > > > > I haven't seen any opposition previously in this thread, so you are > > really concerned by this, it would be better to speak up quickly, as > > otherwise we may decide to move forward with the change. > > > > Best regards > > > > Antoine. > > > > > > On Thu, 27 May 2021 10:03:03 +0200 > > Antoine Pitrou <anto...@python.org> wrote: > > > Hello, > > > > > > It seems the only two platforms that constrained us to C++11 will not be > > > supported anymore (those platforms are RTools 3.5 for R packages, and > > > manylinux1 for Python packages). > > > > > > It would be beneficial to bump our C++ requirement to C++14. There is > > > an issue open listing benefits: > > > https://issues.apache.org/jira/browse/ARROW-12816 > > > > > > An additional benefit is that some useful third-party libraries for us > > > may or will require C++14, including in their headers. > > > > > > Is anyone opposed to doing the switch? Please speak up. > > > > > > Best regards > > > > > > Antoine. > > > > > > > > > > >