...one of the most highly
regarded and expertly designed C++ library projects in the
world.
—
Herb Sutter
and
Andrei
Alexandrescu
,
C++
Coding Standards
Documentation
Downloads
Platform
|
File
|
SHA256 Hash
|
unix
|
boost_1_72_0.tar.bz2
|
59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722
|
boost_1_72_0.tar.gz
|
c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f
|
windows
|
boost_1_72_0.7z
|
247a91dd7e4d9dd3c4b954b532fbc167ba62dc15ab834e5ad893d7c3f9eb5f0f
|
boost_1_72_0.zip
|
8c20440aaba21dd963c0f7149517445f50c62ce4eb689df2b5544cc89e6e621e
|
These are patches from library authors which were found too late to be fixed
in the release. Be careful as they have not been through the normal testing
process.
Changed the
async_initiate
helper function to automatically deduce its return type, for C++11
or later.
Changed the initiation function objects to report their associated
I/O executor via the nested type
executor_type
and member function
get_executor
()
.
Added the
default_completion_token
trait, giving I/O executor types an associated default completion
token type for use with asynchronous operations. This trait is specialised
for the
use_awaitable
completion token, for example, to allow asynchronous operations to
be used as follows:
co_await
socket
.
async_connect
(
my_endpoint
)
.
Added a workaround for
__float128
not being considered as a floating point type by some versions of
libstdc++.
We'd love to know how you or your company use Beast, consider adding
an entry to the
Companies
and Individuals Using Beast
list.
Extracted
filesystem_error
to
exception
.
hpp
;
file_status
and associated enums and functions to
file_status
.
hpp
;
directory_entry
,
directory_iterator
and
recursive_directory_iterator
to
directory
.
hpp
.
Deprecated:
For backward compatibility
operations
.
hpp
still includes the new headers
exception
.
hpp
,
file_status
.
hpp
and
directory
.
hpp
, unless
BOOST_FILESYSTEM_NO_DEPRECATED
macro is defined. These implicit includes are considered deprecated
and will be removed in a future release. Users are encouraged to
include the new headers directly or include
filesystem
.
hpp
.
The
filesystem_error
exception is now implemented in the compiled library of Boost.Filesystem.
Users may need to add linking with Boost.Filesystem library in their
projects.
In
directory_iterator
on POSIX systems, support for
readdir
/
readdir_r
has been reworked to
avoid memory allocations for
dirent
structures when
readdir
is used. This reduces memory consumption and eliminates the possibility
of buffer overruns in case if
readdir
produces a very long directory name.
New:
Added
directory_options
enum, which reflects the same named enum from C++20. The enum is
supported in
directory_iterator
and
recursive_directory_iterator
to customize iteration behavior. In particular, the iterators now
support skipping directories that can't be opened due to insufficient
permissions. The
symlink_option
enum is now deprecated and should be replaced with
directory_options
.
By default,
recursive_directory_iterator
is now reset to the end state in case of errors, as required by C++20.
(
#112
)
New:
Added
directory_options
::
pop_on_error
option, which configures
recursive_directory_iterator
so that it attempts to recover from iteration errors by repeatedly
invoking
pop
()
until it succeeds or the end state is reached. (
#113
)
New:
Added
directory_options
::
skip_dangling_symlinks
option, which configures
recursive_directory_iterator
so that it doesn't follow dangling directory symlinks and continues
iteration instead of reporting an error.
Deprecated:
The following members
of
recursive_directory_iterator
are now marked as deprecated:
level
()
,
no_push_pending
()
,
no_push_request
()
,
no_push
()
. Users are advised to replace their
use with the standard counterparts:
depth
()
,
recursion_pending
()
,
disable_recursion_pending
()
. Note that
recursion_pending
()
has the opposite meaning compared
to
no_push_pending
()
and
no_push_request
()
. Deprecated methods will be removed
in a future release.
Fixed
path
::
lexically_relative
(and any dependent
algorithms) to correctly handle empty, dot and dot-dot path elements
in its argument. The behavior is made closer to C++17
std
::
path
::
lexically_relative
in that empty
and dot path elements are ignored and dot-dot path elements are accounted
by decreasing the number of dot-dot path elements to generate in
the resulting relative path. (
#76
)
Function
convolve_1d
in Numeric extension for convenient use of
convolve_rows
and
convolve_cols
(
PR#347
) and
PR#367
).
The headers
boost
/
math
/
tools
/
univariate_statistics
.
hpp
and
boost
/
math
/
tools
/
bivariate_statistics
.
hpp
, have been deprecated in favor
of
boost
/
math
/
statistics
/
univariate_statistics
.
hpp
and
boost
/
math
/
statistics
/
bivariate_statistics
.
hpp
.
Reworked the Sterling approximation used by multiprecision gamma
functions to be applicable to all the function that use the Lanczos
approximation at regular precision. Also extended Lanczos approximations
up to 100 decimal digit precision.
Big
constexpr
update
allows cpp_int and float128 arithmetic to be fully
constexpr
with gcc and clang 9 or
later, or any compiler supporting
std
::
is_constant_evaluated
()
.
Standalone outcome is now
make
install
-able, and
cmake
find_package
()
can find it. Note that you
must separately install and
find_package
()
Outcome's dependency, quickcpplib,
else
find_package
()
of Outcome will fail.
The git submodule mechanism used by standalone Outcome of specifying
dependent libraries has been replaced with a cmake superbuild
of dependencies mechanism instead. Upon cmake configure, an
internal copy of quickcpplib will be git cloned, built and
installed into the build directory from where an internal
find_package
()
uses it. This breaks the
use of the unconfigured Outcome repo as an implementation of
Outcome, one must now do one of: 1. Add Outcome as subdirectory
to cmake build. 2. Use cmake superbuild (i.e.
ExternalProject_Add
()
)
to build and install Outcome into a local installation. 3.
Use one of the single header editions.
For standalone Outcome, the current compiler is now checked
for whether it will compile code containing C++ Concepts, and
if it does, all cmake consumers of Outcome will enable C++
Concepts. Set the cmake variable
CXX_CONCEPTS_FLAGS
to an empty string to prevent auto detection and enabling of
C++ Concepts support occurring.
OUTCOME_TRY
operation now hints to the compiler that operation will be
successful.
P1886
Error speed benchmarking
showed
that there is considerable gain in very small functions by
hinting to the compiler whether the expression is expected
to be successful or not.
OUTCOME_TRY
previously did not hint to the compiler at all, but now it
does. A new suite of macros
OUTCOME_TRY_FAILURE_LIKELY
hint to the compiler that failure is expected. If you wish
to return to the previously unhinted behaviour, define
OUTCOME_TRY_LIKELY
(
expr
)
to
(!!
expr
)
.
Support for C++ Coroutines has been added. This comes in two
parts, firstly there is now an
OUTCOME_CO_TRY
()
operation suitable for performing
the
TRY
operation
from within a C++ Coroutine. Secondly, in the header
outcome
/
coroutine_support
.
hpp
there are implementations
of
eager
<
OutcomeType
>
and
lazy
<
OutcomeType
>
which let you more naturally and efficiently use
basic_result
or
basic_outcome
from within
C++ Coroutines -- specifically, if the result or outcome will
construct from an exception pointer, exceptions thrown in the
coroutine return an errored or excepted result with the thrown
exception instead of throwing the exception through the coroutine
machinery (which in current compilers, has a high likelihood
of blowing up the program). Both
eager
<
T
>
and
lazy
<
T
>
can accept any
T
as well. Both have been
tested and found working on VS2019 and clang 9.
make_error_code
()
and
make_exception_ptr
()
are now additionally considered
for compatible copy and move conversions for
basic_result
<>
.
This lets you construct a
basic_result
<
T
,
E
>
into a
basic_result
<
T
,
error_code
>
, where
E
is a custom type which has implemented the ADL discovered free
function
error_code
make_error_code
(
E
)
,
but is otherwise unrelated to
error_code
.
The same availability applies for
exception_ptr
with
make_exception_ptr
()
being the ADL discovered
free function.
basic_outcome
<>
has less support for
this than
basic_result
<>
in order to keep constructor
count down, but it will accept via this mechanism conversions
from
basic_result
<>
and
failure_type
<>
.