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

Version 1.70.0

Version 1.70.0 beta 1

March 13th, 2019 14:36 GMT


Beta Downloads
PlatformFileSHA256 Hash

New Libraries

  • Outcome: A set of tools for reporting and handling function failures in contexts where directly using C++ exception handling is unsuitable, from Niall Douglas.
  • Histogram: Fast and extensible multi-dimensional histograms with convenient interface for C++14, from Hans Dembinski.
  • TODO

Updated Libraries

  • Beast: BIG Update!!! The reference shows a star next to each new item.
  • DLL:
    • New macro BOOST_DLL_USE_STD_FS. Define it to 1 to make the Boost.DLL use C++17's std::filesystem::path, std::system_error and std::error_code (#21). Note that exception types change from boost::system::system_error to std::system_error, so make sure to update catches.
    • Significant rewrite of the dynamic loadable detection and decoration logic. More precise errors are now reported in case of loading failures. Added shared_library::decorate() function that returns a decorated path to the library without doing any platform related queries and detections. Prefer using shared_library::load and shared_library constructors for better results (many thanks to Loïc Touraine for the work PR#23).
    • CI hardening, docs updates, typos fixes, cleanups and many portability fixes.
  • Dynamic Bitset:
    • Disabled hardware-assisted popcount (added in 1.69.0) on MSVC due to undefined behavior on older CPUs. (#33 PR#35)
  • Filesystem:
    • Fixed a few instances of dereferencing std::string::end() in path implementation.
    • Fixed program termination in case of out of memory condition in directory iterators constructors and operations accepting a reference to error_code. (#58)
    • Fixed possible linking errors caused by missing definitions of static members of path. (#12759)
    • Fixed possible use of uninitialized data in directory iterator increment operation on Linux.
    • Added support for movability to directory iterators.
    • Added file status query overloads for directory_entry. This avoids a relatively expensive OS query when file status is requested for a result of dereferencing a directory iterator. (PR#55)
    • Reworked current_path and read_symlink implementation to avoid possible memory exhaustion on broken or tampered with filesystems. The functions now have an internal limit of the path size they will accept from the OS, which is currently 16 MiB.
    • Increased the size of the internal buffer used by copy_file.
  • Integer:
    • Added Extended Euclidean Algorithm and Modular Multiplicative Inverse function. (Nick Thompson, PR#11)
  • Log:
    • New features:
      • Added support for generating another log file name before collecting the file in the text file sink backend. This allows to combine appending to an existing log file with timestamps and file counters in log filenames, and, consequently, file collection in general.
    • See changelog for more details.
  • Mp11:
    • Renamed mp_invoke to mp_invoke_q
    • Added mp_similar
    • Added mp_set_union, mp_set_intersection, mp_set_difference
    • Added mp_not_fn
    • Added mp_transform_first, mp_transform_second, mp_transform_third
    • Added mp_filter
    • Added mp_eval_if_not, mp_eval_or, mp_valid_q
    • Added mp_back, mp_pop_back
  • Multi-index Containers:
    • size_type and difference_type are now defined as the allocator's same-named types. This will not make any difference in the vast majority of cases, but allows for some degree of control of resulting internal structures via user-defined allocator types (see issue #17 for motivation). For the moment being, this change is not documented in the reference section (i.e., it has semi-official status).
    • Maintenance work.
  • PolyCollection:
    • Improved handling of stateful allocators and allocator propagation traits, after an error reported by Billy O'Neal (PR#9).
    • Fixed a potentially serious bug with an internal cache structure.
  • Stacktrace:
    • Build fix for iOS 32-bit ARM (many thanks to Ivan Ponomarev for providing the fix PR#70)
    • Fixed multiple typos, warnings and updated the docs.
  • Test:
    • Boost.test v3.10 see the Changes log for more details.
    • Breaking changes:
      • Boost.Test minimal.hpp is now showing a deprecation warning,
      • Change in floating point comparison may fail tests that were silently not using the floating point comparison logic prior to this release,
      • Internal API change to unit_test_log_formatter, see detailed change log,
    • New feature:
      • Floating point comparison has been extended to capture non-floating point and arithmetic operands: expressions like BOOST_TEST(3.0001 == 3) now use floating point support of Boost.Test,
      • Custom datasets are not required to declare the sample type field anymore,
      • Extending template test cases from std::tuple to any variadic definition,
      • Windows support for timed tests,
      • Timed test on test-suites,
      • Removed dependency to Boost.Timer,
      • New macro BOOST_TEST_INFO_SCOPE for scoped context declaration,
      • Improved BOOST_TEST_CONTEXT syntax
    • Bug fixes and pull requests:
  • TypeIndex:
    • Support for the GHS C++ compiler added (many thanks to Brandon Castellano for providing the patch PR#28)
    • Optimized string and type comparisons (many thanks to Andrey Semashev for providing the patch PR#23)
    • Fixed clang-win compilation (many thanks to Peter Dimov for providing the patch PR#25)
    • CI hardening.
  • Variant:
    • Many cleanups and internal improvements, many thanks to Nikita Kniazev (PR#55, PR#56, PR#57) and Louis Dionne (PR#51)
    • CI hardening.
  • TODO

Compilers Tested

Boost's primary test compilers are:

  • TODO

Boost's additional test compilers include:

  • TODO