Boost
Releases
arrow_drop_down
Prior Release (1.75.0)
December 3, 2020
Dependencies
There were 6 dependencies added (in 4 libraries) and 1 dependency removed (in 1 library) this release.
Platform File SHA256 Hash
Unix boost_1_75_0.tar.bz2 953db....d49cb
boost_1_75_0.tar.gz aeb26....6dd6a
Windows boost_1_75_0.7z 3a8b3....6d1a5
boost_1_75_0.zip caf36....f95ed
Windows (Binary) boost_1_75_0-bin-msvc-all-32-64.7z a6640....aa518
boost_1_75_0-msvc-10.0-32.exe 79248....8e6ef
boost_1_75_0-msvc-10.0-64.exe e6113....b1199
boost_1_75_0-msvc-11.0-32.exe dbf16....b9043
boost_1_75_0-msvc-11.0-64.exe 0c78c....e788f
boost_1_75_0-msvc-12.0-32.exe 78101....e05ce
boost_1_75_0-msvc-12.0-64.exe a5e06....31fdc
boost_1_75_0-msvc-14.0-32.exe a1152....b2d43
boost_1_75_0-msvc-14.0-64.exe f2029....d3b06
boost_1_75_0-msvc-14.1-32.exe f8fbd....dfbad
boost_1_75_0-msvc-14.1-64.exe f80d1....71c06
boost_1_75_0-msvc-14.2-32.exe f7bd9....f7196
boost_1_75_0-msvc-14.2-64.exe 403df....7696f

Version 1.75.0

December 11th, 2020 19:50 GMT

Documentation

Known Issues

Boost.Operators is currently incompatible with C++20 compilers, which in some cases may manifest as an infinite recursion or infinite loop in runtime when a comparison operator is called. The problem is caused by the new operator rewriting behavior introduced in C++20. As a workaround, users are advised to target C++17 or older C++ standard. More details can be found in #65.

New Libraries

  • JSON:
    • parsing, serialization, and DOM in C++11, from Vinnie Falco and Krystian Stasiowski. Fast compilation requiring only C++11 Easy and safe modern API with allocator support Compile without Boost, define BOOST__STANDALONE Optional header-only, without linking to a library
  • LEAF:
    • A lightweight error-handling library for C++11, from Emil Dotchevski. Small single-header format, no dependencies. Designed for maximum efficiency ("happy" path and "sad" path). No dynamic memory allocations, even with heavy payloads. O(1) transport of arbitrary error types (independent of call stack depth). Can be used with or without exception handling.
  • PFR:
    • Basic reflection without macro or boilerplate code for user defined types, from Antony Polukhin.

