Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

In Progress Releases

Note: The release notes on this page are for releases still under development. Please don't use this page as a source of information, it's here for development purposes only. Everything is subject to change.

Version 1.83.0

In Progress

New Libraries

  • Compat: A repository of C++11 implementations of standard components added in later C++ standards, from Peter Dimov and contributors.

Updated Libraries

  • Chrono:
    • Remove use of deprecated Boost.Ratio features.
  • Compat:
    • Added latch.hpp, an implementation of std::latch (contributed by Christian Mazakas.)
    • Added shared_lock.hpp, a (partial) implementation of std::shared_lock (contributed by Christian Mazakas.)
  • Core:
    • Added support for incomplete types to boost::core::type_name.
    • Bit manipulation functions in boost/core/bit.hpp are now constexpr on recent MSVC versions (VS2019 update 5 and later.)
    • Added boost::core::byteswap (an implementation of std::byteswap from C++23) to boost/core/bit.hpp.
    • Moved the yield primitives sp_thread_pause, sp_thread_yield, sp_thread_sleep from SmartPtr implementation details to boost/core/yield_primitives.hpp.
  • Flyweight:
    • Added smart-pointer syntax to boost::flyweight (operator* and operator-> dereferencing to the underlying value).
    • Fixed a situation where the mutex used by simple_locking was not recursive (issue #12).
  • Math:
    • Added Numerical evaluation of Fourier transform of Daubechies scaling functions 921.
    • Added logcdf function to statistical distributions 946.
    • Added support for C++23's <stdfloat> types 978.
    • Fixed various -Wmaybe-uninitialized warnings
    • Fixed round and trunc functions for non-representable numbers 968.
    • Fixed calculation of mode for F-distribution 976.
    • Fixed overflow in beta distribution 977.
    • Fixed overflow in hypergeometric distribution 987.
    • Fixed calculation of median absolute deviation with non-zero center 997.
  • Mp11:
    • Added an offset/from parameter to mp_from_sequence, mp_iota, mp_iota_c.
    • Added mp_value, mp_list_v, mp_rename_v, mp_is_value_list.
    • Added value list support to the primitives in <boost/mp11/list.hpp>.
    • Added value list support to mp_repeat, mp_fill, mp_at, mp_back, mp_take, mp_pop_back, mp_drop, mp_insert, mp_erase.
  • Multi-index Containers:
    • Updated range insert in non-unique ordered indices to preserve insertion order of equivalent elements (issue #68).
    • Serialization now uses std::size_t instead of unsigned long to save and load the size of a multi_index_container (unsigned long is smaller than std::size_t in LLP64 data models). multi_index_container serialization class version has been bumped from 3 to 4 to reflect this change.
  • Multiprecision:
    • Fixed bug in rational adapter division 542.
    • Fixed handling of global precsion changes in multi-threaded environments 552.
    • Fixed cpp_int::eval_convert_to noexcept specification 555.
  • Ratio:
    • Change default BOOST_RATIO_VERSION to 2.
    • Support for BOOST_RATIO_EXTENSIONS is now deprecated and will eventually be removed when Boost.Ratio is implemented in terms of the standard <ratio> header.
  • Test:
    • Added addtional older platforms to CI system (e.g. GCC 4.6)
    • Fixed handling of uintptr_t to make sure it is portable on 32-bit systems 353.
    • Fixed warnings from -Wdeprecated-copy-dtor and -Wdeprecated-copy-with-user-provided-dtor 375.
    • Fixed handling of check_is_close for C++23 <stdfloat> types 382.
  • Timer:
    • Remove dependency on Boost.Chrono, Boost.System, and others.
    • Disable deprecated headers unless BOOST_TIMER_ENABLE_DEPRECATED is defined.
  • Unordered:
    • Major update.
    • Added boost::concurrent_flat_map, a fast, thread-safe hashmap based on open addressing.
    • Sped up iteration of open-addressing containers.
    • In open-addressing containers, erase(iterator), which previously returned nothing, now returns a proxy object convertible to an iterator to the next element. This enables the typical it = c.erase(it) idiom without incurring any performance penalty when the returned proxy is not used.
  • Variant2:
    • Added uses_double_storage().

Updated Tools

Compilers Tested

Boost's primary test compilers are:

  • TODO

Boost's additional test compilers include:

  • TODO

Acknowledgements

TODO