Version 1.54.0
Version 1.54.0
July 1st, 2013 17:10 GMT
Platform | File |
---|---|
unix | boost_1_54_0.tar.bz2 |
boost_1_54_0.tar.gz | |
windows | boost_1_54_0.7z |
boost_1_54_0.zip |
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.
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: Logging library, from Andrey Semashev.
-
TTI: Type Traits Introspection library, from Edward Diener.
-
Type Erasure: Runtime polymorphism based on concepts.
Updated Libraries
-
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 astd::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'.
-
-
Asio:
-
Added new traits classes,
handler_type
andasync_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. Thespawn()
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++11std::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. Theasio_handler_is_continuation
hook can be customised to returntrue
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
andgeneric::stream_protocol
, which implement theProtocol
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 ageneric::stream_protocol::socket
via move construction. -
Extended the
basic_socket_acceptor<>
class'saccept()
andasync_accept()
functions to allow a new connection to be accepted directly into a socket of a more generic type. For example, anip::tcp::acceptor
can be used to accept into ageneric::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'shandshake()
andasync_handshake()
functions have been added. These accept aConstBufferSequence
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 thessl::context
andssl::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()
anduse_tmp_dh()
, have been added to thessl::context
class. -
Changed
ssl::context
to automatically disable SSL compression by default. To enable, use the newssl::context::clear_options()
function, as inmy_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 anytime_point
value without overflowing the intermediate duration objects. -
Fixed a problem with lost thread wakeups that can occur when making concurrent calls to
run()
andpoll()
on the sameio_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:
-
-
Circular Buffer:
-
Fixed warnings (#8032).
-
-
Context:
-
Support for SPARC architecture added.
-
-
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:
-
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)
-
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 defineBOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME
from command line ordetail/workaround.hpp
.
-
-
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
andairy_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
-
-
Multiprecision:
-
Breaking change renamed
rational_adapter
torational_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 ofcpp_int
when both arguments are small enough to fit in adouble_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.
-
-
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
-
-
-
Thread:
-
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
-
-
-
Unordered:
-
Some very basic
noexcept
support.
-
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:
-
GCC: 4.2.1
-
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:
-
GCC: 4.2.1
-
Acknowledgements
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow managed this release.