Version 1.76.0
April 16th, 2021 21:05 GMT
Documentation
New Libraries
Updated Libraries
- 
Asio:
- 
                Added ip::scope_id_typetype alias.
- 
                Added ip::port_typetype alias.
- 
                Added std::hashspecialisations for IP addresses.
- 
                Added std::hashspecialisations forip::basic_endpoint<>.
- 
                Refactored SFINAE usage to improve compile times.
              
- 
                Added friendship support to customisation points, and made most customisations
                private.
              
- 
                Changed any_io_executorto a "strong typedef"-style class.
- 
                Fixed experimental::as_singleto work with handler hook deprecation.
- 
                Ensured pthread condition variable attributes are cleaned up on all
                platforms.
              
- 
                Clarified thread safety notes on sockets and descriptors.
              
- 
                Ensured errnois
                not overwritten ifsocket()fails on macOS/FreeBSD.
- 
                Fixed work tracking for io_contextandthread_poolexecutors
                when move-assigned.
- 
                Ensured internal call_stackobjects are accessed only from implementation files.
- 
                Fixed I/O object move-assignment to ensure the executor is left in
                a valid state.
              
- 
                Fixed detection of compiler support for defaulted template argument
                on functions with MSVC.
              
- 
                Prevented the blocking.alwaysproperty from being used withstrand<>, as it did not produce the
                correct semantics.
- 
                Removed deprecated file asio/impl/src.cpp.
              
 
