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

Version 1.84.0

Version 1.84.0 beta 1

November 16th, 2023 15:33 GMT

Documentation

Beta Downloads
PlatformFileSHA256 Hash
unixboost_1_84_0_b1.tar.bz2f8a9f21580961536a95fb7fcf9deebde45d7e0e94ddd81402f1e37ae2c590410
boost_1_84_0_b1.tar.gzde9b35e232e4b1769f4d800ec01255a9c2546639be43e45b16ce6d109c088e99
windowsboost_1_84_0_b1.7z3e4765c41974c763b7d4a67a432569bf75d3367d7a6b72c4ac9458e5004c59dc
boost_1_84_0_b1.zip224d595cc666c19b91214c5e9cced3988d08063146dfad9f616c481d52626f27

New Libraries

  • Cobalt: Basic algorithms and types for C++20 coroutines, from Klemens Morgenstern.
  • Redis: Redis async client library built on top of Boost.Asio, from Marcelo Zimbres Silva.

Updated Libraries

  • Any:
    • C++03 is no longer supported PR#26.
    • Fixed reference documentation generation. Now it is not overwritten by Boost.PFR reference. Thanks to Peter Dimov for the debugging.
  • Chrono:
    • C++03 is no longer supported.
  • ContainerHash:
    • C++03 is no longer supported.
  • Conversion:
    • C++03 is no longer supported PR#27.
  • CRC:
    • C++03 support is deprecated and will be removed in release 1.86.
  • DLL:
    • C++03 is no longer supported PR#66.
  • Endian:
    • C++03 is no longer supported.
  • Heap:
    • C++03 support is deprecated and will be removed in release 1.86. New requirement will be C++14.
  • LEAF:
    • class result<T> marked nodiscard.
    • Added member typedef result<T>::value_type.
    • verbose_diagnostic_info defers conversion to string until an error handling scope is reached.
    • Improved support for embedded development.
    • Improved Visual Studio 2015 compatibility (thanks godmaycrying).
    • Minor bug fixes an improvements.
    • Dropped support for GCC 4.8 and 4.9.
  • LexicalCast:
    • C++03 is no longer supported PR#62.
    • Fixed -Wdeprecated-copy-with-dtor warnings with clang. Thanks to Romain Geissler for the PR PR#59!
    • Dropped dependency on Boost.Range PR#63.
  • Lockfree:
    • C++03 support is deprecated and will be removed in release 1.86. New requirement will be C++14.
  • Multi-index Containers:
    • Fixed a serialization-related compile-time bug in old compilers without ADL support (issue #70).
  • MySQL:
    • Added connection::reset_connection and connection::async_reset_connection. These functions clean session state (including prepared statements, variables, locks and more) without closing and re-opening the connection.
    • Added error codes introduced in MySQL server v8.1.0.
    • Added fuzz testing for the deserialization functions.
  • PFR:
    • Big new feature: field names reflection. Added new constexpr boost::pfr::get_name<N, T>() function that returns a std::string_view with a name of field at index N of an aggregate T. Requires C++20. BOOST_PFR_CORE_NAME_ENABLED is defined to 1 if the functionality is available. Many thanks to Denis Mikhailov, Bela Schaum and X-Ryl669 for the PR PR#129 and implementation ideas.
    • for_each_field() is now constexpr for C++17. Many thanks to Alexander Karatarakis for the PR PR#134.
  • Predef:
    • Version 1.15.0
    • Add detection of Microsoft STL (from Henrik Gaßmann).
  • Ratio:
    • C++03 is no longer supported.
    • Support for BOOST_RATIO_EXTENSIONS has been removed. Ratio is now implemented in terms of the standard <ratio> header.
  • Stacktrace:
  • System:
    • Added support for result<U&, E>.
    • Added operator| for result.
    • Added operator& for result.
    • Added operator&= for result.
  • Thread:
    • C++03 is no longer supported.
  • TypeIndex:
    • C++03 is no longer supported.
    • BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((A)(B)(C)(D)) changed syntax to BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(A, B, C, D).
    • Dropped Boost.PP dependency.
  • TypeOf:
    • C++03 is no longer supported.
  • Unordered:
    • Major update.
    • Added boost::concurrent_flat_set.
    • Added [c]visit_while operations to concurrent containers, with serial and parallel variants.
    • Added efficient move construction of boost::unordered_flat_(map|set) from boost::concurrent_flat_(map|set) and vice versa.
    • Added bulk visitation to concurrent containers for increased lookup performance.
    • Added debug-mode mechanisms for detecting illegal reentrancies into a concurrent container from user code.
    • Added Boost.Serialization support to all containers and their (non-local) iterator types.
    • Added support for fancy pointers to open-addressing and concurrent containers. This enables scenarios like the use of Boost.Interprocess allocators to construct containers in shared memory.
    • Starting with this release, boost::unordered_[multi]set and boost::unordered_[multi]map only work with C++11 onwards.
  • variant:
    • C++03 is no longer supported PR#107.
    • Dropped Boost.Move and Boost.Bind dependencies.

Compilers Tested

Boost's primary test compilers are:

Boost's primary test compilers are:

  • Linux:
    • Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    • Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
    • Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    • Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    • Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    • GCC, C++03: 4.6.3, 11, 12
    • GCC, C++11: 4.7.3, 4.8.5, 11, 12
    • GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
    • GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
    • GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
  • OS X:
    • Apple Clang, C++03: 11.0.3
    • Apple Clang, C++11: 11.0.3
    • Apple Clang, C++14: 11.0.3
    • Apple Clang, C++17: 11.0.3
    • Apple Clang, C++20: 11.0.3
  • Windows:
    • Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3

Acknowledgements

Marshall Clow and Glen Fernandes managed this release.