Boost
Releases
arrow_drop_down
Prior Release (1.81.0)
Platform File SHA256 Hash
Unix boost_1_81_0.tar.bz2 71fee....f99fa
boost_1_81_0.tar.gz 20566....452b6
Windows boost_1_81_0.zip 6e689....f842e
boost_1_81_0.7z d7bc4....55353

Version 1.81.0

December 14th, 2022 17:44 GMT

Documentation

New Libraries

  • URL:
    • A library for parsing, modifying, and printing s using only C++11, from Vinnie Falco and Alan de Freitas. Features include fast compilation, strong invariants, and strict compliance using a memory-friendly approach.

Updated Libraries

  • Asio:
    • Added the consign completion token adapter, which can be used to attach additional values to a completion handler.
    • Added any_completion_handler<>, which can be used to type-erase completion handlers.
    • Added experimental::co_composed to enable lightweight implementations of user-defined asynchronous operations using C++20 coroutines.
    • Add range-based experimental::make_parallel_group() overloads.
    • Added any_completion_executor, a type-erased wrapper for executors that are associated with completion handlers.
    • Added missing context query to use_future's executor.
    • Added nothrow constructor overloads to execution::any_executor<> and any_io_executor.
    • Optimised representation of empty execution::any_executor objects to improve the performance of copy and move operations.
    • Added an associated_cancellation_slot specialisation for std::reference_wrapper.
    • Changed I/O objects to return their executors by const reference.
    • Changed associated to use deduced return types for all two-argument get functions.
    • Fixed spawn implementation to catch unhandled exceptions and rethrow them outside of the spawned "thread".
    • Fixed spawn to ensure the completion handler is dispatched through the correct executor.
    • Fixed cleanup of of terminal-state spawn "thread" objects.
    • Fixed spawn and co_spawn implementations to dispatch cancellation handlers on the correct executor.
    • Changed semantics of 'dispatch' to mean the executor is used as-is.
    • Deprecated the execution::execute customisation point and sender/receiver facilities.
    • Added a C++11 parallel_group example.
    • Fixed example code to not use the deprecated resolve conversions.
    • Fixed an ambiguity in experimental::channel_traits specialisations.
    • Added a specialised channel implementation for the for R(error_code) signature.
    • Made cancelled() public on the async_compose 'self' object.
    • Added io_executor_type and get_io_executor to the async_compose 'self' object.
    • Fixed implementation of release() for Windows overlapped handles.
    • Enabled deferred awaiting for experimental::coro, regularised experimental::use_coro, and fixed allocator handling.
    • Cleaned up experimental::promise and made it an asynchronous operation object.
    • Constrained post/defer overloads on ability to require blocking.never.
    • Changed descriptor implementation to fall back to fcntl if ioctl fails with ENOTTY when setting non-blocking mode.
    • Fixed Xcode deprecation warnings related to use of sprintf.
    • Fixed the arguments passed to select_reactor::run when it is run on an internal thread.
    • Fixed compilation errors when BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING is defined.
    • Updated detection of C++20 coroutine support on clang 14 and later.
    • Changed standard library feature detection to always enable std::invoke_result when targeting C++17 or later.
    • Fixed detection of return type deduction with MSVC.
    • Updated the asynchronous operation requirements to relax the requirements on the associated executor.
    • Added io_uring to the implementation notes.
    • Consult the Revision History for further details.
  • Beast:
    • Add buffers_generator
    • Add beast::http::message_generator
    • Added buffer_ref, so beast buffers can be used with asio.
    • Support for per-operation cancellation
    • C++20 awaitable examples.
    • websocket per-message compression options
    • websocket timeout option api
    • multiple content length error
    • Support for default-completion and rebind
  • Container Hash:
    • Major update.
    • The specializations of boost::hash have been removed; it now always calls hash_value.
    • Support for BOOST_HASH_NO_EXTENSIONS has been removed. The extensions are always enabled.
    • All standard containers are now supported. This includes std::forward_list and the unordered associative containers.
    • User-defined containers (types that have begin() and end() member functions that return iterators) are now supported out of the box.
    • Described structs and classes (those annotated with BOOST_DESCRIBE_STRUCT or BOOST_DESCRIBE_CLASS) are now supported out of the box.
    • hash_combine has been improved.
    • The performance (and quality, as a result of the above change) of string hashing has been improved. boost::hash for strings now passes SMHasher in 64 bit mode.
    • The documentation has been substantially revised to reflect the changes.
  • Core:
    • empty_value members are now marked as constexpr.
    • Added fclose_deleter, a deleter that calls std::fclose on a pointer to std::FILE.
    • Bit manipulation utilities in boost/core/bit.hpp now explicitly require unsigned integers on input. (#129)
    • bit_width now returns int instead of a value of the input argument type. This follows resolution of LWG3656.
  • Describe:
    • To allow the inclusion of enumerators.hpp, bases.hpp, and members.hpp when the option -pedantic is used, the invocation of BOOST_DESCRIBE_ENUM has been moved from modifiers.hpp into a separate header, modifier_description.hpp. As a consequence, modifiers.hpp no longer includes enum.hpp. Code that has been relying on this implicit inclusion may fail, and will need to be fixed to include enum.hpp.
  • DLL:
    • Fixed path_from_handle implementation for Windows platforms, thanks to @SaltfishAmi for the bug report 57.
  • Filesystem:
    • Deprecated: path construction, assignment and appending from containers of characters, such as std::vector<char> or std::list<wchar_t>, is deprecated in v3 and removed in v4. Please use string types or iterators instead.
    • Deprecated: boost/filesystem/path_traits.hpp header is deprecated and will be removed in a future release. The header contained implementation details of path and should not be used in user's code.
    • Previously deprecated APIs will now generate compilation warnings on use. To suppress these warnings, BOOST_FILESYSTEM_ALLOW_DEPRECATED macro can be defined when compiling user's code.
    • Fixed compilation due to a missing include on POSIX systems that do not support *at APIs. (#250)
    • On Windows prior to 10, added a workaround for network share filesystem that produces ERROR_INVALID_PARAMETER when constructing directory iterators. (PR#246, #245)
    • On Windows, fixed weakly_canonical failing with an ERROR_INVALID_FUNCTION error code if the path started with the "\\?\" prefix. (#247)
    • Added support for std::string_view, boost::string_view and boost::container::string (as well as respective wchar_t counterparts) in path constructors, assignment and appending operations. (#208)
    • path constructors, assignment and appending operations taking a pair of iterators will no longer accept iterators with value types that are not one of the supported path character types.
    • On Windows, improved compatibility of directory_iterator with various mounted filesystems and Wine releases prior to 7.21. (#255, #266)
    • On Windows, deduplicated files are now reported as regular files rather than reparse files. (#262)
  • Fusion:
    • Added fusion::identity_view (PR#240)
    • Added support for associative sequences on fusion::transform_view (PR#239)
    • Fixed compilation for the case when fusion::reverse_view used with an associative sequence (PR#237)
    • Fixed Clang 13 -Wdeprecated-copy warnings (PR#261)
    • A small dependency reorganization. Now boost::ref and boost::noncopyable are used from Boost.Core (PR#249)
    • Added CI testing on Linux and MacOS for clang and gcc, fixed CI testing on Windows (PR#245, PR#236)
    • Improved docs and fixed typos (#234, PR#235, PR#238)
  • Geometry:
    • Solved issues
      • #1048 Index: Fix dangling references when Indexable is returned by value by IndexableGetter
      • #1076 Union: in rare cases it might miss one polygon
      • #1081 Union: due to precision it might miss interior rings
    • Bugfixes
      • #1063 Intersection: fix a bug in intersection of simple spherical polygons
      • #1064 Formulas: fix a consistency issue in geodesic direct formulas
      • #1088 Point: Fix regression for custom point types
      • Various fixes for missing include files, warnings, C++20 compilation errors and documentation
  • Histogram:
    • Major update.
    • Added new accumulators::fraction to compute fractions, their variance, and confidence intervals
    • Added interval computers for fractions: utility::clopper_pearson, utility::wilson_interval, utility::jeffreys_interval, utility::wald_interval which can compute intervals with arbitrary confidence level
    • Added utility::confidence_level and utility::deviation types to pass confidence levels as probabilities or in multiples of standard deviation for all interval computers, respectively
    • Fixed internal sub_array and span in C++20
  • Iterator:
    • function_output_iterator now supports perfect forwarding of the assigned values to the wrapped function object. (PR#73)
    • Fixed compilation of constructing a function_input_iterator from result of post-incrementing another function_input_iterator. (#75)
    • The result of post-incrementing an iterator based on iterator_facade now supports operator->. (it++)->foo is equivalent to (*it++).foo, which was supported before.
  • JSON:
    • Added object::stable_erase.
    • Added parse overload for std::istream and operator>> for value.
    • Added rvalue ref-qualified accessors for value.
    • Conversion traits were redesigned.
    • Added conversion support for described classes and enums, std::optional, std::variant, and null-like types (including std::nullptr_t, std::nullopt_t, and std::monotype).
    • Added non-throwing conversion from value to user types.
  • LexicalCast:
    • Fixed compilation while casting volatile arithmetic types. Thanks to Giovanni Cerretani for the bug report #50.
    • Removed usage of deprecated headers. Thanks to Michael Ford for the PR PR#53.
  • Locale:
    • Major update with some breaking changes.
    • C++11 support is now required, support for C++03 and earlier is dropped
    • Some enums have been converted to enum classes - Avoids name clashes
    • Replace -sICU_LINK_LOCALE & -sICU_LINK by fine-grained configuration options as done in Boost.RegEx
    • Fix detection of libiconv allowing Boost.Locale to be build (again) on some platforms
    • Remove use of and support for std::auto_ptr
    • Make the codecvt using wchar_t on Windows assume/use UTF-16 enconding
    • Performance improvements: Make basic_format, date_time & hold_ptr movable, Fix use of format cache
    • Make Boost.Locale compatible with more ICU versions (especially the tests)
    • Fix RTTI definitions for some classes (visibility issues)
    • Fix compatibility of the ICU backend with some libc++ versions
    • Fix return value of some operators to correctly return non-const *this
    • Fix int-overflow on negative roll of years in date_time
    • Handle or suppress many warnings which makes the build log cleaner
    • Add support for more Windows codepages
    • Fix support for Windows codepages like ISO-2022-JP
  • Nowide:
    • Fix build failure of tests on MSVC
  • Stacktrace:
    • The library does not use COM initialization any more. Thanks to Alex Guteniev for the bug report, clarifications and PR PR#123!
    • The library now may use BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE macro value while detecting the libbacktrace availability in b2, thanks to Ben Gemmill for the bug report #115.
    • Added BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC macro to force a single backtrace_state static instance while using the libbacktrace. Thanks to the Rasmus Thomsen for the bug report #118!
    • Avoid unresolved references when including only the boost/stacktrace/stacktrace.hpp header. Thanks to the Long Deng for the bug report #116.
    • Optimized stacktrace printing by not calling strlen on Windows platforms. Thanks to Alex Guteniev for the bug report #122
  • PFR:
    • Improved detection of aggregate initializables in C++14 mode, thanks to Denis Mikhailov for the PR PR#97.
    • Suppress clang-tidy warnings, thanks to Alexander Malkov for the PRs PR#109, PR#104.
    • Use fold expressions if they are supported by the compiler. Thanks to Jean-Michaël Celerier for the PR PR#96.
  • STLInterfaces:
    • Fix two ill-formed iterator_interface operators in pre-C++20 iterators with a const value_type.
  • System:
    • The macro BOOST_SYSTEM_DISABLE_THREADS can now be defined to disable the use of <mutex> (e.g. on single-threaded libstdc++).
    • Added value_type, error_type, in_place_value, in_place_error to result<>.
    • Added emplace to result<>.
  • Unordered:
    • Major update.
    • Added fast containers boost::unordered_flat_map and boost::unordered_flat_set based on open addressing.
    • Added CTAD deduction guides for all containers.
    • Added missing constructors as specified in LWG issue 2713.
  • Variant:
    • Avoid recursive inclusion of headers, thanks to Nathan Sidwell for the bug report #101.
    • Removed usage of deprecated headers, thanks to Michael Ford for the PR PR#96.
    • Fixed compilation on clang in C++23 mode, thanks to Ed Catmur for the PR PR#98.
  • Variant2:
    • Added support for boost::json::value_from and boost::json::value_to.

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • Clang: 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: 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: 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.

Dependencies

There were 7 dependencies added (in 5 libraries) and 11 dependencies removed (in 3 libraries) this release.

Contributors

Matt Borland
Matt Borland
Contributor
Peter Dimov
Peter Dimov
Contributor
Andrey Semashev
Andrey Semashev
Contributor
Joaquin M. López Muñoz
Joaquin M. López Muñoz
Contributor
John Maddock
John Maddock
Contributor
Alexander Grund
Alexander Grund
Contributor
Christian Mazakas
Christian Mazakas
Contributor
Denis Mikhailov
Denis Mikhailov
Contributor
Dmitry Arkhipov
Dmitry Arkhipov
Contributor
Christopher Kohlhoff
Christopher Kohlhoff
Contributor
Klemens
Klemens
Contributor
Antony Polukhin
Antony Polukhin
Contributor
Ion Gaztañaga
Ion Gaztañaga
Contributor
Joel de Guzman
Joel de Guzman
Contributor
Vissarion Fisikopoulos
Vissarion Fisikopoulos
Contributor
Rose
Rose
Contributor
sdarwin
sdarwin
Contributor
fanquake
fanquake
Contributor
Nikita Kniazev
Nikita Kniazev
Contributor
Marshall Clow
Marshall Clow
Contributor
Glen Fernandes
Glen Fernandes
Contributor
Alan de Freitas
Alan de Freitas
Contributor
RL-S
RL-S
Contributor
Nick
Nick
Contributor
Nicholas McKibben
Nicholas McKibben
Contributor
Flamefire
Flamefire
Contributor
Samuel Rowlinson
Samuel Rowlinson
Contributor
Hans Dembinski
Hans Dembinski
Contributor
Oliver Kowalke
Oliver Kowalke
Contributor
Jeff Trull
Jeff Trull
Contributor
Baoshuo Ren
Baoshuo Ren
Contributor
sehe
sehe
Contributor
warren
warren
Contributor
Richard Hodges
Richard Hodges
Contributor
Ed Catmur
Ed Catmur
Contributor
Louis Dionne
Louis Dionne
Contributor
Gudmundur Adalsteinsson
Gudmundur Adalsteinsson
Contributor
akr
akr
Contributor
Tocic
Tocic
Contributor
Sergey Fedorov
Sergey Fedorov
Contributor
Vinnie Falco
Vinnie Falco
Contributor
Stefan Seefeld
Stefan Seefeld
Contributor
Emil Dotchevski
Emil Dotchevski
Contributor
Morwenn
Morwenn
Contributor
Klemens Morgenstern
Klemens Morgenstern
Contributor
Frank Mori Hess
Frank Mori Hess
Contributor
Jean-Michaël Celerier
Jean-Michaël Celerier
Contributor
Khalil Estell
Khalil Estell
Contributor
Vladimir Batov
Vladimir Batov
Contributor
Hajo Kirchhoff
Contributor
Alex Guteniev
Alex Guteniev
Contributor
Christopher Kormanyos
Christopher Kormanyos
Contributor
Alexander Malkov
Alexander Malkov
Contributor
Barend Gehrels
Barend Gehrels
Contributor
Zach Laine
Zach Laine
Contributor
Jeff Garland
Jeff Garland
Contributor
Greg Glover
Contributor
Alexander Borsuk
Alexander Borsuk
Contributor
Yuriy Chernyshov
Yuriy Chernyshov
Contributor
Denis Arnaud
Denis Arnaud
Contributor
Liviu Andron
Liviu Andron
Contributor
Érico Nogueira Rolim
Érico Nogueira Rolim
Contributor
stefan301
stefan301
Contributor
Mojca Miklavec
Mojca Miklavec
Contributor
JackyYin
JackyYin
Contributor
Beojan Stanislaus
Beojan Stanislaus
Contributor
Cameron Angus
Cameron Angus
Contributor
Conrad Poelman
Conrad Poelman
Contributor
Adam Wulkiewicz
Adam Wulkiewicz
Contributor
A. Jiang
A. Jiang
Contributor
Peter Caspers
Peter Caspers
Contributor
Kevin Cadieux
Kevin Cadieux
Contributor
Joseph Malle
Joseph Malle
Contributor
Jianyong Chen
Jianyong Chen
Contributor
Utsav Munendra
Utsav Munendra
Contributor
Victor Stinner
Victor Stinner
Contributor
Jay Gohil
Jay Gohil
Contributor
Olavo Belloc
Contributor
Petre Pircalabu
Petre Pircalabu
Contributor
oerol
oerol
Contributor
Dirk Stolle
Dirk Stolle
Contributor
DavidCNou
DavidCNou
Contributor
SSE4
SSE4
Contributor
grtowel1510f
grtowel1510f
Contributor
Egor Pugin
Egor Pugin
Contributor
Michael Haubenschild
Michael Haubenschild
Contributor
Kaloyan Donev
Contributor
PeterYang12
PeterYang12
Contributor
E Kawashima
E Kawashima
Contributor
Daniel Engelke
Daniel Engelke
Contributor
Hennadii Stepanov
Hennadii Stepanov
Contributor