Version 1.55.0
November 11th, 2013 19:50 GMT
Documentation
Other Downloads
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's allocator_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
-
Log patch:
fixes incorrect output of the dump
manipulator, when used on AVX2-enabled CPU (e.g. Intel Haswell).
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
-
Accumulators:
-
#7915 Fix silly typos.
-
#8850 Fix MSVC warnings.
-
#8262 Rename
average
to fdiv.
-
Any:
-
boost::bad_any_cast exception is now visible
across modules #8751.
-
Added
clear()
member function.
-
Added missing
BOOST_NOEXCEPT.
-
Fixed issue with const rvalues #9215.
-
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 and socket_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 treat ERROR_MORE_DATA
as a non-fatal error when returned by GetOverlappedResult
for a synchronous read (#8722).
-
Visual C++ language extensions use
generic
as a keyword. Added a workaround that renames the namespace to cpp_generic when those language
extensions are in effect.
-
Fixed some asynchronous operations that missed out on getting
async_result support in Boost 1.54.
In particular, the buffered stream templates have been updated so
that they adhere to current handler patterns (#9000, #9001).
-
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.
-
Fixed various minor and cosmetic issues in code and documentation
(including #8347, #8950, #8953, #8965, #8997).
-
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.
-
Chrono:
-
Fixed Bugs:
-
#7868
chrono_io parses
time incorrectly (1.53 and 1.52)
-
#9028
Typo in
boost/chrono/stopwatches/formatters/base_formatter.hpp
-
#9147
uninitialized
std::tm
-
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.
-
Container:
-
Context:
-
Coroutine:
-
New interface (unidirectional data transfer).
-
#8782
no best alternative
-
#8801
auto-linking
-
Filesystem:
-
Fixed Android compilation #8706.
-
Fusion:
-
#8759 specialization of
convert_impl
for map_tag
-
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. Use boost::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,
and dijkstra_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.
-
Bugs and feature requests from Trac fixed: #5269, #8317,
#8433, #8791, #8877, #8986, #9012, #9080.
-
Hash:
-
Simplify a SFINAE check so that it will hopefully work on Sun 5.9
(#8822).
-
Suppress Visual C++ infinite loop warning (#8568).
-
Interprocess:
-
Intrusive:
-
Source breaking: Deprecated
xxx_dont_splay functions from splay
containers. Deprecated splay_set_hook
from splay containers, use bs_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:
-
std::bad_alloc exceptions are now are
not converted to boost::bad_lexical_cast
#8966.
-
Added static assert that checks for
std::numeric_limits
specializations if they are required for conversion. Use BOOST_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 when QueryPerformanceCounter
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.
-
Closed tickets: #8815, #8819, #8915, #8917,
#9139, #9140, #9153, #9155.
-
See changelog
for more details.
-
Math:
-
Suppress numerous warnings (mostly from GCC-4.8 and MSVC) #8384,
#8855,
#9107,
#9109..
-
Fixed PGI compilation issue #8333.
-
Fixed PGI constant value initialization issue that caused erf to
generate incorrect results #8621.
-
Prevent macro expansion of some C99 macros that are also C++ functions
#8732
and #8733..
-
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 library long
double support #8940.
-
Fix error handling of distributions to catch invalid scale and location
parameters when the random variable is infinite #9042
and #9126.
-
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.
-
Move:
-
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
-
Phoenix:
-
#9049
phoenix::function
constructor is constexpr.
-
Polygon:
-
Updated CGAL part of the Voronoi benchmark with patches from Sebastien
Loriot. Updated documentation.
-
Added polygon decomposition capability to polygon_90_set_data container
(patch from Intel). Updated documentation.
-
Bugs fixed from Trac: #8197.
-
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 and
max_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 for intrusive_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).
-
Timer:
-
Fixed compilation on Intel compiler #8956.
-
Type Traits:
-
Added
is_copy_contructible
trait #8802.
-
Unordered:
-
Avoid some warnings (#8851, #8874).
-
Avoid exposing some detail functions via. ADL on the iterators.
-
Work around variadic parameter bug in Visual Studio 2013. The compiler
still has problems with initializer lists, but it might not be possible
to work around those.
-
Utility:
-
boost::result_of can be set to use TR1
protocol by default and fall back to decltype
if the function object does not support it (like C++11 lambda functions,
for example). Define BOOST_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 and boost/utility/empty_deleter.hpp
headers, which were extracted from Boost.Log. The headers implement
utilities for defining explicit conversion operators to bool 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.
-
Wave:
-
xpressive:
-
#8843 throw instead of assert at incomplete charset
-
#8880 remove unused local typedef
-
#8882 use RAII instead of try/catch in sequence_stack.hpp
-
#8474 make xpressive play nice with clang's -Wimplicit-fallthrough
diagnostic
Updated Tools
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.