Hi all,

I drafted a PR for this purpose:
https://github.com/apache/pulsar-client-cpp/pull/525

Additionally, I set the next release version to 4.0.0 for this
significant change. Normally we're not going to maintain old branches
for old C++11 standards. Just leave possible 3.x.y releases (e.g.
3.9.0) for possible C++11 based builds.

Thanks,
Yunze

On Mon, Dec 1, 2025 at 7:21 PM Lari Hotari <[email protected]> wrote:
>
> +1
>
> -Lari
>
> On 2025/12/01 09:32:07 Yunze Xu wrote:
> > Hi all,
> >
> > Currently, the API of pulsar-client-cpp conforms to the C++11
> > standard, which was approved 14 years ago [1]. C++11 is used mainly
> > because it's the highest standard supported by GCC 4.8 in CentOS 7,
> > which has already reached the EOL in June 2024.
> >
> > C++11 is a bit too old now:
> > - `std::optional` (from C++17) is not supported, it makes some APIs
> > ugly, e.g. using an empty `std::string` to represent the null semantic
> > - We have to pin the protobuf dependency to 3.21.12 because the higher
> > version protobuf libraries require at least C++14
> >
> > Mainstream linux distros already have GCCs that support C++17 for
> > example, the manylinux2014 image for Python library build has GCC 10,
> > which even supports C++20.
> >
> > I proposed to upgrade to C++17 first to get benefits from improvements
> > on lambda expressions, std::optional, std::string_view for now.
> >
> > [1] https://en.cppreference.com/w/cpp/11.html
> > [2] https://github.com/protocolbuffers/protobuf/issues/12393
> >
> > Thanks,
> > Yunze
> >

Reply via email to