New libraries
Two new libraries Contract and HOF add contract programming and higher‑order functions.
Two new libraries Contract and HOF add contract programming and higher‑order functions.
asio gains move‑optimization in SSL streams, asio::steady_timer, asio::dynamic_buffer usage, and faster multiprecision exponentials.
Added 31 dependencies across 27 libraries and removed 27 dependencies across 21 libraries.
Fixed critical Beast websocket defects, DateTime 2038 bugs, Filesystem static‑init crash, and Fiber assertions.
Added constexpr support in Units, std::string_view usage in asio, and removed deprecated boost::utility.hpp symbols.
April 14th, 2018 20:37 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.
basic_socket_acceptor::get_option.
experimental::detached
completion token.
experimental::redirect_error
completion token.
experimental::co_spawn
facility for integration with the coroutines technical specification.
asio::steady_timer rather than
asio::deadline_timer.
asio::dynamic_buffer rather than
asio::streambuf.
asio::io_context::run_for() function for blocking clients.
BOOST_ASIO_NO_DEPRECATED
is defined.
BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM
to enable the old Boost.Date_Time interface in basic_socket_streambuf
and basic_socket_iostream.
is_dynamic_buffer trait.
async_result
incompatibility with deprecated handler_type.
basic_resolver_results::value_type
typedef.
SSL_OP_NO_COMPRESSION is defined.
add_certificate_authority
to process multiple certificates in a bundle.
std::invoke_result
rather than std::result_of.
std::string_view
for C++17 or later, and std::experimental::string_view
for C++14. Define the preprocessor macro BOOST_ASIO_DISABLE_STD_STRING_VIEW
to force the use of std::experimental::string_view (assuming it is
available) when compiling in C++17 mode.
DynamicBuffer
template arguments are decayed before using in enable_if
tests.
basic_yield_context
to work with completion signatures containing reference parameters.
spawn() correctly store decayed copies
of their function and handler arguments.
(op)_and_test
operations added in Boost 1.66 to the opposite - the functions now
return true if the operation
result is non-zero. This is consistent with other test
methods in Boost.Atomic and the C++ standard library. Users can define
BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST
when compiling their code to emit warnings on every use of the changed
functions. This way users can locate the code that needs to be updated.
(#11)
memory_order enumeration
is now scoped and contains constants with shorter names like acquire, release
or seq_cst (i.e.
users can use memory_order::acquire
instead of memory_order_acquire).
The old constants are also provided for backward compatibility. (P0439R0)
add, sub,
negate operations
and their fetch_(op) and opaque_(op) versions are supported. Lock-free
property can be tested with the new macros BOOST_ATOMIC_FLOAT/DOUBLE/LONG_DOUBLE_LOCK_FREE.
The support for floating point types is optional and can be disabled
by defining BOOST_ATOMIC_NO_FLOATING_POINT.
(P0020R6)
negate_and_test
and complement_and_test
which perform negation or bitwise complement and return true if the result is not zero.
add, sub, negate,
bitwise_and,
bitwise_or,
bitwise_xor,
bitwise_complement
operations which perform the operation and return its result.
atomic<T> specialization, the default constructor
is now trivial if T's
default constructor is.
atomic<T> has been updated to avoid undefined
behavior that stems from signed integer overflows. As required by
the C++ standard, the library uses two's complement representation
of signed integers internally and accroding rules of overflow. Currently,
the library requires the native signed integer types to also use
two's complement representation (but no defined overflow semantics).
ebx
value.
websocket::stream
which can lead to asserts or undefined behavior. Users are encouraged
to update to the latest Boost release.
std::string_view,
std::error_code, std::error_condition,
std::optional, std::variant,
std::monostate where available.
vector<bool>, so that it will work with libc++
(#13501).
__sanitizer_finish_switch_fiber
should be called directly after context switch
to_address
and pointer_traits
to reflect the design adopted for C++2a in P0653R2
(Glen Fernandes).
from_iso_string
so it can read output of to_iso_string
for special values (#1078) (PR#69)
boost::date_time::period_parser::delimiter_strings did nothing (#11142)
(PR#63)
int_adapter::is_signed should be const (#12363)
(PR#60)
boost::date_time::time_input_facet throws when using
%j
alone (#12910) (PR#59)
%e day (#13194) (PR#54)
GetLastError() #16.
fusion::map
to fix compile error on newer MSVC 2017. (PR#164)
fusion::vector. (PR#166)
fusion::tag_of
and fusion::is_native_fusion_sequence. Note
that this changes no behaviour from previous release, but compliant
to TypeTraits's change. (PR#171)
unique_ptr
interface in addition to C++2003 auto_ptr
- in order to support C++2017, now you can use BOOST_LOCALE_HIDE_AUTO_PTR
definiton to remove auto_ptr
from the interfaces and prevent deprecated watnings.
icu/date_time
allocator_traits
to work with allocators instead of directly accessing its members.
operator& are now fully accepted (ticket
#13307). Thanks to Daniel Frey for his updating Boost.Operators
to help fix this issue.
std::allocator
members deprecated in C++17. Contributed by Daniela Engert.
static_cast<unsigned>(~static_cast<unsigned>(0) & my_value). Note that technically (to avoid
undefined behaviour) you should do the same thing with built in integer
types too. See #13109.
-Wzero-as-null-pointer-constant
warnings.
std::iteratror.
Thanks to Daniela Engert. (PR#59)
boost_python27
and boost_numpy27,
etc.. Combined with a related fix in Boost.Build, this means that
it is now possible to build variants for multiple Python versions
in a single build process.
with_context
(#239)
x3::variant
and forward_ast
(#241)
error_handler::position() (#248)
unused_type
attribute case in parse_into_container
(#266)
uint_parser<signed
T>
(#297)
ForwardIterator
to ReadableIteratorConcept
&& ForwardTraversalConcept
(#320)
fusion::map
support (#330)
string("...") and attr("...") to single item sequence (#337)
parse_nan
from dereferencing out of range iterator (#351)
types
typedef of boost::optional.
The typedef was removed in the new optional implementation
(#271) (#12349)
BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
(attr_cast,
confix, distinct, keywords,
and flush_multi_pass)
(#314) (#13311)
hold_any
(#361) (#8268)
uint_parser<signed
T>
(#297)
get_current_line,
get_line_start,
and added get_line_end
(#304)
ForwardIterator
to ReadableIteratorConcept
&& ForwardTraversalConcept
(#320)
parse_frac_n from user defined
real policy does not return negative values and also to prevent
static analyzers false-positives (#358)
remove_reference
usage without a namespace in Phoenix (#274)
std::complex usage without the
include (#273)
match<T
&> (#275)
BOOST_DISABLE_THREADS
defined (#323) (#12639)
std::iterator
usage (#345)
BOOST_AUTO_TEST_CASE_TEMPLATE
now accepts a sequence of types in an std::tuple
detected,
detected_or, is_detected, is_detected_convertible,
is_detected_exact,
is_complete.
is_constructible
is fully implemented, see #12003.
is_function
and is_member_function_pointer
to work correctly with C++17 noexcept specifications.
is_default_constructible
and std::pair.
is_nothrow_swappable
on pre-C++11 compilers.
<boost/utility.hpp>
header no longer includes boost::next
and boost::prior as they have been moved to
the iterator module. Instead include <boost/next_prior.hpp>.
Other uses of <boost/utility.hpp> are discouraged, it's better
to use the header for the specific functionality instead.
noexcept
specifications for swap,
operator=
and node handles.
element_type
to iterators, so that std::pointer_traits
will work.
std::piecewise_construct on recent Visual
C++ and Dinkumware libraries.
std::iterator_traits rather than the
boost iterator traits in order to remove dependency on Boost.Iterator.
std::iterator,
as it's deprecated (PR#7).
random_generator_mt19937
for bulk UUID generation
Boost's primary test compilers are:
Boost's additional test compilers include:
Beman Dawes, Daniel James, Vladimir Prus and Marshall Clow 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.