Performance improvements
Unordered’s internal implementation and Nowide’s bulk I/O achieve dramatically faster operation, boosting overall library speed.
Unordered’s internal implementation and Nowide’s bulk I/O achieve dramatically faster operation, boosting overall library speed.
Added 13 new dependencies across 8 libraries and removed 5 dependencies from 5 libraries.
Filesystem hardens remove_all against CVE‑2022‑21658 and fixes multiple memory leak and iterator bugs.
Added async_result support, is_async_operation trait, completion_signature_of, and source locations to improve error diagnostics.
August 10th, 2022 21:25 GMT
These are patches from library authors which were found too late to be fixed in the release.
std::unary_function
and std::binary_function. Patch.
weakly_canonical
fails to process paths that start with the "\\?\" prefix,
see #247. Patch.
*at APIs, compilation fails due
to a missing include, see #250. Patch.
async_result
for C++11.
append, prepend, as_tuple,
and deferred to the
boost::asio namespace, and made them compatible
with C++11.
experimental::parallel_group
compatible with C++11.
buffer()
overloads for contiguous containers, such as std::span.
awaitable<>-based coroutines to directly
co_await operations
that are packaged as function objects.
spawn()
to be a completion token-based asynchronous operation, and added
support for cancellation. The basic_yield_context
token now supports move-only and variadic result types. When targeting
C++11 and later, spawn() and basic_yield_context
are implemented in terms of Boost.Context directly.
is_async_operation
trait and async_operation
concept.
completion_signature_of
trait.
object_handle,
Windows stream handles, and Windows random-access handles.
release()
member functions to pipes, Windows stream handles, and Windows random-access
handles.
Endpoint
implementations that return void
pointers from their data() member functions, as per the documented
Endpoint type requirements.
all()
and race()
from experimental::promise,
as experimental::parallel_group covers this functionality.
shutdown() calls are thread-safe with respect
to certain other synchronous operations on the same socket.
std::invoke_result
for clang/libc++.
experimental::parallel_group
initiation incorrectly moved arguments instead of forwarding them.
post(), dispatch(), and defer().
awaitable<> implementation to propagate
exceptions from awaited initiation functions through the current
completion handler.
std::aligned_alloc
with gcc 7.
std::aligned_storage
on newer compilers.
std::aligned_alloc
for older Apple platforms.
experimental::coro
implementation.
select_reactor,
on Windows, to ensure that any exception resulting from failure to
recreate its interrupter's sockets will be allowed to propagate out
through io_context::run().
async_result
form.
ERROR_ACCESS_DENIED
error. This may allow status
and symlink_status
to succeed for system files and directories that are not reparse
points or symlinks. (#234)
ERROR_INVALID_PARAMETER
when querying file attributes. This affected status
and symlink_status,
which reported that files do not exist, and directory iterators,
which failed to construct, as well as other dependent operations.
(#236, #237)
sendfile
copy_file implementation
if copy_file_range
failed with ENOSYS
in runtime. The sendfile
fallback implementation used to skip the filesystem type check and
could fail for some filesystems.
openat
and related APIs defined in POSIX.1-2008 and on Windows Vista and
later, improved protection of remove_all
against CVE-2022-21658
that was implemented in the previous release. The previous fix could
still result in removing unintended files in certain
conditions. Other systems remain vulnerable.
hstack) or
vertically (vstack)
(PR#506)
image
constructor from compatible view (PR#520)
matrix3x2
(PR#527)
for_each_pixel
overload for any_image
(PR#648)
image class (PR#529)
any_color_converted_view() is deprecated and will be
removed in the next release. Use color_converted_view() instead, which provides the
same feature.
apply_operation
for any_image
is deprecated and will be removed in the next release. Use
variant2::visit instead, which provides
the same feature. (PR#656)
<filesystem>
(PR#636) The availability of the std::filesystem
is detected automatically, unless the BOOST_GIL_IO_USE_BOOST_FILESYSTEM
macro is defined that forces the preference of the Boost.Filesystem.
pixel_multiply_t
to pixel_multiplies_t
and pixel_divide_t
to pixel_divides_t
(PR#655)
io/dynamic_io_new.hpp
to io/detail/dynamic.hpp (PR#653)
construct_matched
into boost::gil::detail
namespace as it was only used by other implementation details
(PR#653)
packed_pixel
trivially copyable and assignable (PR#679)
homogeneous_color_base
for reference pixel elements (PR#542)
subchroma_image_view (PR#556)
any_image_view<>::const_t
(PR#526)
convolve_2d
for images with float32_t
channel model (PR#577)
for_each_pixel
for non-1d iterable views (PR#621)
is_equal_to_sixteen
in PNG I/O was less-than test (PR#650)
devicen_t
with two components (PR#654) It was unintentionally removed
in Boost 1.72
image
class for empty dimensions (PR#649)
indexed
when trying to iterate over histogram with axes of zero size (physical
or logical) under certain conditions
accumulators::thread_safe:
use accumulators::count<T, true>
accumulators::sum::large
and accumulators::sum::small:
use accumulators::sum::large_part
and accumulators::sum::small_part
algorithm::reduce_option:
use algorithm::reduce_command
axis::traits::static_options:
use axis::traits::get_options
axis::traits::static_is_inclusive:
use axis::traits::is_inclusive
indexed::range_iterator:
use indexed::iterator
indexed::accessor::reference:
use indexed::accessor::const_reference
function_output_iterator.
(PR#73)
function_output_iterator
a result of dereferencing another function_output_iterator.
value::at
overloads.
string::subview()
overload.
array::erase(it).
serialize
on libc++.
std::string_view
on GCC 8.
-sICU_LINK_LOCALE
as a temporary replacement for -sICU_LINK which is incompatible
with Boost.Regex. -sICU_LINK_LOCALE and -sICU_LINK
are deprecated and will be replaced by ICU_*_NAME
options to be compatible with Boost.Regex
collator
implementation when transforming empty strings
BOOST_USE_WINDOWS_H
syslog_backend
when IPv6 address is used for the syslog server. (#181)
max_size_decor
was used on a formatting stream, std::codecvt::do_length
incorrectly accessed the input buffer and caused a buffer overflow.
constexpr fma support,
see 734.
boost/cstdfloat.hpp
and this library.
constexpr integer
square root where the input is 1, 2 or 3.
#include
of <memory> to float128.hpp.
number
to prevent ambiguity in some cases.
basic_filebuf: Fix
wrong return value of sync
when fflush failed
basic_filebuf: Fix
possible undefined behavior in a corner case when nothing was actually
written but buffer is in "write" mode
basic_filebuf: Limit
putback of characters (i.e. pbackfail)
only allowing putback of buffered characters (may be only 1 character)
std::hash<boost::optional<T>>. This is a breaking change
for programs that define such specializations themselves. For more
details see specs.
std::bind_back() and std::range_adaptor_closure
for pre-C++23 code.
closure
and adaptor
to make writing view adaptors easier, following the examples
in P2387.
error_code
is converted to std::error_code
and then back to error_code,
the original is now restored, if possible.
error_category
to std::error_category to avoid the one-time
allocation that shows up on leak checkers.
error_code, and
a corresponding assign.
result.
final Hasher and KeyEqual
objects
string_view/string_ref, fixed max_size returning incorrect value.
(#91)
noexcept specifier
from string_view::compare
as it may throw on some input arguments. (#94)
string_view/string_ref, added support for calling
substr with no arguments.
(#96)
string_view::contains
methods that were introduced in C++23. (#93)
string_view, added
asserts in remove_prefix/remove_suffix methods to enforce
the precondition that the prefix/suffix length does not exceed the
string view size. The previous (undocumented) behavior of silently
clamping the prefix/suffix length is deprecated and will be removed
in a future release. (#92)
Boost's primary test compilers are:
Boost's primary test compilers are:
Marshall Clow, Michael Caisse and Glen Fernandes managed this release.
Boost is publicly released three times a year in April, August, and December. Each release has updates to existing libraries, and any new libraries that have passed the rigorous acceptance process.