Hi all,

I would like to check if we should raise the minimum C++ level of lib/cpp
and of the generated C++ code from C++11 to C++17,
Details are in THRIFT-6364:
https://issues.apache.org/jira/browse/THRIFT-6364

Why now:

- Every toolchain we build with supports C++17 fully: GCC 11 and 13 in the
Ubuntu images, Visual Studio 2022, current Apple Clang. So does GCC 8, the
system compiler of RHEL 8.
- It lets lib/cpp replace most of its remaining Boost uses (tokenizer,
string algorithms, shared_array, numeric_cast, scope_exit, uuid) with the
standard library, which gets us close to what the README has promised since
0.13.0: no Boost needed to build the library. TMultiplexedProcessor.h, a
public header, still pulls in boost/tokenizer.hpp today.

What it costs: Since generated code includes our headers, users would have
to build their code as C++17 or later. Anyone still using C++11 or C++14
would need to stay on an older version.
I am not proposing C++20: it would drop GCC 8 and 9 for little gain in a
serialization library.

The change itself is small (the CMake default, configure.ac, the PHP and
Python extension flags, and the docs).
Master already builds unchanged with CMAKE_CXX_STANDARD=17 and passes the
C++ test suite on GCC 11.4 (Ubuntu 22.04) and Apple Clang.
Each Boost replacement would follow as its own ticket.

Does anyone depend on building Thrift C++ as C++11 or C++14, or know of a
platform we would lose?

Thanks,
Sylwester

Reply via email to