Boost
Releases
arrow_drop_down
Prior Release (1.72.0)
Platform File SHA256 Hash
Unix boost_1_72_0.tar.bz2 59c9b....60722
boost_1_72_0.tar.gz c66e8....4143f
Windows boost_1_72_0.7z 247a9....b5f0f
boost_1_72_0.zip 8c204....e621e

Version 1.72.0

December 11th, 2019 18:06 GMT

Documentation

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.

Updated Libraries

  • Asio:
    • Changed the async_initiate helper function to automatically deduce its return type, for C++11 or later.
    • Changed all asynchronous operations to use automatically deduced return types, for C++14 or later.
    • Introduced concepts to support async_initiate.
    • Added the nested template type rebind_executor to all I/O object types.
    • Changed the initiation function objects to report their associated I/O executor via the nested type executor_type and member function get_executor().
    • Added the default_completion_token trait, giving I/O executor types an associated default completion token type for use with asynchronous operations. This trait is specialised for the use_awaitable completion token, for example, to allow asynchronous operations to be used as follows: co_await socket.async_connect(my_endpoint).
    • Added missing async_initiate to the Windows-specific I/O objects' asynchronous operations.
    • Ensured that the executor type is propagated to newly accepted sockets.
    • Changed to require that Protocol copy and move operations never throw.
    • Changed to require that Endpoint default constructor and move operations never throw.
    • Added the noexcept qualifier to protocol accessors.
    • Added the noexcept qualifier to socket move constructors.
    • Fixed issues associated with opening serial ports on Windows:
      • Use the correct constant to initialise the RTS control flag.
      • Specify a default baud rate (9600).
    • Fixed a lost "outstanding work count" that can occur when an asynchronous accept operation is automatically restarted.
    • Consult the Revision History for further details.
  • Atomic:
    • Added a workaround for __float128 not being considered as a floating point type by some versions of libstdc++.
    • Improved compatibility with clang-win compiler.
  • Beast:
    • This is a maintenance update containing bug fixes, and updates to use the new features delivered in Boost.Asio.
    • We'd love to know how you or your company use Beast, consider adding an entry to the Companies and Individuals Using Beast list.
    • See the full Release Notes for a complete list of changes.
  • Circular Buffer:
    • Fix issue #29: max_size() now takes the allocator's max_size() into account. (Glen Fernandes)
  • Context:
    • architecture s390x supported
    • execution_context removed
  • Endian:
    • Made endian_reverse, conditional_reverse and *_to_* constexpr on GCC and Clang
    • Added convenience load and store functions
    • Added floating point convenience typedefs
    • Added a non-const overload of data(); changed its return type to unsigned char*
    • Added __int128 support to endian_reverse when available
    • Added a convenience header boost/endian.hpp
  • Filesystem:
    • Extracted filesystem_error to exception.hpp; file_status and associated enums and functions to file_status.hpp; directory_entry, directory_iterator and recursive_directory_iterator to directory.hpp.
    • Deprecated: For backward compatibility operations.hpp still includes the new headers exception.hpp, file_status.hpp and directory.hpp, unless BOOST_FILESYSTEM_NO_DEPRECATED macro is defined. These implicit includes are considered deprecated and will be removed in a future release. Users are encouraged to include the new headers directly or include filesystem.hpp.
    • The filesystem_error exception is now implemented in the compiled library of Boost.Filesystem. Users may need to add linking with Boost.Filesystem library in their projects.
    • On POSIX.1-2008 platforms, use utimensat instead of utime. utime is declared obsolete in POSIX.1-2008 and can be disabled e.g. in uClibc-ng. (PR#115)
    • directory_iterator is now left in the end state on memory allocation errors.
    • In directory_iterator on POSIX systems, support for readdir/readdir_r has been reworked to avoid memory allocations for dirent structures when readdir is used. This reduces memory consumption and eliminates the possibility of buffer overruns in case if readdir produces a very long directory name.
    • On Windows, use Boost.WinAPI to select the target Windows version.
    • New: Added directory_options enum, which reflects the same named enum from C++20. The enum is supported in directory_iterator and recursive_directory_iterator to customize iteration behavior. In particular, the iterators now support skipping directories that can't be opened due to insufficient permissions. The symlink_option enum is now deprecated and should be replaced with directory_options.
    • By default, recursive_directory_iterator is now reset to the end state in case of errors, as required by C++20. (#112)
    • New: Added directory_options::pop_on_error option, which configures recursive_directory_iterator so that it attempts to recover from iteration errors by repeatedly invoking pop() until it succeeds or the end state is reached. (#113)
    • New: Added directory_options::skip_dangling_symlinks option, which configures recursive_directory_iterator so that it doesn't follow dangling directory symlinks and continues iteration instead of reporting an error.
    • Deprecated: The following members of recursive_directory_iterator are now marked as deprecated: level(), no_push_pending(), no_push_request(), no_push(). Users are advised to replace their use with the standard counterparts: depth(), recursion_pending(), disable_recursion_pending(). Note that recursion_pending() has the opposite meaning compared to no_push_pending() and no_push_request(). Deprecated methods will be removed in a future release.
    • Fixed path::lexically_relative (and any dependent algorithms) to correctly handle empty, dot and dot-dot path elements in its argument. The behavior is made closer to C++17 std::path::lexically_relative in that empty and dot path elements are ignored and dot-dot path elements are accounted by decreasing the number of dot-dot path elements to generate in the resulting relative path. (#76)
  • Functional/Factory:
    • Glen Fernandes rewrote the implementations of factory and value_factory to provide the following features:
      • Support r-value arguments when possible
      • Support arbitrary number of arguments via variadic templates when possible
      • Support allocators that are final
      • Support allocators that use fancy pointers
      • Support for disabled exceptions (BOOST_NO_EXCEPTIONS)
      • Improved compilation times
    • The following features have been removed:
      • Increasing limits for C++03 compilers through BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY
      • Using boost::none_t in place of void through BOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T
  • GIL:
    • Added
      • GSoC 2019: Lanczos resampling for image down scaling (PR#309).
      • GSoC 2019: Methods for binary thresholding, inverted binary thresholding and truncation thresholding (PR#313).
      • GSoC 2019: Otsu thresholding method (PR#314).
      • GSoC 2019: Adaptive thresholding using mean or gaussian-weighted sum of the neighbourhood area (PR#315).
      • GSoC 2019: Harris response calculation (corner detector without non-maximum filtering) (PR#350).
      • GSoC 2019: Hessian corner detector (PR#364).
      • GSoC 2019: Types for defining 2D kernel, kernel_2d and kernel_2d_fixed, in Numeric extension (PR#361).
      • GSoC 2019: Implementation of 2D convolution as new function convolve_2d (PR#367).
      • GSoC 2019: Box filtering using the average filter (PR#383).
      • GSoC 2019: Blur function based on normalized mean filter (PR#383).
      • GSoC 2019: Sobel and Scharr operators (PR#392).
      • GSoC 2019: Median filter to remove noise from image (PR#393).
      • Continued adding new test cases and significantly improved overall test coverage.
      • Documented purpose of cached_location_t (PR#287).
      • Function convolve_1d in Numeric extension for convenient use of convolve_rows and convolve_cols (PR#347) and PR#367).
      • Function extend_boundary in Numeric extension to perform image boundary extension (PR#386).
      • Project release notes maintained in Markdown file RELEASES.md (PR#404).
    • Changed
      • Move all tests, core features and extensions, inside test/ directory (PR#302).
    • Removed
      • Replace Boost.MPL with Boost.MP11 (PR#274).
      • Removed use of Boost.TypeTraits (PR#274).
      • Dropped support for GCC <= 4.8 (PR#296).
      • Remove include/boost/gil/version.hpp file as unused (PR#403).
    • Fixed
      • Undetermined value of default-initialized channel and pixel objects (PR#273).
      • Undefined behaviour due to std::is_trivially_default_constructible specializations (PR#284).
      • Crash when reading PNG files with an invalid header (PR#385).
      • Applied the Rule of Three for numerous types.
      • Removed uses of deprecated implicit definition of defaulted copy assignment operator or copy constructor.
  • Histogram:
    • Several new features and performance improvements, some bug-fixes
    • See the full Release Notes for a complete list of changes
  • Log:
    • Improved compatibility with clang-win compiler.
  • MPI:
    • Documentation clarifications.
    • Fixed scatterv bug when using explicit input buffer offsets.
    • Enable usage of MPI_Probe and friend with Intel MPI >= 2019.4
    • Symbol visibility on Windows
  • Math:
    • Added Hypergeometric functions 1F0, 0F1, 2F0, 1F1 and pFq.
    • Added Jacobi polynomial (and derivatives) evaluation.
    • Added Gegenbauer polynomial (and derivatives) evaluation.
    • Added Cardinal B-Splines (and derivatives) as polynomial functions in their own right.
    • Added Cardinal Trigonometric Interpolation.
    • Added new statistics sub-section.
    • Added One Sample Student's T Test.
    • Added Anderson Darling test for normality.
    • Added Ljung Box test for auto-correlation.
    • Added Runs test for random sequences.
    • The headers boost/math/tools/univariate_statistics.hpp and boost/math/tools/bivariate_statistics.hpp, have been deprecated in favor of boost/math/statistics/univariate_statistics.hpp and boost/math/statistics/bivariate_statistics.hpp.
    • Added The Empirical CDF distribution.
    • Reworked the Sterling approximation used by multiprecision gamma functions to be applicable to all the function that use the Lanczos approximation at regular precision. Also extended Lanczos approximations up to 100 decimal digit precision.
  • Multiprecision:
    • Big constexpr update allows cpp_int and float128 arithmetic to be fully constexpr with gcc and clang 9 or later, or any compiler supporting std::is_constant_evaluated().
    • Fix bug in variable precision mpf_float which causes it to go into a tailspin trying to select the correct precision - see https://github.com/boostorg/multiprecision/issues/164.
  • Outcome:
    • Enhancements:
      • Standalone outcome is now make install-able, and cmake find_package() can find it. Note that you must separately install and find_package() Outcome's dependency, quickcpplib, else find_package() of Outcome will fail.
      • The git submodule mechanism used by standalone Outcome of specifying dependent libraries has been replaced with a cmake superbuild of dependencies mechanism instead. Upon cmake configure, an internal copy of quickcpplib will be git cloned, built and installed into the build directory from where an internal find_package() uses it. This breaks the use of the unconfigured Outcome repo as an implementation of Outcome, one must now do one of: 1. Add Outcome as subdirectory to cmake build. 2. Use cmake superbuild (i.e. ExternalProject_Add()) to build and install Outcome into a local installation. 3. Use one of the single header editions.
      • For standalone Outcome, the current compiler is now checked for whether it will compile code containing C++ Concepts, and if it does, all cmake consumers of Outcome will enable C++ Concepts. Set the cmake variable CXX_CONCEPTS_FLAGS to an empty string to prevent auto detection and enabling of C++ Concepts support occurring.
      • OUTCOME_TRY operation now hints to the compiler that operation will be successful. P1886 Error speed benchmarking showed that there is considerable gain in very small functions by hinting to the compiler whether the expression is expected to be successful or not. OUTCOME_TRY previously did not hint to the compiler at all, but now it does. A new suite of macros OUTCOME_TRY_FAILURE_LIKELY hint to the compiler that failure is expected. If you wish to return to the previously unhinted behaviour, define OUTCOME_TRY_LIKELY(expr) to (!!expr).
      • #199 Support for C++ Coroutines has been added. This comes in two parts, firstly there is now an OUTCOME_CO_TRY() operation suitable for performing the TRY operation from within a C++ Coroutine. Secondly, in the header outcome/coroutine_support.hpp there are implementations of eager<OutcomeType> and lazy<OutcomeType> which let you more naturally and efficiently use basic_result or basic_outcome from within C++ Coroutines -- specifically, if the result or outcome will construct from an exception pointer, exceptions thrown in the coroutine return an errored or excepted result with the thrown exception instead of throwing the exception through the coroutine machinery (which in current compilers, has a high likelihood of blowing up the program). Both eager<T> and lazy<T> can accept any T as well. Both have been tested and found working on VS2019 and clang 9.
      • #210 make_error_code() and make_exception_ptr() are now additionally considered for compatible copy and move conversions for basic_result<>. This lets you construct a basic_result<T, E> into a basic_result<T, error_code>, where E is a custom type which has implemented the ADL discovered free function error_code make_error_code(E), but is otherwise unrelated to error_code. The same availability applies for exception_ptr with make_exception_ptr() being the ADL discovered free function. basic_outcome<> has less support for this than basic_result<> in order to keep constructor count down, but it will accept via this mechanism conversions from basic_result<> and failure_type<>.
    • Bug fixes:
      • #184 The detection of [[nodiscard]] support in the compiler was very mildly broken.
  • PolyCollection:
    • Maintenance work.
  • Preprocessor:
    • Topic added which discusses emptiness
    • Support for the C++20 __VA_OPT__ construct
      • BOOST_PP_VARIADIC_HAS_OPT whether __VA_OPT__ is supported at the C++20 level
      • BOOST_PP_CHECK_EMPTY test for emptiness using __VA_OPT__ at the C++20 level
      • BOOST_PP_VA_OPT more flexible alternative to __VA_OPT__ at the C++20 level
  • Smart Pointers:
    • Implemented allocate_unique for scalars and arrays. (Glen Fernandes)
  • Test:
    • Boost.test v3.12 see the Changes log for more details.
    • New feature:
      • Support for C++17 std::string_view has been added.
      • Better diagnostic on boost::exception and no rtti mode (thanks to Mikhail Pilin / [pull_request 234])
    • Bug fixes and pull requests:
  • VMD:
    • BOOST_VMD_IS_EMPTY updated to use __VA_OPT__ at the C++20 level has 100% reliability

Compilers Tested

Boost's primary test compilers are:

  • Linux:
    • Clang: 3.0, 4.0.1, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
    • 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.2, 6.0.1, 7.0.0, 8.0.0
    • Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
    • 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, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X:
    • Apple Clang: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.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
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.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

Boost's additional test compilers include:

  • Linux:
    • Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
    • 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.2, 6.0.1, 7.0.0, 8.0.0
    • Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
    • 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, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X:
    • Apple Clang: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.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
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.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

Marshall Clow and Michael Caisse managed this release.

Dependencies

There were 4 dependencies added (in 3 libraries) and 8 dependencies removed (in 7 libraries) this release.

Contributors

John Maddock
John Maddock
Contributor
NAThompson
NAThompson
Contributor
Paul A. Bristow
Paul A. Bristow
Contributor
Mateusz Łoskot
Mateusz Łoskot
Contributor
Glen Fernandes
Glen Fernandes
Contributor
Nick
Nick
Contributor
Adam Wulkiewicz
Adam Wulkiewicz
Contributor
Peter Dimov
Peter Dimov
Contributor
Andrey Semashev
Andrey Semashev
Contributor
Hans Dembinski
Hans Dembinski
Contributor
Edward Diener
Edward Diener
Contributor
Niall Douglas
Niall Douglas
Contributor
Jenkins nedprod CI
Contributor
Alain Miniussi
Alain Miniussi
Contributor
Barend Gehrels
Barend Gehrels
Contributor
Adeel Ahmad
Adeel Ahmad
Contributor
Jenkins nedprod CI
Contributor
Lorenzo Caminiti
Lorenzo Caminiti
Contributor
Vinnie Falco
Vinnie Falco
Contributor
Raffi Enficiaud
Raffi Enficiaud
Contributor
Christopher Kohlhoff
Christopher Kohlhoff
Contributor
Damian Jarek
Damian Jarek
Contributor
Robert Ramey
Robert Ramey
Contributor
Oliver Kowalke
Oliver Kowalke
Contributor
Nikita Kniazev
Nikita Kniazev
Contributor
Marshall Clow
Marshall Clow
Contributor
Joel de Guzman
Joel de Guzman
Contributor
Christophe Henry
Christophe Henry
Contributor
Tinko Bartels
Tinko Bartels
Contributor
MIRAL SHAH
MIRAL SHAH
Contributor
Vissarion Fisikopoulos
Vissarion Fisikopoulos
Contributor
Michael Caisse
Michael Caisse
Contributor
Olzhas Zhumabek
Olzhas Zhumabek
Contributor
Cromwell D. Enage
Cromwell D. Enage
Contributor
Jeremy Nelson
Jeremy Nelson
Contributor
Louis Dionne
Louis Dionne
Contributor
AeroStun
AeroStun
Contributor
Christian Mazakas
Christian Mazakas
Contributor
Joaquin M. López Muñoz
Joaquin M. López Muñoz
Contributor
henry-ch
Contributor
Pranam Lashkari
Pranam Lashkari
Contributor
Emil Dotchevski
Emil Dotchevski
Contributor
Ion Gaztañaga
Ion Gaztañaga
Contributor
George Koehler
George Koehler
Contributor
Henry Schreiner
Henry Schreiner
Contributor
Eric Niebler
Eric Niebler
Contributor
Mikhail Komarov
Mikhail Komarov
Contributor
Andras Kucsma
Andras Kucsma
Contributor
James E. King III
James E. King III
Contributor
Ed Catmur
Ed Catmur
Contributor
Marcel Raad
Marcel Raad
Contributor
Quentin Chateau
Quentin Chateau
Contributor
Stefan Seefeld
Stefan Seefeld
Contributor
Deniz Bahadir
Deniz Bahadir
Contributor
Daniela Engert
Daniela Engert
Contributor
Frank Mori Hess
Frank Mori Hess
Contributor
pb
pb
Contributor
Tanzinul Islam
Tanzinul Islam
Contributor
Jan Houska
Jan Houska
Contributor
Takatoshi Kondo
Takatoshi Kondo
Contributor
Jay Freeman (saurik)
Jay Freeman (saurik)
Contributor
Markus Reiter
Markus Reiter
Contributor
DionHo
DionHo
Contributor
Jared Grubb
Jared Grubb
Contributor
Christos Stratopoulos
Christos Stratopoulos
Contributor
Antony Polukhin
Antony Polukhin
Contributor
Jörg Böhme
Jörg Böhme
Contributor
TaWeiTu
TaWeiTu
Contributor
Neale Ferguson
Neale Ferguson
Contributor
sehe
sehe
Contributor
Roel Standaert
Roel Standaert
Contributor
Mike Ellery
Mike Ellery
Contributor
dodheim
dodheim
Contributor
Xiaofeng Wang
Xiaofeng Wang
Contributor
Tyler Deuty
Tyler Deuty
Contributor
Michał Janiszewski
Michał Janiszewski
Contributor
Thomas Barbier
Thomas Barbier
Contributor
Cristian Morales Vega
Cristian Morales Vega
Contributor
Naveenaidu
Naveenaidu
Contributor
Tom Gibson
Contributor
Mikhail Pilin
Mikhail Pilin
Contributor
Lee Skillen
Lee Skillen
Contributor
Peter Jankuliak
Peter Jankuliak
Contributor
snoe925
snoe925
Contributor
Vincent Chabannes
Vincent Chabannes
Contributor
hyc
Contributor
Aurelien Chartier
Aurelien Chartier
Contributor
Jean-David Gadina
Jean-David Gadina
Contributor
Barrett Adair
Barrett Adair
Contributor
Dennis Grieger
Dennis Grieger
Contributor
Duzy Chan
Contributor
stefan301
stefan301
Contributor
Jeff Garland
Jeff Garland
Contributor
gusrb406
gusrb406
Contributor
mmitti
mmitti
Contributor
Mike Dev
Mike Dev
Contributor
Andre Schröder
Andre Schröder
Contributor