Version 1.62.0
September 28th, 2016 15:17 GMT
Documentation
Third Party Downloads
New Libraries
- Fiber:
-
Framework for userland-threads/fibers,
from Oliver Kowalke.
- QVM:
-
Boost is a
generic library for working with quaternions, vectors and matrices of static
size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics,
video games and simulation applications, from Emil Dotchevski.
Updated Libraries
-
Atomic:
-
Improved support for Oracle Studio and SPARC. The library now provides
native atomic operations on SPARCv8+.
-
Chrono:
-
#11330
boost::chrono::duration default constructor doesn't initialize rep_
-
#11618
Chrono IO V2 doc ios_state.hpp does not exist
-
#11631
boost chrono io v2 does not let you support custom clocks
-
Circular Buffer:
-
Debug implementation is no longer used by default in debug mode.
Debug implementation does not have the same thread safety guarantees
as the normal (release) implementation or other containers. As a
result of this change
BOOST_CB_DISABLE_DEBUG
macro is no longer used. BOOST_CB_ENABLE_DEBUG=1
should be defined instead to enable debug support. (#6277)
-
Container:
-
Fixed bugs:
-
Revised noexcept expressions of default and move constructors in
all containers.
-
Implemented C++17
insert_or_assign/try_emplace for map
and flat_map.
-
Implemented C++17
extract/insert(node)
for map, multimap, set, multiset.
-
Context:
-
#12215 all stack corrupted on Windows using default fixedsize_stack
-
#12242 build issue with Intel C++ compiler for MacOS
-
fix stack unwinding for execution_context_v1
-
Coroutine:
-
deprecated in favour of Coroutine2
-
Coroutine2:
-
#12221 coroutine<>::push_type function starts without pushing
-
do not swallow exceptions thrown at coroutine<>::push_type
construction
-
DLL:
-
Mangled symbols and classes loading was implemented by Klemens Morgenstern
-
Suppress a 'unused parameter' warning in detail::aggressive_ptr_cast
pull-request
9
-
Allowed to query non-existant sections pull-request
32
-
More tests and docs
-
Functional/Forward:
-
Geometry:
-
Improvements:
-
Union: take care that output is valid (with some exceptions),
also with self-tangent polygons or shared edges
-
SVG: support boost::variant of geometries
-
SVG: coordinates are now written as double (by default) to
svg
-
Rename namespace concept to concepts to avoid conflicts with
the newest compilers
-
New spherical intersection strategy used in relational and
set operations for spherical and geographic Geometries (previously
cartesian intersection strategy was used for all coordinate
systems).
-
Solved tickets:
-
#12189
Relational operations not compiling when point types of inputs
are different
-
#12287
Invalid result of rtree.query() for contains() predicate
-
Interprocess:
-
Intrusive:
-
Lexical Cast:
-
Fix incorrect static assertion #11759
-
Log:
-
New features:
-
Added new tools for inter-process logging on a local machine.
The implementation includes a resource name wrapper, an inter-process
message queue and a sink backend.
-
Added a new character decorator called
max_size_decor.
The new decorator allows to limit the output of its adopted
formatter up to the specified length.
-
Bug fixes:
-
Fixed that logging streams could retain formatting settings
across different log records. (#12178)
-
See changelog
for more details.
-
Math:
-
New Features:
-
Enabled all the special function code to work correctly with
types whose precision can change at runtime: for example type
mpfr_float
from Boost.Multiprecision.
-
Patches:
-
Fix
tgamma_delta_ratio
for cases where the delta is small compared to the base.
-
Fix misc GCC-4.4 test failures.
-
Optional:
-
Phoenix:
-
Fix compilation for MSVC 10. pull-request
18
-
Remove unused preprocessed files. pull-request
28
-
Fix erroneous doc for switch_ statement. #8156
-
Cleanup config unordered. pull-request
33
-
Suppress unused placeholder warnings.
-
Fix too few arguments error on binary math functions.
-
Regex:
-
Fix buffer over-run error when parsing certain invalid regexes, see
#12222.
-
Fix detection of ICU in library build, see #12152.
-
Fix bug in case sensitivity change, see #11940.
-
Allow types wider than int in
\x{}
expressions (for char32_t etc), see #11988.
-
Test:
-
Boost.test v3.3 see the Change
log section for more details.
-
New features
-
dataset driven test-cases have now a unique name and all sample
tests of a dataset live inside the same test suite
-
Boost.test learned a new command line switch,
--logger
for setting a test logger as well as its parameter in one command
-
Boost.test learned to have several loggers at the same time,
each of which having their own log level and output stream
-
Boost.test learned a new logger,
JUNIT,
that is able to output Junit/xUnit compatible streams
-
It is now possible to specify several test filters through
the environment variable
BOOST_TEST_RUN_FILTERS
-
Bug fixes
-
Trac tickets #8707, #8834, #11128, #11845,
#11859, #12024,
-
Trac tickets #12093, #12103, #12224, #12241,
#12257, #12378
-
Pull request PR81
-
Thread:
-
#12102
condition_variable_fwd.hpp fails to compile when BOOST_THREAD_PROVIDES_INTERRUPTIONS
is disabled
-
#12120
Performance improvement in thread/barrier.hpp
-
#12146
make_exceptional_future is not mentioned in the docs
-
#12202
shared_lock should be in shared_mutex header
-
#12371
boost thread/future.hpp fails to build
-
#88 fix typos in boost::upgrade_lock
-
#89 fix a bug in upgrade_to_unique_lock<>::operator=()
-
#90 fix a bug in try_lock_wrapper<>::operator=()
-
#91 Add shared_lock_guard to the included lock types
-
#92 Fixed compilation with MSVC-8.
-
#93 Fix variable shadowing warnings (Clang)
-
#94 fix bugs in boost::barrier
-
#95 fix a mistake in boost::completion_latch
-
#96 rename async_func.hpp to invoker.hpp.
-
#97 fix a mistake in sync_timed_queue<>::pull_until()
-
TypeIndex:
-
ctti_type_index was
made constexpr in C++14. Now it is possible to retrieve actual name
of the type as const char*
at compile time. So we can do a lot of interesting things at compile time: check namespace of a type, sort
types according to their lexical representation, check that type
is a template type and so on... A few examples were provided.
-
Fixed issue with
noexcept
on MSVC in type names and issue with space in type name (pulled from
klemens-morgenstern/develop)
-
Fixed typos pull-request
7
-
Improved CI testing
-
Unordered:
-
Remove use of deprecated
boost::iterator.
-
Fixed an exception safety issue in assignment of
unordered_multiset
and unordered_multimap.
-
See the changelog
for more details.
-
Variant:
-
Fixed variant construction from classes derived from variant #7120,
#10278, #12155
-
Variant constructors and assignment operators now do not participate
in overload resolutions if variant can not hold the input type #5871,
#11602
-
Fixed the issue with implicit conversion operator in C++11 #8555
-
Fixed comparisons when variant holds non-const reference #11751
-
Fixed noexcept for variant's move-assignment #11696
-
Fixed double quotes in includes #12057
-
Dropped BOOST_VARIANT_NO_REFERENCE_SUPPORT macro and dropped support
for compilers without SFINAE #12250
-
Suppress implicit instantiation of MPL end iterator
-
Multiple minor fixes (typos, missing includes)
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.0, 3.8.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.0
-
Clang, C++14: 3.5, 3.6, 3.7, 3.8.0, 3.8.1, 3.9.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.1.1
-
GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1
-
GCC, C++14: 5.2.0, 5.3.0, 5.4.1, 6.1.1
-
Intel: 16.0
-
Intel, C++11: 16.0
-
Intel, C++14: 16.0
-
Windows:
-
GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
-
GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
-
GCC, C++14, mingw: 6.1.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
-
Android:
-
Clang: 3.6, 3.7, 3.8
-
GCC: 4.9, 5.4, 6.1
-
FreeBSD:
-
Clang: 3.4.1, 3.7
-
GCC: 4.8.5, 5.4.0, 6.1.1
-
QNX:
-
SunOS:
-
Oracle Solaris Studio: 12.5
-
Oracle Solaris Studio, C++11: 12.5
Boost's additional test compilers include:
-
Linux:
-
Clang: 3.0, 3.8
-
Clang, c++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8
-
Clang, c++14: 3.5, 3.6, 3.7, 3.8, 3.9
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 4.8.4, 5.2.0, 6.1.1
-
GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1
-
GCC, C++14: 5.2.0, 5.3.0, 5.4.1, 6.1.1, 7.0.0 (experimental)
-
Intel: 16.0
-
Intel, C++11: 16.0
-
Intel, C++14: 16.0
-
OS X:
-
Apple Clang: 7.3.0
-
G++: 6.1.0
-
Windows:
-
Clang: 3.8.1
-
GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
-
GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
-
GCC, C++14, mingw: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0
-
GCC, cygwin: 5.4.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
-
Android:
-
Clang: 3.6, 3.7, 3.8
-
GCC: 4.9, 5.4, 6.1
-
FreeBSD:
-
Clang, C++11: 3.4.1, 3.7.0
-
GCC, C++11: 4.8.5. 5.4.0, 6.1.1
-
Haiku:
-
QNX:
-
SunOS:
-
Oracle Solaris Studio: 12.5
-
Oracle Solaris Studio, C++11: 12.5
Acknowledgements
Beman Dawes, Eric Niebler,
Rene Rivera, Daniel James,
Vladimir Prus and Marshall Clow managed this release.