New libraries
Added three libraries: Log, TTI (type traits introspection), and Type Erasure for runtime polymorphism.
Added three libraries: Log, TTI (type traits introspection), and Type Erasure for runtime polymorphism.
Vector constructors now dispatch to memcpy, and variant uses noexcept traits for faster operations.
Added 51 new dependencies across 12 libraries and removed 1 dependency from a library.
Fixed SSL handshake overloads, data race in epoll, and deadlock in signal_set.
Introduced asio::spawn, asio::use_future, C++14 overloads for algorithms, and new type traits like is_nothrow_move_constructible.
| Platform | File | SHA256 Hash |
|---|---|---|
|
Unix
|
boost_1_54_0.tar.bz2 |
|
| boost_1_54_0.tar.gz |
|
|
|
Windows
|
boost_1_54_0.7z |
|
| boost_1_54_0.zip |
|
July 1st, 2013 17:10 GMT
These are patches from library authors which were found too late to be fixed in the 1.54.0 release. Be careful as they have not been through the normal testing process.
Boost no longer supports the 80386 target CPU, the minimum x86 32-bit target is i486. The 80386 target was not properly supported by Boost.SmartPtr and Boost.Atomic (as well as the libraries that used them internally) even before this release. Some Boost libraries may have higher requirements on the minimum target CPU (like Boost.Log for example), see the respective library documentation for details.
Also by default, when building Boost for x86 32-bit targets it will compile for i686 (Pentium Pro) and later CPUs. This can be changed by specifying the instruction-set property in b2 or bjam command line, for example:
b2 variant=release architecture=x86 instruction-set=i486 stage
Possible values for the instruction-set are:
Note that not all these values may be supported by a particular compiler.
Boost.Signals is no longer being actively maintained, so it has been deprecated. Do not use Boost.Signals for new development (use Boost.Signals2 instead). If you have existing Boost.Signals-based code, it will continue to work, but consider moving to Boost.Signals2. There is a porting guide in the Signals2 documentation.
OutputIterator,
these functions now return a std::pair<InputIterator, OutputIterator>. If this change affects your
code, the simplest change is to add a .second to the end of the call,
which will get you the same behavior that you had before.
noexcept
modifiers.
handler_type
and async_result,
that allow the customisation of the return type of an initiating
function.
asio::spawn()
function, a high-level wrapper for running stackful coroutines, based
on the Boost.Coroutine library. The spawn() function enables programs to implement
asynchronous logic in a synchronous manner. For example: size_t n
= my_socket.async_read_some(my_buffer, yield);.
asio::use_future special value, which
provides first-class support for returning a C++11 std::future from an asynchronous operation's
initiating function. For example: future<size_t> n
= my_socket.async_read_some(my_buffer, asio::use_future);.
asio_handler_is_continuation.
Asynchronous operations may represent a continuation of the asynchronous
control flow associated with the current executing handler. The
asio_handler_is_continuation
hook can be customised to return true
if this is the case, and Asio's implementation can use this knowledge
to optimise scheduling of the new handler. To cover common cases,
Asio customises the hook for strands, spawn() and composed asynchronous operations.
generic::datagram_protocol,
generic::raw_protocol, generic::seq_packet_protocol
and generic::stream_protocol, which implement
the Protocol type
requirements, but allow the user to specify the address family (e.g.
AF_INET) and protocol
type (e.g. IPPROTO_TCP)
at runtime.
ip::tcp::socket can be converted into a
generic::stream_protocol::socket via move construction.
basic_socket_acceptor<> class's accept() and async_accept() functions to allow a new connection
to be accepted directly into a socket of a more generic type. For
example, an ip::tcp::acceptor can be used to accept
into a generic::stream_protocol::socket object.
ssl::stream<> class's handshake()
and async_handshake() functions have been added.
These accept a ConstBufferSequence
to be used as initial input to the ssl engine for the handshake
procedure.
ssl::context objects.
set_verify_depth() function to the ssl::context and ssl::stream<>
classes.
add_certificate_authority(), use_certificate(), use_certificate_chain(), use_private_key(), use_rsa_private_key() and use_tmp_dh(), have been added to the
ssl::context class.
ssl::context
to automatically disable SSL compression by default. To enable,
use the new ssl::context::clear_options() function, as in my_context.clear_options(ssl::context::no_compression).
signal_set
implementation.
#warning
directive #7939.
epoll
implementation.
error_code with
an invalid (i.e. NULL)
error_category #8613.
basic_waitable_timer's
underlying implementation so that it can handle any time_point value without overflowing
the intermediate duration objects.
run() and poll() on the same io_service
object #8354.
LastBootupTime
from WMI was unstable with time synchronization and hibernation and
unusable in practice. If you really need to obtain pre Boost 1.54
behaviour define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME
from command line or detail/workaround.hpp.
BOOST_NO_EXCEPTIONS
support (bug #7849).
boost::int128_type
and boost::uint128_type #7909.
lexical_cast
function that was broken in 1.53.0 #7421.
cpp_dec_float_50
as an example of a User-defined Type (UDT).
cyl_bessel_j_zero,
cyl_neumann_zero,
airy_ai_zeros and
airy_bi_zeros(by
Christopher Kormanyos).
rational_adapter to rational_adaptor.
__float128
or Intel's _Quad
data types.
constexpr support.
cpp_int
that results in incorrect sign of cpp_int
when both arguments are small enough to fit in a double_limb_type.
See 8126.
cpp_int
that results in incorrect value when the result should have a 0 in
the last limb: 8133.
cpp_int
where division of 0 by something doesn't get zero in the result:
8160.
a = pow(a, b).
See 8326.
compose_property_map
from Guillaume Pinot.
noexcept
support.
basic_string_ref::find
(#8067).
string_ref's
logical operators.
boost::addressof with boost::function
on SolarisStudio compiler (#7079).
Boost's primary test compilers are:
Boost's additional test compilers include:
Beman Dawes, Eric Niebler, Rene Rivera, 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.
Achievements capture your contributions to Boost — automatically tracked where possible, manually verified for high-value activities.
Badges recognize your journey on Boost — from the contributions you make to the time you've invested and the milestones you've reached along the way.