New libraries
Added Nowide for UTF‑8 Windows API and StaticString for compile‑time sized resizable strings.
Added Nowide for UTF‑8 Windows API and StaticString for compile‑time sized resizable strings.
clang Outcome codegen drastically faster; variant<T...> now trivial when types are trivial; cpp_int uses faster Karatsuba multiplication.
Added 5 new dependencies (incl. OpenSSL), removed 12 dependencies (e.g., MPL) across 8 libraries.
Fixed syslog undefined‑behavior, corrected log rotation edge case, and resolved numerous async and thread‑pool hangs.
date_time now header‑only, atomic_ref and source_location added, and many libraries gain constexpr support.
April 28th, 2020 03:57 GMT
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.
status_code_domain
assertion removal
aligned_alloc
to support older mingw32.
<algorithm>.
noexcept.
ssl::host_name_verification class, which
is a drop-in replacement for ssl::rfc2818_verification.
The ssl::rfc2818_verification class has
been marked as deprecated. As a consequence of this change, SSL support
now depends on functions that were introduced in OpenSSL 1.0.2.
ssl::context constructor to take ownership
of a native handle.
__cplusplus
macro.
strand<> converting constructors and
assignment operators.
async_read overloads.
ssl::context class to propagate non-EOF
errors from the add_certificate_authority
function.
thread_pool
destructor hang that occurred when the pool had an associated I/O
object.
priority_scheduler
example to demonstrate calls to shutdown() and destroy().
use_awaitable_t::as_default_on
function.
boost::placeholders namespace.
async_compose
implementation due to incorrect overload selection.
source_location.
atomic_ref.
See docs
and especially the caveats
section.
atomic_flag::test
operation, which was introduced in C++20.
atomic<T>
should now take into account alignment requirements of T, which makes a difference if
those requirements are higher than that of the internal storage of
atomic.
T used with atomic and atomic_ref.
This should prohibit invalid types from being used as atomics.
bit_test_and_* operations on 8 and 16-bit arguments.
Other architectures are not affected.
compare_exchange_* operations, if alignment requirements
of value_type are
less than that of the internal storage of atomic.
boost/atomic/atomic.hpp no longer includes boost/atomic/atomic_flag.hpp and boost/atomic/fences.hpp
and only defines the boost::atomic
class template and related typedefs. Include the other headers explicitly
or use boost/atomic.hpp to include all parts of Boost.Atomic.
atomic<T>::storage()
accessor and associated atomic<T>::storage_type
type are deprecated. Instead, users are advised to use atomic<T>::value()
and atomic<T>::value_type, respectively. Users
can define BOOST_ATOMIC_SILENCE_STORAGE_DEPRECATION
to disable deprecation warnings for the time of transition. The deprecated
pieces will be removed in a future release.
BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST.
This macro was used as a helper for transition to the updated returned
values of *_and_test
operations in Boost.Atomic 1.67, which was released 2 years before
1.73.
mutable_data_type
in Beast dynamic buffers is deprecated.
boost::polymorphic_downcast for references
(thanks to Julien Delacroix for the patch).
boost::dll::smart_library
(thanks to Ramil Gauss for #35).
boost::dll::load_mode::type
#30.
test/extension/io/ sub-tree and targets in related
Jamfile-s.
BOOST_GIL_
prefix (PR#411).
BOOST_GIL_ prefix (PR#419).
extension/dynamic_image/reduce.hpp
as unused and possibly unfinished (PR#466). An implementation
attempt of techniques described in the paper Efficient
Run-Time Dispatching in Generic Programming with Minimal Code
Bloat by Lubomir Bourdev, Jaakko Jarvi.
BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
and BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES.
Instead, if a test target is built, it builds all its test
cases unconditionally.
longjmp
interaction during destruction of I/O extension objects (PR#433).
image class (PR#429).
crop
command to reduce
algorithm
slice command
in reduce now
works on category
axis
count
accumulator, can be used to add arbitrary metadata to each
cell
sum algorithm
gained a new argument to optionally sum only over inner bins
reduce
ostream_joiner
for delimiter based joining. (Glen Fernandes)
ostream_string
from the Utility library to the IO library as ostream_put.
core::flush now performs a flush
on the default sink used for trivial logging, when no sinks
are registered.
openlog
call. Such implementations could access already freed memory
on each syslog
call, resulting in undefined behavior. (#97)
rotation_at_time_point(boost::gregorian::greg_day(1))) could be silently ignored
and not happen. (#98)
text_file_backend::rotate_file
could throw if there were no log records written yet and target
file name pattern was set.
std::allocator_traits
to improve compatibility with C++20 allocators.
mp_unique_if
(contributed by Kris Jusiak)
mp_flatten
mp_rotate_left,
mp_rotate_right (contributed
by Duncan Barber)
mp_compose
mp_power_set
mp_partial_sum
mp_iterate
multi_index_container
is now AllocatorAware.
KeyFromValue,
Compare, Hash and Pred
objects now selects the appropriate swap
function between std::swap
and ADL candidates, in accordance with standard specifications in
[swappable.requirements] (issue
#29).
long
double and __float128,
fixes #178.
constexpr arithmetic
support for latest MSVC release.
better_optimisation
Outcome v2.2.0 future branch was merged to Outcome v2.1.3 which
includes a new status bitfield implementation. This appears
to not confuse clang's optimiser, and clang 9 produces code
which routinely beats GCC 9's code for various canned use cases.
make
install) breaking
itself rather more frequently than is ideal, installability
is now tested on CI per commit.
T
and E, so removed
template constraints, falling back to static assert which runs
later in the type instantiation sequence.
boost::poly_collection::for_each.
BOOST_TEST expression. See change
logs for more details.
throw_exception
that takes a boost::source_location
object.
BOOST_THROW_EXCEPTION
with exceptions disabled will need to add a definition of this new
overload.
ostream_string
facility has moved from the Utility library to the IO library as
ostream_put.
std::hash,
boost::hash.
variant<T...>
is now trivial when all types in T... are trivial. This improves performance
by enabling it to be passed to, and returned from, functions in registers.
boost/detail/winapi
are deprecated and will be removed in a future release.
winerror.h.
Include boost/winapi/error_codes.hpp to get Windows error codes.
(#81)
Boost's primary test compilers are:
Boost's additional test compilers include:
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.