RFC: Increasing the GCC and Clang requirements to support C++17 in LLVM

Hi everyone!

Sorry for being absent for a while - but I have been starting a new job and it has taken some time to get up to speed.

I wanted to summarize where we are today:

  • Quite a few people support moving to C++17
  • (primarily) people from the TensorFlow community have voiced some opposition due to how complicated the 11->14 transition was for their end users. This was related to how mixing older and newer C++ STL libraries can be tricky and disruptive.
  • The features I listed above that would have a positive impact where mostly language features and not library features - which lead to a discussion about separating the requirements of compiler and library.
  • There has been a long discussion about what problems python’s manylinuxes setup can have and not have on this change. I can’t say that I was fully able to follow the discussion with many back and forths. I think we need a summary of what would or could be a blocker here.

Options for moving forward (again):

  • Status Quo - don’t change anything and re-evaluate later down the line.
  • Make a more complicated decision where compiler and runtime library versions are not linked. We would have to maintain some kind of build machine for this to be verifiable and not broken by contributors. We would have to document library functions that can’t be used somewhere.
  • Go ahead with the toolchain requirements and let downstream deal with the fallout.

Feedback wanted:

  • I would like to see other people in the community get involved and let us know what features of C++17 they would like to be able to use. So far the list is only compiled by me without much input. If there is very little interest in moving forward with newer features and compilers for LLVM I think we can go ahead and punt this for later.
  • I would like to hear from the Tensorflow community (and others worried about the runtime bits of this) about when / what metric to use in order to decide when it’s time if we go down the route of not updating the toolchain requirements at this point. Otherwise I think we’ll just end up in the same discussion again. Is there some tests that can be done to expose possible errors beforehand?

Thanks again for everyone chiming in here! I’ll try to keep the discussion going a little more active in the coming weeks.

Thanks,
Tobias

2 Likes