- 
Atomic:
- 
                Fixed compilation with MSVC for ARM. (PR#49)
              
 
- 
Beast:
- 
Bind:
- 
                Add support for using the standard C++11 placeholders with boost::bind.
- 
                Update boost::applyto use variadic templates
                and perfect forwarding.
 
- 
Container:
- 
                Added [[no-discard]] attribute in all containers to catch bugs related
                to unused return values.
              
- 
                Replaced default standard exception classes with Boost.Container
                own classes, reducing considerably the included files overhead. Example:
                in MSVC 19 boost/container/vector.hpppreprocessed file size reduces from 1,5MB to 930KB. If you still
                want to use standard exception classes, you can defineBOOST_CONTAINER_USE_STD_EXCEPTIONSbefore using any Boost.Container class.
- 
                Fixed bugs/issues:
                
 
- 
Core:
- 
                Add implicit conversion between compatible reference wrappers.
              
- 
                Add boost/core/cmath.hpp, a portable implementation
                of the floating point classification functions from<cmath>.
- 
                Add boost/core/bit.hpp, a portable implementation
                of the C++20 standard header<bit>.
- 
                Fix BOOST_TEST_EQ,BOOST_TEST_NEfor
                character types under C++20.
- 
                Revise allocator access utilities (now support VS2013, and no workarounds
                use allocator_traits.)
 
- 
DLL:
- 
BREAKING CHANGE: boost::dll::importwas renamed toboost::dll::import_symbolto avoid collision with C++20importkeyword.
- 
                Updated docs, including FAQ section.
              
 
- 
Filesystem:
- 
                Updated compatibility with WASI platform. (PR#169)
              
- 
                Fixed an exception being thrown by path::remove_filenameif the path is "////". (#176)
- 
                Fixed create_directoriesdisregarding errors from file status query operations issued internally.
                This could result in incorrect error codes returned bycreate_directories. (#182)
 
- 
Geometry:
- 
                Improvements
                
- 
PR#670 New IOs to_wkt() and from_wkt() (thanks to
                      Baidyanath Kundu).
                    
- 
PR#756 Non cartesian and robust convex hulls.
                    
- 
PR#768 Umbrella strategies for relops, setops, index,
                      buffer and more (undocumented for now).
                    
- 
PR#797 New azimuth() algorithm.
                    
- 
PR#801 Improved accuracy in geographic area computations.
                    
- 
PR#820 Parameter scale added to svg_mapper.
                    
 
- 
                Bugfixes
                
- 
PR#808 Fixed compilation error with rtree serialization
                      enabled (thanks to Tristan Carel).
                    
- 
PR#815 Fixed issue in buffer().
                    
- 
                      Various fixes in set operations and buffer.
                    
 
- 
                Breaking changes
                
- 
                      Removed strategy convex_hull::graham_andrew.
                    
 
 
- 
GIL:
- 
                BREAKING: In next release, we are going to drop support for GCC 5.
                We will also change the required minimum C++ version from C++11 to
                C++14.
              
 
- 
Histogram:
- 
                This release contains critical fixes, please check that your results
                are not affected.
              
- 
                See Release
                Notes for details.
              
 
- 
Intrusive:
- 
                Reduced compile-time dependencies:
                
- 
linear_slist_algorithmsuse a simple node_ptr instead of std::pair on return.
- 
list/slistuseoperator
</operator
==instead ofstd::equal_to/std::less.
 
- 
                Fixed GitHub
                #54: set.rbegin() looks like O(log(N))
 
- 
Interprocess:
- 
                Added wchar_tAPI support
                for named resources in operating systems that offer native wide character
                API (e.g. Windows). The following classes were updated withwchar_tname support:
- 
file_mapping
- 
managed_mapped_file
- 
managed_shared_memory
- 
managed_windows_shared_memory
- 
shared_memory_object
- 
windows_shared_memory_object
- 
file_lock
- 
named_condition
- 
named_condition_any
- 
named_mutex
- 
named_recursive_mutex
- 
named_semaphore
- 
named_sharable_mutex
- 
named_upgradable_mutex
- 
message_queue
 
- 
                Added BOOST_INTERPROCESS_FORCE_NATIVE_EMULATIONmacro option to disable the use of generic emulation code for process
                shared synchronization primitives instead of native POSIX or Winapi
                functions.
- 
                Fixed bugs:
                
 
- 
JSON:
- 
Security
                Report from Bishop Fox.
              
- 
                (#481) Refactored value_fromimplementation; user customizations are now always preferred over
                library-provided overloads.
- 
                (#484) Fix imprecise parsing for some floating point numbers.
              
- 
                (#485) Fix link errors in standalone mode, when used alongside
                Boost.
              
- 
                (#497) Fix Boost.Build builds on GCC 4.8.
              
 
- 
LexicalCast:
- 
                Dropped dependency on Boost.Math (thanks to Peter Dimov #37,
                #39).
              
- 
                Fixes for the CI and coverage (thanks to Sam Darwin from "The
                C++ Alliance" #38, #42).
              
 
- 
Log:
- 
                Bug fixes:
                
- 
                      Corrected a formal race condition in the thread-safe log record
                      queue implementation used in the unbounded_fifo_queuepolicy of theasynchronous_sinkfrontend. The race could be detected by TSAN, but it was not
                      a real problem on most current CPU architectures and compilers.
                      (#139)
- 
                      When copying a logger with a channel attribute (e.g. channel_logger), the channel
                      attribute is now deep-copied from the original logger. This
                      means that modifying the channel in the new logger will no
                      longer affect the original logger.
- 
                      Replaced the use of std::allocator<void>in template parameters
                      with a new tag typeboost::log::use_std_allocatorto silence libc++ warnings about the former being deprecated
                      in C++17 and later. The tag indicates that the instantiated
                      template should be using a specialization ofstd::allocatorinternally to allocate
                      dynamic memory, so the change has no functional effect. (#141)
- 
                      Boost.Log no longer defines __MSVCRT_VERSION__macro on MinGW and MinGW-w64. Defining this macro caused incompatibility
                      with UCRT, which is available as an option in recent MinGW-w64.
                      (PR#149)
 
- 
                See changelog
                for more details.
              
 
- 
Math:
- 
Breaking Change: C++03 support is
                now removed, a C++11 or later conformant compiler is now required
                to use this library.
              
- 
                Added Z-test.
              
- 
                Added execution policy support to univariate and bivariate statistics:
                enables parallel execution (requires C++17 and <execution>).
- 
                Big update/improvement on CI testing.
              
- 
                Bivariate statistics now have integer support.
              
- 
                T-Test now has integer support.
              
- 
                Linear regression now has integer support.
              
- 
                Correct PDF of the beta distribution at the endpoints.
              
- 
                Correct use of Stirling's approximation in certain multiprecision
                cases, fixes #396.
              
- 
                Eliminate -Wimplicit-int-float-conversion on clang.
              
- 
                Fix some constexpr issues in quaternion/octonion.
              
- 
                Minor performance fix to tanh_sinh integration.
              
- 
                Update hypergeometric functions internal scaling to allow for 64-bit
                (long long) exponents with multiprecision types.
              
 
- 
Move:
- 
Multiprecision:
- 
BREAKING CHANGE: Massive refactoring
                and code simplification makes C++11 an absolute requirement.
              
- 
                Use BOOST_TRY/CATCH in headers so code can be used in exception-free
                environments.
              
- 
                Correct corner case in pow, fixes #277.
              
- 
                Correct exception type thrown to match docs in lsb/msb: fixes #257.
              
- 
                Allow moves and operators between related but different types (ie
                types with the same allocator), fixes #278.
              
 
- 
Nowide:
- 
                Fix discarding of characters for text file streams when seek or sync
                functions are used and newlines were converted (e.g. on Windows)
              
- 
                Fix potential use-after-free bug when reusing (via open) a file stream that has been
                closed
- 
                Fix potential invalid memory access when using a file stream that
                has been moved or swapped to where the source had a put-back character
                or was set to unbuffered mode
              
- 
                Fix compatibility with ucrt runtime by not defining __MSVCRT_VERSION__
- 
                Known issues: Read performance for text files is degraded. Binary
                files and writing is unaffected.
              
 
- 
Optional:
- 
                Fixed MSVC warning C4702.
              
 
- 
Outcome:
- 
                Announcements:
                
- 
                      BREAKING CHANGE: After a year and three major Boost releases
                      announcing this upcoming change, this is the FIRST RELEASE
                      of the v2.2 branch. This branch has a number of major breaking
                      changes to the Outcome v2.1 which shipped in Boost 1.75 and
                      earlier, see the documentation for details.
                    
 
- 
                Enhancements:
                
- 
                      VS2019.8 changed how to enable Coroutines, which caused Outcome
                      to not compile on that compiler.
                    
- 
                      If on C++ 20, we now use C++ 20 [[likely]]instead of compiler-specific markup to indicate when TRY has
                      likely success or failure.
- 
                      BREAKING CHANGE: Previously the value of spare_storage(const
basic_result|basic_outcome *)
noexceptwas not propagated
                      overBOOST_OUTCOME_TRY,
                      which causes things like stack backtraces captured at the point
                      of construction of an errored result to get dropped at everyTRYpoint.
                      This has been fixed by adding an optionalspare_storagetosuccess_type<T>andfailure_type<T>, as well as toauto success(T
&&, ...)andauto failure(T
&&, ...).
 
- 
                Bug fixes:
                
- 
                      Boost.Outcome should now compile with BOOST_NO_EXCEPTIONSdefined. 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 useboost::exception_ptras it can't
                      be included if C++ exceptions are globally disabled.
- 
                      BREAKING CHANGE #244
                      It came as a shock to learn that BOOST_OUTCOME_TRYhad been broken since the inception of this library for certain
                      corner case code, which required a breaking change in how TRY
                      works. See the
                      changelog in the documentation for more detail.
 
 
- 
Parameter:
- 
                Added a workaround for MSVC 2015 code miscompilation when an rvalue
                was used as a default value of a named parameter of a function. (PR#109,
                #132)
              
 
- 
PFR:
- 
                Fixed reflection of types with missing constin SFINAE expressions in template constructor. Now reflection of
                aggregates withstd::optional<std::chrono::duration<???>>fields works on any
                Standard Library implementation, even if LWG3050 is not fixed.
- 
                Comparison functions are now constexpr#52
- 
                Fixed numerous typos in docs (thanks to Phil Miller #63)
              
 
- 
PolyCollection:
- 
                Worked around GCC
                bug affecting GCC versions 9.3-10.2 (issue #20).
              
 
- 
Predef:
- 
                Version 1.13
              
- 
                Add ARCH_PPC_64predef.
- 
                Fix ARCH_WORD_BITS*redefinition warnings/errors.
- 
                Add ARCH_E2K, Elbrus
                2000, architecture from Konstantin Ivlev.
- 
                Fix not handling recent C++ version that go above 10.x version.
              
- 
                Version 1.12
              
- 
                Switch to using the endian.h header on OpenBSD. (Brad Smith)
              
- 
                Fix not handling recent versions of stdcxx that go above version
                9.
              
- 
                Fix including sub-BSD OS headers directly causing redef warnings.
              
- 
                Add CI testing of direct inclusion of all headers.
              
- 
                Add CI testing on FreeBSD for clang and gcc.
              
- 
                Add WORD_BITSset
                of predefs to detect the architecture word size. Initial implementation
                inspired by submission from Mikhail Komarov.
- 
                Add CI testing for Cygwin 32 and 64.
              
 
- 
PropertyTree:
- 
                Property Tree has a new maintainer.
              
- 
                Fix usage of deprecated Boost.Bind features.
              
- 
                Link to Wikipedia fixed.
              
- 
                Use BOOST_OVERRIDE to fix GCC warnings.
              
- 
                Add extensive CI testing.
              
 
- 
Regex:
- 
                Regex is now header only except in C++03 mode.
              
- 
                Support for C++03 is now deprecated.
              
- 
                The library can now be used "standalone" without the rest
                of Boost being present.
              
 
- 
Stacktrace:
- 
                Better support for pre-C++11 builds on clang #102.
              
- 
                Bigger warning for do not use boost::stacktrace::stacktrace
                in signal handlers #71.
              
 
- 
TypeTraits:
- 
                Fix for Visual Studio managed code projects.
              
 
- 
Variant2:
- 
                Improved generated code for the double buffered case.
              
 
Updated Tools
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.