Version 1.55.0
Version 1.55.0
November 11th, 2013 19:50 GMT
Platform | File |
---|---|
unix | boost_1_55_0.tar.bz2 |
boost_1_55_0.tar.gz | |
windows | boost_1_55_0.7z |
boost_1_55_0.zip |
Other Downloads
-
PDF documentation (only for BoostBook based documentation).
News
Support was removed from Config for some very old versions of compilers. The new minimum requirements are:
-
Digitial Mars 8.41
-
GCC 3.3
-
Intel 6.0
-
Visual C++ 7.1
Note: This is just the mininimum requirements for Config. Some Boost libraries may have higher mininimum requirements and not support all platforms or compilers.
Other compilers are currently unchanged, but we are considering removing support for some other old compilers. Candidates for removal are:
-
Metroworks C++ (i.e. codewarrior)
-
SunPro 5.7 and earlier
-
Borland C++ Builder 2006 (5.82) and earlier
If you're using any of these, please let us know on the mailing lists. We will take into account any feedback received before making a decision.
Known Bugs with Visual Studio 2013/Visual C++ 12
Visual Studio 2013 was released quite late in the release process, so there exist several unresolved issues. These include:
-
Serialization can't compile because of a missing include.
-
Using
has_member_function_callable_with
from Boost.Container'sallocator_traits
causes a compile error (#9332). -
In libraries such as Unordered and MultiIndex, calling overloaded functions with initializer lists can result in a compile error, with Visual C++ claiming that the overloads are ambiguous. This is a Visual C++ bug and it isn't clear if there's a good workaround. This won't affect code that doesn't use initializer lists, or uses an initializer list that doesn't require an implicit conversion (i.e. an initializer list of the container's exact value type).
-
Thread:
ex_scoped_thread
compile fails (#9333).
Patches
New Libraries
-
Predef: This library defines a set of compiler, architecture, operating system, library, and other version numbers from the information it can gather of C, C++, Objective C, and Objective C++ predefined macros or those defined in generally available headers, from Rene Rivera.
Updated Libraries
-
Asio:
-
Implemented a limited port to Windows Runtime. This support requires that the language extensions be enabled. Due to the restricted facilities exposed by the Windows Runtime API, the port also comes with the following caveats:
-
The core facilities such as the
io_service
,strand
, buffers, composed operations, timers, etc., should all work as normal. -
For sockets, only client-side TCP is supported.
-
Explicit binding of a client-side TCP socket is not supported.
-
The
cancel()
function is not supported for sockets. Asynchronous operations may only be cancelled by closing the socket. -
Operations that use
null_buffers
are not supported. -
Only
tcp::no_delay
andsocket_base::keep_alive
options are supported. -
Resolvers do not support service names, only numbers. I.e. you must use "80" rather than "http".
-
Most resolver query flags have no effect.
-
-
Fixed a regression (introduced in Boost 1.54) where, on some platforms, errors from
async_connect
were not correctly propagated through to the completion handler (#8795). -
Fixed a Windows-specific regression (introduced in Boost 1.54) that occurs when multiple threads are running an
io_service
. When the bug occurs, the result of an asynchronous operation (error and bytes transferred) is incorrectly discarded and zero values used instead. For TCP sockets this results in spurious end-of-file notifications (#8933). -
Fixed a bug in handler tracking, where it was not correctly printing out some handler IDs (#8808).
-
Fixed the comparison used to test for successful synchronous accept operations so that it works correctly with unsigned socket descriptors (#8752).
-
Ensured the signal number is correctly passed to the completion handler when starting an
async_wait
on a signal that is already raised (#8738). -
Suppressed a g++ 4.8+ warning about unused typedefs (#8980).
-
Enabled the move optimisation for handlers that use the default invocation hook (#8624).
-
Clarified that programs must not issue overlapping
async_write_at
operations (#8669). -
Changed the Windows
HANDLE
backend to treatERROR_MORE_DATA
as a non-fatal error when returned byGetOverlappedResult
for a synchronous read (#8722). -
Visual C++ language extensions use
generic
as a keyword. Added a workaround that renames the namespace tocpp_generic
when those language extensions are in effect. -
Enabled move support for Microsoft Visual Studio 2012 (#8959).
-
Added
use_future
support for Microsoft Visual Studio 2012. -
Removed a use of
std::min
in the Windows IOCP backend to avoid a dependency on the<algorithm>
header (#8758). -
Eliminated some unnecessary handler copies.
-
-
Atomic:
-
Added support for 64-bit atomic operations on x86 target for GCC, MSVC and compatible compilers. The support is enabled when it is known at compile time that the target CPU supports required instructions.
-
Added support for 128-bit atomic operations on x86-64 target for GCC and compatible compilers. The support is enabled when it is known at compile time that the target CPU supports required instructions. The support can be tested for with the new
BOOST_ATOMIC_INT128_LOCK_FREE
macro. -
Added a more efficient implementation of
atomic<>
based on GCC__atomic*
intrinsics available since GCC 4.7. -
Added support for more ARM v7 CPUs, improved detection of Thumb 2.
-
Added support for x32 (i.e. 64-bit x86 with 32-bit pointers) target on GCC and compatible compilers.
-
Removed dependency on Boost.Thread.
-
Internal lock pool now includes proper padding and alignment to avoid false sharing.
-
Fixed compilation with Intel compiler on Windows. Removed internal macro duplication when compiled on Windows.
-
Some code refactoring to use C++11 features when available.
-
-
Circular Buffer:
-
Added support for rvalue references and rvalue references emulation using Boost.Move. Values are moved only if value type has noexcept move constructor and noexcept move assignment operator #7888. Now Circular Buffer is usable with move-only types.
-
Much better documentation.
-
#5362 circular_buffer does not compile with
BOOST_NO_EXCEPTIONS
. -
#7025 circular buffer reports warning: " type qualifiers ignored on function return type" while compile.
-
#7950 Eliminate W4-warnings under VS2005 - warning C4913: user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used.
-
-
Config:
-
Breaking change: Removed support for some older compilers. The new minimum compiler versions are:
-
Digitial Mars 8.41
-
GCC 3.3
-
Intel 6.0
-
Visual C++ 7.1
Other compilers are unchanged. -
-
-
Filesystem:
-
Fixed Android compilation #8706.
-
-
Geometry:
-
Additional functionality
-
Added centroid for segment type
-
Added intersects() and disjoints() for Segment-Box and Linestring-Box
-
Added rtree creation using packing algorithm
-
Added contains() and covers() spatial query predicates
-
Added iterative queries
-
-
Bugfixes
-
In some cases .back() or .clear() was called, violating the usage of Concepts. Fixed for the reported cases
-
-
Solved tickets
-
6958 Intersection generates self-intersection. Caused by spike, fixed
-
8364 Invalid input exception, caused by spikes in previous steps, fixed
-
8365 Invalid input exception, caused by spikes in previous steps, fixed
-
8969 boost::geometry::model::point single argument constructor should be explicit
-
8825 Patch adding member variable documentation to doxygen_xml2qbk
-
8652 Intersection fails for triangle-triangle intersection. Caused by spike, fixed
-
9047 Boost files that include themselves (strategies/intersection.hpp), fixed
-
-
-
Graph:
-
void
is no longer allowed as a bundled property type (for example, in the VertexProperties template parameters to graph types); it did not work reliably before, but a static assertion now forbids it entirely. Useboost::no_property
instead. -
Added support for
finish_edge
visitor event point in depth-first search; the change should be backward-compatible with visitors that do not have that member function. -
Disabled building of tests on Sun compiler.
-
Multiple source vertices are supported in non-named-parameter versions of
breadth_first_visit
,breadth_first_search
,dijkstra_shortest_paths
, anddijkstra_shortest_paths_no_init
. This feature is not yet documented; to use it, replace the single parameter for the source vertex in each of these functions by two input iterators of the same type containing the source vertices to use. -
Added Hawick circuits algorithm; contributed by Louis Dionne.
-
Added edge coloring algorithm; contributed by Maciej Piechotka.
-
Added min-cost max-flow algorithm; contributed by Piotr Wygocki.
-
-
Intrusive:
-
Source breaking: Deprecated
xxx_dont_splay
functions from splay containers. Deprecatedsplay_set_hook
from splay containers, usebs_set_hook
instead. Both will be removed in Boost 1.56. -
ABI breaking: Hash containers' end iterator was implemented pointing to one-past the end of the bucket array (see #8698) causing severe bugs when values to be inserted where allocated next to the bucket array. End iterator implementation was changed to point to the beginning of the bucket array.
-
Big refactoring in order to reduce template and debug symbol bloat. Test object files have been slashed to half in MSVC compilers in Debug mode. Toolchains without Identical COMDAT Folding (ICF) should notice size improvements.
-
Implemented SCARY iterators.
-
-
Lexical cast:
-
Added static assert that checks for
std::numeric_limits
specializations if they are required for conversion. UseBOOST_HAS_INT128
for detecting 128 bit integers support #8790. -
Documentation improved and more usage examples added.
-
Log:
-
General changes:
-
Added a new configuration macro
BOOST_LOG_WITHOUT_DEFAULT_FACTORIES
. By defining this macro the user can disable compilation of the default filter and formatter factories used by settings parsers. This can substantially reduce binary sizes while still retaining support for settings parsers. -
Rewritten some of the parsers to reduce the compiled binary size. The rewritten parsers are more robust in detecting ambiguous and incorrect input.
-
The following headers are deprecated:
boost/log/utility/intrusive_ref_counter.hpp
,boost/log/utility/explicit_operator_bool.hpp
,boost/log/utility/empty_deleter.hpp
. These headers will be removed in future releases. The contents of these headers were moved to other libraries.
-
-
Bug fixes:
-
Fixed
timer
attribute generating incorrect time readings on Windows on heavy thread contention whenQueryPerformanceCounter
API was used. -
Fixed a bug in the filter parser that prevented using parsed filters with some attributes.
-
Fixed thread id formatting discrepancies between the default sink and formatters.
-
-
See changelog for more details.
-
-
Math:
-
Fixed PGI compilation issue #8333.
-
Fixed PGI constant value initialization issue that caused erf to generate incorrect results #8621.
-
Fixed Student's T distribution to behave correctly with huge degrees of freedom (larger than the largest representable integer) #8837.
-
Make some core functions usable with
long double
even when the platform has no standard librarylong double
support #8940. -
Add workaround for broken <tuple> in Intel C++ 14 #9087.
-
Improve consistency of argument reduction in the elliptic integrals #9104.
-
Fix bug in inverse incomplete beta that results in cancellation errors when the beta function is really an arcsine or Student's T distribution.
-
Fix issue in Bessel I and K function continued fractions that causes spurious over/underflow.
-
Add improvement to non-central chi squared distribution quantile due to Thomas Luu.
-
Meta State Machine:
-
New feature: interrupt states now support a sequence of events to end the interruption.
-
Fixed Trac #8686.
-
-
Multiprecision:
-
Added support for Boost.Serialization.
-
Suppressed some GCC warnings. See 8872.
-
Fixed bug in pow for large integer arguments. See 8809.
-
Fixed bug in pow for calculation of 0[super N]. See 8798.
-
Fixed bug in fixed precision cpp_int IO code that causes conversion to string to fail when the bit count is very small (less than CHAR_BIT). See 8745.
-
Fixed bug in cpp_int that causes left shift to fail when a fixed precision type would overflow. See 8741.
-
Fixed some cosmetic warnings from cpp_int. See 8748.
-
Fixed calls to functions which are required to be macros in C99. See 8732.
-
Fixed bug that causes construction from INT_MIN, LONG_MIN etc to fail in cpp_int. See 8711.
-
-
Multi-index Containers:
-
Boost.MultiIndex has been brought to a higher level of compliance with C++11.
-
multi_index_container
is now efficiently movable. -
Initializer lists supported.
-
Emplace functions provided.
-
Non-copyable elements (such as
std::unique_ptr<T>
) supported. This includes insertion of a range [first
,last
) where the iterators point to a type that is convertible to that of the element: no copy construction happens in the process. -
Random access indices provide
shrink_to_fit()
.
Refer to the compiler specifics section for limitations on pre-C++11 compilers. -
-
The following classes are deprecated:
-
Maintenance fixes.
-
-
MPI:
-
Replaced calls to deprecated MPI functions
-
Added support for multi-threaded initialization
-
Added in-place collectives
-
-
PropertyMap:
-
dynamic_properties objects can now be built by non-destructively chaining
.property(name, pm)
calls. Example:boost::dynamic_properties() .property("color", color_map) .property("pos", position_map)
-
The use of raw pointers as property maps is deprecated; it often failed on Visual Studio in the past. This usage has been removed from all tests and examples in Boost.Graph. The replacement to use for vertex properties in graphs (the most common use for this feature) is:
boost::make_iterator_property_map( <pointer or container .begin() iterator>, get(boost::vertex_index, <graph object>))
(Note: the lack of namespace qualification on get() in this code is necessary for generic code). Outside a graph context, the closest equivalent is:boost::make_iterator_property_map( <pointer>, boost::typed_identity_property_map<std::size_t>())
There are commented-out static assertions on lines 151 and 159 of<boost/property_map/property_map.hpp>
that can be un-commented to find deprecated uses of pointers in user code.
-
-
Rational:
-
Added
lowest
andmax_digits10
, members of std::numeric_limits added in C++11, to the unit-test code. Needed since Boost.Test refers to one of them when compiled in C++11 mode. -
Changed initialization of some internal variables to something that cannot be a narrowing conversion, which fixes issue #5855. Needed since narrowing conversions are an error in C++11.
-
-
SmartPtr:
-
Added
boost/smart_ptr/intrusive_ref_counter.hpp
header, extracted from Boost.Log. The header implements a mixin base class that adds support forintrusive_ptr
to user's classes.
-
-
Thread:
-
New Features:
-
#8519 Synchro: Update class barrier with a completion function.
-
#8515 Async: Add
shared_future::then
. -
#8519 Synchro: Update class barrier with a completion function
-
#8615 Async: Replace make_future/make_shared_future by make_ready_future.
-
#8627 Async: Add future<>::unwrap and unwrapping constructor.
-
#8677 Async: Add future<>::get_or.
-
#8678 Async: Add future<>::fallback_to.
-
#8891 upgrade_to_unique_lock: missing mutex() function.
-
#8955 Request for more efficient way to get exception_ptr from future.
-
-
Fixed Bugs:
-
#7461 detail::win32::ReleaseSemaphore may be called with count_to_release equal to 0
-
#8070 prefer GetTickCount64 over GetTickCount
-
#8768 win32 condition_variable::wait_until infinite wait in rare cases.
-
#8817 Boost Thread Windows CE _createthreadex handling breaks mingw w64.
-
#8943 Failed to compile code using boost::call_once with Intel C++ Composer XE 2013 on Windows.
-
#8931 Typos in external_locking reference.
-
#9029 Misprint in documentation.
-
#9037 gcc -Wshadow gives warnings in condition_variable{,_fwd}.hpp.
-
#9041 Boost.Thread DSO's may need to link with Boost.Atomic.
-
#9048 boost::scoped_thread useless ctor with variadic template arguments.
-
#9079 Condition variable will wait forever for some timepoint values (Win).
-
-
-
Type Traits:
-
Added
is_copy_contructible
trait #8802.
-
-
Utility:
-
boost::result_of
can be set to use TR1 protocol by default and fall back todecltype
if the function object does not support it (like C++11 lambda functions, for example). DefineBOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
configuration macro to enable this mode. -
Improved support for C++11 in the
boost::base_from_member
class template. The class implements perfect forwarding for the constructor arguments, if the compiler supports rvalue references, variadic templates and function template default arguments. -
Added
boost/utility/explicit_operator_bool.hpp
andboost/utility/empty_deleter.hpp
headers, which were extracted from Boost.Log. The headers implement utilities for defining explicit conversion operators tobool
and a deleter function object that does nothing, respectively.
-
-
Variant:
-
Fixed compilation of constructor and assignment operator with const rvalues input parameters #8988.
-
Fixed compilation of move assignment operator for situations when one of the variant template classes has nothrow copy constructor and throwing move constructor #8772.
-
Fix compilation on exception-disabled environments #8717.
-
Fix unreachable code warnings #8665.
-
Removed duplicate code #7601.
-
Updated Tools
-
Quickbook:
-
Quickbook 1.6 finalized, see the Quickbook documentation for details.
-
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.3, 3.2, 3.1, 3.0
-
Clang, C++11, libc++: 3.4, 3.3
-
GCC: 4.8.1, 4.7.3, 4.6.3, 4.5.3, 4.4.7
-
GCC, C++11: 4.8.1
-
GCC, C++98: 4.8.1
-
-
OS X:
-
GCC: 4.2
-
Apple Clang: 5.0
-
Apple Clang, C++11: 5.0
-
-
Windows:
-
GCC, mingw: 4.8.0, 4.7.2, 4.6.3, 4.5.4, 4.4.7
-
Visual C++: 11.0, 10.0, 9.0
-
Boost's additional test compilers include:
-
OS X:
-
Apple Clang: 5.0
-
Apple Clang, C++11: 5.0
-
Clang: trunk
-
Clang, C++11: trunk
-
GCC: 4.2.1
-
-
Linux:
-
Clang: 3.3, 3.2, 3.1, 3.0, trunk
-
Clang, C++11: 3.4
-
Clang, C++11, libc++: 3.4, 3.3
-
GCC: 4.9.0 (experimental), 4.8.1, 4.7.3, 4.6.4, 4.5.3, 4.4.7
-
GCC, C++11: 4.8.1
-
GCC, C++98: 4.8.1
-
Intel: 13.0.1, 12.1.6
-
-
Windows:
-
GCC, mingw: 4.8.0, 4.7.2, 4.6.3, 4.5.4, 4.4.7
-
Visual C++: 11.0, 10.0, 9.0
-
Acknowledgements
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow managed this release.