C++26

C++26 is done (technically complete March 2026, publication expected later this year), so let’s explore the new features in C++, from a data science point of view. This is the biggest release since C++11; in fact, one feature might be the biggest single feature ever. Reflection means C++ now understands itself without macros or hacks; it’s also one of the first mainstream compiled languages to have full static reflection (Rust has syntactic macros, but not true reflection; D, zig, and C# have reflection). Contracts finally landed after 20+ years of attempts; the async model (std::execution) and data-parallel types (std::simd, std::linalg) are also big additions.

Standard stuff from previous releases is also continuing to improve. Much more constexpr, more ranges, mdspan grows sub-views, formatting keeps improving. Plus memory-safety improvements (erroneous behavior, hardened standard library).

[Read More]
Categories: cpp  Tags: programming  cpp  cppxx 

pybind11 3.0.0

pybind11 logo

Pybind11 3.0 has been released! I would like to highlight some of the key changes below; be sure to check out the changelog and upgrade guide for more information! This release includes an ABI bump, the first required bump in many years on Unix (Windows has had required bumps more often). This release contains the multi-year smart-holder branch, multi-phase init and subinterpreter support, py::native_enum, an interface to warnings, typing improvements, and more. CMake now defaults to FindPython mode.

Support for Python 3.14, 3.14t, GraalPy, PyPy 3.11, and iOS have been added, while legacy support for Python 3.7, PyPy 3.8/3.9, and CMake <3.15 has been removed. Most deprecated features have been kept for this release, but anything producing a warning in 3.0 may be removed in a future 3.x version.

[Read More]
Categories: Python  Tags: programming  python  cpp  bindings  pybind11 

C++23

C++23 is complete and pretty much finalized, so let’s explore the new features in C++, from a data science point of view. This is not as large of a release as C++20 or C++11, but it’s still a hefty release with lots of nice new features - larger than C++17.

Some of the major new features are building on themes from C++20, such as vastly expanded ranges and views, more constexpr/consteval, module support for the standard library, std::print to supplement std::format, and a std::generator to support coroutines. There are also several general features, lambdas and classes get along much better now, there are new preprocessor additions (!), a stacktrace library, flat maps/sets, and new std::optional monadics, deducing this, and many various additions.

[Read More]
Categories: cpp  Tags: programming  cpp  cppxx 

Announcing CLI11 2.0

CLI11, a powerful library for writing beautiful command line interfaces in C++11, has been updated to 2.0. A lot of deprecated things have been removed, and there was a lot of cleanup under-the-hood; making CLI11 simpler. A few defaults have changed slightly, like better TOML support by default.

CLI11 does a better job than ever understanding any sort of container you provide - complex numbers are natively supported, along with atomic types. A long requested feature, simple version flags, has been added. Subcommands are more customizable. And there have been quite a few bugfixes for rare issues.

[Read More]
Categories: cpp  Tags: programming  cpp  cli  cli11  plumbum 

pybind11 2.6.0

pybind11 logo

I am pleased to announce the release of pybind11 2.6.0! This is the largest release since 2.2 (released over three years ago). I would like to highlight some of the key changes below; be sure to check out the changelog and upgrade guide for more information! The focus of this release was stability, packaging, and supporting more platforms, though there are a lot of small features and useful additions, covered by newly expanded docs.

[Read More]
Categories: Python  Tags: programming  python  cpp  bindings 

C++20

The final meeting for new features in C++ is over, so let’s explore the new features in C++, from a data science point of view. This is the largest release of C++ since C++11, and when you consider C++14 and C++17 to be interim releases, the entire 9 year cycle is possibly the largest yet! It may not feel quite as massive as C++11, since we didn’t have interim releases for C++11 and because C++11 is a much more complete, useful language than C++03, but this is still a really impactful release! This is also the first version to include every major feature from Bjarne Stroustrup’s “The Design and Evolution of C++”, also known as D&E, from 1994!

Let’s look at the major new features, as well as collections of smaller ones.

[Read More]
Categories: cpp  Tags: programming  cpp  cppxx