Performance improvements
Disjoint sets link_sets now avoid redundant lookups, and unordered containers provide hash quality statistics for better runtime behavior.
Disjoint sets link_sets now avoid redundant lookups, and unordered containers provide hash quality statistics for better runtime behavior.
Added 4 dependencies across 3 libraries and removed 15 dependencies across 3 libraries, simplifying overall linkage.
Numerous bug fixes address overflow, underflow, ambiguous overloads, and Windows SDK header conflicts, enhancing stability.
New async_immediate token, composed initiation object, bind_front.hpp, and Natvis visualizations streamline coding and debugging.
August 14th, 2024 16:07 GMT
default_completion_token
trait's primary template to select deferred
as the default completion token. As a result, most asynchronous operations'
initiating functions will return a deferred asynchronous operation
by default.
is_completion_condition
trait and added missing default completion tokens to overloads of
async_read, async_read_at, async_write,
and async_write_at.
is_connect_condition
trait and used it disambiguate overloads of async_connect
when the completion token is defaulted.
as_tuple,
bind_allocator,
bind_cancellation_slot,
bind_executor, bind_immediate_executor, and redirect_error to allow them to
be used as partial completion token adapters.
cancel_after
and cancel_at completion
token adapters.
co_composed
out of the experimental
namespace.
composed, which
creates an initiation function object from a stateful implementation.
It is similar to co_composed,
but for regular function objects rather than C++20 coroutines.
detached
completion token to work with asynchronous operations that have multiple
completion signatures.
async_initiate
to allow an empty variadic list of completion signatures, which would
indicate that an asynchronous operation never completes.
async_initiate
that automatically deduce the type of the completion token.
async_immediate
which implements a trivial asynchronous operation that completes
immediately, using an associated immediate executor if available.
associator trait.
futex(2)
system call on OpenBSD since recent OpenBSD versions have removed
support for syscall(2).
I'm
a teapot.
read_size_hint_db().
http::basic_fields
move-assignment operator.
bytes_transferred
in WebSocket partial write operations.
websocket::stream::read_size_hint()
does not exceed read_message_max.
basic_stream::ops::transfer_op.
test::basic_stream
constructor overloads.
http::parser.
server_flex_awaitable
example.
std::bind
in some examples.
ssl_stream
does not use flat_stream.
ssl_stream
and flat_stream
marked as deprecated.
net::ssl::stream is canonical in snippets
and examples.
SSL/TLS Shutdown
Procedure section.
<quadmath.h> header but not the compiled library.
from_chars
for integer types.
std::float16_t
and std::bfloat16_t instead of using interchange
formats.
asio::deferred co_await-able, because
it's asio's default token
noop utility
bind_front.hpp,
bind_back.hpp, invoke.hpp,
mem_fn.hpp, integer_sequence.hpp
and type_traits.hpp.
function_ref.hpp.
boost/core/pointer_in_range.hpp header with a pointer_in_range function template
to check if a pointer is within a given range (Glen Fernandes).
type_name for
abstract classes. (#172)
boost/core/type_name.hpp compilation error with MSVC
with disabled native wchar_t
type. (#173)
empty_value
compilation errors when it is used with a nested class. (PR#175)
is_empty operation
is now better protected against concurrent filesystem modifications.
is_empty
now indicates error if invoked on a file other than a regular file
or a directory.
file_size
and is_empty operating
on symlinks rather than the files the symlinks refer to. (#313)
directory_entry::refresh no longer throws an exception
if the file referenced by the entry doesn't exist. This makes directory_entry::status and directory_entry::symlink_status,
as well as methods based on them, behave similarly to the equivalent
standalone operations. The fact that the file does not exist is still
indicated via the error_code
returned by the corresponding directory_entry::refresh
overload, or can be seen by testing if the file type returned by
directory_entry::status or directory_entry::symlink_status
calls is file_type::file_not_found.
(#314)
weakly_canonical
testing path elements for existence relative to the current path
instead of the base path specified in the call, if the input path
was a relative path.
weakly_canonical
producing incorrect result path when the input path started with
"..". (#311)
argN_type
typedefs that were accidentally lost in 1.85.
tell() and error() functions to istream_device and ostream_device classes (PR#747).
isomorphism: Fix
docs, ignore vertex_max_invariant
parameter in favour of cheaply calculating upper exclusive bound,
fix bug with Associative Property Map, improve space efficiency from
linear in the size of the maximum invariant to linear in the size
of g1.
boykov_kolmogorov_max_flow:
Fix named parameter overload.
adj_list_edge_iterator:
Fix maybe-uninitialized warnings.
hawick_circuits:
Add a parameter to optionally limit the depth of the search, causing
a potentially suboptimal answer to be returned early.
disjoint_sets: Improve
performance of link_sets
by removing redundant lookup of set representatives.
maximum_adjacency_search:
Refactor and more tests.
property: Use BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS
to remove wasted space.
labeled_graph: Fix
remove_labeled_vertex
so that it actually removes the label too.
r_c_shortest_paths:
Fix bug that the single-solution variant did not always return the
shortest path.
read_graphviz: Fix
stack overflow (oss-fuzz issue 66719) and non-keyword subgraph parsing.
source_location parameter
was added to throwing accessor functions.
system::result.
std::basic_string_view
and boost::basic_string_view containing one
or more \0
characters. Issue was introduced in 1.85.0.
conv::utf_to_utf
windres.exe
issue, when it is used in CMake to compile event log resource files
on MinGW-w64. (PR#231)
float_next/float_prior behaviour at infinity.
query,
start_query, execute_statement and start_statement_execution (and
their async equivalents) have been removed.
identifier
class (client-side SQL formatting) has been removed. Use the
new format specifiers feature, instead.
any_connection::async_connect
now requires that its connect_params
argument be kept alive until the operation completes. The overload
taking a const connect_params*
has been removed.
character_set::name
is now a const char*
instead of a string_view,
as MySQL character set names can't contain NULL characters.
any_connection
internal buffer is now limited to 64MB. If you need to read
or write rows bigger than that, increase any_connection_params::max_buffer_size.
connection
and their helper typedefs are not limited.
any_connection_params::initial_read_buffer_size
to initial_buffer_size.
pool_params::initial_read_buffer_size
to initial_buffer_size.
sequence
function. Use cases like batch inserts and batch lookups can be significantly
simplified using this functionality.
{:i}
formats a string as a dynamic SQL identifiers, and {:r} outputs a raw unescaped
static_results
and static_execution_state)
now supports Boost.Pfr types using pfr_by_name
and pfr_by_position.
Added underlying_row_t
to support such types.
date and datetime can now be constructed
from and converted to C++20 std::chrono::local_time.
any_connection_params::max_buffer_size,
which allows to set a limit to the connection's internal buffer.
is_fatal_error,
which allows users can now distinguish between fatal (which require
closing and re-opening the connection) and non-fatal error codes.
formattable_ref,
a type-erased reference type that can refer to any type satisfying
the Formattable concept.
asio::coroutine in different translation
units.
BOOST_NUMERIC_ODEINT_NO_ADAPTORS
to reduce dependencies, see 82
std::stacktrace::from_current_exception() now works on Windows platform.
Many thanks to huangqinjin
for the implementation PR#159
Now on POSIX and Windows
the from_current_exception() function returns the stacktrace
of the current exception object as if the stacktrace was captured
at the point of throwing the exception.
boost.stacktrace.from_exception
now properly works on MacOS. Thanks to Peter
Dimov for the fix PR#166.
dladdr minimal
support for AIX. Many thanks to Clément Chigot for the implementation
PR#114.
Boost::stacktrace CMake alias that refers
to the best supported implementation of Boost.Stacktrace on the platform.
Thanks to Alex for
the feature PR#167.
PATH. Thanks to Schreischildkroete
for the bug report and to Jens
Richter for fix #72.
-Wundef
in configuration step.
pmr
aliases when header <memory_resource>
is available. The alias boost::unordered::pmr::[container] refers to boost::unordered::[container] with a std::pmr::polymorphic_allocator
allocator type.
BOOST_UNORDERED_ENABLE_STATS.
is_avalanching typedef with an
embedded value constant
set to true (typically,
defining is_avalanching
as std::true_type). using
is_avalanching =
void is deprecated but allowed
for backwards compatibility.
BOOST_USE_WINAPI_VERSION
CMake option, which allows users to specify the Windows version for
Boost to target.
constructor,
copy-assignment and destructor
elements are now allowed inside method-group
elements.
boost.sort.params
XSL parameter to 1.
@name
and @{/@}.
@ref tag).
@remark and @important
tags.
@parblock tags, which can
be used to place multiple paragraphs under a tag that expects
a single paragraph as an argument (e.g. @returns).
@0, the name is either omitted
or is [unnamed], if the name is necessary
to introduce a link to the enum documentation.
@sa) blocks to be displayed
inline, similar to "Returns".
@throws).
@throws tag is "~"
then the exception type is omitted from the output, and the
following description is displayed directly in the "Throws"
section.
Boost's primary test compilers are:
Marshall Clow, Glen Fernandes and Ion Gaztañaga 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.