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

April 19th, 2017 17:42 GMT

Documentation

Downloads
PlatformFileSHA256 Hash
unixboost_1_64_0.tar.bz27bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
boost_1_64_0.tar.gz0445c22a5ef3bd69f5dfb48354978421a85ab395254a26b1ffb0aa1bfd63a108
windowsboost_1_64_0.7z49c6abfeb5b480f6a86119c0d57235966b4690ee6ff9e6401ee868244808d155
boost_1_64_0.zipb99973c805f38b549dbeaf88701c0abeff8b0e8eaa4066df47cac10a32097523

New Libraries

  • Process: Process library by Klemens D. Morgenstern, that provides cross platorm ways to allows you to:
    • create child processes
    • setup streams for child processes
    • communicate with child processes through streams (synchronously or asynchronously)
    • wait for processes to exit (synchronously or asynchronously)
    • terminate processes
    Broken feature:

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
    • stack manipulation on MIPS fixed
    • #12719 segmentation fault when built with mingw-w64
    • #12948 Unexpected snprintf result is on Android ARM
    • #38: context_entry() crashes on macOS
    • #39: Unknown directive .cpu on aarch64 with Clang 3.8 on Android
    • #41: std::bind() fails with invoke()
    • #46: "rename of continuation member functions" missed a spot
    • #50: bad assembly for fcontext on ppc64/sysv/elf
  • 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:
    • (un)bounded_channel<> removed
    • #100: ASIO: unbuffered_channel / scheduler notify issue
    • #105: skynet variants crash on windows
    • #106: Passing a fixed_stack allocator to async/packaged_task doesn't compile
    • #110: Compile error on ARMv6
    • #111: endless-loop in buffered_channel::try_value_pop()
    • #114: buffered_channel::try_push does not wake fibers in pop`
  • Geometry:
    • Improvements:
      • matrix transformation is now based on Boost.QVM instead of Boost.Ublas
    • Breaking changes:
      • ublas_transformer is renamed to matrix_transformer
      • explicit modifier is added to constructors of rtree index::dynamic_* parameters
      • strategy::area::huiller replaced by strategy::area::spherical
    • Solved issues:
      • 363 Missing includes in geometry/index/parameters.hpp
      • 364 within(Linear, Areal) compilation error when arguments use different point types
      • 370 Buffer Seg Faults with Ring as Input
    • Solved tickets:
      • 11930 Inaccuracy of area::huiller strategy
      • 11931 Wrong spherical area with pole encircling polygons
      • 12566 Ambiguous template instantiation in equal_to<> when pair value contains raw pointer
      • 12861 Segmentation fault in stdlibc++ (gcc 4.8.2) affecting rtree
      • 12885 Use BOOST_THROW_EXCEPTION instead of throw
    • Bugfixes:
      • Fix distance_measure in get_turn_info
  • 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.
  • Multi-index Containers:
    • Fixed a bug related to ambiguous references in the presence of more than one ranked index (ticket #12955).
    • Maintenance fixes.
  • 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.