Version 1.81.0
Version 1.81.0
December 14th, 2022 17:44 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_81_0.tar.bz2 | 71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa |
boost_1_81_0.tar.gz | 205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6 | |
windows | boost_1_81_0.7z | d7bc4e2a2aee374a8c24832cacfed1265680c1e824d09fab3e00f87508155353 |
boost_1_81_0.zip | 6e689b266b27d4db57f648b1e5c905c8acd6716b46716a12f6fc73fc80af842e |
New Libraries
-
URL: A library for parsing, modifying, and printing URLs 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<>
andany_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 forstd::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
andco_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 theasync_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
, regularisedexperimental::use_coro
, and fixed allocator handling. -
Cleaned up
experimental::promise
and made it an asynchronous operation object. -
Constrained
post
/defer
overloads on ability to requireblocking.never
. -
Changed descriptor implementation to fall back to
fcntl
ifioctl
fails withENOTTY
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 callshash_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()
andend()
member functions that return iterators) are now supported out of the box. -
Described structs and classes (those annotated with
BOOST_DESCRIBE_STRUCT
orBOOST_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 asconstexpr
. -
Added
fclose_deleter
, a deleter that callsstd::fclose
on a pointer tostd::FILE
. -
Bit manipulation utilities in
boost/core/bit.hpp
now explicitly require unsigned integers on input. (#129) -
bit_width
now returnsint
instead of a value of the input argument type. This follows resolution of LWG3656.
-
-
Describe:
-
To allow the inclusion of
enumerators.hpp
,bases.hpp
, andmembers.hpp
when the option-pedantic
is used, the invocation ofBOOST_DESCRIBE_ENUM
has been moved frommodifiers.hpp
into a separate header,modifier_description.hpp
. As a consequence,modifiers.hpp
no longer includesenum.hpp
. Code that has been relying on this implicit inclusion may fail, and will need to be fixed to includeenum.hpp
.
-
-
Filesystem:
-
Deprecated:
path
construction, assignment and appending from containers of characters, such asstd::vector<char>
orstd::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 ofpath
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, fixed
weakly_canonical
failing with anERROR_INVALID_FUNCTION
error code if the path started with the "\\?\" prefix. (#247) -
Added support for
std::string_view
,boost::string_view
andboost::container::string
(as well as respectivewchar_t
counterparts) inpath
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, 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
andboost::noncopyable
are used from Boost.Core (PR#249)
-
-
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
andutility::deviation
types to pass confidence levels as probabilities or in multiples of standard deviation for all interval computers, respectively -
Fixed internal
sub_array
andspan
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 anotherfunction_input_iterator
. (#75) -
The result of post-incrementing an iterator based on
iterator_facade
now supportsoperator->
.(it++)->foo
is equivalent to(*it++).foo
, which was supported before.
-
-
JSON:
-
Added
object::stable_erase
. -
Added
parse
overload forstd::istream
andoperator>>
forvalue
. -
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 (includingstd::nullptr_t
,std::nullopt_t
, andstd::monotype
). -
Added non-throwing conversion from
value
to user types.
-
-
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
usingwchar_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:
-
STLInterfaces:
-
Fix two ill-formed
iterator_interface
operators in pre-C++20 iterators with aconst
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
toresult<>
. -
Added
emplace
toresult<>
.
-
-
Unordered:
-
Major update.
-
Added fast containers
boost::unordered_flat_map
andboost::unordered_flat_set
based on open addressing. -
Added CTAD deduction guides for all containers.
-
Added missing constructors as specified in LWG issue 2713.
-
-
Variant2:
-
Added support for
boost::json::value_from
andboost::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.