Matt's Q2 2024 Update

Jul 8, 2024

Once again it has been a busy few months working on libraries in different stages of the boost lifecycle:

Libraries for Proposal

Decimal

Decimal (https://github.com/cppalliance/decimal) is a ground-up implementation of the IEEE 754 Decimal Floating Point types in C++14, and is co-authored by Chris Kormanyos. This quarter we were pleased to release the first beta of the library which generated good discussion on the boost mailing list. One of the large takeaways was the desire for increased performance without necessarily adhering to IEEE 754 bit layouts. After much work we have added decimal32_fast, decimal64_fast, and decimal128_fast to the library. These new type yield identical numerical results as their standards compliant counterparts, while make the classic space for time tradeoff (https://cppalliance.org/decimal/decimal.html#Benchmarks). Version 2.0 and 2.1 of the library were released in the last few weeks and include these new types. Since the beginning of the summer we have also begun the deep work of profiling and optimizing basic operations like add, sub, mul, and div. We’ve been successful in squeezing more and more performance out of the library, and will continue to do so in Q3. We will also continue to build out standard library support such as the C++17 special math functions. Discussion of this library can be found on the Cpplang slack at #boost-decimal.

Multi

Multi (https://github.com/correaa/Boost-Multi) is a modern C++ library that provides access and manipulation of data in multidimensional arrays, for both CPU and GPU memory. This is a high-quality library developed by Alfredo Correa (https://github.com/correaa). This quarter I assisted Alfredo in preparing the library for the review process. We added the full suite of CI see on most of the newer boost libraries to include linux GCC, Clang, macOS xcode, and MSVC. The library now works with all of these toolchains and is tested to build cleanly with a whole host of warnings. I will be serving as the review manager once the library is ready for boost review which will occur in the coming months. Discussion of the library, and the author can be found on the Cpplang slack at #boost.

Existing Libraries

Charconv

Charconv’s first release seems to have been generally successful with only a few bug reports. Fixing support for PPC64LE led to some larger refactoring on the handling of __float128, 128-bit long doubles, and the use of libquadmath. Fuzzing has been added to to_chars which helped expose a few memory safety bugs which were quickly resolved. There was also an instance of integer overflow in from_chars which has been eliminated. Thanks to those who submitted bug reports, and those who assisted in squashing them. Discussion of this library can be found on the Cpplang slack at #boost-charconv.

ODEint

Boost.numeric.odeint now offers a CMake Macro BOOST_NUMERIC_ODEINT_NO_ADAPTORS. For those who don’t require external adaptors e.g. Boost.MPI this helps to reduce the dependencies required without any affect on the functionality of the library. Previously this library had the highest number of boost dependencies so with this macro and continued progress on removing pre-C++14 boost libraries the library should become less heavy.

All Posts by This Author