Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Version 1.64.0

Version 1.64.0 beta 1

March 23rd, 2017 14:19 GMT

Documentation

Beta Downloads
PlatformFileSHA256 Hash
unixboost_1_64_0_b1.tar.bz2b5c5abf127a3f723dafcc7cf55876c1bda9f014fb1b117f6a7f769e3cc407c4f
boost_1_64_0_b1.tar.gza7fe98a9a9f615f6fa68d8ea09ce725d19e3a4fe4719c21c9db29dff88b3b6e3
windowsboost_1_64_0_b1.7z8f0ba6b73fad15115049f9b3e7e27eae43be10a94b51a57142f3a27e55ef4beb
boost_1_64_0_b1.zip593005661af8dfe132b2b16bc2cd41339e6acd58456913f353d765090d7868f7

Updated Libraries

  • Any:
    • Suppressed false warnings about returning reference to temporary
    • boost::addressof is now used instead of directly taking the address #12615
    • Headers are not included using double quotes any more #12053
    • CI tests now run with address, leak, and undefined sanitizers
    • Added more test
  • Atomic:
    • Fixed possible incorrect code generation in 64-bit atomic operations on 32-bit x86 with gcc versions older than 4.7 and compatible compilers.
  • Config:
    • Added BOOST_NO_CXX11_SFINAE_EXPR defect detection.
  • Context:
    • new API: call/cc
    • deprecated API:execution-context
    • #12719 segmentation fault when built with mingw-w64
    • #38: context_entry() crashes on macOS
    • #39: Unknown directive .cpu on aarch64 with Clang 3.8 on Android
  • Conversion:
    • Docs were ported to Quickbook (thanks to Mikhail Maksimov for the port)
    • Fixed a memory leak in test (thanks to Mikhail Maksimov for the fix)
    • CI tests now run with address, leak, and undefined sanitizers
  • Core:
    • Implemented constexpr addressof on compilers that support C++11 constexpr and SFINAE expressions (Glen Fernandes). BOOST_CORE_NO_CONSTEXPR_ADDRESSOF macro indicates when constexpr addressof is not available.
    • In lightweight_test.hpp, added new macros BOOST_TEST_ALL_EQ and BOOST_TEST_ALL_WITH for testing container contents (Bjorn Reese).
  • Coroutine2:
    • #4: coroutine2<> does not accept std::bind
  • DLL:
    • Fixed WinCE compilation
    • Added boost:dll::symbol_location_ptr function for getting location of a symbol by pointer that could not be dereferenced (void pointer for example)
    • Fixed UB in detail::aggressive_ptr_cast for member pointers
    • Fixed leaks in experimental smart imports
    • Fixed warnings
    • CI tests now run with address and leak sanitizers
  • Fiber:
    • #100: ASIO: unbuffered_channel / scheduler notify issue
    • #106: Passing a fixed_stack allocator to async/packaged_task doesn't compile
    • #111: endless-loop in buffered_channel::try_value_pop()
    • (un)bounded_channel<> removed
  • Hash:
    • Stop using std::unary_function and std::binary_function when they're not available.
  • Interprocess:
  • LexicalCast:
    • Fixed multiple warnings #11842
    • CI tests now run with address, leak, and undefined sanitizers
  • Math:
    • Big push to ensure all functions in also in C99 are compatible with Annex F.
    • Improved accuracy of the Bessel functions I0, I1, K0 and K1, see 12066.
  • Multiprecision:
    • In cpp_bin_float prevent double rounding when converting to a denormalized float. See #12527.
    • Fix bug in integer sqrt for very small integers. See #12559.
    • Fix conversion to signed-zero in cpp_bin_float.
    • Change cpp_bin_float rounding code to round at arbitrary location so we can use it for conversions, see #12527.
    • Improve performance of 128-bit bit-scan operations.
    • Fix subtraction of very small quantities in cpp_bin_float. See: #12580.
    • Bring error handling into line with C99 Annex F. See #12581.
    • Fix bitwise export of trivial cpp_int's, see #12627.
    • Fix ilogb (and code that uses it) to consistently return the smallest value of the exponent type when the argument is zero, see #12625.
    • Allow conversion from __float128 to cpp_bin_float.
    • Fix bug in left shift of cpp_int which would result in bit-loss, see #12790.
    • Fixed bugs in bounded but variable precision cpp_int's caused by over-aggressive constexpr optimization, see #12798.
  • Predef:
    • Fix Intel C/C++ compiler version specification.
    • Add BOOST_VERSION_NUMBER_MAJOR, BOOST_VERSION_NUMBER_MINOR, BOOST_VERSION_NUMBER_PATCH macros to extract components from valid version numbers.
    • Change VS version numbering. Versions after VS2015 will use the compiler version instead of the varied product versions.
  • Program Options:
    • Support for storing values into boost::optional, thanks to Ed Catmur (#7495, PR#18)
  • Regex:
    • Compiling with Oracle C++ toolset is no longer restricted to static linking.
    • Big effort to de-fuzz the library using libFuzzer and fix identified issues, see: #12818.
  • Smart Pointers:
    • Rewrite of allocate_shared and make_shared for arrays for a more optimal and more maintainable implementation (Glen Fernandes)
    • Pointer cast functions with move semantics (Chris Glover)
  • Test:
    • Boost.test v3.5 see the Change log section for more details.
    • New feature:
      • Now Boost.Test provides customization points for logging user defined types
      • JUnit output format can now have a log-level
      • JUnit output format has not better performances when the test modules have a lot of checks
    • Bug fixes
  • TypeIndex:
    • Added BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST, which implements the functionality for runtime_cast but does not include the BOOST_TYPE_INDEX_REGISTER_CLASS macro (thanks to Chris Glover for imlpementing it)
    • Fixed undefined macro warning in stl_type_index.hpp #12739
    • CI tests now run with address, leak, and undefined sanitizers
  • TypeTraits:
    • Added new traits make_void and void_t.
  • Unordered:
    • Initial support for new C++17 member functions: insert_or_assign and try_emplace in unordered_map, merge and extract in all containers.
  • Variant:
    • Fixed construction of variant from recursive_variant_ (thanks to Mikhail Maksimov for the fix) #12508, #12645
    • Do not enable variadic templates for MSVC2015Update1 as it still has issues #12236
    • Workaround GCC6 crash (thanks to Mikhail Maksimov for the workaround) #12680, #7120
    • Made boost::polymorphic_*get to work as boost::*get in undocumented border cases and fixed tests #11950
    • CI tests now run with address, leak, and undefined sanitizers

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • Clang: 3.0, 3.8.1, 3.9.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1, 3.9.1
    • Clang, C++14: 3.5, 3.6, 3.7.1, 3.8.1, 3.9.1
    • Clang, C++1z: 3.9.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.2.0
    • GCC, C++14: 5.4.1, 6.2.0, 6.3.0
    • GCC, C++1z: 6.2.0
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X:
    • Apple Clang: 7.0.2
    • Apple Clang, C++11: 7.0.2
  • 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: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 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.2
  • FreeBSD:
    • Clang: 3.8
    • Clang, C++11: 3.8
    • Clang, C++14: 3.8
    • Clang, C++1z: 3.8
  • QNX:
    • QCC: 4.4.2
  • 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.1, 3.9.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.8.1, 3.9.1
    • Clang, C++14: 3.4, 3.5, 3.6, 3.7. 3.8, 3.8.1, 3.9.1
    • Clang, C++1z: 3.9.1, 4.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.2.0
    • GCC, C++14: 5.4.1, 6.2.0, 6.3.0, 7.0.1
    • GCC, C++1z: 6.2.0
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X:
    • Apple Clang: 7.0.2
  • Windows:
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • Android:
    • Clang: 3.6, 3.7, 3.8
    • GCC: 4.9, 5.4, 6.2
  • FreeBSD:
    • Clang, C++98: 3.8
    • Clang, C++11: 3.8
    • Clang, C++14: 3.8
    • Clang, C++1z: 3.8
  • QNX:
    • QCC: 4.4.2
  • 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.