+1.  I'm very much in favor of upgrading to C++17.  I am lucky to
often get to work with people that are new to the Arrow C++ code base
and a common feedback is that the code is quite complex.  While I do
not think moving to C++17 will solve this problem by itself I'm pretty
confident that being able to remove SFINAE (if constexpr), remove some
of our backports (optional, string_view), and move into lambda
captures would all help reduce this complexity.

In addition to allowing engineers like myself to better understand the
code base it would also, I think, be a small boost in helping to
attract talented C++ developers into working on the code base.  Being
forced to reinvent or workaround features that have been efficiently
solved in a newer version of the language is a discouraging
experience.

Finally, I have been interviewing C++ engineers as a part of my job
and I think we have reached a point where the average interviewee has
been working on a C++17 code base.  They either won't have experience
with C++11 or will view it as a step backwards.  This is somewhat
backed up by quantitative data such as JetBrains surveys[1][2] which
reports that C++11 usage has gone from 61% in 2019 to 40% in 2021
(with 50% of C++11 respondents stating they plan to migrate to a newer
version in the next year).

In summary I think the change is important to recruit, and keep the
interest of, talented C++ developers.

[1] https://www.jetbrains.com/lp/devecosystem-2019/cpp/
[2] https://www.jetbrains.com/lp/devecosystem-2021/cpp/

On Wed, Aug 17, 2022 at 4:23 AM Matthew Topol
<m...@voltrondata.com.invalid> wrote:
>
> I can definitely vouch for the benefits of upgrading to C++17, it makes
> general development significantly more enjoyable!
>
> On that end, I second Neal's suggestion for deployment, that's roughly
> the same plan we used in my past experience when performing a compiler
> upgrade on a very large codebase.
>
> --Matt
>
> On Wed, Aug 17 2022 at 08:45:34 AM -0500, Neal Richardson
> <neal.p.richard...@gmail.com> wrote:
> > I have no opinion about the benefits of upgrading to C++17. From the R
> > perspective, there are a handful of packages on CRAN that require
> > C++14 or
> > C++17. Last year, when I asked other R package maintainers why they
> > hadn't
> > upgraded to newer C++ standards, the reasoning was that because many
> > packages try to support the 5 last versions of R, the Windows 3.6
> > issue is
> > still limiting, at least if you hope to be a package that others
> > depend on.
> > But I don't think this is an argument to prevent us from upgrading: R
> > package developers have been more likely to take on `arrow` as an
> > optional
> > dependency, if at all, given the size/complexity of the build.
> >
> > Here's a tactical suggestion: for 10.0, we could upgrade all* of our
> > packaging and CI jobs to build with C++17, but not add code that
> > cannot
> > compile on C++11 (hence the *, we will need to maintain at least one
> > C++11
> > CI job to assure that). Then, assuming there are no adverse
> > consequences,
> > we can start upgrading the codebase to C++17, and 11.0 would be the
> > first
> > release that can't build on C++11.
> >
> > Neal
> >
> > On Wed, Aug 17, 2022 at 3:56 AM Antoine Pitrou <anto...@python.org
> > <mailto:anto...@python.org>> wrote:
> >
> >>
> >>  Le 17/08/2022 à 10:48, Jacob Wujciak a écrit :
> >>  > 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
> >>
> >>  Well, I can't say for sure, but according to this StackOverflow
> >> post it
> >>  would probably be ok:
> >>  <https://stackoverflow.com/a/54030282>
> >>
> >>  Do we have CI for that macOS platform?
> >>  Do you know which XCode version that Apple LLVM version corresponds
> >> to?
> >>
> >>
>

Reply via email to