New libraries
Introduces Mysql, a C++11 client for MySQL built on Asio.
Introduces Mysql, a C++11 client for MySQL built on Asio.
atomic<T>::value() now uses AVX for 128‑bit loads, and string hash_value gains speed via mulxp1_hash.
Added 4 dependencies across 3 libraries; removed 17 dependencies across 10 libraries.
Fixed deadlock in thread pool join, dangling references in execution context, and SMBv1 path attribute handling.
New core/snprintf.hpp, core::launder, and url::format improve portability and error messages.
April 14th, 2023 03:08 GMT
These are patches from library authors which were found too late to be fixed in the release.
The following libraries will be dropping C++03 support in release 1.84, two releases from now:
This release (1.82) and the next (1.83) will be the last releases offering C++03 support for the above libraries and most of their dependencies.
The new baseline requirement for the above libraries, and for most of Boost, will be C++11. Since old compiler versions often implement C++11 only partially, due to missing support or bugs, what compilers are considered to meet the C++11 requirement may vary by library.
However, a general rule is that if a compiler does not recognize a C++11 keyword
or syntax at all (e.g. use of noexcept,
use of constexpr, or defining
a =deleted
function results in an immediate compile error), or if a compiler does not
provide a required C++11 header at all (e.g. trying to include <atomic> or <chrono>
fails), or the compiler provides a C++11 feature or a header that is completely
unusable, this compiler is not considered a C++11 compiler.
This rules out, for instance, Microsoft Visual C++ before 14.0, or GCC before 4.8.
core/enable_if.hpp header instead of the deprecated
utility/enable_if.hpp. Thanks to Michael Ford for
the PR PR#25.
local::seq_packet_protocol
to represent AF_UNIX
with SOCK_SEQPACKET.
sigaction() flags via an optional argument
to signal_set::add.
allocator_binder,
executor_binder,
and cancellation_slot_binder
to support detection of unspecialised associators.
associated_cancellation_slot<reference_wrapper>::get().
awaitable<>
handling for completion signatures containing std::exception_ptr.
experimental::channel<> try_send
failure after a cancel.
thread_pool::join() deadlock when the pool has no internal
threads.
release() when using io_uring.
get_associated_executor().
experimental::channel<>
is closed.
any_completion_handler
assignment operator.
any_completion_handler
to prevent accidental copying
uint64_t
for OpenSSL options, to match OpenSSL 3.
deferred interoperability
with multiple completion signatures.
co_composed and 'awaitable<>'
coroutines, when awaiting packaged asynchronous operations.
asio::buffer overload selection when
used with const_buffers_1
and mutable_buffers_1.
ssl::stream<>.
basic_socket_acceptor::async_accept
compatibility with lambdas that have a deduced return type.
as_tuple compatibility
with legacy completion tokens.
redirect_error
compatibility with new completion tokens.
co_await
of boolean expressions.
experimental::use_coro.
is_async_operation
and completion_signature_of.
experimental::promise.
experimental::coro
use with custom allocators.
seek_cur behaviour
with stream-oriented files on Windows.
memory_order_seq_cst semantics
will now issue a memory ordering instruction.
atomic<T>::storage()
accessors and atomic<T>::storage_type
types that were deprecated in Boost.Atomic 1.73. Users are recommended
to use atomic<T>::value()
and atomic<T>::value_type instead.
error_codes use
source_location
file_body supports
seek
hash_value
for std::nullptr_t.
is_tuple_like
and an overload of hash_value
for tuple-like types.
mulxp1_hash. This improves
both quality and speed.
boost/core/snprintf.hpp header with portable definitions
of snprintf, vsnprintf and their wchar_t counterparts.
boost/core/is_same.hpp
and boost::core::is_same. The header will be removed
in a future release. Users are advised to use Boost.TypeTraits or
C++ standard library type traits instead.
boost::ref member functions and associated
methods with noexcept.
boost::swap function with noexcept, depending on whether the
type supports a non-throwing swap operation.
boost::core::launder, a portable implementation
of std::launder.
BOOST_CORE_ALIGNOF,
a portable implementation of alignof.
boost::core::max_align_t, a portable equivalent
of std::max_align_t, and boost::core::max_align, the alignment of max_align_t.
boost::core::memory_resource, a portable equivalent
of std::pmr::memory_resource from C++17.
boost/core/serialization.hpp, a collection of primitives
allowing libraries to implement Boost.Serialization support for their
types without including a Serialization header and thereby making
their libraries depend on Serialization.
boost::data, an implementation of std::data.
boost::size, an implementation of std::size.
boost::span to use boost::data
which adds support for range construction from an std::initializer_list.
boost::identity, an implementation of
std::identity. This facility has been
moved from Boost.Functional.
path conversion constructors being
too permissive on the accepted arguments. (#273)
path::remove_filename
now presesrves the trailing directory separator. (#271)
path::remove_filename_and_trailing_separators,
which removes the filename and directory separators preceding it
from the path. This behavior is similar to path::remove_filename
in Filesystem v3, but is also usable
in v4.
path::replace_filename, which replaces
filename in a path.
detail::span and detail::make_span
with implementations in boost::core
std::min
and std::max in some cases, contributed
by Han Jiang (min,max macros are illegially set by popular Windows
headers so we need to work around)
set_at_pointer.
boost::hash support.
value_to supports
missing elements for std::optional.
get_system_locale
and dependents will now correctly favor LC_ALL
over LC_CTYPE as
defined by POSIX PR#144
utf8_codecvt::out returns partial
for trailing (UTF) surrogates
boost::locale::util::locale_data to parse a locale
boost::locale::info::encoding()
result is now in uppercase as documented, e.g. "UTF-8"
instead of "utf-8"
en_001
or en_150 PR#148
en_US_POSIX
as an alias for the C
locale PR#148
constexpr table
driven functions to avoid massive slowdown when the code is not actually
constexpr, see 923.
constexpr math
functions to better handle infinities and NaN's.
std::cbrt as some platforms still don't
support it.
unsigned
long instead of collection_size_type, and
multi_index_container
serialization class
version has been bumped from 2 to 3 to reflect this change.
Reading old archives may fail for custom archive types giving special
treatment to collection_size_type
values: if this is the case, globally define the macro BOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2
to ensure backwards compatibility in reading operations.
powm, see 506.
convert_string
overload accepting a (std::)string instance
quoted to output
(quoted UTF-8) paths (std::filesystem
or boost::filesystem) to streams PR#170
boost::pfr::is_implicitly_reflectable
and the machinery for specializing aggregates as reflectable or not,
thanks to Denis Mikhailov for the PR PR#111.
boost::pfr::get
by type of an element in the aggregate.
BOOST_PFR_ENABLED
macro to detect library support for reflection, thanks to Denis Mikhailov
for the PR PR#86.
boost/pfr/config.hpp compilation on older compilers,
thanks to Denis Mikhailov for the PR PR#118.
#pragma
once, thanks to caozhanhao for the PR
PR#121.
wait_for
& wait_until
in V1 - they will be removed in the future!
backtrace_create_state
if BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC
is defined.
string_view
and std::string_view interoperability
basic_cstring::rfind
boost::unordered_node_map
and boost::unordered_node_set.
emplace
impl where stack-local types were not properly constructed using
the allocator of the container which breaks uses-allocator construction.
url::format with automatic percent-encoding
set_params convenience
function
string_view
string_token::arg has virtual destructor and
slice protection
BOOST_URL_DISABLE_THREADS
hier_part_rule
with empty-port-like segments
Boost's primary test compilers are:
Marshall Clow 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.