Version 1.67.0
Version 1.67.0
April 14th, 2018 20:37 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_67_0.tar.bz2 | 2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba |
boost_1_67_0.tar.gz | 8aa4e330c870ef50a896634c931adf468b21f8a69b77007e45c444151229f665 | |
windows | boost_1_67_0.7z | 1cd94f03a71334a67d36f5161b57f5931e0cd6ecf726d7aca8bd82a3be720b74 |
boost_1_67_0.zip | 7e37372d8cedd0fd6b7529e9dd67c2cb1c60e6c607aed721f5894d704945a7ec |
Third Party Downloads
Known Issues
These are patches from library authors which were found too late to be fixed in the release. Be careful as they have not been through the normal testing process.
-
Fix Python auto-linking:
New Libraries
-
Contract: Contract programming for C++. All contract programming features are supported: Subcontracting, class invariants, postconditions (with old and return values), preconditions, customizable actions on assertion failure (e.g., terminate or throw), optional compilation and checking of assertions, etc, from Lorenzo Caminiti.
-
HOF: Higher-order functions for C++, from Paul Fultz II.
Updated Libraries
-
Asio:
-
Added missing const qualifier to
basic_socket_acceptor::get_option
. -
Worked around a parsing error that occurs with some versions of gcc.
-
Fixed broken code samples in tutorial.
-
Added new experimental features. (Note that "experimental" features may be changed without notice in subsequent releases.)
-
Added
experimental::detached
completion token. -
Added
experimental::redirect_error
completion token. -
Added
experimental::co_spawn
facility for integration with the coroutines technical specification. -
Updated timeout examples to use latest features.
-
Used
asio::steady_timer
rather thanasio::deadline_timer
. -
Used
asio::dynamic_buffer
rather thanasio::streambuf
. -
Used timed
asio::io_context::run_for()
function for blocking clients. -
Added example showing a custom completion token for blocking with timeouts.
-
-
Fixed unit tests to compile when
BOOST_ASIO_NO_DEPRECATED
is defined. -
Changed socket iostreams to use chrono by default, to fix compatibility with the Networking TS. Define
BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM
to enable the old Boost.Date_Time interface inbasic_socket_streambuf
andbasic_socket_iostream
. -
Updated examples to use chrono rather than Boost.Date_Time.
-
Fixed an incorrect member function detector in the
is_dynamic_buffer
trait. -
Fixed an
async_result
incompatibility with deprecatedhandler_type
. -
Added a missing move optimisation in the SSL stream implementation.
-
Fixed incorrect
basic_resolver_results::value_type
typedef. -
Fixed a compile error with some OpenSSL versions when
SSL_OP_NO_COMPRESSION
is defined. -
Changed
add_certificate_authority
to process multiple certificates in a bundle. -
Eliminated deprecation warning with MSVC by using
std::invoke_result
rather thanstd::result_of
. -
Changed to use
std::string_view
for C++17 or later, andstd::experimental::string_view
for C++14. Define the preprocessor macroBOOST_ASIO_DISABLE_STD_STRING_VIEW
to force the use of std::experimental::string_view (assuming it is available) when compiling in C++17 mode. -
Ensured
DynamicBuffer
template arguments are decayed before using inenable_if
tests. -
Changed documentation to distinguish legacy completion handlers (which are still required to be CopyConstructible) from new MoveConstructible handlers.
-
Suppressed a discarded return value warning in the buffer debugging support.
-
Fixed
basic_yield_context
to work with completion signatures containing reference parameters. -
Ensured that stackful coroutines launched using
spawn()
correctly store decayed copies of their function and handler arguments. -
Fixed some compatibility issues with Android.
-
Added cross-compilation support to Jamfiles.
-
Fixed some minor portability issues in examples.
-
-
Atomic:
-
Breaking change: Changed the result of the
(op)_and_test
operations added in Boost 1.66 to the opposite - the functions now returntrue
if the operation result is non-zero. This is consistent with othertest
methods in Boost.Atomic and the C++ standard library. Users can defineBOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST
when compiling their code to emit warnings on every use of the changed functions. This way users can locate the code that needs to be updated. (#11) -
Update for C++2a. On C++11 compilers that support scoped enums, the
memory_order
enumeration is now scoped and contains constants with shorter names likeacquire
,release
orseq_cst
(i.e. users can usememory_order::acquire
instead ofmemory_order_acquire
). The old constants are also provided for backward compatibility. (P0439R0) -
Update for C++2a. Added experimental support for atomic operations on floating point types. In addition to general operations,
add
,sub
,negate
operations and theirfetch_(op)
andopaque_(op)
versions are supported. Lock-free property can be tested with the new macrosBOOST_ATOMIC_FLOAT/DOUBLE/LONG_DOUBLE_LOCK_FREE
. The support for floating point types is optional and can be disabled by definingBOOST_ATOMIC_NO_FLOATING_POINT
. (P0020R6) -
Added new experimental operations:
-
negate_and_test
andcomplement_and_test
which perform negation or bitwise complement and returntrue
if the result is not zero. -
add
,sub
,negate
,bitwise_and
,bitwise_or
,bitwise_xor
,bitwise_complement
operations which perform the operation and return its result.
-
-
For generic
atomic<T>
specialization, the default constructor is now trivial ifT
's default constructor is. -
The internal implementation of
atomic<T>
has been updated to avoid undefined behavior that stems from signed integer overflows. As required by the C++ standard, the library uses two's complement representation of signed integers internally and accroding rules of overflow. Currently, the library requires the native signed integer types to also use two's complement representation (but no defined overflow semantics). -
Improved Clang support. In particular, fixed DCAS not being lock-free and fixed possible incorrect code generated on 32-bit x86.
-
Improved MinGW support. For gcc versions up to 4.6, fixed compilation of DCAS on x86.
-
In x86 PIE code, asm blocks now preserve
ebx
value.
-
-
Beast:
-
This version fixes significant defects in
websocket::stream
which can lead to asserts or undefined behavior. Users are encouraged to update to the latest Boost release. -
For a complete list of changes, please view the official Release Notes.
-
-
ContainerHash:
-
Extracted from the functional module to break a dependency cycle.
-
Moved headers to new location to reflect name change, the old include paths will still work.
-
Added support for
std::string_view
,std::error_code
,std::error_condition
,std::optional
,std::variant
,std::monostate
where available. -
Added explicit support for
vector<bool>
, so that it will work with libc++ (#13501). -
More detail in the library change log.
-
-
Context:
-
#65:
__sanitizer_finish_switch_fiber
should be called directly after context switch -
#66: Clang on Windows : error: No best alternative for libs/context/build/asm_sources
-
#73: fixing C2492 for execution_context (v1)
-
known bug: including all.hpp + <context-impl>ucontext/winfib causes error 'forced_unwind: is not a member of boost::context::detail'
-
Coroutine2:
-
#13: Pull coroutine does not rethrow an exception if it is thrown on the first entry
-
-
Fiber:
-
#128: Assertion "! ctx->ready_is_linked()" when using condition_variable::wait_for
-
#132: fatal error: 'stdexception' file not found
-
#141: boost::fibers::async problem
-
#146: remove unecessary lock of remote-ready-queue spinlock
-
#153: docu: replace set_ready() by schedule()
-
#154: Document iterators on channels
-
#155: this_fiber is wrongly documented as being a member of boost::fibers
-
#156: Many examples are using their own barrier.hpp
-
#158: add BOOST_FIBERS_DECL to work_stealing class
-
#162: remove use-coutner increment for timed wait ops
-
#166: remove assertion for wait_is_linked() in schedule()
-
#167: call shared_state::owner_destroyed() only if future was created from
-
#168: fiber/doc/installing.qbk not not up to date
-
-
Fusion:
-
Switch to SFINAE in template parameters on
fusion::map
to fix compile error on newer MSVC 2017. (PR#164) -
Fix for compilers not compatible with CWG defect 945 on
fusion::vector
. (PR#166) -
Added limits precheck on sequence converter to make error message clearer. (PR#168)
-
Allow incomplete types in
fusion::tag_of
andfusion::is_native_fusion_sequence
. Note that this changes no behaviour from previous release, but compliant to TypeTraits's change. (PR#171)
-
-
Geometry:
-
Improvements:
-
New map projection and SRS transformation representations (undocumented for now due to potential interface changes).
-
New densify() algorithm.
-
No longer using std::iterator (thanks to Daniela Engert).
-
No longer using allocator directly in the rtree. Replaced with boost::container::allocator_traits (thanks to Daniela Engert).
-
Default rtree allocator changed to boost::container::new_allocator to still support move semantics emulation in C++03 with boost::container::allocator_traits.
-
Area strategies interface changed. This is potentially a breaking change.
-
Radius or Sphere can be passed into spherical strategies.
-
Added Point-Box and Box-Box spherical and geographic distance() strategies.
-
Simplify (multi)polygons will discard output rings of 2 points or (for closed polygons) 3 points, but it tries to avoid creating those
-
Simplify (multi)polygons will omit empty interior rings or polygons from output
-
-
Bugfixes:
-
Add missing strategy resolving in length() algorithm, affecting Variant support.
-
Simplify (multi)polygons now simplifies closing point
-
-
Changes in behavior
-
Simplify (multi)polygons now usually rotates input rings before simplifying to select a non collinear point on its convex hull. This improves output.
-
-
-
Locale:
-
Added support of
unique_ptr
interface in addition to C++2003auto_ptr
- in order to support C++2017, now you can useBOOST_LOCALE_HIDE_AUTO_PTR
definiton to removeauto_ptr
from the interfaces and prevent deprecated watnings. -
Fixed test problem with ICU >60.1
-
Fix of solaris build
-
Fixed wired FreeBSD/clang issue on optimized build. Probably compiler workaround
-
Added workaround for failing MSVC tests due to 932 codepage codecvt issue
-
Fixed bugs 6851, 12572, 12453
-
Fixed missing throw in case of failure in
icu/date_time
-
Fixed build agains Boost.Thread v4
-
Fixed Year of week instead of year ICU backend formatting
-
Fixed formatting test for ICU 56.1 and above
-
-
Log:
-
Improved compatibility with C++17: use
allocator_traits
to work with allocators instead of directly accessing its members. -
Improved compatibility with gcc 7 and later by updating library ABI namespace definition.
-
Added documentation for the "Append" config file parameter for "TextFile" sinks. The parameter was supported previously, only the documentation was missing.
-
-
Math:
-
Add naive Monte Carlo integration support.
-
Add Chebyshev interpolation routines.
-
-
Multi-index Containers:
-
Elements with overloaded
operator&
are now fully accepted (ticket #13307). Thanks to Daniel Frey for his updating Boost.Operators to help fix this issue. -
Avoided usage of
std::allocator
members deprecated in C++17. Contributed by Daniela Engert. -
Maintenance fixes.
-
-
Multiprecision:
-
Breaking Change: When converting a multiprecision integer to a narrower type, if the value is too large (or negative) to fit in the smaller type, then the result is either the maximum (or minimum) value of the target type. This was always the intended behaviour, but was somewhat haphazardly enforced before. If you really do want just the low order N bits of a value, then you will need to mask these out prior to the case, for example:
static_cast<unsigned>(~static_cast<unsigned>(0) & my_value)
. Note that technically (to avoid undefined behaviour) you should do the same thing with built in integer types too. See #13109. -
Fix bug in conversion of decimal to rational types (zero needs special handling), see #13148.
-
Fix conversion from cpp_bin_float to a wider built in integer type, see #13301.
-
Improve performance heurists used in cpp_bin_float exp function.
-
Fix bug in floor/ceil and cpp_bin_float when the exponent type is wider than an int, see #13264.
-
Disable explicit conversion operator when the target type is already constructible from this type, see #30.
-
Fix support for changes new to MPIR-3.0, see #13124.
-
-
PolyCollection:
-
Maintenance fixes.
-
-
Python:
-
The library name now includes the version suffix of the Python version used to compile it. For example, a variant compiled with Python 2.7 will produce library names
boost_python27
andboost_numpy27
, etc.. Combined with a related fix in Boost.Build, this means that it is now possible to build variants for multiple Python versions in a single build process.
-
-
Spirit:
-
Spirit.X3:
-
Breaking change: Removed
with_context
(#239) -
CR+LF lines wrongly counted in
error_handler::position()
(#248) -
Fixed parsing into associative containers (#289)
-
Fixed overflow problem in
uint_parser<signed T>
(#297) -
Added VS2015 Update 3 support by using workarounds (#308)
-
Fixed include guard names collision with Qi (#313)
-
Changed iterator concept static assert from
ForwardIterator
toReadableIteratorConcept
&&ForwardTraversalConcept
(#320) -
Reenabled
fusion::map
support (#330) -
Dereference a single item view instead of unwrapping sequence (#340)
-
Prevent
parse_nan
from dereferencing out of range iterator (#351) -
Use traits to test if container is empty (#355)
-
-
Spirit V2
-
Fixed undefined behavior in sequential or operator. Underlying parsers order of execution was dependent on compiler (#310)
-
Spirit.Qi:
-
Fixed signed integer overflow in real parser (#245)
-
Fixed overflow problem in
uint_parser<signed T>
(#297) -
Changed iterator concept static assert from
ForwardIterator
toReadableIteratorConcept
&&ForwardTraversalConcept
(#320) -
Added assertations to real parsers to ensure that the
parse_frac_n
from user defined real policy does not return negative values and also to prevent static analyzers false-positives (#358)
-
Spirit.Classic:
-
-
Stacktrace:
-
Async safe dumping into files on Windows OS was causing hangs on some platforms and now is disabled #33. Users are encouraged to update to the latest Boost release.
-
ContainerHash library is now used to reduce dependencies.
-
-
Test:
-
Boost.test v3.7 see the Changes log for more details.
-
Breaking changes
-
Adding test cases with the same name to the same test suite is now reported as an error. See the changes log for more details.
-
-
New feature:
-
Colour output on by default and available on Windows,
-
Improved and clearer command line help
-
BOOST_AUTO_TEST_CASE_TEMPLATE
now accepts a sequence of types in anstd::tuple
-
-
-
TypeIndex:
-
ContainerHash library is now used to reduce dependencies.
-
Minor fixes (including #17)
-
-
TypeTraits:
-
Added new traits
detected
,detected_or
,is_detected
,is_detected_convertible
,is_detected_exact
,is_complete
. -
Added greatly improved code for detecting binary operators.
-
Add assertions for completeness to traits which require complete types as arguments: this prevents various traits from giving eroneous results from incomplete types.
-
Fix minor issue with mpl compatibility, see #12212.
-
Add macro to indicate when
is_constructible
is fully implemented, see #12003. -
Update
is_function
andis_member_function_pointer
to work correctly with C++17 noexcept specifications. -
Add workaround for
is_default_constructible
andstd::pair
. -
Added fallback for
is_nothrow_swappable
on pre-C++11 compilers.
-
-
Utility:
-
Breaking change:
<boost/utility.hpp>
header no longer includesboost::next
andboost::prior
as they have been moved to the iterator module. Instead include<boost/next_prior.hpp>
. Other uses of<boost/utility.hpp>
are discouraged, it's better to use the header for the specific functionality instead.
-
-
Unordered:
-
Template deduction guides.
-
Standard conforming
noexcept
specifications forswap
,operator=
and node handles. -
Add
element_type
to iterators, so thatstd::pointer_traits
will work. -
Support
std::piecewise_construct
on recent Visual C++ and Dinkumware libraries. -
Use
std::iterator_traits
rather than the boost iterator traits in order to remove dependency on Boost.Iterator. -
Iterators no longer inherit from
std::iterator
, as it's deprecated (PR#7). -
More detail in the library change log.
-
-
Uuid:
-
Breaking change: random_generator is no longer copyable (#61)
-
Optimized random_generator to use OS-provided entropy directly (PR#53)
-
Provide
random_generator_mt19937
for bulk UUID generation -
Handle entropy acquisition errors instead of ignoring them
-
Support for Windows UWP (#24)
-
Support for CloudABI
-
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.0, 4.0.1, 5.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.1
-
Clang, C++17: 5.0.1
-
GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 7.2.0
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
-
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.3.0
-
GCC, C++17: 7.2.0
-
Intel, C++14: 18.0
-
-
OS X:
-
Clang: 9.0.0
-
Clang, C++11: 9.0.0
-
Clang, C++14: 9.0.0
-
Clang, C++1z: 9.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0, 7.1.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
Boost's additional test compilers include:
-
Linux:
-
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.1
-
Clang, C++17: 5.0.1
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 4.9.2, 5.4.0, 7.2.0
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
-
GCC, C++14: 5.4.0, 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.3.0
-
GCC, C++17: 7.2.0
-
Intel, C++14: 18.0
-
-
OS X:
-
Clang: 9.0.0
-
Clang, C++11: 9.0.0
-
Clang, C++14: 9.0.0
-
Clang, C++1z: 9.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0, 7.1.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
Acknowledgements
Beman Dawes, Daniel James, Vladimir Prus and Marshall Clow managed this release.