I am generally in favour of this proposal but would like to mention that we
have to be able to build on MacOS 10.13 for the R package due to CRAN using
it.
The CRAN builder comes with:
Apple LLVM version 10.0.0 (clang-1000.10.44.4); GNU Fortran (GCC) 8.2.0

Antoine Pitrou <anto...@python.org> schrieb am Mi., 17. Aug. 2022, 10:21:

>
> Hello,
>
> We are in 2022 and Arrow C++ still strives to be compatible with C++11.
>
> Maintaining compatibility has caused us growing pains since third-party
> libraries have begun requiring C++14 or later. Boost is warning that it
> will soon require C++14
> (https://issues.apache.org/jira/browse/ARROW-17406). The Abseil C++
> library, an indirect dependency of the GCS filesystem implementation,
> requires C++14. Other Google libraries such as GTest and Protocol
> Buffers are following suit and starting to require C++14 (see
>
> https://github.com/protocolbuffers/protobuf/commit/500cbd7b90fa7eb5716a3bbc6aa788ada028a1bf
> ).
>
> Moreover, C++11 has a set of limitations which causes quality of life
> issues in daily development. While C++14 wouldn't improve things much,
> being able to use C++17 features would be a large boost in
> maintainability and ease of development. This is demonstrated by a draft
> PR submitted one year ago (https://github.com/apache/arrow/pull/10414).
>
>
> The requirement for C++11 compatibility was driven by packaging concerns
> due to old gcc versions being used in a couple contexts:
>
> 1) On old (but supported) Red Hat-like systems such as CentOS 7, the
> system gcc only supports C++11 (typically, gcc 4.8 on CentOS 7).
> However, one can install a Developer Toolset package to get a more
> modern development enviroment on such a system, that can produce
> binaries fully compatible with the base system libraries (see e.g.
> https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/,
>
> https://access.redhat.com/documentation/en-us/red_hat_developer_toolset/8/html/8.0_release_notes/dts8.0_release
> ).
>
> 2) Building R packages for Windows and R < 4.0 uses an old toolchain
> based on gcc 4.9, which only supports C++11. However, building packages
> for R >= 4.0 uses a more recent toolchain based on gcc 8.3, supporting
> C++17. It is reasonable to drop support for R < 4.0 on Windows, as
> suggested in this JIRA comment:
>
> https://issues.apache.org/jira/browse/ARROW-17110?focusedCommentId=17571472&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17571472
>
>
> All in all, I'm proposing that we move away from C++11 to a more recent
> version. Furthermore, I'm proposing that we move to C++17, as it
> provides considerable quality of life improvements and is more
> forward-looking than basing ourselves on C++14.
>
> I do not expect significant pushback on this proposal, but if you have
> good reasons to oppose this move, please say so quickly. Otherwise, a
> formal vote will be launched soon.
>
> Regards
>
> Antoine.
>

Reply via email to