Version 1.54.0
July 1st, 2013 17:10 GMT
Documentation
Patches
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.
-
Coroutine patch
-
Date Time patch
-
Log patch
-
Thread patch
News
Supported CPUs
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:
-
Target for the host CPU: native
-
Generic x86 CPUs: i486, i586,
i686
-
Intel CPUs: pentium, pentium-mmx,
pentiumpro, pentium2, pentium3,
pentium3m, pentium-m, pentium4,
pentium4m, prescott, nocona,
core2, corei7, corei7-avx,
core-avx-i, conroe, conroe-xe,
conroe-l, allendale, merom,
merom-xe, kentsfield, kentsfield-xe,
penryn, wolfdale, yorksfield,
nehalem, sandy-bridge, ivy-bridge,
haswell, atom
-
AMD CPUs: k6, k6-2, k6-3,
athlon, athlon-tbird, athlon-4,
athlon-xp, athlon-mp, k8,
opteron, athlon64, athlon-fx,
k8-sse3, opteron-sse3, athlon64-sse3,
amdfam10, barcelona, bdver1,
bdver2, bdver3, btver1,
btver2
-
VIA CPUs: c3, c3-2
-
IDT CPUs: winchip-c6, winchip2
Note that not all these values may be supported by a particular compiler.
Signals deprecated
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.
New Libraries
- Log:
-
ging library, from Andrey
Semashev.
- TTI:
-
Type Traits Introspection library,
from Edward Diener.
- Type Erasure:
-
Runtime polymorphism
based on concepts.
Updated Libraries
-
Accumulators:
-
Fixes comment typos (#7917)
-
Silence unused variable warnings (#6926)
-
Algorithm:
-
The return types for copy_while and copy_until have been changed.
This is an interface change. If you were using the return values
from these functions, then you will have to modify your code. Instead
of just returning the modified
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.
-
Added C++14 versions of 'is_permutation', 'equal' and 'mismatch'.
-
Any:
-
Added C++11 features support #6999:
-
Move assignment and move constructors.
-
Added
noexcept
modifiers.
-
Asio:
-
Added new traits classes,
handler_type
and async_result,
that allow the customisation of the return type of an initiating
function.
-
Added the
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);.
-
Added the
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);.
-
Promoted the stackless coroutine class and macros to be part of Asio's
documented interface, rather than part of the HTTP server 4 example.
-
Added a new handler hook called
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.
-
Added four new generic protocol classes,
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.
-
Added C++11 move constructors that allow the conversion of a socket
(or acceptor) into a more generic type. For example, an
ip::tcp::socket can be converted into a
generic::stream_protocol::socket via move construction.
-
Extended the
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.
-
Moved existing examples into a C++03-specific directory, and added
a new directory for C++11-specific examples. A limited subset of
the C++03 examples have been converted to their C++11 equivalents.
-
Various SSL enhancements. Thanks go to Nick Jones, on whose work
these changes are based.
-
Added support for SSL handshakes with re-use of data already
read from the wire. New overloads of the
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.
-
Added support for creation of TLSv1.1 and TLSv1.2
ssl::context objects.
-
Added a
set_verify_depth() function to the ssl::context and ssl::stream<>
classes.
-
Added the ability to load SSL certificate and key data from
memory buffers. New functions,
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.
-
Changed
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).
-
Fixed a potential deadlock in
signal_set
implementation.
-
Fixed an error in acceptor example in documentation #8421.
-
Fixed copy-paste errors in waitable timer documentation #8602.
-
Added assertions to satisfy some code analysis tools #7739.
-
Fixed a malformed
#warning
directive #7939.
-
Fixed a potential data race in the Linux
epoll
implementation.
-
Fixed a Windows-specific bug, where certain operations might generate
an
error_code with
an invalid (i.e. NULL)
error_category #8613.
-
Fixed
basic_waitable_timer's
underlying implementation so that it can handle any time_point value without overflowing
the intermediate duration objects.
-
Fixed a problem with lost thread wakeups that can occur when making
concurrent calls to
run() and poll() on the same io_service
object #8354.
-
Fixed implementation of asynchronous connect operation so that it
can cope with spurious readiness notifications from the reactor #7961.
-
Chrono:
-
Fixed Bugs:
-
#8079
Chrono memory leak
-
#8318
BOOST_FORCEINLINE constructors of time_point and duration
-
#8367
chrono does not compile with clang from XCode 4.5.2 with -std=c++11
-stdlib=libc++ and -arch armv7
-
#8370
typo in chrono reference
-
#8435
Can't compile Chrono on HP-UX due to no CLOCK_REALTIME macro.
-
Circular Buffer:
-
Container:
-
Added experimental
static_vector
class, based on Andrew Hundt's and Adam Wulkiewicz's high-performance
varray class.
-
Speed improvements in
vector
constructors/copy/move/swap, dispatching to memcpy when possible.
-
Support for
BOOST_NO_EXCEPTIONS
#7227.
-
Fixed bugs #7921,
#7969,
#8118,
#8294,
#8553.
-
Context:
-
Support for SPARC architecture added.
-
Coroutine:
-
Support for segmented stacks (stack grows on demand) added.
-
#7805
Typo
-
#7972
GCC warnings
-
#7988
C++11 range-for
-
#8023
Using iterator traits
-
#8024
Create const_iterator
-
#8101
Postfix operator++ for iterator
-
#8526
memory leak
-
#8544
calling managed DLL
-
Geometry:
-
Additional functionality
-
added Spatial Index, developed for Boost.Geometry by Adam Wulkiewicz.
The spatial index was originally started by Federico J. Fernandez
during the Google Summer of Code 2008 program, mentored by
Hartmut Kaiser.
-
added SVG-output, this was already in extensions for several
years
-
Documentation
-
small fixes of missing words
-
Bugfixes
-
collinear opposite segments did sometimes (in circles) have
a robustness issue, fixed
-
fixed insertion of false intersection point (found by buffer)
-
applied patch of Vladimir Petrovic for debugging traversals
-
Solved tickets
-
7462
degenerate union result for float, fixed
-
7465
wrong construtors access type in scale_transformer class, fixed
-
7802
cart_intersect.hpp unused parameter warnings, fixed
-
8254
faulty intersection, fixed
-
8393
polygon model doesn't adhere to stated Polygon concept rules,
doc updated.
-
8403
silenced compiler warning C4127: conditional expression is
constant
-
8405
silenced compiler warning C4189: '...' : local variable is
initialized but not referenced
-
Internal changes
-
Made several algorithms variant-aware (append, area, clear,
convert, equals, length, num_points)
-
Graph:
-
Bugs fixed from Trac: #6780, #7016, #7155, #7845,
#7863, #7877, #8166, #8192, #8398, #8411,
#8427, #8428, #8434, #8490, #8681.
-
Added updates to VF2 subgraph isomorphism from Jakob Lykke Andersen
and Flavio De Lorenzi.
-
Added maximum adjacency search from Fernando Vilas.
-
Added timeout support from Brammert Ottens to resource-constrained
shortest paths (r_c_shortest_paths) algorithm.
-
Various fixes to documentation and examples and removal of outdated
compiler workarounds.
-
Interprocess:
-
Added support for platform-specific flags to mapped_region (ticket
#8030)
-
Fixed bugs #7484,
#7598,
#7682,
#7923,
#7924,
#7928,
#7936,
#8521,
#8595.
-
ABI breaking: Changed bootstamp
function in Windows to use EventLog service start time as system
bootup time. Previously used
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.
-
Intrusive:
-
Added
BOOST_NO_EXCEPTIONS
support (bug #7849).
-
Iostreams:
-
tee now works correctly
for std::streams (#8315).
-
Documentation fixes (#8385, #8460).
-
Avoid warning from Clang's
-Wimplicit-fallthrough (#8482).
-
Lexical cast:
-
Converting to character pointer now triggers compile time assert
instead of runtime #8334.
-
Lexical cast is now capable of converting
boost::int128_type
and boost::uint128_type #7909.
-
Changed internal stream buffer handling, now works with libc++ #8267,
#7704.
-
Restored getting address of
lexical_cast
function that was broken in 1.53.0 #7421.
-
Fixed warnings, internals and tests #2558, #7949, #8162,
#8369, #8547.
-
Math:
-
Major reorganization to incorporate other Boost.Math like Integer
Utilities (Greatest Common Divisor and Least Common Multiple), quaternions
and octonions. Making new chapter headings.
-
Added many references to Boost.Multiprecision and
cpp_dec_float_50
as an example of a User-defined Type (UDT).
-
Added Clang to list of supported compilers.
-
Fixed constants to use a thread-safe cache of computed values when
used at arbitrary precision.
-
Added finding zeros of Bessel functions
cyl_bessel_j_zero,
cyl_neumann_zero,
airy_ai_zeros and
airy_bi_zeros(by
Christopher Kormanyos).
-
More accuracy improvements to the Bessel J and Y functions from Rocco
Romeo.
-
Fixed nasty cyclic dependency bug that caused some headers to not
compile #7999.
-
Fixed bug in __tgamma that caused spurious overflow for arguments
between 142.5 and 143.
-
Fixed bug in raise_rounding_error that caused it to return an incorrect
result when throwing an exception is turned off #7905.
-
Added minimal __float128 support.
-
Fixed bug in edge-cases of poisson quantile #8308.
-
Adjusted heuristics used in Halley iteration to cope with inverting
the incomplete beta in tricky regions where the derivative is flatlining.
Example is computing the quantile of the Fisher F distribution for
probabilities smaller than machine epsilon. See ticket #8314.
-
Meta State Machine:
-
Bugfix: Exit points broken for the favor_compile_time policy.
-
Bugfix: copy breaks exit points of subsubmachines.
-
Bugfix: #8046
-
Move:
-
Multiprecision:
-
Breaking change renamed
rational_adapter to rational_adaptor.
-
Add support for MPFI.
-
Add logged_adaptor.
-
Add support for 128-bit floats via GCC's
__float128
or Intel's _Quad
data types.
-
Add support for user-defined literals in cpp_int, improve
constexpr support.
-
Fixed bug in integer division of
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.
-
Fixed bug in subtraction of a single limb in
cpp_int
that results in incorrect value when the result should have a 0 in
the last limb: 8133.
-
Fixed bug in
cpp_int
where division of 0 by something doesn't get zero in the result:
8160.
-
Fixed bug in some transcendental functions that caused incorrect
return values when variables are reused, for example with
a = pow(a, b).
See 8326.
-
Polygon:
-
Updates and fixes to the Voronoi documentation.
-
Bugs fixed from Trac: #8026, #8197, #8257.
-
PropertyMap:
-
Added
compose_property_map
from Guillaume Pinot.
-
Range:
-
Bug fixes:
-
#6944 Some Range concepts use the incorrect Iterator concept
-
#7407 istream_range does not compile with wcin
-
#7408 istream_range should not pull istream
-
#7731 irange doesn't end iteration properly when step_size
is 3 or more
-
#7827 [range] cant compile r | indexed to range algorithm
-
#8338 Iterator range does not work with pointer to array
as iterator
-
#8453 Incorrect configuration macro BOOST_NO_PARTIAL_TEMPLATE_SPECIALIZATION
-
Signals:
-
No longer actively maintained, so it is deprecated. Use Signals2
for new development.
-
Thread:
-
New Features:
-
#7285
C++11 compliance: Allow to pass movable arguments for call_once.
-
#7445
Async: Add future<>.then
-
#7449
Synchro: Add a synchronized value class
-
Fixed Bugs:
-
#4878
MinGW 4.5.0 undefined reference to bool interruptible_wait(detail::win32::handle
handle_to_wait_for,detail::t imeout target_time).
-
#4882
Win32 shared_mutex does not handle timeouts correctly.
-
#5752
boost::call_once() is unreliable on some platforms
-
#6652
Boost.Thread shared_mutex.hpp:50:99: warning: dereferencing
type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
-
#6843
[Intel C++] Compile Errors with '#include <atomic>'
-
#6966
future boost::future_category inconsistent dll linkage
-
#7720
exception lock_error while intensive locking/unlocking of mutex
-
#7755
Thread: deadlock with shared_mutex on Windows
-
#7980
Build error: msvc-11.0 and BOOST_THREAD_DONT_USE_DATETIME
-
#7982
pthread_delay_np() parm compile error on AIX
-
#8027
thread library fails to compile with Visual Studio 2003
-
#8070
prefer GetTickCount64 over GetTickCount
-
#8136
boost::this_thread::sleep_for() sleeps longer than it should
in Windows
-
#8212
Boost thread compilation error on Solaris 10
-
#8237
fix documentation for 'thread_group'
-
#8239
barrier::wait() not marked as interruption_point
-
#8323
boost::thread::try_join_for/try_join_until may block indefinitely
due to a combination of problems in Boost.Thread and Boost.Chrono
-
#8337
The internal representation of "std::string(this->code()->message())"
escapes, but is destroyed when it exits scope.
-
#8371
C++11 once_flag enabled when constexpr is not available
-
#8443
Header file inclusion order may cause crashes
-
#8451
Missing documented function 'boost::scoped_thread::joinable'
-
#8530
[Coverity] Unused variable thread_handle, uninitialized variable
cond_mutex in thread/pthread/thread_data.hpp
-
#8596
With C++0x enabled, boost::packaged_task stores a reference
to function objects, instead of a copy.
-
Type Traits:
-
New type traits implemented #8189:
-
is_nothrow_move_constructible
-
is_nothrow_move_assignable
-
has_trivial_move_assign
-
has_trivial_move_constructor
-
uBLAS:
-
#6511 Division by scalar should use
enable_if<>
-
#7297 Make the free functions 'num_columns' and 'num_rows' support
the uBLAS traits system and better work with expression types
-
#6010 fixed linkage problems in assignment.hpp
-
updated doc
-
Unordered:
-
Some very basic
noexcept
support.
-
Utility:
-
Fix
basic_string_ref::find
(#8067).
-
Fix
string_ref's
logical operators.
-
Update noncopyable for C++11 (#6578).
-
Fix noncopyable compiler warning when used in DLL interface (#6935).
-
Fix using
boost::addressof with boost::function
on SolarisStudio compiler (#7079).
-
Disable annoying MSVC warning about operator comma (#7663)
-
Variant:
-
Now uses new type traits from Boost.TypeTrait to detect
noexcept constructors and assignment
operators #8296. This shall increase performance of boost::variant for many types in C++11.
-
Multivisitation implemented #8459.
-
Documentation updated to reflect C++11 features support.
-
Wave:
-
xpressive:
-
Remove unused variables, fixes #8039
-
Avoid name clash with macro
None
in glx.h, fixes #8204
-
Silence a gcc warning, fixes #8138
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
GCC: 4.4.7, 4.5.3, 4.6.2, 4.6.3, 4.7.3
-
GCC, C++98 mode: 4.7.3
-
GCC, C++11 mode: 4.7.2, 4.7.3, 4.8.0
-
Clang: 3.0, 3.1, 3.2
-
Clang, C++11 mode: 3.2
-
OS X:
-
GCC: 4.2
-
Apple Clang: 4.2.1
-
Apple Clang, C++11 mode: 4.2.1
-
Windows:
-
GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.2, 4.8.0
-
Visual C++: 8.0, 9.0, 10.0, 11.0
-
FreeBSD:
Boost's additional test compilers include:
-
Linux:
-
Clang: 3.0, 3.1, 3.2, from Subversion
-
Clang, with libc++: 3.2
-
GCC: 4.4.7, 4.5.3, 4.6.2, 4.6.3, 4.7.2, 4.7.3
-
GCC, C++98 mode: 4.7.3
-
GCC, C++11 mode: 4.7.3, 4.8.0
-
OS X:
-
Apple Clang: 4.2.1
-
Apple Clang, C++11 mode: 4.2.1
-
Clang: from Subversion
-
Clang, C++11 mode: from Subversion
-
GCC: 4.2
-
Windows:
-
GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.2, 4.8.0
-
Visual C++: 9.0, 10.0, 11.0
-
Visual C++, Windows Mobile 5, with STLport: 9.0
-
AIX:
-
IBM XL C/C++ Enterprise Edition: 12.1.0.1
-
FreeBSD:
Acknowledgements
Beman Dawes, Eric Niebler,
Rene Rivera, Daniel James,
Vladimir Prus and Marshall Clow managed this release.