Boost Website Site Tools Release notes for work in progress boost https://www.boost.org/ en-us Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or https://www.boost.org/LICENSE_1_0.txt) Version 1.86.0https://www.boost.org/users/history/version_1_86_0.htmlhttps://www.boost.org/users/history/version_1_86_0.htmlWed, 14 Aug 2024 16:07:17 +0000 <div id="version_1_86_0.new_libraries"> <h3><span class="link">New Libraries</span></h3> <ul> <li> <div> No new libraries. </div> </li> </ul> </div> <div id="version_1_86_0.updated_libraries"> <h3><span class="link">Updated Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/asio/">Asio</a>:</span> <ul> <li> <div> Changed the <code><span class="identifier">default_completion_token</span></code> trait's primary template to select <code><span class="identifier">deferred</span></code> as the default completion token. As a result, most asynchronous operations' initiating functions will return a deferred asynchronous operation by default. </div> </li> <li> <div> Added the <code><span class="identifier">is_completion_condition</span></code> trait and added missing default completion tokens to overloads of <code><span class="identifier">async_read</span></code>, <code><span class="identifier">async_read_at</span></code>, <code><span class="identifier">async_write</span></code>, and <code><span class="identifier">async_write_at</span></code>. </div> </li> <li> <div> Added the <code><span class="identifier">is_connect_condition</span></code> trait and used it disambiguate overloads of <code><span class="identifier">async_connect</span></code> when the completion token is defaulted. </div> </li> <li> <div> Extended the completion token adapters <code><span class="identifier">as_tuple</span></code>, <code><span class="identifier">bind_allocator</span></code>, <code><span class="identifier">bind_cancellation_slot</span></code>, <code><span class="identifier">bind_executor</span></code>, <code><span class="identifier">bind_immediate_executor</span></code>, and <code><span class="identifier">redirect_error</span></code> to allow them to be used as partial completion token adapters. </div> </li> <li> <div> Added the <code><span class="identifier">cancel_after</span></code> and <code><span class="identifier">cancel_at</span></code> completion token adapters. </div> </li> <li> <div> Changed all completion token adapters to ensure they correctly propagate the asynchronous operation's I/O executor during adaptation. </div> </li> <li> <div> Moved <code><span class="identifier">co_composed</span></code> out of the <code><span class="identifier">experimental</span></code> namespace. </div> </li> <li> <div> Added <code><span class="identifier">composed</span></code>, which creates an initiation function object from a stateful implementation. It is similar to <code><span class="identifier">co_composed</span></code>, but for regular function objects rather than C++20 coroutines. </div> </li> <li> <div> Changed the <code><span class="identifier">detached</span></code> completion token to work with asynchronous operations that have multiple completion signatures. </div> </li> <li> <div> Changed <code><span class="identifier">async_initiate</span></code> to allow an empty variadic list of completion signatures, which would indicate that an asynchronous operation never completes. </div> </li> <li> <div> Added overloads of <code><span class="identifier">async_initiate</span></code> that automatically deduce the type of the completion token. </div> </li> <li> <div> Added <code><span class="identifier">async_immediate</span></code> which implements a trivial asynchronous operation that completes immediately, using an associated immediate executor if available. </div> </li> <li> <div> Enabled SFINAE-based partial specialisation of the <code><span class="identifier">associator</span></code> trait. </div> </li> <li> <div> A number of bug fixes, compiler/platform compatibility improvements, and minor optimisations. </div> </li> <li> <div> Various updates to documentation and examples. </div> </li> <li> <div> Consult the <a href="https://www.boost.org/doc/libs/1_86_0/doc/html/boost_asio/history.html">Revision History</a> for further details. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/atomic/">Atomic</a>:</span> <ul> <li> <div> Use <a href="https://man.openbsd.org/OpenBSD-6.2/futex.2"><code><span class="identifier">futex</span><span class="special">(</span><span class="number">2</span><span class="special">)</span></code></a> system call on OpenBSD since recent OpenBSD versions have removed support for <code><span class="identifier">syscall</span><span class="special">(</span><span class="number">2</span><span class="special">)</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/beast/">Beast</a>:</span> <ul> <li> <div> API Changes <ul> <li> <div> Added HTTP status code 418 <code><span class="identifier">I</span><span class="error">'</span><span class="identifier">m</span> <span class="identifier">a</span> <span class="identifier">teapot</span></code>. </div> </li> </ul> </div> </li> <li> <div> Fixes <ul> <li> <div> Narrowing conversion in <code><span class="identifier">read_size_hint_db</span><span class="special">()</span></code>. </div> </li> <li> <div> Overloads that are ambiguous when using default completion tokens. </div> </li> <li> <div> Misplaced static_assert in <code><span class="identifier">http</span><span class="special">::</span><span class="identifier">basic_fields</span></code> move-assignment operator. </div> </li> <li> <div> Underflow of <code><span class="identifier">bytes_transferred</span></code> in WebSocket partial write operations. </div> </li> <li> <div> <code><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span><span class="special">::</span><span class="identifier">read_size_hint</span><span class="special">()</span></code> does not exceed <code><span class="identifier">read_message_max</span></code>. </div> </li> <li> <div> Various warnings in tests. </div> </li> <li> <div> Error handling in SSL shutdown operations in examples. </div> </li> <li> <div> Annotate fallthrough case in zlib. </div> </li> <li> <div> Handling of expired timers in <code><span class="identifier">basic_stream</span><span class="special">::</span><span class="identifier">ops</span><span class="special">::</span><span class="identifier">transfer_op</span></code>. </div> </li> <li> <div> Ambiguity in <code><span class="identifier">test</span><span class="special">::</span><span class="identifier">basic_stream</span></code> constructor overloads. </div> </li> <li> <div> Partial parsing of the final chunk in <code><span class="identifier">http</span><span class="special">::</span><span class="identifier">parser</span></code>. </div> </li> </ul> </div> </li> <li> <div> Improvements <ul> <li> <div> Graceful shutdown in <code><span class="identifier">server_flex_awaitable</span></code> example. </div> </li> <li> <div> Simplified awaitable examples. </div> </li> <li> <div> Added fuzzing targets. </div> </li> <li> <div> Remove superfluous uses of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">bind</span></code> in some examples. </div> </li> <li> <div> <code><span class="identifier">ssl_stream</span></code> does not use <code><span class="identifier">flat_stream</span></code>. </div> </li> </ul> </div> </li> <li> <div> Documentation <ul> <li> <div> <code><span class="identifier">ssl_stream</span></code> and <code><span class="identifier">flat_stream</span></code> marked as deprecated. </div> </li> <li> <div> <code><span class="identifier">net</span><span class="special">::</span><span class="identifier">ssl</span><span class="special">::</span><span class="identifier">stream</span></code> is canonical in snippets and examples. </div> </li> <li> <div> Added <code><span class="identifier">SSL</span><span class="special">/</span><span class="identifier">TLS</span> <span class="identifier">Shutdown</span> <span class="identifier">Procedure</span></code> section. </div> </li> </ul> </div> </li> <li> <div> Acknowledgements <ul> <li> <div> tyler92, Ruslan Zakirov, Orgad Shaneh, Alexander Kernozhitsky </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/charconv">Charconv</a>:</span> <ul> <li> <div> Fixed support for PPC64LE architecture. </div> </li> <li> <div> Fixed support for platforms like Alpine linux that provide the <code><span class="special">&lt;</span><span class="identifier">quadmath</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code> header but not the compiled library. </div> </li> <li> <div> Fixed first character pattern matching in <code><span class="identifier">from_chars</span></code> for integer types. </div> </li> <li> <div> Fixed overflow detection for integers with base greater than 10. </div> </li> <li> <div> Added native support for <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">float16_t</span></code> and <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">bfloat16_t</span></code> instead of using interchange formats. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/cobalt">Cobalt</a>:</span> <ul> <li> <div> Added support for asio::cancel_after </div> </li> <li> <div> Made <code><span class="identifier">asio</span><span class="special">::</span><span class="identifier">deferred</span></code> co_await-able, because it's asio's default token </div> </li> <li> <div> Added <code><span class="identifier">noop</span></code> utility </div> </li> <li> <div> Added experimental support for stackful coroutines/fibers </div> </li> <li> <div> Fixed movability of channel &amp; coroutine types </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/compat/">Compat</a>:</span> <ul> <li> <div> Added <code><span class="identifier">bind_front</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code><span class="identifier">bind_back</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code><span class="identifier">invoke</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code><span class="identifier">mem_fn</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code><span class="identifier">integer_sequence</span><span class="special">.</span><span class="identifier">hpp</span></code> and <code><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">function_ref</span><span class="special">.</span><span class="identifier">hpp</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/container/">Container</a>:</span> <ul> <li> <div> Fixed bugs/issues: <ul> <li> <div> <a href="https://github.com/boostorg/container/issues/285">GitHub #285: <em>"devector&lt;&gt;::push_front asserts after clear()"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/280">GitHub #280: <em>"Several containers don't support non-movable types when move assigning"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/279">GitHub #279: <em>"small_vector cannot go back to use stack space"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/277">GitHub #277: <em>"Remove dep on boost::static_assert"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/275">GitHub #275: <em>"Compilation fails if custom key comparison is used"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/273">GitHub #273: <em>"flat_map/vector crashes on appends (memory corruption)"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/269">GitHub #269: <em>"flat_multimap::emplace not sorting elements under GCC"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/266">GitHub #266: <em>"small_vector&lt;T&gt; is misaligned on the stack in 32 bits"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/259">GitHub #259: <em>"Global variables"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/245">GitHub #245: <em>"flat_tree::insert ordered range doesn't assert sorting"</em></a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/container/issues/241">GitHub #241: <em>"flat_map should support same interface as std::map"</em></a>. </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/core/">Core</a>:</span> <ul> <li> <div> Added a <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">pointer_in_range</span><span class="special">.</span><span class="identifier">hpp</span></code> header with a <code><span class="identifier">pointer_in_range</span></code> function template to check if a pointer is within a given range (Glen Fernandes). </div> </li> <li> <div> Fixed <code><span class="identifier">type_name</span></code> for abstract classes. (<a href="https://github.com/boostorg/core/issues/172">#172</a>) </div> </li> <li> <div> Fixed <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">type_name</span><span class="special">.</span><span class="identifier">hpp</span></code> compilation error with MSVC with disabled native <code><span class="keyword">wchar_t</span></code> type. (<a href="https://github.com/boostorg/core/issues/173">#173</a>) </div> </li> <li> <div> Added a workaround for an MSVC <a href="https://developercommunity.visualstudio.com/t/Compiler-bug:-Incorrect-C2247-and-C2248/10690025">bug</a> causing <code><span class="identifier">empty_value</span></code> compilation errors when it is used with a nested class. (<a href="https://github.com/boostorg/core/pull/175">PR#175</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/crc/">CRC</a>:</span> <ul> <li> <div> C++03 is no longer supported; a C++11 compiler is required. (This includes GCC 4.6 or later, and MSVC 10.0 (VS 2010) or later.) </div> </li> <li> <div> Removed dependencies on Array, Config, Integer, and TypeTraits. The library is now standalone. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/filesystem/">Filesystem</a>:</span> <ul> <li> <div> <code><span class="identifier">is_empty</span></code> operation is now better protected against concurrent filesystem modifications. </div> </li> <li> <div> On POSIX systems, <code><span class="identifier">is_empty</span></code> now indicates error if invoked on a file other than a regular file or a directory. </div> </li> <li> <div> On Windows, fixed <code><span class="identifier">file_size</span></code> and <code><span class="identifier">is_empty</span></code> operating on symlinks rather than the files the symlinks refer to. (<a href="https://github.com/boostorg/filesystem/issues/313">#313</a>) </div> </li> <li> <div> <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">refresh</span></code> no longer throws an exception if the file referenced by the entry doesn't exist. This makes <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">status</span></code> and <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">symlink_status</span></code>, as well as methods based on them, behave similarly to the equivalent standalone operations. The fact that the file does not exist is still indicated via the <code><span class="identifier">error_code</span></code> returned by the corresponding <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">refresh</span></code> overload, or can be seen by testing if the file type returned by <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">status</span></code> or <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">symlink_status</span></code> calls is <code><span class="identifier">file_type</span><span class="special">::</span><span class="identifier">file_not_found</span></code>. (<a href="https://github.com/boostorg/filesystem/issues/314">#314</a>) </div> </li> <li> <div> Fixed <code><span class="identifier">weakly_canonical</span></code> testing path elements for existence relative to the current path instead of the base path specified in the call, if the input path was a relative path. </div> </li> <li> <div> On Windows, fixed <code><span class="identifier">weakly_canonical</span></code> producing incorrect result path when the input path started with "..". (<a href="https://github.com/boostorg/filesystem/issues/311">#311</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/format/">Format</a>:</span> <ul> <li> <div> C++03 is no longer supported; a C++11 compiler is required. (This includes GCC 4.7 or later, and MSVC 12.0 (VS 2013) or later.) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/function/">Function</a>:</span> <ul> <li> <div> Removed dependency on Boost.TypeTraits. </div> </li> <li> <div> Brought back the <code><span class="identifier">argN_type</span></code> typedefs that were accidentally lost in 1.85. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/gil/">GIL</a>:</span> <ul> <li> <div> Added <ul> <li> <div> Added <code><span class="identifier">tell</span><span class="special">()</span></code> and <code><span class="identifier">error</span><span class="special">()</span></code> functions to <code><span class="identifier">istream_device</span></code> and <code><span class="identifier">ostream_device</span></code> classes (<a href="https://github.com/boostorg/gil/pull/747">PR#747</a>). </div> </li> </ul> </div> </li> <li> <div> Changed <ul> <li> <div> Don't ignore custom color converter in <code><span class="identifier">color_converted_view</span></code> function (<a href="https://github.com/boostorg/gil/pull/726">PR#726</a>). </div> </li> <li> <div> Added workaround for conflict with <code><span class="identifier">min</span><span class="special">()</span></code> and <code><span class="identifier">max</span><span class="special">()</span></code> macros on WinAPI (<a href="https://github.com/boostorg/gil/pull/745">PR#745</a>). </div> </li> <li> <div> The use of <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span></code> in GIL is now configurable in CMake via option <code><span class="identifier">BOOST_GIL_USE_BOOST_FILESYSTEM</span></code> (<a href="https://github.com/boostorg/gil/pull/743">PR#743</a>). </div> </li> </ul> </div> </li> <li> <div> Fixed <ul> <li> <div> Fixed convolution in <code><span class="identifier">convolve_2d</span></code> (<a href="https://github.com/boostorg/gil/pull/723">PR#723</a>) </div> </li> <li> <div> Normalize Gaussian 2D kernel to avoid darkening (<a href="https://github.com/boostorg/gil/pull/725">PR#725</a>) </div> </li> <li> <div> Wrong buffer size in path string conversion functions for <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span></code> is fixed, avoiding buffer overflows when using I/O-related functions with <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span></code> paths (<a href="https://github.com/boostorg/gil/pull/746">PR#746</a>). </div> </li> </ul> </div> </li> <li> <div> Acknowledgements <ul> <li> <div> Christoph Gringmuth, Christopher Kormanyos, nicolacandussi, Dirk Stolle, Olzhas Zhumabek </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/graph/">Graph</a>:</span> <ul> <li> <div> <em>Major</em> update: C++14 is the new minimum standard; this was partly dictated by dependencies (at least to C++11) and partly by choice. If you require support for an older standard, please contact the maintainer. </div> </li> <li> <div> Remove direct dependency on Boost.Regex. </div> </li> <li> <div> Fix several compilation errors caused by not explicitly including common headers. </div> </li> <li> <div> <code><span class="identifier">isomorphism</span></code>: Fix docs, ignore <code><span class="identifier">vertex_max_invariant</span></code> parameter in favour of cheaply calculating upper exclusive bound, fix bug with Associative Property Map, improve space efficiency from linear in the size of the maximum invariant to linear in the size of g1. </div> </li> <li> <div> <code><span class="identifier">boykov_kolmogorov_max_flow</span></code>: Fix named parameter overload. </div> </li> <li> <div> <code><span class="identifier">adj_list_edge_iterator</span></code>: Fix maybe-uninitialized warnings. </div> </li> <li> <div> <code><span class="identifier">hawick_circuits</span></code>: Add a parameter to optionally limit the depth of the search, causing a potentially suboptimal answer to be returned early. </div> </li> <li> <div> <code><span class="identifier">disjoint_sets</span></code>: Improve performance of <code><span class="identifier">link_sets</span></code> by removing redundant lookup of set representatives. </div> </li> <li> <div> <code><span class="identifier">maximum_adjacency_search</span></code>: Refactor and more tests. </div> </li> <li> <div> <code><span class="identifier">property</span></code>: Use <code><span class="identifier">BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS</span></code> to remove wasted space. </div> </li> <li> <div> <code><span class="identifier">labeled_graph</span></code>: Fix <code><span class="identifier">remove_labeled_vertex</span></code> so that it actually removes the label too. </div> </li> <li> <div> <code><span class="identifier">r_c_shortest_paths</span></code>: Fix bug that the single-solution variant did not always return the shortest path. </div> </li> <li> <div> <code><span class="identifier">read_graphviz</span></code>: Fix stack overflow (oss-fuzz issue 66719) and non-keyword subgraph parsing. </div> </li> <li> <div> Many miscellaneous improvements: broken links, typos, etc. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/interprocess/">Interprocess</a>:</span> <ul> <li> <div> Fixed bugs: <ul> <li> <div> <a href="https://github.com/boostorg/interprocess/pull/191">GitHub #191 (<em>"vectorstream: support file sizes larger than INT_MAX "</em>)</a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/interprocess/pull/198">GitHub #198 (<em>"Minor fixes for documentation of offset_ptr"</em>)</a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/interprocess/pull/202">GitHub #202 (<em>"Allow to map message_queue in anonymous memory"</em>)</a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/interprocess/pull/207">GitHub #207 (<em>"cmake: link system libraries"</em>)</a>. </div> </li> <li> <div> <a href="https://github.com/boostorg/interprocess/pull/214">GitHub #214 (<em>"Doc: Fix github links"</em>)</a>. </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/intrusive/">Intrusive</a>:</span> <ul> <li> <div> Fixed bug <a href="https://github.com/boostorg/intrusive/issues/86">GitHub #86: <em>Invalid UTF-8 character in comment</em></a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/json/">JSON</a>:</span> <ul> <li> <div> Support for GCC versions older than version 5.0 is deprecated and <strong>will stop in Boost 1.88.0</strong>. </div> </li> <li> <div> <code><span class="identifier">source_location</span></code> parameter was added to throwing accessor functions. </div> </li> <li> <div> Parse option to tolerate invalid UTF-16 surrogate pairs, and produce <a href="https://simonsapin.github.io/wtf-8/">WTF-8</a>. </div> </li> <li> <div> Added accessor functions that return <code><span class="identifier">system</span><span class="special">::</span><span class="identifier">result</span></code>. </div> </li> <li> <div> Handle missing error case in direct parsing. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/lexical_cast/">LexicalCast</a>:</span> <ul> <li> <div> Fixed conversion of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string_view</span></code> and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">basic_string_view</span></code> containing one or more <code><span class="special">\</span><span class="number">0</span></code> characters. Issue was introduced in 1.85.0. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/leaf/">leaf</a>:</span> <ul> <li> <div> More optimal verbose_diagnostic_info implementation. </div> </li> <li> <div> Bug fixes. </div> </li> <li> <div> Added [[nodiscard]] to class result&lt;&gt;. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/locale/">Locale</a>:</span> <ul> <li> <div> Add support for custom allocators in <code><span class="identifier">conv</span><span class="special">::</span><span class="identifier">utf_to_utf</span></code> </div> </li> <li> <div> Don't build examples by default </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/log/">Log</a>:</span> <ul> <li> <div> Added a workaround for <code><span class="identifier">windres</span><span class="special">.</span><span class="identifier">exe</span></code> issue, when it is used in CMake to compile event log resource files on MinGW-w64. (<a href="https://github.com/boostorg/log/pull/231">PR#231</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/math/">Math</a>:</span> <ul> <li> <div> Correct Bessel function results at infinity, see <a href="https://github.com/boostorg/math/issues/1143">1143</a>. </div> </li> <li> <div> Improve Non Central T numerical stability, see <a href="https://github.com/scipy/scipy/issues/20693">scipy20693</a>. </div> </li> <li> <div> Correct <code><span class="identifier">float_next</span></code>/<code><span class="identifier">float_prior</span></code> behaviour at infinity. </div> </li> <li> <div> Prevent spurious underflow in non-central beta, see <a href="https://github.com/scipy/scipy/issues/20693">scipy20693</a>. </div> </li> <li> <div> Add improvement to Heuman Lambda precision. </div> </li> <li> <div> Improve Skew Normal root finding, see <a href="https://github.com/boostorg/math/issues/1120">1120</a>. </div> </li> <li> <div> Lots of minor fixes and improved code coverage. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multiprecision/">Multiprecision</a>:</span> <ul> <li> <div> Make sure <code><span class="identifier">eval_convert_to</span><span class="special">()</span></code> does not terminate with super large numbers, see <a href="https://github.com/boostorg/multiprecision/pull/618">618</a>. </div> </li> <li> <div> Fix <code><span class="identifier">sinc</span></code> implementation to match behavior of Boost.Math. </div> </li> <li> <div> Fix divide-by-zero in cpp_int modulus operations. </div> </li> <li> <div> Fix underflow behavior consistency for integers greater than 128-bits, see <a href="https://github.com/boostorg/multiprecision/issues/626">626</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/mysql/">MySQL</a>:</span> <ul> <li> <div> The long-deprecated functions <code><span class="identifier">query</span></code>, <code><span class="identifier">start_query</span></code>, <code><span class="identifier">execute_statement</span></code> and <code><span class="identifier">start_statement_execution</span></code> (and their async equivalents) have been removed. </div> </li> <li> <div> Breaking changes to experimental APIs: <ul> <li> <div> The <code><span class="identifier">identifier</span></code> class (client-side SQL formatting) has been removed. Use the new format specifiers feature, instead. </div> </li> <li> <div> The required interface for custom formatters has been changed to accomodate the new format specifiers API. </div> </li> <li> <div> <code><span class="identifier">any_connection</span><span class="special">::</span><span class="identifier">async_connect</span></code> now requires that its <code><span class="identifier">connect_params</span></code> argument be kept alive until the operation completes. The overload taking a <code><span class="keyword">const</span> <span class="identifier">connect_params</span><span class="special">*</span></code> has been removed. </div> </li> <li> <div> <code><span class="identifier">character_set</span><span class="special">::</span><span class="identifier">name</span></code> is now a <code><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></code> instead of a <code><span class="identifier">string_view</span></code>, as MySQL character set names can't contain NULL characters. </div> </li> <li> <div> <code><span class="identifier">any_connection</span></code> internal buffer is now limited to 64MB. If you need to read or write rows bigger than that, increase <code><span class="identifier">any_connection_params</span><span class="special">::</span><span class="identifier">max_buffer_size</span></code>. <code><span class="identifier">connection</span></code> and their helper typedefs are not limited. </div> </li> <li> <div> Renamed <code><span class="identifier">any_connection_params</span><span class="special">::</span><span class="identifier">initial_read_buffer_size</span></code> to <code><span class="identifier">initial_buffer_size</span></code>. </div> </li> <li> <div> Renamed <code><span class="identifier">pool_params</span><span class="special">::</span><span class="identifier">initial_read_buffer_size</span></code> to <code><span class="identifier">initial_buffer_size</span></code>. </div> </li> </ul> </div> </li> <li> <div> New experimental API: <strong>pipelines</strong>. Pipelines can increase efficiency by coalescing several requests in a single network packet. Pipelines can be used to run text queries, prepare, execute and close statements, reset session state and set the connection's character set. </div> </li> <li> <div> Client-side SQL formatting now supports ranges out of the box. Formatting can be further customized using the new <code><span class="identifier">sequence</span></code> function. Use cases like batch inserts and batch lookups can be significantly simplified using this functionality. </div> </li> <li> <div> Client-side SQL formatting now supports format specifiers which modify how values are formatted. <code><span class="special">{:</span><span class="identifier">i</span><span class="special">}</span></code> formats a string as a dynamic SQL identifiers, and <code><span class="special">{:</span><span class="identifier">r</span><span class="special">}</span></code> outputs a raw unescaped </div> </li> <li> <div> The static interface (<code><span class="identifier">static_results</span></code> and <code><span class="identifier">static_execution_state</span></code>) now supports Boost.Pfr types using <code><span class="identifier">pfr_by_name</span></code> and <code><span class="identifier">pfr_by_position</span></code>. Added <code><span class="identifier">underlying_row_t</span></code> to support such types. </div> </li> <li> <div> <code><span class="identifier">date</span></code> and <code><span class="identifier">datetime</span></code> can now be constructed from and converted to C++20 <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">local_time</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">any_connection_params</span><span class="special">::</span><span class="identifier">max_buffer_size</span></code>, which allows to set a limit to the connection's internal buffer. </div> </li> <li> <div> Added <code><span class="identifier">is_fatal_error</span></code>, which allows users can now distinguish between fatal (which require closing and re-opening the connection) and non-fatal error codes. </div> </li> <li> <div> Added <code><span class="identifier">formattable_ref</span></code>, a type-erased reference type that can refer to any type satisfying the <code><span class="identifier">Formattable</span></code> concept. </div> </li> <li> <div> Fixed an ODR violation under MSVC which could cause crashes in release builds when using Boost.MySQL with other code also using <code><span class="identifier">asio</span><span class="special">::</span><span class="identifier">coroutine</span></code> in different translation units. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/numeric/odeint/">Odeint</a>:</span> <ul> <li> <div> Added CMake Option <code><span class="identifier">BOOST_NUMERIC_ODEINT_NO_ADAPTORS</span></code> to reduce dependencies, see <a href="https://github.com/boostorg/odeint/issues/82">82</a> </div> </li> <li> <div> Fixed CMake detection of MPI. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/process/">Process</a>:</span> <ul> <li> <div> Moved the old boost.process to v1 subfolder and inline namespace. deprecated process/*.hpp v1 headers </div> </li> <li> <div> Turned v2 into a compile library. </div> </li> <li> <div> Fixed usage on alpine linux / musl </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/stacktrace/">Stacktrace</a>:</span> <ul> <li> <div> <strong>Big new feature: stacktrace from arbitrary exception for Windows</strong>. <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">stacktrace</span><span class="special">::</span><span class="identifier">from_current_exception</span><span class="special">()</span></code> now works on Windows platform. Many thanks to <a href="https://github.com/huangqinjin">huangqinjin</a> for the implementation <a href="https://github.com/boostorg/stacktrace/pull/159">PR#159</a> Now on POSIX and Windows the <code><span class="identifier">from_current_exception</span><span class="special">()</span> </code> function returns the stacktrace of the current exception object as if the stacktrace was captured at the point of throwing the exception. </div> </li> <li> <div> Fixed inclusion of rarely used Windows SDK headers which can cause conflict with other code using Windows SDK. Thanks to <a href="https://github.com/mabrarov">Marat Abrarov</a> for fixing the issue <a href="https://github.com/boostorg/stacktrace/pull/157">PR#157</a>. </div> </li> <li> <div> Build option <code><span class="identifier">boost</span><span class="special">.</span><span class="identifier">stacktrace</span><span class="special">.</span><span class="identifier">from_exception</span></code> now properly works on MacOS. Thanks to <a href="https://github.com/pdimov">Peter Dimov</a> for the fix <a href="https://github.com/boostorg/stacktrace/pull/166">PR#166</a>. </div> </li> <li> <div> Fixed a typo in assert expression. Thanks to <a href="https://github.com/Ukilele">Kilian Henneberger</a> for the bug report <a href="https://github.com/boostorg/stacktrace/issues/164">#164</a>. </div> </li> <li> <div> Fixed shadowing warnings. Thanks to <a href="https://github.com/nigels-com">Nigel Stewart</a> for the bug report <a href="https://github.com/boostorg/stacktrace/issues/141">#141</a>. </div> </li> <li> <div> Added <code><span class="identifier">dladdr</span></code> minimal support for AIX. Many thanks to Clément Chigot for the implementation <a href="https://github.com/boostorg/stacktrace/pull/114">PR#114</a>. </div> </li> <li> <div> Added <code><span class="identifier">Boost</span><span class="special">::</span><span class="identifier">stacktrace</span></code> CMake alias that refers to the best supported implementation of Boost.Stacktrace on the platform. Thanks to <a href="https://github.com/leha-bot">Alex</a> for the feature <a href="https://github.com/boostorg/stacktrace/pull/167">PR#167</a>. </div> </li> <li> <div> Significant improvement of CMake: multiple fixes, added many new tests, improved CI. Many thanks to <a href="https://github.com/pdimov">Peter Dimov</a> for all the improvements. </div> </li> <li> <div> Fix addr2line work when the process is looked up via <code><span class="identifier">PATH</span></code>. Thanks to <a href="https://github.com/Schreischildkroete">Schreischildkroete</a> for the bug report and to <a href="https://github.com/j-jr-richter">Jens Richter</a> for fix <a href="https://github.com/boostorg/stacktrace/issues/72">#72</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/test/">Test</a>:</span> <ul> <li> <div> Fix <code><span class="special">-</span><span class="identifier">Wundef</span></code> in configuration step. </div> </li> <li> <div> Fix unreachable return compilation error on MSVC. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/unordered/">Unordered</a>:</span> <ul> <li> <div> Added container <code><span class="identifier">pmr</span></code> aliases when header <code><span class="special">&lt;</span><span class="identifier">memory_resource</span><span class="special">&gt;</span></code> is available. The alias <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered</span><span class="special">::</span><span class="identifier">pmr</span><span class="special">::[</span><span class="identifier">container</span><span class="special">]</span></code> refers to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered</span><span class="special">::[</span><span class="identifier">container</span><span class="special">]</span></code> with a <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">pmr</span><span class="special">::</span><span class="identifier">polymorphic_allocator</span></code> allocator type. </div> </li> <li> <div> Equipped open-addressing and concurrent containers to internally calculate and provide statistical metrics affected by the quality of the hash function. This functionality is enabled by the global macro <code><span class="identifier">BOOST_UNORDERED_ENABLE_STATS</span></code>. </div> </li> <li> <div> Avalanching hash functions must now be marked via an <code><span class="identifier">is_avalanching</span></code> typedef with an embedded <code><span class="identifier">value</span></code> constant set to <code><span class="keyword">true</span></code> (typically, defining <code><span class="identifier">is_avalanching</span></code> as <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span></code>). <code><span class="keyword">using</span> <span class="identifier">is_avalanching</span> <span class="special">=</span> <span class="keyword">void</span></code> is deprecated but allowed for backwards compatibility. </div> </li> <li> <div> Added Visual Studio Natvis framework custom visualizations for containers and iterators. This works for all containers with an allocator using raw pointers. In this release, containers and iterators are not supported if their allocator uses fancy pointers. This may be addressed in later releases. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/uuid/">UUID</a>:</span> <ul> <li> <div> <em>Major</em> update. </div> </li> <li> <div> C++03 is no longer supported, a C++11 compiler is required. (This includes GCC 4.8 or later, MSVC 14.0 (VS 2015) or later, and MinGW-w64.) </div> </li> <li> <div> Decreased number of Boost dependencies from 39 (in total) to just 5. </div> </li> <li> <div> Updated to reflect the newer <a href="https://datatracker.ietf.org/doc/rfc9562/">RFC 9562</a>. </div> </li> <li> <div> Added generators for time-based UUIDs. </div> </li> <li> <div> <em>Many</em> other improvements, see the <a href="https://www.boost.org/libs/uuid/doc/html/uuid.html#changes">revision history</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/wave/">Wave</a>:</span> <ul> <li> <div> Replaced one use of vsprintf with the more secure vsnprintf </div> </li> <li> <div> Fixed bug: <ul> <li> <div> <a href="https://github.com/boostorg/wave/issues/197">#197</a>: Improper signed overflow handling (UB and a missing division check) </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/winapi/">WinAPI</a>:</span> <ul> <li> <div> Added <code><span class="identifier">BOOST_USE_WINAPI_VERSION</span></code> CMake option, which allows users to specify the Windows version for Boost to target. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_86_0.updated_tools"> <h3><span class="link">Updated Tools</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/tools/boostbook/">BoostBook</a>:</span> <ul> <li> <div> DTD updated: <code><span class="identifier">constructor</span></code>, <code><span class="identifier">copy</span><span class="special">-</span><span class="identifier">assignment</span></code> and <code><span class="identifier">destructor</span></code> elements are now allowed inside <code><span class="identifier">method</span><span class="special">-</span><span class="identifier">group</span></code> elements. </div> </li> <li> <div> Many fixes and improvements in Doxygen-generated documentation: <ul> <li> <div> Fixed duplicate equal signs in Doxygen-generated enum value initializers. </div> </li> <li> <div> Disabled alphabetical sorting of function arguments. The sorting can be re-enabled by setting the new <code><span class="identifier">boost</span><span class="special">.</span><span class="identifier">sort</span><span class="special">.</span><span class="identifier">params</span></code> XSL parameter to 1. </div> </li> <li> <div> Added support for custom class member grouping. See Doxygen tags <code><span class="error">@</span><span class="identifier">name</span></code> and <code><span class="error">@</span><span class="special">{</span></code>/<code><span class="error">@</span><span class="special">}</span></code>. </div> </li> <li> <div> Added support for Doxygen references to classes, methods, enums, variables, etc. (see <code><span class="error">@</span><span class="identifier">ref</span></code> tag). </div> </li> <li> <div> Added support for <code><span class="error">@</span><span class="identifier">remark</span></code> and <code><span class="error">@</span><span class="identifier">important</span></code> tags. </div> </li> <li> <div> Added support for <code><span class="error">@</span><span class="identifier">parblock</span></code> tags, which can be used to place multiple paragraphs under a tag that expects a single paragraph as an argument (e.g. <code><span class="error">@</span><span class="identifier">returns</span></code>). </div> </li> <li> <div> Template parameter defaults that refer to implementation details are now concealed, similar to function parameter defaults. </div> </li> <li> <div> Improved presentation of unnamed enums. Instead of showing a synthesized name such as <code><span class="error">@</span><span class="number">0</span></code>, the name is either omitted or is <code><span class="special">[</span><span class="identifier">unnamed</span><span class="special">]</span></code>, if the name is necessary to introduce a link to the enum documentation. </div> </li> <li> <div> Changed the "See Also" (<code><span class="error">@</span><span class="identifier">sa</span></code>) blocks to be displayed inline, similar to "Returns". </div> </li> <li> <div> Fixed presentation of multiple exception specifications (<code><span class="error">@</span><span class="identifier">throws</span></code>). </div> </li> <li> <div> Added support for free form description of throwing behavior. If the exception type after the <code><span class="error">@</span><span class="identifier">throws</span></code> tag is "~" then the exception type is omitted from the output, and the following description is displayed directly in the "Throws" section. </div> </li> <li> <div> Removed redundant spaces in return types and template parameters. </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/tools/build/">Build</a>:</span> <ul> <li> <div> Includes release of <a href="https://www.boost.org/tools/build/doc/html/#_version_5_2_1">B2 version 5.2.1</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_86_0.compilers_tested"> <h3><span class="link">Compilers Tested</span></h3> <p> Boost's primary test compilers are: </p> <ul> <li> <div> Linux: <ul> <li> <div> Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> GCC, C++03: 4.6.3, 11, 12 </div> </li> <li> <div> GCC, C++11: 4.7.3, 4.8.5, 11, 12 </div> </li> <li> <div> GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12 </div> </li> </ul> </div> </li> <li> <div> OS X: <ul> <li> <div> Apple Clang, C++03: 11.0.3 </div> </li> <li> <div> Apple Clang, C++11: 11.0.3 </div> </li> <li> <div> Apple Clang, C++14: 11.0.3 </div> </li> <li> <div> Apple Clang, C++17: 11.0.3 </div> </li> <li> <div> Apple Clang, C++20: 11.0.3 </div> </li> </ul> </div> </li> <li> <div> Windows: <ul> <li> <div> Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3 </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_86_0.acknowledgements"> <h3><span class="link">Acknowledgements</span></h3> <p> Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release. </p> </div> Version 1.85.0https://www.boost.org/users/history/version_1_85_0.htmlhttps://www.boost.org/users/history/version_1_85_0.htmlMon, 15 Apr 2024 17:38:25 +0000 <div id="version_1_85_0.known_issues"> <h3><span class="link">Known Issues</span></h3> <p> These are patches from library authors which were found too late to be fixed in the release. </p> <ul> <li> <div> Container <ul> <li> <div> flat_map/multimap containers can crash or return invalid results in some compilers due to UB in the library, see <a href="https://github.com/boostorg/container/issues/273">#273</a>. <a href="https://www.boost.org/patches/1_85_0/0001-container-fix-flat_map.patch">Patch</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_85_0.new_libraries"> <h3><span class="link">New Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/charconv/">Charconv</a>:</span> A high quality implementation of <code><span class="special">&lt;</span><span class="identifier">charconv</span><span class="special">&gt;</span></code> in C++11, from Matt Borland. </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/scope/">Scope</a>:</span> A collection of scope guard utilities and a <code><span class="identifier">unique_resource</span></code> wrapper, from Andrey Semashev. </div> </li> </ul> </div> <div id="version_1_85_0.updated_libraries"> <h3><span class="link">Updated Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/asio/">Asio</a>:</span> <ul> <li> <div> Fixed the <code><span class="identifier">async_result</span></code> primary template's concept checking to correctly handle lvalue-qualified completion signatures. </div> </li> <li> <div> Fixed some compile errors that could arise when using the <code><span class="identifier">bind_allocator</span></code>, <code><span class="identifier">bind_executor</span></code>, <code><span class="identifier">bind_immediate_executor</span></code> and <code><span class="identifier">bind_cancellation_slot</span></code> completion token adapters to adapt each other. </div> </li> <li> <div> Changed the <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">ranged_parallel_group</span></code> operation so that it moves the <code><span class="identifier">completion_order</span></code> vector when invoking the completion handler. </div> </li> <li> <div> Fixed some warnings about deprecated implicit copy constructors on <code><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver_query</span></code>, <code><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">strand</span></code>, and <code><span class="identifier">coroutine</span></code>. </div> </li> <li> <div> Updated the version specification used to initialise Winsock. </div> </li> <li> <div> Fixed <code><span class="identifier">co_spawn</span></code> to correctly propagate exceptions resulting from cancellation to the completion handler. </div> </li> <li> <div> Added calls to <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">launder</span></code> to fix undefined behaviour in <code><span class="identifier">awaitable</span><span class="special">&lt;&gt;</span></code> internal storage. </div> </li> <li> <div> Added missing handling of the <code><span class="identifier">file_base</span><span class="special">::</span><span class="identifier">append</span></code> flag in the Windows implementation of file support. </div> </li> <li> <div> Updated the socket and descriptor implementations to add more cases where they will fall back to <code><span class="identifier">fcntl</span></code> if a call to <code><span class="identifier">ioctl</span></code> fails. </div> </li> <li> <div> Fixed the <tt>boost/asio/experimental/parallel_group.hpp</tt> header so that it is self-contained. </div> </li> <li> <div> Fixed a compile error that occurred when channels and <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">coro</span></code> were both used in the same translation unit. </div> </li> <li> <div> Added missing CancellationSlot type requirements to documentation. </div> </li> <li> <div> Fixed the documentation hyperlinks for the deduced return types of asynchronous operations' initiating functions. </div> </li> <li> <div> Other minor documentation updates. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/atomic/">Atomic</a>:</span> <ul> <li> <div> Added support for <code><span class="identifier">pause</span></code> instruction on RISC-V. (<a href="https://github.com/boostorg/atomic/pull/65">PR#65</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/beast/">Beast</a>:</span> <ul> <li> <div> API Changes <ul> <li> <div> The status code list has been updated to conform with the IANA registry. </div> </li> </ul> </div> </li> <li> <div> Fixes <ul> <li> <div> Unreachable code warning in <code><span class="identifier">buffers_cat</span><span class="special">.</span><span class="identifier">hpp</span></code>. </div> </li> <li> <div> Connection error handling in <code><span class="identifier">websocker_server_awaitable</span></code> example. </div> </li> <li> <div> Concurrent calls to <code><span class="identifier">async_write</span></code> in advanced server examples. </div> </li> <li> <div> zlib name conflicts with minizip. </div> </li> <li> <div> host string should be updated after <code><span class="identifier">SSL_set_tlsext_host_name</span><span class="special">()</span></code>. </div> </li> </ul> </div> </li> <li> <div> Improvements <ul> <li> <div> <code><span class="identifier">asio</span><span class="special">::</span><span class="identifier">associator</span></code> is specialized for <code><span class="identifier">bind_wrapper</span></code> and <code><span class="identifier">bind_front_wrapper</span></code>. </div> </li> <li> <div> Add non-allocating overload for error category message function. </div> </li> </ul> </div> </li> <li> <div> Documentation <ul> <li> <div> Specifies when calling <code><span class="identifier">http</span><span class="special">::</span><span class="identifier">message</span><span class="special">::</span><span class="identifier">prepare_payload</span><span class="special">()</span></code> is optional. </div> </li> <li> <div> Operations affected by <code><span class="identifier">basic_stream</span><span class="special">::</span><span class="identifier">expires_after</span><span class="special">()</span></code>. </div> </li> <li> <div> <code><span class="identifier">teardown</span><span class="special">()</span></code> and <code><span class="identifier">async_teardown</span><span class="special">()</span></code> are customization points. </div> </li> <li> <div> Moving or copying <code><span class="identifier">http</span><span class="special">::</span><span class="identifier">serializer</span></code> after first usage is undefined behaviour. </div> </li> <li> <div> <code><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">permessage_deflate</span></code> should be configured before performing the WebSocket handshake. </div> </li> <li> <div> <code><span class="identifier">bytes_transferred</span></code> in http reads operations reports the number of bytes consumed by the HTTP parser. </div> </li> </ul> </div> </li> <li> <div> Acknowledgements <ul> <li> <div> Emile Cormier, JohannesWilde, yhzx233 </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/bimap/">Bimap</a>:</span> <ul> <li> <div> Fixed heterogeneous lookup for side collections (<a href="https://github.com/boostorg/bimap/pull/42">PR#42</a>). </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/bind/">Bind</a>:</span> <ul> <li> <div> C++03 is no longer supported; a C++11 compiler is required. (This includes GCC 4.7 or later, and MSVC 12.0 (VS 2013) or later.) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/conversion/">Conversion</a>:</span> <ul> <li> <div> Removed outdated mentions of <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> that is not part of the library any more. Thanks to <a href="https://github.com/eoan-ermine">Danil Sidoruk</a> for the PR <a href="https://github.com/boostorg/conversion/pull/28">PR#28</a>! </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/core/">Core</a>:</span> <ul> <li> <div> Added a new <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">functor</span><span class="special">.</span><span class="identifier">hpp</span></code> header with a <code><span class="identifier">functor</span></code> class template for wrapping a raw function into a function object class. </div> </li> <li> <div> Changed <code><span class="identifier">null_deleter</span></code>, <code><span class="identifier">fclose_deleter</span></code> and checked deleter definitions so that they don't bring namespace <code><span class="identifier">boost</span></code> into argument-dependent lookup. Users may need to either explicitly qualify the namespace of the called function or add a <code><span class="keyword">using</span></code>-declaration. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/filesystem/">Filesystem</a>:</span> <ul> <li> <div> <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">generic_path</span></code> and <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">generic_string</span></code> methods now remove duplicate directory separators in the returned paths. </div> </li> <li> <div> <strong>v4:</strong> <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">generic_path</span></code>, <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">generic_string</span></code>, <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">make_preferred</span></code> and <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">lexically_normal</span></code> avoid converting between backslashes and forward slashes in path root names. For example, on Windows, <code><span class="identifier">path</span><span class="special">(</span><span class="string">"\\\\\\\\?\\\\c:\\\\foo"</span><span class="special">).</span><span class="identifier">generic_string</span><span class="special">()</span></code> now returns "\\?\c:/foo" instead of "//?/c:/foo". Similarly, <code><span class="identifier">path</span><span class="special">(</span><span class="string">"\\\\\\\\host/share/foo/.."</span><span class="special">).</span><span class="identifier">lexically_normal</span><span class="special">()</span></code> now returns "\\host\share". </div> </li> <li> <div> <strong>v4:</strong> <code><span class="identifier">equivalent</span></code> now indicates error if either one of the paths doesn't exist. </div> </li> <li> <div> <strong>v4:</strong> <code><span class="identifier">absolute</span></code> now returns a path with a trailing directory separator when the input path has an empty <code><span class="identifier">relative_path</span><span class="special">()</span></code>. (<a href="https://github.com/boostorg/filesystem/issues/301">#301</a>) </div> </li> <li> <div> Added a <code><span class="identifier">unique_path</span></code> overload taking a single <code><span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span></code> argument. The overload generates a unique path using the default path model. </div> </li> <li> <div> <code><span class="identifier">weakly_canonical</span></code> now produces an absolute path if the input path is relative and contains no elements that exist in the filesystem. (<a href="https://github.com/boostorg/filesystem/issues/300">#300</a>) </div> </li> <li> <div> Added a new <code><span class="identifier">copy_options</span><span class="special">::</span><span class="identifier">ignore_attribute_errors</span></code> option for <code><span class="identifier">copy_file</span></code> and <code><span class="identifier">copy</span></code> operations. The new option allows to ignore possible errors while copying file attributes. (<a href="https://github.com/boostorg/filesystem/issues/179">#179</a>) </div> </li> <li> <div> On Linux, <code><span class="identifier">copy_file</span></code> backends based on <code><span class="identifier">sendfile</span></code> and <code><span class="identifier">copy_file_range</span></code> system calls will attempt to preallocate storage for the target file. This may reduce filesystem fragmentation and provide early error indication if there is not enough free space. Not all filesystems support this feature; file copying proceeds if storage preallocation is not supported. </div> </li> <li> <div> On POSIX systems that support <a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdopendir.html"><code><span class="identifier">fdopendir</span></code></a>, <code><span class="identifier">openat</span></code> and related APIs defined in POSIX.1-2008, as well as on Windows, <code><span class="identifier">recursive_directory_iterator</span></code> now uses file descriptors/handles instead of paths to query the file statuses and open nested directories during iteration. This makes directory iteration more resilient to concurrent modifications of the filesystem. </div> </li> <li> <div> Removed APIs that were previously declared deprecated. In particular, <code><span class="identifier">path</span></code> and <code><span class="identifier">recursive_directory_iterator</span></code> member functions, <code><span class="identifier">is_regular</span></code>, <code><span class="identifier">copy_directory</span></code>, <code><span class="identifier">symbolic_link_exists</span></code>, <code><span class="identifier">complete</span></code>, <code><span class="identifier">copy_option</span></code>, <code><span class="identifier">symlink_option</span></code>, as well as <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">filesystem</span><span class="special">/</span><span class="identifier">convenience</span><span class="special">.</span><span class="identifier">hpp</span></code> and <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">filesystem</span><span class="special">/</span><span class="identifier">path_traits</span><span class="special">.</span><span class="identifier">hpp</span></code> headers were removed. Possible replacements for the removed components are mentioned in the documentation. </div> </li> <li> <div> Support for <code><span class="identifier">path</span></code> construction, assignment and appending from container types (e.g. <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span></code>) is now disabled by default. Users can still enable this functionality by defining <code><span class="identifier">BOOST_FILESYSTEM_DEPRECATED</span></code>. This functionality remains deprecated and will be completely removed in a future release. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/function/">Function</a>:</span> <ul> <li> <div> C++03 is no longer supported; a C++11 compiler is required. (This includes GCC 4.7 or later, and MSVC 12.0 (VS 2013) or later.) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/geometry/">Geometry</a>:</span> <ul> <li> <div> Improvements <ul> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1247">PR#1247</a> Use if constexpr macro instead of condition macro </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1242">PR#1242</a> Pass strategy to sort by side </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1234">PR#1234</a> Add cmake files for clang/mac/darwin/arm64 </div> </li> </ul> </div> </li> <li> <div> Solved issues <ul> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1231">#1231</a>, <a href="https://github.com/boostorg/geometry/issues/1244">#1244</a> Fix invalid set operations for CCW polygons </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1259">#1259</a> Fix compilation error with CUDA NVCC compiler </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1250">#1250</a> Fix buffer of linestring returning incorrect inner polygon </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1230">#1230</a> Fix union operation perturbing a point and returning wrong result </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1229">#1229</a> Fix union producing self intersections </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1248">PR#1248</a> Fix buffer issue by setting turns in closed clusters as non traversable </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1246">PR#1246</a> Fix compilation of converter and is_base_of </div> </li> <li> <div> Various fixes of errors and warnings </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/iterator/">Iterator</a>:</span> <ul> <li> <div> Support for C++03 is deprecated and will be removed in a future release. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/json/">JSON</a>:</span> <ul> <li> <div> Boost.Endian is now used to deal with endianness. </div> </li> <li> <div> Aliases to Boost.System and Boost.Container components are deprecated and <strong>will be completely removed in 1.87.0</strong>. </div> </li> <li> <div> Conversion of described classes supports private members. </div> </li> <li> <div> Rvalue reference overload for <code><span class="identifier">visit</span></code>. </div> </li> <li> <div> Add conversion support for path-like types. </div> </li> <li> <div> Parsing into described classes correctly considers inherited members. </div> </li> <li> <div> Conversion of self-referential sequences is disabled. </div> </li> <li> <div> Fixed reference handling in visit. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/leaf/">LEAF</a>:</span> <ul> <li> <div> New API for transporting of error objects and exceptions between threads: <code><span class="identifier">try_capture_all</span></code>. </div> </li> <li> <div> <code><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> able to transport exceptions captured via <code><span class="identifier">try_capture_all</span></code>. </div> </li> <li> <div> <code><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> transporting dynamically captured error objects with improved efficiency. </div> </li> <li> <div> Old <code><span class="identifier">make_shared_context</span></code>/<code><span class="identifier">capture</span></code> APIs are deprecated, will be removed in the next release. </div> </li> <li> <div> Removed support for transporting of dynamicaly captured error objects in exceptions. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/lexical_cast/">LexicalCast</a>:</span> <ul> <li> <div> Significant rewrite of the internal logic to separate optimized and C++ Standard Library IO-based streams: <ul> <li> <div> C++ Standard Library based streams now constructed in less cases leading to <strong>better performance</strong>; </div> </li> <li> <div> less template instantiations and simpler code; </div> </li> <li> <div> always use <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">char_traits</span></code> (do not use custom traits from input/output types as it leads to linktime or runtime errors); </div> </li> <li> <div> fixed missuse of forward declared boost::array (thanks to <a href="https://github.com/13steinj">13steinj</a> for the report <a href="https://github.com/boostorg/lexical_cast/issues/64">#64</a>!); </div> </li> <li> <div> support for <code><span class="keyword">volatile</span></code> input types was dropped, following the C++ Standard Library trend. </div> </li> </ul> </div> </li> <li> <div> Optimized conversions from std::basic_string_view and boost::basic_string_view <a href="https://github.com/boostorg/lexical_cast/issues/30">#30</a>. </div> </li> <li> <div> Dropped dependency on Boost.NumericConversion and Boost.MPL. Fixed some cases of converting floting point types to arithmetics. </div> </li> <li> <div> The library now compiles and works fine with <code><span class="special">-</span><span class="identifier">fno</span><span class="special">-</span><span class="identifier">sanitize</span><span class="special">-</span><span class="identifier">recover</span><span class="special">=</span><span class="identifier">integer</span></code> <a href="https://github.com/boostorg/lexical_cast/issues/45">#45</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/locale/">Locale</a>:</span> <ul> <li> <div> Fix linker issues due to missing typeinfo for <code><span class="identifier">char8_t</span></code> in C++20 mode </div> </li> <li> <div> Fix IConv compile flags when using ICU that has a bundled IConv </div> </li> <li> <div> <code><span class="identifier">collator</span></code> now throws on construction, if at all, as documented </div> </li> <li> <div> <code><span class="identifier">collator</span></code> no longer derives from <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">collator</span></code> to avoid possible type confusing when it isn't available for the current backend <a href="https://github.com/boostorg/locale/pull/216">PR#216</a> </div> </li> <li> <div> Throw an exception when a faulty IConv library is detected (e.g. on some MacOS versions) instead of looping indefinitely <a href="https://github.com/boostorg/locale/pull/218">PR#218</a> </div> </li> <li> <div> Reduce resolution of <code><span class="identifier">date_time</span></code> to seconds as milliseconds where not easily available causing confusion <a href="https://github.com/boostorg/locale/issues/221">#221</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/math/">Math</a>:</span> <ul> <li> <div> Added a new collection of optimization algorithms: <ul> <li> <div> Differential Evolution <a href="https://github.com/boostorg/math/pull/1062">PR#1062</a> </div> </li> <li> <div> JSO <a href="https://github.com/boostorg/math/pull/1065">PR#1065</a> </div> </li> <li> <div> Random Search <a href="https://github.com/boostorg/math/pull/1071">PR#1071</a> </div> </li> <li> <div> CMA-ES <a href="https://github.com/boostorg/math/pull/1074">PR#1074</a> </div> </li> </ul> </div> </li> <li> <div> Fix Divide by 0 warning in NCF survival function </div> </li> <li> <div> Fix constexpr depth limits of ccmath::floor/ceil fail for large arguments </div> </li> <li> <div> Improve accuracy of quartic_roots </div> </li> <li> <div> Fix cstdfloat numeric limits detection macro for libstdc++14 </div> </li> <li> <div> Fix for MSVC UCRT defining _Complex_I in complex.h when using C++14 <a href="https://github.com/boostorg/math/pull/1060">PR#1060</a> </div> </li> <li> <div> Improve cstdfloat iostream <a href="https://github.com/boostorg/math/pull/1066">PR#1066</a> </div> </li> <li> <div> Fix redefnition of Boost.Config macros when using standalone mode in a non-standalone environment </div> </li> <li> <div> Significant improvements to code coverage with associated bug fixes </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/msm/">MSM</a>:</span> <ul> <li> <div> <strong>Major Update</strong>. Backend update (back11). Requires C++ 11. The documentation now uses it as default. </div> </li> <li> <div> <strong>Big new feature</strong>. New front-end (PlantUML). Requires C++ 20 </div> </li> <li> <div> Various Bugfixes (compiler errors and warnings, priority of deferred events) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multi_index/">Multi-index Containers</a>:</span> <ul> <li> <div> Fixed documentation errors. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multiprecision/">Multiprecision</a>:</span> <ul> <li> <div> Fix deprecation warnings from C++23 &lt;limits&gt; <a href="https://github.com/boostorg/multiprecision/pull/575">PR#575</a> </div> </li> <li> <div> Fix cpp_bin_float for small bit counts <a href="https://github.com/boostorg/multiprecision/pull/577">PR#577</a> </div> </li> <li> <div> Fix -Wpessimizing-move <a href="https://github.com/boostorg/multiprecision/pull/580">PR#580</a> </div> </li> <li> <div> Add covecov runs </div> </li> <li> <div> Reduce truncation in cpp_dec_float multiplication <a href="https://github.com/boostorg/multiprecision/pull/585">PR#585</a> </div> </li> <li> <div> Fix complex_adaptor to match precision requirements <a href="https://github.com/boostorg/multiprecision/pull/597">PR#597</a> </div> </li> <li> <div> Fix for breaking changes in tommath <a href="https://github.com/boostorg/multiprecision/pull/603">PR#603</a> </div> </li> <li> <div> Fix for types that can be converted to number participting in arithmetic operator overloads <a href="https://github.com/boostorg/multiprecision/issues/608">#608</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/mysql/">MySQL</a>:</span> <ul> <li> <div> <strong>Breaking change</strong>: Boost.MySQL now requires linking to the new <strong>Boost.Charconv</strong> compiled library. This addresses a locale-dependency problem, increases efficiency, and powers the new client-side SQL formatting feature. </div> </li> <li> <div> Added experimental support for <strong>connection pools</strong>, which allows re-using sessions and provides built-in reconnection and error handling. </div> </li> <li> <div> Added experimental support for <strong>type-erased connections</strong> (<code><span class="identifier">any_connection</span></code> class). <code><span class="identifier">any_connection</span></code> is not a template and features simpler connection establishment and reconnection semantics. </div> </li> <li> <div> Added experimental support for <strong>client-side SQL formatting functions</strong> (<code><span class="identifier">format_sql</span></code> and <code><span class="identifier">format_sql_to</span></code>). These allow securely composing queries client-side, which enables patterns like batch inserts, dynamic filters or PATCH-like updates. </div> </li> <li> <div> Fixed a performance issue affecting <code><span class="identifier">close_statement</span></code> and <code><span class="identifier">async_close_statement</span></code> that could cause significant delays in application code. </div> </li> <li> <div> Added support for building with <code><span class="identifier">BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT</span></code>. </div> </li> <li> <div> The deprecated execution interface (<code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">query</span></code>, <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">start_query</span></code>, <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">execute_statement</span></code>, <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">start_statement_execution</span></code> and their async counterparts) now triggers warnings, as it's scheduled for removal in Boost 1.86. </div> </li> <li> <div> Fixed a bug that caused some error messages to be truncated. </div> </li> <li> <div> Warning cleanup. Builds are now clean from warnings when building with <code><span class="special">-</span><span class="identifier">Wall</span></code> and <code><span class="special">-</span><span class="identifier">Wextra</span></code>. </div> </li> <li> <div> All <code><span class="identifier">field_view</span></code> constructors are now stable. </div> </li> <li> <div> The library internals have been rewritten using a sans-io approach to reduce complexity. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/numeric/odeint/">Odeint</a>:</span> <ul> <li> <div> <strong>Breaking change</strong>: The library now explicitly requires C++14 instead of implicitly by including Boost.Math </div> </li> <li> <div> Fix compatibility with Thrust 1.10.0 </div> </li> <li> <div> Removed C++03 Boost components: <ul> <li> <div> Array </div> </li> <li> <div> Bind </div> </li> <li> <div> Function </div> </li> <li> <div> Static_assert </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/pfr/">PFR</a>:</span> <ul> <li> <div> <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get_name</span></code> now can work with local types on some compilers. Thanks to <a href="https://github.com/schaumb">Bela Schaum</a> for the PR <a href="https://github.com/boostorg/pfr/pull/152">PR#152</a>! </div> </li> <li> <div> Removed unused implementation details. Thanks to <a href="https://github.com/denzor200">Denis Mikhailov</a> for the PR <a href="https://github.com/boostorg/pfr/pull/154">PR#154</a>. </div> </li> <li> <div> Allow throwing exceptions from <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">structure_to_tuple</span></code>. Thanks to <a href="https://github.com/denzor200">Denis Mikhailov</a> for the bug report <a href="https://github.com/boostorg/pfr/issues/155">#155</a>. </div> </li> <li> <div> Field reflection trick is now described in the docs. Thanks to all the discussion participans in <a href="https://github.com/boostorg/pfr/issues/150">#150</a>! </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/random/">Random</a>:</span> <ul> <li> <div> Added splitmix64 PRNG <a href="https://github.com/boostorg/random/pull/89">PR#89</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/system/">System</a>:</span> <ul> <li> <div> C++03 is no longer supported; a C++11 compiler is required. (This includes GCC 4.8 or later, and MSVC 14.0 (VS 2015) or later.) </div> </li> <li> <div> The deprecated header <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">system</span><span class="special">/</span><span class="identifier">cygwin_error</span><span class="special">.</span><span class="identifier">hpp</span></code> has been removed. </div> </li> <li> <div> The original and obsolete (32 bit) MinGW is no longer supported. MinGW-w64 (both 64 and 32 bit) is still supported. </div> </li> <li> <div> <code><span class="keyword">operator</span><span class="special">&amp;</span></code> now works for <code><span class="identifier">result</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;</span></code> (by way of taking a nullary function.) </div> </li> <li> <div> Added <code><span class="keyword">operator</span><span class="special">|=</span></code> for <code><span class="identifier">result</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/stacktrace/">Stacktrace</a>:</span> <ul> <li> <div> <strong>Big new feature: stacktrace from arbitrary exception</strong>. On some POSIX platforms <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">stacktrace</span><span class="special">::</span><span class="identifier">from_current_exception</span><span class="special">()</span></code> now returns the stacktrace of the current exception object as if the stacktrace was captures at the point of throwing the exception. Many thanks to Andrei Nekrashevich for prototyping the idea in <code><span class="identifier">libsfe</span></code>. </div> </li> <li> <div> Fixed memory consumption on Windows with <code><span class="identifier">boost_stacktrace_windbg</span></code>. Thanks to <a href="https://github.com/ycyclop">ycyclop</a> for reporting the issue <a href="https://github.com/boostorg/stacktrace/issues/111">#111</a>, to <a href="https://github.com/correa">Thiago A. Correa</a> for providing more information, to <a href="https://github.com/akarpovskii">Andrei Karpovskii</a> for providing a possible fix. </div> </li> <li> <div> Fixed library build with non hidden visibility. Thanks to <a href="https://github.com/JBouwer">Jan Bouwer</a> for the report and information on how to fix it. </div> </li> <li> <div> Added a separate section on async signal safety to the docs. Many thanks to <a href="https://github.com/tworonix">tworonix</a> for highlighting the problem in <a href="https://github.com/boostorg/stacktrace/issues/131">#131</a> and to <a href="https://github.com/itrofimow">itrofimow</a> for information on the problem. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/stl_interfaces/">STLInterfaces</a>:</span> <ul> <li> <div> Change the behavior of <code><span class="identifier">iterator_interface</span></code> for input iterators in C++20 and later, to more closely follow the C++20 concepts. </div> </li> <li> <div> Remove hidden friends from <code><span class="identifier">iterator_interface</span></code> to fix errors about concepts being redefined with different constraints. </div> </li> <li> <div> Add a new <code><span class="identifier">v3</span></code> inline namespace, containing a new iterator_interface based on deducing this instead of CRTP (C++23 and later). </div> </li> <li> <div> Add an rvalue-qualified overload of <code><span class="identifier">closure</span><span class="special">::</span><span class="keyword">operator</span><span class="special">()</span></code>, to prevent dangling temporaries. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/test/">Test</a>:</span> <ul> <li> <div> Respect library-spcific _NO_LIB macros <a href="https://github.com/boostorg/test/pull/406">PR#406</a> </div> </li> <li> <div> Supress MSVC C4702 from __builtin_unreachable() on intentionally unreachable code </div> </li> <li> <div> Fix boost::function streaming error <a href="https://github.com/boostorg/test/pull/411">PR#411</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/unordered/">Unordered</a>:</span> <ul> <li> <div> Optimized <code><span class="identifier">emplace</span><span class="special">()</span></code> for a <code><span class="identifier">value_type</span></code> or <code><span class="identifier">init_type</span></code> (if applicable) argument to bypass creating an intermediate object. The argument is already the same type as the would-be intermediate object. </div> </li> <li> <div> Optimized <code><span class="identifier">emplace</span><span class="special">()</span></code> for <code><span class="identifier">k</span><span class="special">,</span><span class="identifier">v</span></code> arguments on map containers to delay constructing the object until it is certain that an element should be inserted. This optimization happens when the map’s <code><span class="identifier">key_type</span></code> is move constructible or when the <code><span class="identifier">k</span></code> argument is a <code><span class="identifier">key_type</span></code>. </div> </li> <li> <div> Fixed support for allocators with explicit copy constructors (<a href="https://github.com/boostorg/unordered/pull/234">PR#234</a>). </div> </li> <li> <div> Fixed bug in the <code><span class="keyword">const</span></code> version of <code><span class="identifier">unordered_multimap</span><span class="special">::</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span> <span class="identifier">hash</span><span class="special">,</span> <span class="identifier">eq</span><span class="special">)</span></code> (<a href="https://github.com/boostorg/unordered/pull/238">PR#238</a>). </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/variant/">Variant</a>:</span> <ul> <li> <div> Removed more of the pre-C++11 macro and workarounds. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/wave/">Wave</a>:</span> Fixed bugs: <ul> <li> <div> <a href="https://github.com/boostorg/wave/issues/200">#200</a>: Emitted pragmas lack terminating newline </div> </li> <li> <div> <a href="https://github.com/boostorg/wave/issues/202">#202</a>: YYMARKER not updated when fill called on BOOST_WAVE_BSIZE boundary </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_85_0.updated_tools"> <h3><span class="link">Updated Tools</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/tools/build/">Build</a>:</span> <ul> <li> <div> Includes release of <a href="https://www.boost.org/tools/build/doc/html/#_version_5_1_0">B2 version 5.1.0</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_85_0.compilers_tested"> <h3><span class="link">Compilers Tested</span></h3> <p> Boost's primary test compilers are: </p> <ul> <li> <div> Linux: <ul> <li> <div> Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> GCC, C++03: 4.6.3, 11, 12 </div> </li> <li> <div> GCC, C++11: 4.7.3, 4.8.5, 11, 12 </div> </li> <li> <div> GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12 </div> </li> </ul> </div> </li> <li> <div> OS X: <ul> <li> <div> Apple Clang, C++03: 11.0.3 </div> </li> <li> <div> Apple Clang, C++11: 11.0.3 </div> </li> <li> <div> Apple Clang, C++14: 11.0.3 </div> </li> <li> <div> Apple Clang, C++17: 11.0.3 </div> </li> <li> <div> Apple Clang, C++20: 11.0.3 </div> </li> </ul> </div> </li> <li> <div> Windows: <ul> <li> <div> Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3 </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_85_0.acknowledgements"> <h3><span class="link">Acknowledgements</span></h3> <p> Marshall Clow and Glen Fernandes managed this release. </p> </div> Version 1.84.0https://www.boost.org/users/history/version_1_84_0.htmlhttps://www.boost.org/users/history/version_1_84_0.htmlWed, 13 Dec 2023 23:54:29 +0000 <div id="version_1_84_0.updated_default_target_windows_v"> <h3><span class="link">Updated default target Windows version</span></h3> <p> Boost.WinAPI, a library that is used internally by other Boost libraries for defining Windows SDK components, has been updated to target Windows 10 API by default, where possible. This means that Boost libraries will target Windows 10 by default and may not run on older Windows versions. This includes the pre-built binaries that are distributed by Boost. </p> <p> The affected libraries include: </p> <ul> <li> <div> Boost.Atomic </div> </li> <li> <div> Boost.Beast </div> </li> <li> <div> Boost.Chrono </div> </li> <li> <div> Boost.DateTime </div> </li> <li> <div> Boost.DLL </div> </li> <li> <div> Boost.Filesystem </div> </li> <li> <div> Boost.Interprocess </div> </li> <li> <div> Boost.Log </div> </li> <li> <div> Boost.Pool </div> </li> <li> <div> Boost.Process </div> </li> <li> <div> Boost.System </div> </li> <li> <div> Boost.Stacktrace </div> </li> <li> <div> Boost.Thread </div> </li> <li> <div> Boost.UUID </div> </li> </ul> <p> as well as libraries that depend on the above. </p> <p> Users are able to change the default by defining <code><span class="identifier">BOOST_USE_WINAPI_VERSION</span></code> or <code><span class="identifier">_WIN32_WINNT</span></code> when building and using Boost to the required version number. For example, to build Boost targeting Windows 7 one could use a command line like this: </p> <pre> b2 variant=release define=BOOST_USE_WINAPI_VERSION=0x0601 stage </pre> <p> Note, however, that individual libraries may have their own requirements on the minimum supported Windows version. </p> <p> The list of Windows API version numbers can be seen on <a href="https://msdn.microsoft.com/en-us/library/6sehtctf.aspx">this</a> page. </p> </div> <div id="version_1_84_0.new_libraries"> <h3><span class="link">New Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/cobalt/">Cobalt</a>:</span> Basic algorithms and types for C++20 coroutines, from Klemens Morgenstern. </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/redis/">Redis</a>:</span> Redis async client library built on top of Boost.Asio, from Marcelo Zimbres Silva. </div> </li> </ul> </div> <div id="version_1_84_0.updated_libraries"> <h3><span class="link">Updated Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/any/">Any</a>:</span> <ul> <li> <div> C++03 is no longer supported <a href="https://github.com/boostorg/any/pull/26">PR#26</a>. </div> </li> <li> <div> Fixed reference documentation generation. Now it is not overwritten by Boost.PFR reference. Thanks to Peter Dimov for the debugging. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/asio/">Asio</a>:</span> <ul> <li> <div> Changed to require C++11 as the minimum language standard. C++03 is no longer supported. </div> </li> <li> <div> Removed deprecated functionality from the <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">execution</span></code> namespace. </div> </li> <li> <div> Removed deprecated invocation and allocation hooks. </div> </li> <li> <div> Added <code><span class="identifier">try_send_via_dispatch</span></code> and <code><span class="identifier">try_send_n_via_dispatch</span></code> functions to channels. </div> </li> <li> <div> Added compatibility between Asio's placeholders and <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">bind</span></code>. </div> </li> <li> <div> Improved C++11 support for channels that have multiple completion signatures. </div> </li> <li> <div> Fixed compatibility between channel asynchronous operations and <code><span class="identifier">any_completion_handler</span></code>. </div> </li> <li> <div> Fixed compatibility between <code><span class="identifier">any_completion_handler</span></code> and compilation using <code><span class="identifier">BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT</span></code>. </div> </li> <li> <div> Added missing equality operators for comparing mixed executor property types belonging to the same category. </div> </li> <li> <div> Fixed an issue where <code><span class="identifier">spawn</span></code>-based stackful coroutines would terminate the program when used with asynchronous operations that have a completion signature starting with <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception_ptr</span></code>. </div> </li> <li> <div> Fixed a crash that may occur when attempting to access a default-constructed <code><span class="identifier">any_completion_handler</span></code> object's associators. </div> </li> <li> <div> Fixed <code><span class="identifier">ssl</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;&gt;</span></code> class's <code><span class="identifier">async_handshake</span></code> operation so that it works with a defaulted completion token. </div> </li> <li> <div> Updated all examples to use C++11 as the minimum language standard. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/atomic/">Atomic</a>:</span> <ul> <li> <div> C++03 is no longer supported, the minimum required language version is C++11. </div> </li> <li> <div> Added support for x87 extended double with reduced precision, which is used on FreeBSD and OpenBSD. (<a href="https://github.com/boostorg/atomic/issues/14">#14</a>) </div> </li> <li> <div> Support for Windows versions older than Windows 10 is deprecated and will be removed in Boost 1.87. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/beast/">Beast</a>:</span> <ul> <li> <div> Support for <code><span class="identifier">immediate_executor</span></code>. </div> </li> <li> <div> Remove deprecated allocation and invocation hooks. </div> </li> <li> <div> Use the explicit type std::size_t when completing transfer_op. </div> </li> <li> <div> Replaced <code><span class="identifier">BOOST_ASIO_INITFN_RESULT_TYPE</span></code> with <code><span class="identifier">BOOST_ASIO_INITFN_AUTO_RES</span></code>. </div> </li> <li> <div> <code><span class="identifier">server</span><span class="special">-</span><span class="identifier">flex</span><span class="special">-</span><span class="identifier">awaitable</span></code> example resets parser. </div> </li> <li> <div> Corrected the <code><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span><span class="special">::</span><span class="identifier">async_ping</span><span class="special">/</span><span class="identifier">pong</span></code> handler requirement. </div> </li> <li> <div> Update documentation for <code><span class="identifier">websocket</span><span class="special">::</span><span class="identifier">stream</span><span class="special">::</span><span class="identifier">async_write_some</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/chrono/">Chrono</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/container_hash/">ContainerHash</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/conversion/">Conversion</a>:</span> <ul> <li> <div> C++03 is no longer supported <a href="https://github.com/boostorg/conversion/pull/27">PR#27</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/core/">Core</a>:</span> <ul> <li> <div> <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">swap</span></code> utility function has been renamed to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">invoke_swap</span></code> to avoid forming a potential infinite recursion when the arguments are not swappable. The new function is defined in <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">invoke_swap</span><span class="special">.</span><span class="identifier">hpp</span></code> and is functionally equivalent to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">swap</span></code>. The old <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">swap</span></code> name is preserved for backward compatibility but deprecated and will be removed in a future release. Its <code><span class="keyword">noexcept</span></code> specification has been removed to avoid compile errors caused by compile-time recursion. <code><span class="identifier">BOOST_ALLOW_DEPRECATED_SYMBOLS</span></code> or <code><span class="identifier">BOOST_ALLOW_DEPRECATED</span></code> can be defined to suppress deprecation warnings for the transition period. (<a href="https://github.com/boostorg/core/issues/148">#148</a>) </div> </li> <li> <div> Headers <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">swap</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">utility</span><span class="special">/</span><span class="identifier">swap</span><span class="special">.</span><span class="identifier">hpp</span></code> and <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">swap</span><span class="special">.</span><span class="identifier">hpp</span></code> are deprecated and will be removed. Please, switch to <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">invoke_swap</span><span class="special">.</span><span class="identifier">hpp</span></code>. <code><span class="identifier">BOOST_ALLOW_DEPRECATED_HEADERS</span></code> or <code><span class="identifier">BOOST_ALLOW_DEPRECATED</span></code> can be defined to suppress deprecation warnings. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/crc/">CRC</a>:</span> <ul> <li> <div> C++03 support is deprecated and will be removed in release 1.86. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/dll/">DLL</a>:</span> <ul> <li> <div> C++03 is no longer supported <a href="https://github.com/boostorg/dll/pull/66">PR#66</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/endian/">Endian</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/filesystem/">Filesystem</a>:</span> <ul> <li> <div> As was announced in Boost 1.82.0, C++03 is no longer supported. A C++11 or later compiler is required. </div> </li> <li> <div> Fixed that some <code><span class="identifier">directory_entry</span></code> observers taking <code><span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span></code> argument did not clear the error code on successful return. (<a href="https://github.com/boostorg/filesystem/issues/291">#291</a>) </div> </li> <li> <div> On Windows, improved robustness of date and time conversion and added support for dates before January 1, 1970. (<a href="https://github.com/boostorg/filesystem/issues/293">#293</a>) </div> </li> <li> <div> Removed support for Windows CE that was deprecated since Boost.Filesystem 1.79.0. </div> </li> <li> <div> Removed <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">filesystem</span><span class="special">/</span><span class="identifier">string_file</span><span class="special">.</span><span class="identifier">hpp</span></code> header. The header was deprecated since Boost.Filesystem 1.79.0. </div> </li> <li> <div> <strong>Deprecated:</strong> Support for Windows versions older than Windows 10 is deprecated and will be removed in Boost 1.87. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/geometry/">Geometry</a>:</span> <ul> <li> <div> Solved issues <ul> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1138">#1138</a> Fix difference of two polygons </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1183">#1183</a> Fix for union_ incomplete result polygon </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1184">#1184</a> Fix for intersection </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1186">#1186</a> Fix for union_ improper inner ring assignment </div> </li> <li> <div> Various fixes of errors and warnings </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/heap/">Heap</a>:</span> <ul> <li> <div> C++03 support is deprecated and will be removed in release 1.86. New requirement will be C++14. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/json/">JSON</a>:</span> <ul> <li> <div> Implement parsing directly into user types. </div> </li> <li> <div> Add conversion categories for optionals and variants. </div> </li> <li> <div> Relax iterator requirements for constructors from iterator pairs. </div> </li> <li> <div> Fix reading beyond input buffer. </div> </li> <li> <div> Fix inconsistent choice of init list constructor. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/leaf/">LEAF</a>:</span> <ul> <li> <div> class result&lt;T&gt; marked nodiscard. </div> </li> <li> <div> Added member typedef result&lt;T&gt;::value_type. </div> </li> <li> <div> verbose_diagnostic_info defers conversion to string until an error handling scope is reached. </div> </li> <li> <div> Improved support for embedded development. </div> </li> <li> <div> Improved Visual Studio 2015 compatibility (thanks godmaycrying). </div> </li> <li> <div> Minor bug fixes an improvements. </div> </li> <li> <div> Dropped support for GCC 4.8 and 4.9. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/lexical_cast/">LexicalCast</a>:</span> <ul> <li> <div> C++03 is no longer supported <a href="https://github.com/boostorg/lexical_cast/pull/62">PR#62</a>. </div> </li> <li> <div> Fixed -Wdeprecated-copy-with-dtor warnings with clang. Thanks to <a href="https://github.com/Romain-Geissler-1A">Romain Geissler</a> for the PR <a href="https://github.com/boostorg/lexical_cast/pull/59">PR#59</a>! </div> </li> <li> <div> Dropped dependency on Boost.Range <a href="https://github.com/boostorg/lexical_cast/pull/63">PR#63</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/locale/">Locale</a>:</span> <ul> <li> <div> <code><span class="identifier">to_title</span></code> for the WinAPI backend returns the string unchanged instead of an empty string </div> </li> <li> <div> Improved support for <code><span class="identifier">char8_t</span></code> and <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">u8string</span></code> </div> </li> <li> <div> Fix off-by-one error when using negative times <a href="https://github.com/boostorg/locale/pull/198">PR#198</a> </div> </li> <li> <div> Fix escape-handling of curly braces in format strings <a href="https://github.com/boostorg/locale/issues/194">#194</a> </div> </li> <li> <div> Fix some build errors and warnings, notably one on MSVC, see <a href="https://github.com/boostorg/locale/issues/189">#189</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/lockfree/">Lockfree</a>:</span> <ul> <li> <div> C++03 support is deprecated and will be removed in release 1.86. New requirement will be C++14. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/log/">Log</a>:</span> <ul> <li> <div> C++03 is no longer supported. A C++11 or later compiler is required. </div> </li> <li> <div> When built with C++11 compilers that are conforming enough for Boost.Regex v5 to be used, Boost.Log no longer links with Boost.Regex prebuilt library, since Boost.Regex v5 is header-only. </div> </li> <li> <div> Support for Windows versions older than Windows 10 is deprecated and will be removed in Boost 1.87. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/math/">Math</a>:</span> <ul> <li> <div> Improve ccmath error detection. </div> </li> <li> <div> Remove use of deprecated std::numeric_limits&lt;&gt;::has_denorm, see <a href="https://github.com/boostorg/math/issues/1028">1028</a>. </div> </li> <li> <div> Correct non-convergence bug in non-central-t distribution, see <a href="https://github.com/boostorg/math/issues/1035">1035</a>. </div> </li> <li> <div> Adjust Bessel function approximation to [sub 1]F[sub 1] to avoid taking tgamma at a negative integer, see <a href="https://github.com/boostorg/math/issues/1034">1034</a>. </div> </li> <li> <div> Avoid spurious overflow and divide by zero in ibeta, see <a href="https://github.com/boostorg/math/issues/1006">1006</a>. </div> </li> <li> <div> Improve accuracy when using Sterling's approximation to tgamma, completes work started in <a href="https://github.com/boostorg/math/pull/1007">1007</a>. </div> </li> <li> <div> Fix inverse_discrete_quantile for large initial guesses, see <a href="https://github.com/boostorg/math/pull/1007">1007</a>. </div> </li> <li> <div> Improve Newton root finding, see <a href="https://github.com/boostorg/math/pull/1000">1000</a>. </div> </li> <li> <div> Fix median_absolute_deviation for non-zero centre, see <a href="https://github.com/boostorg/math/pull/997">997</a>. </div> </li> <li> <div> Fix up cstdfloat.hpp for gcc-14. </div> </li> <li> <div> Update to work for the new types declared in &lt;stdfloat&gt;. </div> </li> <li> <div> Change hypergeometric_distribution to use 64 rather than 32 bit integers to avoid unnecessary overflow and restrictions on use. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multi_index/">Multi-index Containers</a>:</span> <ul> <li> <div> Fixed a serialization-related compile-time bug in old compilers without ADL support (issue <a href="https://github.com/boostorg/multi_index/issues/70">#70</a>). </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multiprecision/">Multiprecision</a>:</span> <ul> <li> <div> Change <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code> to <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span></code> in the tests, fixes <a href="https://github.com/boostorg/multiprecision/issues/567">567</a>. </div> </li> <li> <div> Correct cpp_int::eval_convert_to to be noexcept, fixes <a href="https://github.com/boostorg/multiprecision/issues/553">553</a>. </div> </li> <li> <div> Make sure that changing the global precision, also changes the current thread precision. </div> </li> <li> <div> Fix rational_adaptor construction bug, fixes <a href="https://github.com/boostorg/multiprecision/issues/540">540</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/mysql/">MySQL</a>:</span> <ul> <li> <div> Added <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">reset_connection</span></code> and <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">async_reset_connection</span></code>. These functions clean session state (including prepared statements, variables, locks and more) without closing and re-opening the connection. </div> </li> <li> <div> Added error codes introduced in MySQL server v8.1.0. </div> </li> <li> <div> Added fuzz testing for the deserialization functions. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/pfr/">PFR</a>:</span> <ul> <li> <div> <strong>Big new feature: field names reflection</strong>. Added new <code><span class="keyword">constexpr</span></code> <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get_name</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;()</span></code> function that returns a <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span></code> with a name of field at index <code><span class="identifier">N</span></code> of an aggregate <code><span class="identifier">T</span></code>. Requires C++20. <code><span class="identifier">BOOST_PFR_CORE_NAME_ENABLED</span></code> is defined to 1 if the functionality is available. Many thanks to <a href="https://github.com/denzor200">Denis Mikhailov</a>, <a href="https://github.com/schaumb">Bela Schaum</a> and <a href="https://github.com/X-Ryl669">X-Ryl669</a> for the PR <a href="https://github.com/boostorg/pfr/pull/129">PR#129</a> and implementation ideas. </div> </li> <li> <div> <code><span class="identifier">for_each_field</span><span class="special">()</span></code> is now <code><span class="keyword">constexpr</span></code> for C++17. Many thanks to <a href="https://github.com/alexkaratarakis">Alexander Karatarakis</a> for the PR <a href="https://github.com/boostorg/pfr/pull/134">PR#134</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/predef/">Predef</a>:</span> <ul> <li> <div> Version 1.15.0 </div> </li> <li> <div> Add detection of Microsoft STL (from Henrik Gaßmann). </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/random/">Random</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> <li> <div> Fixed overflows in tests using Boost.Multiprecision </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/ratio/">Ratio</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> <li> <div> Support for <code><span class="identifier">BOOST_RATIO_EXTENSIONS</span></code> has been removed. Ratio is now implemented in terms of the standard <code><span class="special">&lt;</span><span class="identifier">ratio</span><span class="special">&gt;</span></code> header. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/stacktrace/">Stacktrace</a>:</span> <ul> <li> <div> C++03 is no longer supported. Thanks to <a href="https://github.com/leha-bot">Alex</a> for the PR <a href="https://github.com/boostorg/stacktrace/pull/139">PR#139</a> </div> </li> <li> <div> Fixed <code><span class="identifier">addr2line</span></code> for pie binaries. Thanks to <a href="https://github.com/ja2142">ja2142</a> for the PR <a href="https://github.com/boostorg/stacktrace/pull/138">PR#138</a>! </div> </li> <li> <div> Fixed build with MinGW-w64 12+. Thanks to <a href="https://github.com/yhsb2k">yhsb2k</a> for the PR <a href="https://github.com/boostorg/stacktrace/pull/140">PR#140</a>! </div> </li> <li> <div> Added missing include. Thanks to <a href="https://github.com/francesco-ballarin">Francesco Ballarin</a> for the PR <a href="https://github.com/boostorg/stacktrace/pull/143">PR#143</a>! </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/system/">System</a>:</span> <ul> <li> <div> Added support for <code><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&amp;,</span> <span class="identifier">E</span><span class="special">&gt;</span></code>. </div> </li> <li> <div> Added <code><span class="keyword">operator</span><span class="special">|</span></code> for <code><span class="identifier">result</span></code>. </div> </li> <li> <div> Added <code><span class="keyword">operator</span><span class="special">&amp;</span></code> for <code><span class="identifier">result</span></code>. </div> </li> <li> <div> Added <code><span class="keyword">operator</span><span class="special">&amp;=</span></code> for <code><span class="identifier">result</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/test/">Test</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> <li> <div> Fixed useage of PRIxPTR for glibc 2.2 - 2.17 <a href="https://github.com/boostorg/test/pull/392">PR#392</a> </div> </li> <li> <div> Fixed MSVC warning C5263: calling 'std::move' on a temporary object prevents copy elision <a href="https://github.com/boostorg/test/pull/390">PR#390</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/thread/">Thread</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/type_index/">TypeIndex</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> <li> <div> <code><span class="identifier">BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS</span><span class="special">((</span><span class="identifier">A</span><span class="special">)(</span><span class="identifier">B</span><span class="special">)(</span><span class="identifier">C</span><span class="special">)(</span><span class="identifier">D</span><span class="special">))</span></code> changed syntax to <code><span class="identifier">BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS</span><span class="special">(</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span> <span class="identifier">C</span><span class="special">,</span> <span class="identifier">D</span><span class="special">)</span></code>. </div> </li> <li> <div> Dropped Boost.PP dependency. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/typeof/">TypeOf</a>:</span> <ul> <li> <div> C++03 is no longer supported. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/unordered/">Unordered</a>:</span> <ul> <li> <div> <strong>Major update.</strong> </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">concurrent_flat_set</span></code>. </div> </li> <li> <div> Added <code><span class="special">[</span><span class="identifier">c</span><span class="special">]</span><span class="identifier">visit_while</span></code> operations to concurrent containers, with serial and parallel variants. </div> </li> <li> <div> Added efficient move construction of <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered_flat_</span><span class="special">(</span><span class="identifier">map</span><span class="special">|</span><span class="identifier">set</span><span class="special">)</span></code> from <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">concurrent_flat_</span><span class="special">(</span><span class="identifier">map</span><span class="special">|</span><span class="identifier">set</span><span class="special">)</span></code> and vice versa. </div> </li> <li> <div> Added bulk visitation to concurrent containers for increased lookup performance. </div> </li> <li> <div> Added debug-mode mechanisms for detecting illegal reentrancies into a concurrent container from user code. </div> </li> <li> <div> Added Boost.Serialization support to all containers and their (non-local) iterator types. </div> </li> <li> <div> Added support for fancy pointers to open-addressing and concurrent containers. This enables scenarios like the use of Boost.Interprocess allocators to construct containers in shared memory. </div> </li> <li> <div> Fixed bug in member of pointer operator for local iterators of closed-addressing containers (<a href="https://github.com/boostorg/unordered/pull/221">PR#221</a>, credit goes to GitHub user vslashg for finding and fixing this issue). </div> </li> <li> <div> Starting with this release, <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered_</span><span class="special">[</span><span class="identifier">multi</span><span class="special">]</span><span class="identifier">set</span></code> and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered_</span><span class="special">[</span><span class="identifier">multi</span><span class="special">]</span><span class="identifier">map</span></code> only work with C++11 onwards. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/variant/">variant</a>:</span> <ul> <li> <div> C++03 is no longer supported <a href="https://github.com/boostorg/variant/pull/107">PR#107</a>. </div> </li> <li> <div> Dropped Boost.Move and Boost.Bind dependencies. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/wave/">Wave</a>:</span> Fixed bugs: <ul> <li> <div> <a href="https://github.com/boostorg/wave/issues/188">#188</a>: Segmentation fault when "#pragma\n" is encountered </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_84_0.compilers_tested"> <h3><span class="link">Compilers Tested</span></h3> <p> Boost's primary test compilers are: </p> <ul> <li> <div> Linux: <ul> <li> <div> Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> GCC, C++03: 4.6.3, 11, 12 </div> </li> <li> <div> GCC, C++11: 4.7.3, 4.8.5, 11, 12 </div> </li> <li> <div> GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12 </div> </li> </ul> </div> </li> <li> <div> OS X: <ul> <li> <div> Apple Clang, C++03: 11.0.3 </div> </li> <li> <div> Apple Clang, C++11: 11.0.3 </div> </li> <li> <div> Apple Clang, C++14: 11.0.3 </div> </li> <li> <div> Apple Clang, C++17: 11.0.3 </div> </li> <li> <div> Apple Clang, C++20: 11.0.3 </div> </li> </ul> </div> </li> <li> <div> Windows: <ul> <li> <div> Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3 </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_84_0.acknowledgements"> <h3><span class="link">Acknowledgements</span></h3> <p> Marshall Clow and Glen Fernandes managed this release. </p> </div> Version 1.83.0https://www.boost.org/users/history/version_1_83_0.htmlhttps://www.boost.org/users/history/version_1_83_0.htmlFri, 11 Aug 2023 16:23:02 +0000 <div id="version_1_83_0.known_issues"> <h3><span class="link">Known Issues</span></h3> <p> These are patches from library authors which were found too late to be fixed in the release. </p> <ul> <li> <div> JSON <ul> <li> <div> Compilation on Windows ARM platforms may fail for missing intrinsics, see <a href="https://github.com/boostorg/json/issues/926">#926</a> and <a href="https://github.com/boostorg/json/issues/927">#927</a>. <a href="https://github.com/boostorg/json/commit/c4ce8509d015a0b75cfa9d36609b8409821a9c86.patch">Patch</a>. </div> </li> </ul> </div> </li> <li> <div> Unordered <ul> <li> <div> Fix erroneous copy assigment operator that would destroy non-existent elements, see <a href="https://github.com/boostorg/unordered/issues/205">#205</a>. <a href="https://www.boost.org/patches/1_83_0/0001-unordered-fix-copy-assign.patch">Patch</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_83_0.new_libraries"> <h3><span class="link">New Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/compat/">Compat</a>:</span> A repository of C++11 implementations of standard components added in later C++ standards, from Peter Dimov and contributors. </div> </li> </ul> </div> <div id="version_1_83_0.updated_libraries"> <h3><span class="link">Updated Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/any/">Any</a>:</span> <ul> <li> <div> New <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">anys</span><span class="special">::</span><span class="identifier">unique_any</span></code> C++11 class - an alternative to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">any</span></code> (or to <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">any</span></code>) that does not require copy or move construction from the held type. </div> </li> <li> <div> Ported documentation to Quickbook, Doxygen comments now used in code. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/atomic/">Atomic</a>:</span> <ul> <li> <div> Fixed compilation of <code><span class="identifier">atomic_ref</span></code> for <code><span class="keyword">const</span></code>-qualified types. Note that even <code><span class="keyword">const</span></code>-qualified atomic objects must still reside in read-write memory. (<a href="https://github.com/boostorg/atomic/issues/62">#62</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/chrono/">Chrono</a>:</span> <ul> <li> <div> Remove use of deprecated Boost.Ratio features. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/compat/">Compat</a>:</span> <ul> <li> <div> Added <code><span class="identifier">latch</span><span class="special">.</span><span class="identifier">hpp</span></code>, an implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">latch</span></code> (contributed by Christian Mazakas.) </div> </li> <li> <div> Added <code><span class="identifier">shared_lock</span><span class="special">.</span><span class="identifier">hpp</span></code>, a (partial) implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">shared_lock</span></code> (contributed by Christian Mazakas.) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/core/">Core</a>:</span> <ul> <li> <div> Added support for incomplete types to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">type_name</span></code>. </div> </li> <li> <div> Bit manipulation functions in <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">bit</span><span class="special">.</span><span class="identifier">hpp</span></code> are now <code><span class="keyword">constexpr</span></code> on recent MSVC versions (VS2019 update 5 and later.) </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">byteswap</span></code> (an implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">byteswap</span></code> from C++23) to <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">bit</span><span class="special">.</span><span class="identifier">hpp</span></code>. </div> </li> <li> <div> Moved the yield primitives <code><span class="identifier">sp_thread_pause</span></code>, <code><span class="identifier">sp_thread_yield</span></code>, <code><span class="identifier">sp_thread_sleep</span></code> from SmartPtr implementation details to <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">yield_primitives</span><span class="special">.</span><span class="identifier">hpp</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/dll/">DLL</a>:</span> <ul> <li> <div> Fixed tests failures on glibc 2.36+, thanks to <a href="https://github.com/sgn">Đoàn Trần Công Danh</a> for the bugreport <a href="https://github.com/boostorg/dll/issues/58">#58</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/filesystem/">Filesystem</a>:</span> <ul> <li> <div> Added <code><span class="identifier">directory_entry</span><span class="special">::</span><span class="identifier">refresh</span></code> method that updates internal cached file statuses for the directory entry identified by path. </div> </li> <li> <div> <strong>v4:</strong> <code><span class="identifier">directory_entry</span></code> constructors and modifiers that initialize or modify the path now automatically call <code><span class="identifier">refresh</span></code>. This may result in errors that were not indicated before and in <strong>v3</strong>, if querying the filesystem for file statuses fails (e.g. if the file does not exist). This new behavior is similar to std::filesystem. </div> </li> <li> <div> <strong>v4:</strong> <code><span class="identifier">directory_entry</span></code> constructors and methods taking <code><span class="identifier">file_status</span></code> parameters are removed. Users are recommended to remove these arguments and rely on <code><span class="identifier">directory_entry</span></code> calling <code><span class="identifier">refresh</span></code> internally. </div> </li> <li> <div> Added <code><span class="identifier">directory_entry</span></code> member methods for checking the file type of the file, similar to std::filesystem. </div> </li> <li> <div> Added more methods for testing file status: <code><span class="identifier">is_block_file</span></code>, <code><span class="identifier">is_character_file</span></code>, <code><span class="identifier">is_fifo</span></code>, <code><span class="identifier">is_socket</span></code> and <code><span class="identifier">is_reparse_file</span></code>. </div> </li> <li> <div> <code><span class="identifier">recursive_directory_iterator</span></code> is now more likely to reuse information about the file type that is obtained during filesystem iteration. This may improve performance. (<a href="https://github.com/boostorg/filesystem/issues/288">#288</a>) </div> </li> <li> <div> File streams defined in <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">filesystem</span><span class="special">/</span><span class="identifier">fstream</span><span class="special">.</span><span class="identifier">hpp</span></code> are now movable, if the standard library file streams are. (<a href="https://github.com/boostorg/filesystem/issues/280">#280</a>) </div> </li> <li> <div> Added a new header <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">filesystem</span><span class="special">/</span><span class="identifier">cstdio</span><span class="special">.</span><span class="identifier">hpp</span></code> with a portable <code><span class="identifier">fopen</span></code> overload that takes <code><span class="identifier">path</span></code> as the first argument. This function is equivalent to <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">fopen</span></code>, except that on Windows it uses the native wide character encoding for paths. </div> </li> <li> <div> Generic <code><span class="identifier">path</span></code> comparison operators are now more restricted to avoid potential ambiguities when user's code contains a <code><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span><span class="special">;</span></code> directive. (<a href="https://github.com/boostorg/filesystem/issues/285">#285</a>) </div> </li> <li> <div> Fixed potential overload resolution ambiguity in users' code, where <code><span class="identifier">path</span></code> constructors from iterators could interfere with function overloads taking a <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">initializer_list</span></code> argument. (<a href="https://github.com/boostorg/filesystem/issues/287">#287</a>) </div> </li> <li> <div> On Windows, added more workarounds for errors returned by various filesystems when creating a directory iterator. (<a href="https://github.com/boostorg/filesystem/issues/284">#284</a>, <a href="https://github.com/boostorg/filesystem/issues/286">#286</a>) </div> </li> <li> <div> On Windows, relaxed access rights needed for querying file times. (<a href="https://github.com/boostorg/filesystem/issues/290">#290</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/flyweight/index.html">Flyweight</a>:</span> <ul> <li> <div> Added smart-pointer syntax to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flyweight</span></code> (<code><span class="keyword">operator</span><span class="special">*</span></code> and <code><span class="keyword">operator</span><span class="special">-&gt;</span></code> dereferencing to the underlying value). </div> </li> <li> <div> Fixed a situation where the mutex used by <a href="https://www.boost.org/libs/flyweight/doc/reference/locking.html#simple_locking_synopsis"><code><span class="identifier">simple_locking</span></code></a> was not recursive (issue <a href="https://github.com/boostorg/flyweight/issues/12">#12</a>). </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/geometry/">Geometry</a>:</span> <ul> <li> <div> Improvements <ul> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1140">PR#1140</a> Drop dependencies and replace boost with std in several places </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1154">PR#1154</a> Add missing headers so that all headers compile independently complying with Boost policy </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1157">PR#1157</a> Check const Ring concept in calculate_point_order </div> </li> </ul> </div> </li> <li> <div> Solved issues <ul> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1100">#1100</a> Fix for union </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1139">#1139</a> Fix for different geometry types </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1158">#1158</a> Fix for convex hull </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1161">#1161</a> Fix within algorithm for geometries having a pole as a vertex </div> </li> <li> <div> Various fixes of errors and warnings </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/iterator/">Iterator</a>:</span> <ul> <li> <div> Added <code><span class="identifier">is_iterator</span></code> type trait that allows to test whether the type qualifies as an iterator type. </div> </li> <li> <div> <code><span class="identifier">filter_iterator</span></code> now supports move-construction of the adopted iterator and the function object. (<a href="https://github.com/boostorg/iterator/pull/79">PR#79</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/json/">JSON</a>:</span> <ul> <li> <div> The library now only throws <code><span class="identifier">system_error</span></code>, except for when allocation failed, in which case <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> is thrown. </div> </li> <li> <div> Serialization behavior can now be changed by <code><span class="identifier">serialize_options</span></code>. </div> </li> <li> <div> Contextual conversions. </div> </li> <li> <div> Parser option for more precise number parsing. </div> </li> <li> <div> Support <code><span class="identifier">parse_options</span></code> in stream <code><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code>. </div> </li> <li> <div> Parser option to allow <code><span class="identifier">Infinity</span></code> and <code><span class="identifier">NaN</span></code> JSON literals. </div> </li> <li> <div> Parser mode that only validates numbers rather than parsing them. </div> </li> <li> <div> Numbers with exponent larger than <code><span class="identifier">INT_MAX</span></code> are accepted by the parser and treated as infinity. </div> </li> <li> <div> Fix <code><span class="identifier">object</span></code> member functions that should provide strong guarantee. </div> </li> <li> <div> Fix ambiguity of <code><span class="identifier">end</span></code> call when <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">.</span><span class="identifier">hpp</span></code> is included. </div> </li> <li> <div> Fix ASan failures. </div> </li> <li> <div> Fix error message for <code><span class="identifier">error</span><span class="special">::</span><span class="identifier">size_mismatch</span></code>. </div> </li> <li> <div> Fix conversion into tuple with const elements. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/locale/index.html">Locale</a>:</span> <ul> <li> <div> Bitwise/binary operators (left/right shift, binary and/or/xor/not) are no longer supported in message catalog files matching GNU gettext behavior </div> </li> <li> <div> Std backend on Windows uses the classic locale instead of the system locale when the requested locale does not exist (now same as on other OSs) </div> </li> <li> <div> <code><span class="identifier">localization_backend_manager</span><span class="special">::</span><span class="identifier">get</span></code> is deprecated, use the generator instead </div> </li> <li> <div> New converter classes as alternative to <code><span class="identifier">to_utf</span></code>/<code><span class="identifier">from_utf</span></code>/<code><span class="identifier">between</span></code> </div> </li> <li> <div> Fix UB on invalid index in format strings </div> </li> <li> <div> Fix conversion of UTF to e.g. iso-2022-jp on Windows without ICU </div> </li> <li> <div> Use <code><span class="keyword">long</span> <span class="keyword">long</span></code> as the count parameter for pluralized translations </div> </li> <li> <div> Fix movability and exception specification for some classes </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/log/">Log</a>:</span> <ul> <li> <div> Fixed a possible infinite loop in <code><span class="identifier">text_file_backend</span></code>, when the size of a formatted log record exceeds the <code><span class="identifier">rotation_size</span></code> limit. (<a href="https://github.com/boostorg/log/issues/209">#209</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/math/">Math</a>:</span> <ul> <li> <div> Added Numerical evaluation of Fourier transform of Daubechies scaling functions <a href="https://github.com/boostorg/math/pull/921">921</a>. </div> </li> <li> <div> Added logcdf function to statistical distributions <a href="https://github.com/boostorg/math/pull/946">946</a>. </div> </li> <li> <div> Added support for C++23's <code><span class="special">&lt;</span><span class="identifier">stdfloat</span><span class="special">&gt;</span></code> types <a href="https://github.com/boostorg/math/pull/978">978</a>. </div> </li> <li> <div> Fixed various <code><span class="special">-</span><span class="identifier">Wmaybe</span><span class="special">-</span><span class="identifier">uninitialized</span></code> warnings </div> </li> <li> <div> Fixed <code><span class="identifier">round</span></code> and <code><span class="identifier">trunc</span></code> functions for non-representable numbers <a href="https://github.com/boostorg/math/pull/968">968</a>. </div> </li> <li> <div> Fixed calculation of mode for F-distribution <a href="https://github.com/boostorg/math/pull/976">976</a>. </div> </li> <li> <div> Fixed overflow in beta distribution <a href="https://github.com/boostorg/math/pull/977">977</a>. </div> </li> <li> <div> Fixed overflow in hypergeometric distribution <a href="https://github.com/boostorg/math/pull/987">987</a>. </div> </li> <li> <div> Fixed calculation of median absolute deviation with non-zero center <a href="https://github.com/boostorg/math/pull/997">997</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/mp11/">Mp11</a>:</span> <ul> <li> <div> Added an offset/from parameter to <code><span class="identifier">mp_from_sequence</span></code>, <code><span class="identifier">mp_iota</span></code>, <code><span class="identifier">mp_iota_c</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">mp_value</span></code>, <code><span class="identifier">mp_list_v</span></code>, <code><span class="identifier">mp_rename_v</span></code>, <code><span class="identifier">mp_is_value_list</span></code>. </div> </li> <li> <div> Added value list support to the primitives in <code><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">mp11</span><span class="special">/</span><span class="identifier">list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>. </div> </li> <li> <div> Added value list support to <code><span class="identifier">mp_repeat</span></code>, <code><span class="identifier">mp_fill</span></code>, <code><span class="identifier">mp_at</span></code>, <code><span class="identifier">mp_back</span></code>, <code><span class="identifier">mp_take</span></code>, <code><span class="identifier">mp_pop_back</span></code>, <code><span class="identifier">mp_drop</span></code>, <code><span class="identifier">mp_insert</span></code>, <code><span class="identifier">mp_erase</span></code>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multi_index/">Multi-index Containers</a>:</span> <ul> <li> <div> Updated range <code><span class="identifier">insert</span></code> in non-unique ordered indices to preserve insertion order of equivalent elements (issue <a href="https://github.com/boostorg/multi_index/issues/68">#68</a>). </div> </li> <li> <div> Serialization now uses <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code> instead of <code><span class="keyword">unsigned</span> <span class="keyword">long</span></code> to save and load the size of a <code><span class="identifier">multi_index_container</span></code> (<code><span class="keyword">unsigned</span> <span class="keyword">long</span></code> is smaller than <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code> in LLP64 data models). <code><span class="identifier">multi_index_container</span></code> serialization <a href="https://www.boost.org/libs/serialization/doc/tutorial.html#versioning">class version</a> has been bumped from 3 to 4 to reflect this change. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multiprecision/">Multiprecision</a>:</span> <ul> <li> <div> Fixed bug in rational adapter division <a href="https://github.com/boostorg/multiprecision/pull/542">542</a>. </div> </li> <li> <div> Fixed handling of global precsion changes in multi-threaded environments <a href="https://github.com/boostorg/multiprecision/pull/552">552</a>. </div> </li> <li> <div> Fixed <code><span class="identifier">cpp_int</span><span class="special">::</span><span class="identifier">eval_convert_to</span></code> noexcept specification <a href="https://github.com/boostorg/multiprecision/pull/555">555</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/mysql/">MySQL</a>:</span> <ul> <li> <div> <strong>Major update.</strong> </div> </li> <li> <div> Stored procedures are now fully supported, including <code><span class="identifier">SELECT</span></code> statements producing data and procedures with <code><span class="identifier">OUT</span></code> parameters. </div> </li> <li> <div> Added support for multi-queries, which allows running multiple semicolon-separated statements with a single call. </div> </li> <li> <div> A statically-typed interface has been added, which allows parsing query results into user-provided types, using <a href="https://www.boost.org/libs/describe/">Boost.Describe</a> structs and tuples. </div> </li> <li> <div> Text queries and prepared statements can now be executed using the new <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">execute</span></code> and <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">start_execution</span></code> functions (and their async counterparts). These superseed <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">query</span></code>, <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">execute_statement</span></code>, <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">start_query</span></code> and <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">start_statement_execution</span></code>. The new functions allow access to new features, like the static interface. </div> </li> <li> <div> A separate compilation mode has been added to help reduce build times. Sources are included in <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">mysql</span><span class="special">/</span><span class="identifier">src</span><span class="special">.</span><span class="identifier">hpp</span></code>, which must be included in exactly one translation unit. </div> </li> <li> <div> Prepared statements can now be executed using an iterator pair to specify parameters, using <code><span class="identifier">statement</span><span class="special">::</span><span class="identifier">bind</span></code> and <code><span class="identifier">connection</span><span class="special">::</span><span class="identifier">execute</span></code>. This enables use cases where the number and type of parameters is not known at compile-time. </div> </li> <li> <div> Prepared statement execution now accepts parameters of type <code><span class="keyword">bool</span></code>, <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">optional</span></code> and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span></code>. </div> </li> <li> <div> Added error codes and verified compatibility with MySQL v8.0.33 and MariaDB v11.0. </div> </li> <li> <div> Fixed potential problems with Windows' <code><span class="identifier">min</span><span class="special">()</span></code> and <code><span class="identifier">max</span><span class="special">()</span></code> macros. </div> </li> <li> <div> All assertions now use <a href="https://www.boost.org/libs/assert/">Boost.Assert</a>. </div> </li> <li> <div> All exceptions are now thrown via <a href="https://www.boost.org/libs/throw_exception/">Boost.ThrowException</a>. </div> </li> <li> <div> Immediate completions are now correctly dispatched through the I/O object executor. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/ratio/">Ratio</a>:</span> <ul> <li> <div> Change default <code><span class="identifier">BOOST_RATIO_VERSION</span></code> to 2. </div> </li> <li> <div> Support for <code><span class="identifier">BOOST_RATIO_EXTENSIONS</span></code> is now deprecated and will eventually be removed when Boost.Ratio is implemented in terms of the standard <code><span class="special">&lt;</span><span class="identifier">ratio</span><span class="special">&gt;</span></code> header. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/test/">Test</a>:</span> <ul> <li> <div> Added addtional older platforms to CI system (e.g. GCC 4.6) </div> </li> <li> <div> Fixed handling of <code><span class="identifier">uintptr_t</span></code> to make sure it is portable on 32-bit systems <a href="https://github.com/boostorg/test/pull/353">353</a>. </div> </li> <li> <div> Fixed warnings from <code><span class="special">-</span><span class="identifier">Wdeprecated</span><span class="special">-</span><span class="identifier">copy</span><span class="special">-</span><span class="identifier">dtor</span></code> and <code><span class="special">-</span><span class="identifier">Wdeprecated</span><span class="special">-</span><span class="identifier">copy</span><span class="special">-</span><span class="identifier">with</span><span class="special">-</span><span class="identifier">user</span><span class="special">-</span><span class="identifier">provided</span><span class="special">-</span><span class="identifier">dtor</span></code> <a href="https://github.com/boostorg/test/pull/375">375</a>. </div> </li> <li> <div> Fixed handling of <code><span class="identifier">check_is_close</span></code> for C++23 <code><span class="special">&lt;</span><span class="identifier">stdfloat</span><span class="special">&gt;</span></code> types <a href="https://github.com/boostorg/test/pull/382">382</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/timer/">Timer</a>:</span> <ul> <li> <div> Remove dependency on Boost.Chrono, Boost.System, and others. </div> </li> <li> <div> Disable deprecated headers unless <code><span class="identifier">BOOST_TIMER_ENABLE_DEPRECATED</span></code> is defined. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/unordered/">Unordered</a>:</span> <ul> <li> <div> <strong>Major update.</strong> </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">concurrent_flat_map</span></code>, a fast, thread-safe hashmap based on open addressing. </div> </li> <li> <div> Sped up iteration of open-addressing containers. </div> </li> <li> <div> In open-addressing containers, <code><span class="identifier">erase</span><span class="special">(</span><span class="identifier">iterator</span><span class="special">)</span></code>, which previously returned nothing, now returns a proxy object convertible to an iterator to the next element. This enables the typical <code><span class="identifier">it</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">it</span><span class="special">)</span></code> idiom without incurring any performance penalty when the returned proxy is not used. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/url/">URL</a>:</span> <ul> <li> <div> <code><span class="identifier">parse_query</span></code> does not recreate <code><span class="identifier">string_view</span></code>. (<a href="https://github.com/boostorg/url/issues/757">#757</a>) </div> </li> <li> <div> <code><span class="identifier">url_view</span></code>/<code><span class="identifier">string_view</span></code> constructor requires non-<code><span class="identifier">url_view_base</span></code>. (<a href="https://github.com/boostorg/url/issues/756">#756</a>) </div> </li> <li> <div> <code><span class="identifier">IP</span><span class="special">-</span><span class="identifier">literal</span></code> can be <code><span class="identifier">IPv6addrz</span></code>. (<a href="https://github.com/boostorg/url/issues/711">#711</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/uuid/">UUID</a>:</span> <ul> <li> <div> Improved generated x86 code for AVX targets. Removed the use of <code><span class="identifier">lddqu</span></code> instruction on SSE3 targets, which penalize performance on Intel NetBurst CPUs but is more optimal on Skylake and later CPUs. (<a href="https://github.com/boostorg/uuid/pull/138">PR#138</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/variant2/">Variant2</a>:</span> <ul> <li> <div> Added <code><span class="identifier">uses_double_storage</span><span class="special">()</span></code>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_83_0.updated_tools"> <h3><span class="link">Updated Tools</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/tools/build/">Build</a>:</span> <ul> <li> <div> Includes release of <a href="https://www.boost.org/tools/build/doc/html/#_version_4_10_1">B2 version 4.10.1</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_83_0.compilers_tested"> <h3><span class="link">Compilers Tested</span></h3> <p> Boost's primary test compilers are: </p> <ul> <li> <div> Linux: <ul> <li> <div> Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> GCC, C++03: 4.6.3, 11, 12 </div> </li> <li> <div> GCC, C++11: 4.7.3, 4.8.5, 11, 12 </div> </li> <li> <div> GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12 </div> </li> </ul> </div> </li> <li> <div> OS X: <ul> <li> <div> Apple Clang, C++03: 11.0.3 </div> </li> <li> <div> Apple Clang, C++11: 11.0.3 </div> </li> <li> <div> Apple Clang, C++14: 11.0.3 </div> </li> <li> <div> Apple Clang, C++17: 11.0.3 </div> </li> <li> <div> Apple Clang, C++20: 11.0.3 </div> </li> </ul> </div> </li> <li> <div> Windows: <ul> <li> <div> Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3 </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_83_0.acknowledgements"> <h3><span class="link">Acknowledgements</span></h3> <p> Marshall Clow and Glen Fernandes managed this release. </p> </div> Version 1.82.0https://www.boost.org/users/history/version_1_82_0.htmlhttps://www.boost.org/users/history/version_1_82_0.htmlFri, 14 Apr 2023 03:08:20 +0000 <div id="version_1_82_0.known_issues"> <h3><span class="link">Known Issues</span></h3> <p> These are patches from library authors which were found too late to be fixed in the release. </p> <ul> <li> <div> Filesystem <ul> <li> <div> Compilation on OpenBSD may fail because of broken support for <code><span class="special">-</span><span class="identifier">Wl</span><span class="special">,--</span><span class="identifier">no</span><span class="special">-</span><span class="identifier">undefined</span></code> compiler flag for shared libraries on this platform, see <a href="https://github.com/boostorg/filesystem/issues/283">#283</a>. <a href="https://www.boost.org/patches/1_82_0/0001-filesystem-fix-openbsd-build.patch">Patch</a>. </div> </li> <li> <div> On Windows, creating directory iterators over directories in SMBv1 shares may fail with <code><span class="identifier">ERROR_INVALID_LEVEL</span></code> error code, see <a href="https://github.com/boostorg/filesystem/issues/284">#284</a>. <a href="https://www.boost.org/patches/1_82_0/0002-filesystem-fix-win-smbv1-dir-iterator.patch">Patch</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_82_0.notice_of_dropping_c_03_support"> <h3><span class="link">Notice of Dropping C++03 Support</span></h3> <p> The following libraries will be dropping C++03 support in release 1.84, two releases from now: </p> <ul> <li> <div> Align </div> </li> <li> <div> Any </div> </li> <li> <div> Asio </div> </li> <li> <div> Atomic </div> </li> <li> <div> Bind </div> </li> <li> <div> Chrono </div> </li> <li> <div> ContainerHash </div> </li> <li> <div> Conversion </div> </li> <li> <div> DLL </div> </li> <li> <div> Endian </div> </li> <li> <div> Filesystem </div> </li> <li> <div> Function </div> </li> <li> <div> Functional </div> </li> <li> <div> Io </div> </li> <li> <div> LexicalCast </div> </li> <li> <div> Log </div> </li> <li> <div> Random </div> </li> <li> <div> Ratio </div> </li> <li> <div> SmartPtr </div> </li> <li> <div> System </div> </li> <li> <div> Stacktrace </div> </li> <li> <div> Thread </div> </li> <li> <div> Timer </div> </li> <li> <div> TypeIndex </div> </li> <li> <div> Typeof </div> </li> <li> <div> Unordered </div> </li> <li> <div> Variant </div> </li> </ul> <p> This release (1.82) and the next (1.83) will be the last releases offering C++03 support for the above libraries and most of their dependencies. </p> <p> The new baseline requirement for the above libraries, and for most of Boost, will be C++11. Since old compiler versions often implement C++11 only partially, due to missing support or bugs, what compilers are considered to meet the C++11 requirement may vary by library. </p> <p> However, a general rule is that if a compiler does not recognize a C++11 keyword or syntax at all (e.g. use of <code><span class="keyword">noexcept</span></code>, use of <code><span class="keyword">constexpr</span></code>, or defining a <code><span class="special">=</span><span class="keyword">delete</span></code>d function results in an immediate compile error), or if a compiler does not provide a required C++11 header at all (e.g. trying to include <code><span class="special">&lt;</span><span class="identifier">atomic</span><span class="special">&gt;</span></code> or <code><span class="special">&lt;</span><span class="identifier">chrono</span><span class="special">&gt;</span></code> fails), or the compiler provides a C++11 feature or a header that is completely unusable, this compiler is not considered a C++11 compiler. </p> <p> This rules out, for instance, Microsoft Visual C++ before 14.0, or GCC before 4.8. </p> </div> <div id="version_1_82_0.new_libraries"> <h3><span class="link">New Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/mysql/">Mysql</a>:</span> a C++11 client for the MySQL database server, based on Boost.Asio, from Ruben Perez. </div> </li> </ul> </div> <div id="version_1_82_0.updated_libraries"> <h3><span class="link">Updated Libraries</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/libs/any/">Any</a>:</span> <ul> <li> <div> Now uses <code><span class="identifier">core</span><span class="special">/</span><span class="identifier">enable_if</span><span class="special">.</span><span class="identifier">hpp</span></code> header instead of the deprecated <code><span class="identifier">utility</span><span class="special">/</span><span class="identifier">enable_if</span><span class="special">.</span><span class="identifier">hpp</span></code>. Thanks to Michael Ford for the PR <a href="https://github.com/boostorg/any/pull/25">PR#25</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/asio/">Asio</a>:</span> <ul> <li> <div> Added the ability to customise the execution of a completion handler when an operation completes immediately. </div> </li> <li> <div> Added user-defined literals for buffer types. </div> </li> <li> <div> Added a new protocol type <code><span class="identifier">local</span><span class="special">::</span><span class="identifier">seq_packet_protocol</span></code> to represent <code><span class="identifier">AF_UNIX</span></code> with <code><span class="identifier">SOCK_SEQPACKET</span></code>. </div> </li> <li> <div> Exposed <code><span class="identifier">sigaction</span><span class="special">()</span></code> flags via an optional argument to <code><span class="identifier">signal_set</span><span class="special">::</span><span class="identifier">add</span></code>. </div> </li> <li> <div> Change <code><span class="identifier">allocator_binder</span></code>, <code><span class="identifier">executor_binder</span></code>, and <code><span class="identifier">cancellation_slot_binder</span></code> to support detection of unspecialised associators. </div> </li> <li> <div> Fixed ambiguity in <code><span class="identifier">associated_cancellation_slot</span><span class="special">&lt;</span><span class="identifier">reference_wrapper</span><span class="special">&gt;::</span><span class="identifier">get</span><span class="special">()</span></code>. </div> </li> <li> <div> Fixed <code><span class="identifier">awaitable</span><span class="special">&lt;&gt;</span></code> handling for completion signatures containing <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">exception_ptr</span></code>. </div> </li> <li> <div> Fixed <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">channel</span><span class="special">&lt;&gt;</span></code> <code><span class="identifier">try_send</span></code> failure after a <code><span class="identifier">cancel</span></code>. </div> </li> <li> <div> Fixed <code><span class="identifier">thread_pool</span><span class="special">::</span><span class="identifier">join</span><span class="special">()</span></code> deadlock when the pool has no internal threads. </div> </li> <li> <div> Fixed pipe <code><span class="identifier">release</span><span class="special">()</span></code> when using <tt>io_uring</tt>. </div> </li> <li> <div> Fixed data initialisation and cleanup issues in the <tt>io_uring</tt> backend. </div> </li> <li> <div> Fixed a dangling reference issue in the execution context overload of <code><span class="identifier">get_associated_executor</span><span class="special">()</span></code>. </div> </li> <li> <div> Ensured buffered messages can still be received when an <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">channel</span><span class="special">&lt;&gt;</span></code> is closed. </div> </li> <li> <div> Fixed the <code><span class="identifier">any_completion_handler</span></code> assignment operator. </div> </li> <li> <div> Constrained the constructor of <code><span class="identifier">any_completion_handler</span></code> to prevent accidental copying </div> </li> <li> <div> Changed to use <code><span class="identifier">uint64_t</span></code> for OpenSSL options, to match OpenSSL 3. </div> </li> <li> <div> Fixed <code><span class="identifier">deferred</span></code> interoperability with multiple completion signatures. </div> </li> <li> <div> Fixed channels to add partial support for C++11 and C++14. </div> </li> <li> <div> Added missing handler tracking source location support to <code><span class="identifier">co_composed</span></code> and 'awaitable&lt;&gt;' coroutines, when awaiting packaged asynchronous operations. </div> </li> <li> <div> Fixed some 'potential null dereference' and shadow variable warnings. </div> </li> <li> <div> Fixed a <code><span class="identifier">asio</span><span class="special">::</span><span class="identifier">buffer</span></code> overload selection when used with <code><span class="identifier">const_buffers_1</span></code> and <code><span class="identifier">mutable_buffers_1</span></code>. </div> </li> <li> <div> Disabled the runtime check for current Windows version unless targeting older Windows. </div> </li> <li> <div> Fixed compatibility between buffered stream wrappers and move-constructible streams, such as <code><span class="identifier">ssl</span><span class="special">::</span><span class="identifier">stream</span><span class="special">&lt;&gt;</span></code>. </div> </li> <li> <div> Fixed <code><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_accept</span></code> compatibility with lambdas that have a deduced return type. </div> </li> <li> <div> Fixed <code><span class="identifier">as_tuple</span></code> compatibility with legacy completion tokens. </div> </li> <li> <div> Fixed <code><span class="identifier">redirect_error</span></code> compatibility with new completion tokens. </div> </li> <li> <div> Fixed a potential, Windows-specific program termination due to exceptions that should have been allowed to escape from a destructor. </div> </li> <li> <div> Prevented inadvertent <code><span class="identifier">co_await</span></code> of boolean expressions. </div> </li> <li> <div> Fixed result handling and support for custom allocators in <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">use_coro</span></code>. </div> </li> <li> <div> Fixed variadic template emulation for <code><span class="identifier">is_async_operation</span></code> and <code><span class="identifier">completion_signature_of</span></code>. </div> </li> <li> <div> Fixed incorrect reuse of a moved-from result in <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">promise</span></code>. </div> </li> <li> <div> Fixed <code><span class="identifier">experimental</span><span class="special">::</span><span class="identifier">coro</span></code> use with custom allocators. </div> </li> <li> <div> Fixed <code><span class="identifier">seek_cur</span></code> behaviour with stream-oriented files on Windows. </div> </li> <li> <div> Various additions and modifications to the documentation. </div> </li> <li> <div> Consult the <a href="https://www.boost.org/doc/libs/1_82_0/doc/html/boost_asio/history.html">Revision History</a> for further details. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/atomic/">Atomic</a>:</span> <ul> <li> <div> When compiled for x86 targets supporting AVX, vector instructions are now used for 128-bit atomic loads and stores. </div> </li> <li> <div> For 32-bit x86 targets, 64-bit atomic loads and stores with <code><span class="identifier">memory_order_seq_cst</span></code> semantics will now issue a memory ordering instruction. </div> </li> <li> <div> Removed <code><span class="identifier">atomic</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">storage</span><span class="special">()</span></code> accessors and <code><span class="identifier">atomic</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">storage_type</span></code> types that were deprecated in Boost.Atomic 1.73. Users are recommended to use <code><span class="identifier">atomic</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">()</span></code> and <code><span class="identifier">atomic</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> instead. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/beast">Beast</a>:</span> <ul> <li> <div> Add <code><span class="identifier">error_code</span></code>s use source_location </div> </li> <li> <div> tcp_stream uses the correct executor of the timer. </div> </li> <li> <div> error_categories use numeric ids </div> </li> <li> <div> <code><span class="identifier">file_body</span></code> supports seek </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/container_hash/">ContainerHash</a>:</span> <ul> <li> <div> Added an overload of <code><span class="identifier">hash_value</span></code> for <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">nullptr_t</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">is_tuple_like</span></code> and an overload of <code><span class="identifier">hash_value</span></code> for tuple-like types. </div> </li> <li> <div> Changed string hashing to use <a href="https://github.com/pdimov/mulxp_hash"><code><span class="identifier">mulxp1_hash</span></code></a>. This improves both quality and speed. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/core/">Core</a>:</span> <ul> <li> <div> Added <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">snprintf</span><span class="special">.</span><span class="identifier">hpp</span></code> header with portable definitions of <code><span class="identifier">snprintf</span></code>, <code><span class="identifier">vsnprintf</span></code> and their <code><span class="keyword">wchar_t</span></code> counterparts. </div> </li> <li> <div> Deprecated <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">is_same</span><span class="special">.</span><span class="identifier">hpp</span></code> and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">is_same</span></code>. The header will be removed in a future release. Users are advised to use Boost.TypeTraits or C++ standard library type traits instead. </div> </li> <li> <div> Marked <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span></code> member functions and associated methods with <code><span class="keyword">noexcept</span></code>. </div> </li> <li> <div> Marked <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">swap</span></code> function with <code><span class="keyword">noexcept</span></code>, depending on whether the type supports a non-throwing swap operation. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">launder</span></code>, a portable implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">launder</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">BOOST_CORE_ALIGNOF</span></code>, a portable implementation of <code><span class="keyword">alignof</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">max_align_t</span></code>, a portable equivalent of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">max_align_t</span></code>, and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">max_align</span></code>, the alignment of <code><span class="identifier">max_align_t</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span><span class="special">::</span><span class="identifier">memory_resource</span></code>, a portable equivalent of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">pmr</span><span class="special">::</span><span class="identifier">memory_resource</span></code> from C++17. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">serialization</span><span class="special">.</span><span class="identifier">hpp</span></code>, a collection of primitives allowing libraries to implement Boost.Serialization support for their types without including a Serialization header and thereby making their libraries depend on Serialization. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">data</span></code>, an implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">data</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">size</span></code>, an implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">size</span></code>. </div> </li> <li> <div> Updated <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">span</span></code> to use <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">data</span></code> which adds support for range construction from an <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">initializer_list</span></code>. </div> </li> <li> <div> Added <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">identity</span></code>, an implementation of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">identity</span></code>. This facility has been moved from Boost.Functional. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/dll/">DLL</a>:</span> <ul> <li> <div> Avoid implicit cast from size_t to uint32_t, thanks to Travers Biddle for the PR <a href="https://github.com/boostorg/dll/pull/57">PR#57</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/filesystem/">Filesystem</a>:</span> <ul> <li> <div> Fixed compilation errors that could have been caused by <code><span class="identifier">path</span></code> conversion constructors being too permissive on the accepted arguments. (<a href="https://github.com/boostorg/filesystem/issues/273">#273</a>) </div> </li> <li> <div> <strong>v4:</strong> <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">remove_filename</span></code> now presesrves the trailing directory separator. (<a href="https://github.com/boostorg/filesystem/issues/271">#271</a>) </div> </li> <li> <div> Added <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">remove_filename_and_trailing_separators</span></code>, which removes the filename and directory separators preceding it from the path. This behavior is similar to <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">remove_filename</span></code> in Filesystem <strong>v3</strong>, but is also usable in <strong>v4</strong>. </div> </li> <li> <div> Added <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">replace_filename</span></code>, which replaces filename in a path. </div> </li> <li> <div> Updated implementation of the library version selection to avoid ODR violations. (<a href="https://github.com/boostorg/filesystem/issues/279">#279</a>) </div> </li> <li> <div> On Windows, added a workaround for querying file attributes for files in SMBv1 shares. Previously, directories in SMBv1 shares could have been reported as regular files. This does not affect SMBv2 or later. (<a href="https://github.com/boostorg/filesystem/issues/282">#282</a>) </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/geometry/">Geometry</a>:</span> <ul> <li> <div> Major improvements <ul> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1045">PR#1045</a> Support geographic buffer for (multi)linestrings and (multi)polygons </div> </li> </ul> </div> </li> <li> <div> Improvements <ul> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1114">PR#1114</a> Comparable distance: Add support for dynamic geometries </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/pull/1046">PR#1046</a> Support covered_by() for box, geometry combinations </div> </li> </ul> </div> </li> <li> <div> Solved issues <ul> <li> <div> <a href="https://github.com/boostorg/geometry/issues/705">#705</a> WKT: allow tabs and new lines </div> </li> <li> <div> <a href="https://github.com/boostorg/geometry/issues/1109">#1109</a>, <a href="https://github.com/boostorg/geometry/issues/1108">#1108</a> Fixes for union </div> </li> <li> <div> Various fixes in examples </div> </li> </ul> </div> </li> <li> <div> Breaking changes <ul> <li> <div> The WKT output presentation of an empty polygon is now POLYGON() to make it consistent with other geometries </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/histogram/">Histogram</a>:</span> <ul> <li> <div> Replace <code><span class="identifier">detail</span><span class="special">::</span><span class="identifier">span</span></code> and <code><span class="identifier">detail</span><span class="special">::</span><span class="identifier">make_span</span></code> with implementations in <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">core</span></code> </div> </li> <li> <div> Documentation improvements </div> </li> <li> <div> Protect usage of <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">min</span></code> and <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">max</span></code> in some cases, contributed by Han Jiang (min,max macros are illegially set by popular Windows headers so we need to work around) </div> </li> <li> <div> Added test to catch usage of unprotected min,max tokens in the library in the future </div> </li> <li> <div> Fixes to support latest clang-14 and deduction guides in gcc-11+ </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/json/">JSON</a>:</span> <ul> <li> <div> <code><span class="identifier">set_at_pointer</span></code>. </div> </li> <li> <div> <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash</span></code> support. </div> </li> <li> <div> Caller-provided serializer storage. </div> </li> <li> <div> <code><span class="identifier">value_to</span></code> supports missing elements for <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">optional</span></code>. </div> </li> <li> <div> Fix parser suspend inside an escape character. </div> </li> <li> <div> Make sentinel() return a unique pointer. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/locale/">Locale</a>:</span> <ul> <li> <div> <code><span class="identifier">get_system_locale</span></code> and dependents will now correctly favor <code><span class="identifier">LC_ALL</span></code> over <code><span class="identifier">LC_CTYPE</span></code> as defined by POSIX <a href="https://github.com/boostorg/locale/pull/144">PR#144</a> </div> </li> <li> <div> <code><span class="identifier">utf8_codecvt</span><span class="special">::</span><span class="identifier">out</span></code> returns <code><span class="identifier">partial</span></code> for trailing (UTF) surrogates </div> </li> <li> <div> Add <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">locale</span><span class="special">::</span><span class="identifier">util</span><span class="special">::</span><span class="identifier">locale_data</span></code> to parse a locale </div> </li> <li> <div> <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">locale</span><span class="special">::</span><span class="identifier">info</span><span class="special">::</span><span class="identifier">encoding</span><span class="special">()</span></code> result is now in uppercase as documented, e.g. "UTF-8" instead of "utf-8" </div> </li> <li> <div> Support M49 country codes such as <code><span class="identifier">en_001</span></code> or <code><span class="identifier">en_150</span></code> <a href="https://github.com/boostorg/locale/pull/148">PR#148</a> </div> </li> <li> <div> Treat <code><span class="identifier">en_US_POSIX</span></code> as an alias for the <code><span class="identifier">C</span></code> locale <a href="https://github.com/boostorg/locale/pull/148">PR#148</a> </div> </li> <li> <div> Improve error for missing segmentation support (i.e. without ICU) <a href="https://github.com/boostorg/locale/pull/149">PR#149</a> </div> </li> <li> <div> Fix compiler warnings </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/math/">Math</a>:</span> <ul> <li> <div> <strong>Deprecated C++11 support</strong>: We now require C++14 as a minimum standard. Our minimum tested compiler versions are now Clang-5, GCC-5 or MSVC-14.1. </div> </li> <li> <div> Added Estrin's method for polynomial evaluation. </div> </li> <li> <div> Fix various issues in non-central distributions to allow for larger non-centralities see <a href="https://github.com/boostorg/math/pull/939">939</a>. </div> </li> <li> <div> Added CMake install target. </div> </li> <li> <div> Fix special_functions.hpp to disable anything which can't be used in an exception-free environment. </div> </li> <li> <div> Get condition number calculation working in C++14. </div> </li> <li> <div> Fix <code><span class="keyword">constexpr</span></code> table driven functions to avoid massive slowdown when the code is not actually <code><span class="keyword">constexpr</span></code>, see <a href="https://github.com/boostorg/math/issues/923">923</a>. </div> </li> <li> <div> Improve tanh_sinh boundary handling, see <a href="https://github.com/boostorg/math/pull/894">894</a>. </div> </li> <li> <div> Add Linux arm64, s390x and Apple M1 testing, fix up test cases to handle 128-bit long doubles. </div> </li> <li> <div> Improve <code><span class="keyword">constexpr</span></code> math functions to better handle infinities and NaN's. </div> </li> <li> <div> Make the integrators const-correct. </div> </li> <li> <div> Fix tanh_sinh integrator in case the function underflows, see <a href="https://github.com/boostorg/math/issues/898">898</a>. </div> </li> <li> <div> Don't use <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">cbrt</span></code> as some platforms still don't support it. </div> </li> <li> <div> Stop non-central T from raising spurious FE_INVALID exceptions, see <a href="https://github.com/boostorg/math/pull/892">892</a>. </div> </li> <li> <div> Fix binomial distribution edge case. </div> </li> <li> <div> Improve ibeta handling of very small arguments, see <a href="https://github.com/boostorg/math/pull/884">884</a>. </div> </li> <li> <div> Improve ibeta handling of infinities and NaN's, see <a href="https://github.com/boostorg/math/issues/878">878</a>. </div> </li> <li> <div> Improve error handling in powm1, see <a href="https://github.com/boostorg/math/issues/781">781</a>. </div> </li> <li> <div> Improve root-finder bracketing to bracket faster when the exponent is super-large or small. </div> </li> <li> <div> Fix root finding edge cases, see <a href="https://github.com/boostorg/math/issues/873">873</a>. </div> </li> <li> <div> Lots of miscellaneous warning fixes. </div> </li> <li> <div> Add assertions when using features which require C++17 for better error messages when invoking the compiler in a lower std version. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multi_index/doc/index.html">Multi-index Containers</a>:</span> <ul> <li> <div> Serialization now uses <code><span class="keyword">unsigned</span> <span class="keyword">long</span></code> instead of <a href="https://www.boost.org/libs/serialization/doc/wrappers.html#collection_size_type"><code><span class="identifier">collection_size_type</span></code></a>, and <code><span class="identifier">multi_index_container</span></code> serialization <a href="https://www.boost.org/libs/serialization/doc/tutorial.html#versioning">class version</a> has been bumped from 2 to 3 to reflect this change. Reading old archives may fail for custom archive types giving special treatment to <code><span class="identifier">collection_size_type</span></code> values: if this is the case, globally define the macro <code><span class="identifier">BOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2</span></code> to ensure backwards compatibility in reading operations. </div> </li> <li> <div> Maintenance work. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/multiprecision/">Multiprecision</a>:</span> <ul> <li> <div> <strong>Deprecated C++11 support</strong>: We now require C++14 as a minimum standard. Our minimum tested compiler versions are now Clang-5, GCC-5 or MSVC-14.1. </div> </li> <li> <div> Added a new forward declaration header. </div> </li> <li> <div> Update Eigen interoperability so we no longer rely on Eigen's details, see <a href="https://github.com/boostorg/multiprecision/issues/479">479</a>. </div> </li> <li> <div> Add Cmake install target. </div> </li> <li> <div> Fix cpp_dec_float construction from string in standalone case for better error handling, see <a href="https://github.com/boostorg/multiprecision/issues/499">499</a>. </div> </li> <li> <div> Remove redundent definitions when in C++17 mode, see <a href="https://github.com/boostorg/multiprecision/pull/530">530</a>. </div> </li> <li> <div> Fix the error handling in standalone itrunc and ltrunc. </div> </li> <li> <div> Fix potentially uninitialized storage when parsing octal strings. </div> </li> <li> <div> Add arm64 and s390x CI testing. </div> </li> <li> <div> Add some missing expression template unpacking code for <code><span class="identifier">powm</span></code>, see <a href="https://github.com/boostorg/multiprecision/issues/506">506</a>. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/nowide/">Nowide</a>:</span> <ul> <li> <div> Add <code><span class="identifier">convert_string</span></code> overload accepting a (<code><span class="identifier">std</span><span class="special">::</span></code>)string instance </div> </li> <li> <div> Add <code><span class="identifier">quoted</span></code> to output (quoted UTF-8) paths (<code><span class="identifier">std</span><span class="special">::</span><span class="identifier">filesystem</span></code> or <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span></code>) to streams <a href="https://github.com/boostorg/nowide/pull/170">PR#170</a> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/pfr/">PFR</a>:</span> <ul> <li> <div> Implemented the <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">is_implicitly_reflectable</span></code> and the machinery for specializing aggregates as reflectable or not, thanks to Denis Mikhailov for the PR <a href="https://github.com/boostorg/pfr/pull/111">PR#111</a>. </div> </li> <li> <div> Implemented <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get</span></code> by type of an element in the aggregate. </div> </li> <li> <div> Implemented the <code><span class="identifier">BOOST_PFR_ENABLED</span></code> macro to detect library support for reflection, thanks to Denis Mikhailov for the PR <a href="https://github.com/boostorg/pfr/pull/86">PR#86</a>. </div> </li> <li> <div> Fixed missing terminating character, thanks to Denis Mikhailov for the PR <a href="https://github.com/boostorg/pfr/pull/114">PR#114</a>. </div> </li> <li> <div> Fixed the <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code> compilation on older compilers, thanks to Denis Mikhailov for the PR <a href="https://github.com/boostorg/pfr/pull/118">PR#118</a>. </div> </li> <li> <div> Workaround for broken C++17 stuctured binding in old compilers, thanks to Denis Mikhailov for the PR <a href="https://github.com/boostorg/pfr/pull/119">PR#119</a>. </div> </li> <li> <div> Avoid -Wzero-as-null-pointer-constant warnings, thanks to Markus F.X.J. Oberhumer for the PR <a href="https://github.com/boostorg/pfr/pull/117">PR#117</a>. </div> </li> <li> <div> Fixed multiple typos, thanks to Denis Mikhailov for the fixes. </div> </li> <li> <div> Added missing <code><span class="preprocessor">#pragma</span> <span class="identifier">once</span></code>, thanks to <a href="https://github.com/caozhanhao">caozhanhao</a> for the PR <a href="https://github.com/boostorg/pfr/pull/121">PR#121</a>. </div> </li> <li> <div> Multiple fixes and improvements for the docs. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/process">Process</a>:</span> <ul> <li> <div> Added management for extern processes to V2 (still experimental) </div> </li> <li> <div> Deprecated <code><span class="identifier">wait_for</span></code> &amp; <code><span class="identifier">wait_until</span></code> in V1 - they will be removed in the future! </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/stacktrace/">Stacktrace</a>:</span> <ul> <li> <div> Fixed typos in docs and comments, thanks to Chocobo1 for the PR <a href="https://github.com/boostorg/stacktrace/pull/132">PR#132</a>. </div> </li> <li> <div> Fixed multithreading flag detection for <code><span class="identifier">backtrace_create_state</span></code> if <code><span class="identifier">BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC</span></code> is defined. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/static_string/">StaticString</a>:</span> <ul> <li> <div> Boost.Core <code><span class="identifier">string_view</span></code> and <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span></code> interoperability </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/test/">Test</a>:</span> <ul> <li> <div> Fixed several unused variable warnings </div> </li> <li> <div> Fixed sprintf deprecation warnings </div> </li> <li> <div> Fixed undefined behavior in <code><span class="identifier">basic_cstring</span><span class="special">::</span><span class="identifier">rfind</span></code> </div> </li> <li> <div> Added CI through Github Actions </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/unordered/">Unordered</a>:</span> <ul> <li> <div> <strong>Major update.</strong> </div> </li> <li> <div> Added node-based, open-addressing containers <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered_node_map</span></code> and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unordered_node_set</span></code>. </div> </li> <li> <div> Extended heterogeneous lookup to more member functions as specified in <a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html">P2363</a>. </div> </li> <li> <div> Replaced the previous post-mixing process for open-addressing containers with a new algorithm based on extended multiplication by a constant. </div> </li> <li> <div> Fixed bug in internal <code><span class="identifier">emplace</span></code> impl where stack-local types were not properly constructed using the allocator of the container which breaks uses-allocator construction. </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/url/">URL</a>:</span> <ul> <li> <div> Add <code><span class="identifier">url</span><span class="special">::</span><span class="identifier">format</span></code> with automatic percent-encoding </div> </li> <li> <div> URL router example </div> </li> <li> <div> <code><span class="identifier">set_params</span></code> convenience function </div> </li> <li> <div> Support implicit conversions to <code><span class="identifier">string_view</span></code> </div> </li> <li> <div> Parsing constructors are implicit </div> </li> <li> <div> <code><span class="identifier">string_token</span><span class="special">::</span><span class="identifier">arg</span></code> has virtual destructor and slice protection </div> </li> <li> <div> Support <code><span class="identifier">BOOST_URL_DISABLE_THREADS</span></code> </div> </li> <li> <div> Improvements and Bug fixes: <ul> <li> <div> WIN32_LEAN_AND_MEAN macro redefinition warning </div> </li> <li> <div> Comparison differentiates absent and empty components </div> </li> <li> <div> Detect <code><span class="identifier">hier_part_rule</span></code> with empty-port-like segments </div> </li> <li> <div> Segments comparison as if normalized works above root </div> </li> <li> <div> hier-part path-rootless considers invalid segments </div> </li> <li> <div> port as number is set to 0 when it overflows </div> </li> <li> <div> ipv4 to string overflow detection algorithm </div> </li> </ul> </div> </li> </ul> </div> </li> <li> <div> <span class="library"><a href="https://www.boost.org/libs/variant/">Variant</a>:</span> <ul> <li> <div> Now uses core/addressof instead of the deprecated utility/addressof. Thanks to Michael Ford for the PR <a href="https://github.com/boostorg/variant/pull/105">PR#105</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_82_0.updated_tools"> <h3><span class="link">Updated Tools</span></h3> <ul> <li> <div> <span class="library"><a href="https://www.boost.org/tools/build/">Build</a>:</span> <ul> <li> <div> Includes release of <a href="https://www.boost.org/tools/build/doc/html/#_version_4_9_4">B2 version 4.9.4</a>. </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_82_0.compilers_tested"> <h3><span class="link">Compilers Tested</span></h3> <p> Boost's primary test compilers are: </p> <ul> <li> <div> Linux: <ul> <li> <div> Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0 </div> </li> <li> <div> GCC, C++03: 4.6.3, 11, 12 </div> </li> <li> <div> GCC, C++11: 4.7.3, 4.8.5, 11, 12 </div> </li> <li> <div> GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12 </div> </li> <li> <div> GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12 </div> </li> </ul> </div> </li> <li> <div> OS X: <ul> <li> <div> Apple Clang, C++03: 11.0.3 </div> </li> <li> <div> Apple Clang, C++11: 11.0.3 </div> </li> <li> <div> Apple Clang, C++14: 11.0.3 </div> </li> <li> <div> Apple Clang, C++17: 11.0.3 </div> </li> <li> <div> Apple Clang, C++20: 11.0.3 </div> </li> </ul> </div> </li> <li> <div> Windows: <ul> <li> <div> Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3 </div> </li> </ul> </div> </li> </ul> </div> <div id="version_1_82_0.acknowledgements"> <h3><span class="link">Acknowledgements</span></h3> <p> Marshall Clow and Glen Fernandes managed this release. </p> </div>