Updated Libraries

  • Asio:
    • Enabled support for UNIX domain sockets on Windows.
    • Added executor-converting construction and assignment to ip::basic_resolver.
    • Added compatibility between polymorphic executors and the (deprecated) handler invocation hook.
    • Added the experimental::as_single completion token adapter.
    • Added support for MSG_NOSIGNAL on more platforms by using _POSIX_VERSION to detect whether it is supported.
    • Added the ability to compile using libpthread on Windows.
    • Added workarounds for the Intel C++ compiler.
    • Added more support for detecting and optimising for handlers that have no custom executor.
    • Reduced lock contention for timer cancellation on Windows.
    • Reinstated a previously removed null-pointer check, as it had a measurable impact on performance.
    • Fixed the executor concept to test for a const-qualified execute().
    • Fixed any_executor support for builds without RTTI support.
    • Fixed the thread_pool unit test to work without RTTI support.
    • Fixed C++20 coroutines compatibility with clang on Windows.
    • Fixed some compatibility issues with Windows Runtime.
    • Fixed shadow name warnings caused by addition of asio::query.
    • Fixed a "logical ‘or’ of equal expressions" warning on linux.
    • Fixed a benign switch fallthrough warning.
    • Added missing push/pop_options.hpp includes.
    • Suppressed zero-as-null-pointer-constant warnings.
    • Fixed a comma-operator warning.
    • Updated the documentation to clarify when the select reactor is used on Windows.
    • Fixed potential ambiguity caused by any_executor comparisons and conversion.
    • Added detection of non-experimental C++20 coroutines on MSVC 19.8.
    • Fixed compatibility with uClibc.
    • Fixed strand<> adaptation of Networking TS executors when targeting older C++ versions or less conformant compilers.
    • Consult the Revision History for further details.
  • Atomic:
    • Implemented SSE2 and SSE4.1 versions of address lookup algorithm, which is used in the internal lock pool implementation. This may improve performance of waiting and notifying operations in heavily contended cases.
    • Fixed a possible compilation error on AArch64 targets caused by incorrect instructions generated for bitwise (logical) operations with immediate constants. (#41)
  • Beast:
    • This update brings bug fixes and support for the BOOST_ASIO_ENBALE_HANDLER_TRACKING compile flag from 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.
  • Container:
    • New devector container.
    • Fixed bugs/issues:
      • #152 Tree-based containers have troubles with move-only types.
      • #156 Compile error with vector.
      • PR#157 Add missing include.
      • #159: pmr::monotonic_buffer_resource crashes on large single allocations.
      • #160: Usage of uses_allocator needs a remove_cvref_t.
      • #162: small_vector on MSVC x86 call-by-value crash.
      • #161: polymorphic_allocator(memory_resource*) non-standard extension causes headache.
      • PR#163: container_rebind for small_vector with options.
      • #165: Link error with shared library and memory_resource inline members.
      • PR#166: Fix encoding error in copyright headers.
      • PR#167: error: the address of 'msg' will always evaluate as 'true' warning with GCC 4.4.
      • #169: flood of warnings building dlmalloc_ext_2_8_6.c on clang11.
  • Endian:
    • endian_arithmetic no longer inherits from endian_buffer
    • When BOOST_ENDIAN_NO_CTORS is defined, the unaligned endian_buffer and endian_arithmetic are C++03 PODs, to enable use of __attribute__((packed))
  • Filesystem:
    • New: Added creation_time operation, which allows to obtain file creation time. (Inspired by PR#134)
    • The returned value of last_write_time(p, ec) operation in case of failure has been changed to a minimal value representable by std::time_t instead of -1.
    • The returned value of hard_link_count(p, ec) operation in case of failure has been changed to static_cast<uintmax_t>(-1) instead of 0.
    • On POSIX systems, file_size will now indicate error code errc::function_not_supported if the path resolves to a non-regular file. Previously, errc::operation_not_permitted was reported.
    • On Linux, many operations now use statx system call internally, when possible, which allows to reduce the amount of information queried from the filesystem and potentially improve performance. The statx system call was introduced in Linux kernel 4.11.
    • Removed const-qualification from return types of some path methods. This could prevent move construction and move assignment at the call site in some cases. (#160)
    • On OpenBSD 4.4 and newer, use statvfs system call to obtain filesystem space information. (Inspired by PR#162)
    • On Windows, space now returns with an error if the provided path does not idendify an existing file. (#167)
  • Geometry:
    • WARNING: Following the deprecation notice of C++03 issued with Boost 1.73, from now on the Boost.Geometry requires a capable C++14 compiler.
    • Improvements
      • PR#726 Umbrella strategies for area, envelope, expand (undocumented for now).
      • PR#733 Added example of adaptation of std::array<> to Point concept (thanks to Ben FrantzDale).
      • PR#745 constexpr added in geometries and arithmetic.
      • PR#747 Added optional traits::make (undocumented for now).
      • PR#748 Modernized usage of type traits.
      • PR#759 MPL_ASSERT replaced with standard static_assert.
      • PR#767 Modernized usage of tuple.
    • Solved issues
      • #716 Dangling proxy references.
    • Bugfixes
      • Various fixes in set operations and buffer.
  • GIL:
    • BREAKING: In next release, we are going to drop support for GCC 5. We may also change the required minimum C++ version from C++11 to C++14.
  • Histogram:
    • This update brings
      • Bug-fixes for corner-cases
      • Small documentation improvements
      • Fixes for new warnings from latest compilers and when compiling against the C++20 standard
    • See the full Release Notes for a complete list of changes.
  • Interprocess:
    • Fixed bugs:
      • #127: static assertion failure with boost interprocess 1.74 and basic_managed_shared_memory.
  • Intrusive:
    • Fixed bugs:
      • PR#48: MSVC "assignment within conditional" warning fix.
      • PR#49: Fix empty control statement warnings.
      • #52: Invalid casting in BOOST_INTRUSIVE_BSR_INTRINSIC.
  • Log:
    • Bug fixes:
      • Corrected the file counter that would be used in text_file_backend when generating the target file name (based on the pattern set by set_target_file_name_pattern method) when the log file is rotated. (#125)
      • Replaced a volatile version counter in basic_sink_frontend with an atomic. (#128)
      • In the asynchronous_sink frontend, resolved a possible conflict between flush and run methods, if run is called from a user's thread instead of the internal dedicated thread spawned by the frontend. (#131)
    • See changelog for more details.
  • Move:
    • Fixed bugs:
      • #30: (void) C-cast is a non-portable way of suppressing compiler warnings.
  • Mp11:
    • Added mp_pairwise_fold (suggested by Barry Revzin)
    • Removed mp_invoke (use mp_invoke_q)
  • Optional:
    • boost::none is constexpr-declared.
    • Fixed issue #78.
  • Outcome:
    • Announcements:
      • After a year and three major Boost releases announcing this upcoming change, this is the FINAL RELEASE of the v2.1 branch. From Boost 1.76 onwards, the v2.2 branch becomes the default. This branch has a number of major breaking changes to Outcome v2.1, see the documentation for details.
    • Enhancements:
      • The ADL discovered event hooks have been replaced with policy-specified event hooks instead. This is due to brittleness (where hooks would quietly self-disable if somebody changed something), compiler bugs (a difference in compiler settings causes the wrong hooks, or some but not all hooks, to get discovered), and end user difficulty in using them at all. The policy-specified event hooks can be told to default to ADL discovered hooks for backwards compatibility: set OUTCOME_ENABLE_LEGACY_SUPPORT_FOR to less than 220 to enable emulation.
      • Improve configuring OUTCOME_GCC6_CONCEPT_BOOL. Older GCCs had boolean based concepts syntax, whereas newer GCCs are standards conforming. However the precise logic of when to use legacy and conforming syntax was not well understood, which caused Outcome to fail to compile depending on what options you pass to GCC. The new logic always uses the legacy syntax if on GCC 8 or older, otherwise we use conforming syntax if and only if GCC is in C++ 20 mode or later. This hopefully will resolve the corner case build failures on GCC.
    • Bug fixes:
      • Boost.Outcome should now compile with BOOST_NO_EXCEPTIONS defined. Thanks to Emil, maintainer of Boost.Exception, making a change for me, Boost.Outcome should now compile with C++ exceptions globally disabled. You won't be able to use boost::exception_ptr as it can't be included if C++ exceptions are globally disabled.
      • #236 In the Coroutine support the final_suspend() was not noexcept, despite being required to be so in the C++ 20 standard. This has been fixed, but only if your compiler implements noop_coroutine. Additionally, if noop_coroutine is available, we use the much more efficient coroutine handle returning variant of await_suspend() which should significantly improve codegen and context switching performance.
  • Polygon:
    • C++20 fixes for event_comparison_type, vertex_equality_predicate_type, and voronoi_predicates. (Glen Fernandes)
  • Preprocessor:
    • When variadic data is empty in C++20 mode with __VA_OPT__ support the variadic size has been corrected to be 0. This also means that in this C++20 mode it is now valid to convert to and from empty arrays and lists and variadic data. The end-user can read the "C++20 Support For Variadic Macros" part of the "variadic macros" topic for more information about empty variadic data in the library.
    • The macro BOOST_PP_IS_STANDARD() has been added for identifying if the currently used preprocessor is a C++ standard conforming preprocessor. A number of preprocessors which generally work correctly with the library but need various internal workarounds, including the currently default VC++ preprocessor, are not considered C++ standard conforming preprocessors. However most preprocessors, including among others gcc, clang, and the new but currently non-default VC++ preprocessor in VS2019, are C++ standard conforming preprocessors.
    • For C++ standard conforming preprocessors a number of the limits defined in the config/limits.hpp can now be changed to higher amounts for a TU. The end-user should read the "limitations" topic to understand how and which limits can be changed.
    • For C++ standard conforming preprocessors, in order to allow the maximum number of FOR and WHILE iterations, the beginning 'r' and 'd' iteration numbers in the user-defined macros start at 1 and not 2, as it did in previous releases. This could be a breaking change if these iteration numbers are used in the user-defined macros ( they probably would not be ), but the change was necessary to fix some arcane bugs when dealing with numerical/logical operations with maximum numbers as well to allow the user-defined macros to be called the correct possible maximum number of times. For non-C++ conforming preprocessors, this change was not made because those non-conforming C++ preprocessors generally have limitations which disallow the maximum number of looping constructs to be run, and it was felt not to introduce a possible breaking change to those more fragile preprocessors would be better. It was also felt that besides fixing some arcane preprocessor bugs and providing the possible maximum number of user-defined macro invocations, this change could be made because it has never been documented what the starting 'r' and 'd' iteration numbers actually are but only that these numbers are incremented for each iteration.
    • The library has been upgraded to assume variadic macro support for any compiler working with the library. Ostensibly this means that the library is now a C++11 on up library, yet most of the major compilers, including gcc, clang, and VC++, also support variadic macros in C++98/C++03 mode as long as strict compliance to C++98/C++03 is not turned on when using one of those compilers.
  • Rational:
    • Fix Rational operators to not break under new C++20 operator== rewriting rules. (Glen Fernandes)
  • Signals2:
    • Correct C++ allocator model support to fix compilation in C++20 standards mode. (Glen Fernandes)
  • System:
    • The platform-specific headers windows_error.hpp, linux_error.hpp, and cygwin_error.hpp emit deprecation messages and are slated for removal.
    • The old names for generic_category() and system_category() emit deprecation messages and are slated for removal.
    • error_condition::failed is deprecated and is slated for removal. operator bool() for error_condition has been reverted to its old meaning of value() != 0. This is done for compatibility with std::error_condition as the next release is expected to improve interoperability with <system_error> even further. Note that this does not affect error_code::failed, which is still alive and well.
    • The overload of error_condition::message that takes a buffer is deprecated and is slated for removal, for the same reasons. Note that this does not affect error_code::message.
  • uBLAS:
    • Correct C++ allocator model support to fix compilation in C++20 standards mode. (Glen Fernandes and Conrad Poelman)
  • VMD:
    • The VMD number parsing has been upgraded to support the ability for the end-user to change the number limits in the Preprocessor library.
    • The macro BOOST_VMD_IS_GENERAL_IDENTIFIER has been added to support the parsing of input that represents a preprocessor token which matches the VMD identifier syntax, without having to register the identifier as a specific identifier.
  • Wave:
    • Added new C++20 tokens, including the spaceship operator <=>
    • Fixed bugs:
      • #94: fix incorrect behavior of __LINE__ and __FILE__ under rescanning

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, 9.0.0, 10.0.0, 11.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, 9.0.0, 10.0.0, 11.0.0
    • Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.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, 11.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0, 11.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0, 11.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0, 11.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.0.0, 11.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, Michael Caisse and Glen Fernandes managed this release.

Contributors

John Maddock
John Maddock
Contributor
Niall Douglas
Niall Douglas
Contributor
Jenkins nedprod CI
Contributor
Edward Diener
Edward Diener
Contributor
Nick
Nick
Contributor
NAThompson
NAThompson
Contributor
Peter Dimov
Peter Dimov
Contributor
Ion Gaztañaga
Ion Gaztañaga
Contributor
Adam Wulkiewicz
Adam Wulkiewicz
Contributor
Andrey Semashev
Andrey Semashev
Contributor
Christopher Kohlhoff
Christopher Kohlhoff
Contributor
Evan Miller
Evan Miller
Contributor
Glen Fernandes
Glen Fernandes
Contributor
Richard Hodges
Richard Hodges
Contributor
Jeff Trull
Jeff Trull
Contributor
Barend Gehrels
Barend Gehrels
Contributor
Suyash Patil
Suyash Patil
Contributor
Paul A. Bristow
Paul A. Bristow
Contributor
Marshall Clow
Marshall Clow
Contributor
Vladimir Batov
Vladimir Batov
Contributor
Alexander Grund
Alexander Grund
Contributor
Giovanni Mascellani
Giovanni Mascellani
Contributor
Madhur Chauhan
Madhur Chauhan
Contributor
Vassil Vassilev
Vassil Vassilev
Contributor
Andrzej Krzemieński
Andrzej Krzemieński
Contributor
Hans Dembinski
Hans Dembinski
Contributor
Louis Dionne
Louis Dionne
Contributor
Matt Pulver
Matt Pulver
Contributor
ambrish
ambrish
Contributor
Matt Borland
Matt Borland
Contributor
Oliver Kowalke
Oliver Kowalke
Contributor
Christopher Kormanyos
Christopher Kormanyos
Contributor
Frank Mori Hess
Frank Mori Hess
Contributor
Christos Stratopoulos
Christos Stratopoulos
Contributor
Emil Dotchevski
Emil Dotchevski
Contributor
EugeneZelenko
EugeneZelenko
Contributor
pulver
pulver
Contributor
Märt Laak
Märt Laak
Contributor
Nikita Kniazev
Nikita Kniazev
Contributor
Stefan Seefeld
Stefan Seefeld
Contributor
Pat Riehecky
Pat Riehecky
Contributor
Brandon Kohn
Brandon Kohn
Contributor
Eric Niebler
Eric Niebler
Contributor
Robert Ramey
Robert Ramey
Contributor
Joel de Guzman
Joel de Guzman
Contributor
Joaquin M. López Muñoz
Joaquin M. López Muñoz
Contributor
Lucas Camolezi
Contributor
Romain Geissler
Romain Geissler
Contributor
Steven Watanabe
Steven Watanabe
Contributor
Conrad Poelman
Conrad Poelman
Contributor
Vinnie Falco
Vinnie Falco
Contributor
Dmitry Khominich
Contributor
Matt
Matt
Contributor
Jonathan Wakely
Jonathan Wakely
Contributor
tobias-loew
tobias-loew
Contributor
Ilia K
Ilia K
Contributor
Ben FrantzDale
Ben FrantzDale
Contributor
Pranam Lashkari
Pranam Lashkari
Contributor
byronhe
byronhe
Contributor
Tanzinul Islam
Tanzinul Islam
Contributor
Vissarion Fisikopoulos
Vissarion Fisikopoulos
Contributor
bcao
bcao
Contributor
Philipp Kutin
Contributor
Tyler Kieft
Contributor
Jason Rice
Jason Rice
Contributor
David Seifert
David Seifert
Contributor
Georg Gast
Georg Gast
Contributor
Julien Schueller
Julien Schueller
Contributor
Jürgen Hunold
Jürgen Hunold
Contributor
Jeff Garland
Jeff Garland
Contributor
Andrii Sydorchuk
Andrii Sydorchuk
Contributor
Austin Maliszewski
Austin Maliszewski
Contributor
Jean-Michaël Celerier
Jean-Michaël Celerier
Contributor
Deniz Bahadir
Deniz Bahadir
Contributor
sdarwin
sdarwin
Contributor
Ayaan Khan
Ayaan Khan
Contributor
Moritz Baumann
Moritz Baumann
Contributor
SiggyBar
SiggyBar
Contributor
Tim Blechmann
Tim Blechmann
Contributor
Zach Laine
Zach Laine
Contributor
Krystian Stasiowski
Krystian Stasiowski
Contributor
Casey Carter
Casey Carter
Contributor
CG-SD
CG-SD
Contributor
Yurii Nakonechnyi
Yurii Nakonechnyi
Contributor
Dix Lorenz
Dix Lorenz
Contributor