mirror of
https://github.com/boostorg/website-v2-docs.git
synced 2026-01-19 04:42:17 +00:00
348 lines
18 KiB
Plaintext
348 lines
18 KiB
Plaintext
////
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
Official repository: https://github.com/boostorg/website-v2-docs
|
|
////
|
|
|
|
== Version 1.90.0
|
|
|
|
// Date of release
|
|
Month Day, Year Hour::Minute GMT
|
|
|
|
boost_at:/doc/libs/1_90_0/[Documentation]
|
|
|
|
// Formatting reference: https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/
|
|
// Boost-specific macros: https://github.com/cppalliance/asciidoctor-boost?tab=readme-ov-file#macros
|
|
// Please keep the list of libraries sorted in lexicographical order.
|
|
|
|
== New Libraries
|
|
|
|
// Example:
|
|
//
|
|
// * boost_phrase:library[Accumulators,/libs/accumulators]:
|
|
// ** Framework for incremental calculation, and collection of statistical
|
|
// accumulators, from Eric Niebler.
|
|
|
|
* boost_phrase:library[OpenMethod,/libs/openmethod]:
|
|
** Open-(multi-)methods in C++17 and above, from Jean-Louis Leroy.
|
|
|
|
== Updated Libraries
|
|
|
|
// Example:
|
|
//
|
|
// * boost_phrase:library[Interprocess,/libs/interprocess/]:
|
|
// ** Added anonymous shared memory for UNIX systems.
|
|
// ** Conform to `std::pointer_traits` requirements (boost_gh:pr[interprocess,32]).
|
|
// ** Fixed `named_condition_any` fails to notify (boost_gh:issue[interprocess,62]).
|
|
|
|
* boost_phrase:library[Beast,/libs/beast/]:
|
|
** `http::parser` rejects non-standard trailer fields by default.
|
|
** `http::basic_parser` uses a dedicated callback for trailer fields.
|
|
** `http::field` constants are updated.
|
|
** Fixed allocator move/copy assignment in `flat_buffer` and `multi_buffer`.
|
|
** Fixed websocket permessage-deflate error on partial message consumption.
|
|
** `http::buffer_body` ignores empty chunks.
|
|
** Added `http::basic_fields::contains` member function.
|
|
** Removed dependency on Boost.Preprocessor and Boost.StaticAssert.
|
|
|
|
* boost_phrase:library[Bloom,/libs/bloom/]:
|
|
** Added bulk-mode insertion and lookup for increased performance.
|
|
** Made lookup implementation branchless for `block`, `fast_multiblock32`
|
|
and `fast_multiblock64`, which results in some performance gains,
|
|
particularly for mixed successful/unsuccessful queries.
|
|
|
|
* boost_phrase:library[Compat,/libs/compat/]:
|
|
** Added `to_underlying.hpp` (contributed by Braden Ganetsky.)
|
|
** Extracted `nontype_t` to its own public header `nontype.hpp` and added `nontype`.
|
|
|
|
* boost_phrase:library[Container,/libs/container/]:
|
|
** Reimplemented `deque`. The original implementation was based on
|
|
the SGI's original data structure (similar to libstdc++). Main changes:
|
|
*** `sizeof(deque)` was 10 words, now is 4 words. Probably the lightest implementation around.
|
|
*** `sizeof(deque::iterator)` was 4 words, now is is 2 words (similar to libc++ and MSVC).)
|
|
*** Several internal algorithms were reimplemented to speed up the segmented nature of deque.
|
|
*** Defaults were slightly changed, 64 bit platforms now use 1024 byte blocks by default instead of classic SGI 512 byte blocks.
|
|
*** The new implementation eases further deque-like variations and optimizations in the future.
|
|
|
|
** Fixed bugs/issues:
|
|
*** https://github.com/boostorg/container/issues/248[GitHub #248: "flat_map slow insertion introduced in boost-1.80.0"].
|
|
*** https://github.com/boostorg/container/issues/254[GitHub #254: "C++20 std::erase_if"].
|
|
*** https://github.com/boostorg/container/issues/293/[GitHub #293: "UBSAN reports unaligned access error"].
|
|
*** https://github.com/boostorg/container/pull/294[GitHub #294: "CMake: Add option to use header-only Boost::container"].
|
|
*** https://github.com/boostorg/container/issues/300[GitHub #300: "Warnings when building with Clang 20"].
|
|
*** https://github.com/boostorg/container/issues/304[GitHub #304: "Usage of boost::container::small_vector with custom allocator"].
|
|
*** https://github.com/boostorg/container/pull/305[GitHub #305: "Warnings with -Wstrict-prototypes"].
|
|
*** https://github.com/boostorg/container/pull/307[GitHub #307: "Fix all instances of MSVC warning C4146 (unsigned negation)"].
|
|
*** https://github.com/boostorg/container/issues/309[GitHub #309: "Performance regression of boost::container::static_vector introduced in boost v1.86"].
|
|
*** https://github.com/boostorg/container/issues/306[GitHub #306: "new_allocator.hpp error: '__cpp_sized_deallocation' is not defined, evaluates to 0 [-Werror,-Wundef]"].
|
|
*** https://github.com/boostorg/container/issues/310[GitHub #310: "flat_map: Mention correct type in documentation of emplace and emplace_hint"].
|
|
*** https://github.com/boostorg/container/issues/312[GitHub #312: "flat_map std::allocator::is_always_equal is deprecated"].
|
|
*** https://github.com/boostorg/container/pull/317/[GitHub #317: "Partial revert of changes for Issue #209 - compiler warnings"].
|
|
*** https://github.com/boostorg/container/pull/321/[GitHub #321: "devector does not work with pmr allocators"].
|
|
|
|
|
|
* boost_phrase:library[Conversion,/libs/conversion/]:
|
|
** Dropped dependency on Boost.SmartPtr.
|
|
|
|
|
|
* boost_phrase:library[Core,/libs/core/]:
|
|
** The implementation of `BOOST_TEST_THROWS` and `BOOST_TEST_NO_THROW` macros defined in
|
|
`boost/core/lightweight_test.hpp` has been changed to avoid
|
|
compiler warnings on some compilers, when the macros are used in `if`/`else` blocks. As
|
|
a side effect of this change, the semicolon after the macro is now necessary. (boost_gh:pr[core,205])
|
|
** `boost::data` and `boost::size` are now aliases for `std::data` and `std::size`,
|
|
respectively, when the latter are provided by compiler. This resolves potential ambiguities
|
|
when both `boost::` and `std::` alternatives are found by the compiler, e.g. as a result
|
|
of ADL. (boost_gh:pr[core,206])
|
|
|
|
* boost_phrase:library[DLL,/libs/dll/]:
|
|
** Fixed issues with `std::error_code` being passed to `boost::system::error_code&`. Many thanks
|
|
to https://github.com/0-wiz-0[Thomas Klausner] for the fix (boost_gh:pr[dll,106]).
|
|
** Fixed install with CMake. Many thanks to https://github.com/yurybura[Yury Bura] for the fix (boost_gh:pr[dll,103]).
|
|
** Fixed `size` variable shadowing.
|
|
|
|
* boost_phrase:library[DynamicBitset,/libs/dynamic_bitset/]:
|
|
** Added C++20 iterators.
|
|
** Allowed choosing the underlying container type.
|
|
** Added constexpr support when compiling as C++20 or later.
|
|
** Made push_back(), pop_back() and lowest_bit() more efficient.
|
|
** Made the constructor from basic_string explicit.
|
|
** Removed several dependencies.
|
|
** Added push_front(), pop_front(), find_first_off(), find_next_off() and constructors
|
|
from C-style strings and basic_string_view (the latter in C++17 or later).
|
|
** Changed the stream inserter to set badbit if an exception is thrown during output.
|
|
** Made the stream extractor rethrow any exception coming from the underlying vector.
|
|
** Ported the documentation to MrDocs and Antora.
|
|
|
|
* boost_phrase:library[Filesystem,/libs/filesystem/]:
|
|
** Clear passed `error_code` argument on successful completion of the `permissions` operation.
|
|
(boost_gh:pr[filesystem,338])
|
|
** On Windows, added a workaround for `directory_iterator` constructor failing with an "Invalid
|
|
Signature" error for a Samba 3.0.2 share, when SMB signing is required. (boost_gh:issue[filesystem,334])
|
|
|
|
* boost_phrase:library[Flyweight,/libs/flyweight/]:
|
|
** Fixed compile errors in Clang 19 and later due to https://wg21.link/p0522r0[P0522R0] support.
|
|
|
|
* boost_phrase:library[Interprocess,/libs/interprocess/]:
|
|
** Minor documentation fixes.
|
|
** Fixed bugs:
|
|
*** https://github.com/boostorg/interprocess/pull/245[GitHub #245: "Fix UBSan runtime error (load of 'boost::interprocess::mode_t')"].
|
|
*** https://github.com/boostorg/interprocess/pull/269[GitHub #269: "Minor documentation fixes and template parameter renames"].
|
|
|
|
* boost_phrase:library[JSON,/libs/json/]:
|
|
** Removed dependencies on Boost.Align and Boost.StaticAssert.
|
|
** Switched to a faster hashing algorithm.
|
|
|
|
* boost_phrase:library[LexicalCast,/libs/lexical_cast/]:
|
|
** More tests and fixes for floating-point special value conversions to integers and bool.
|
|
Fixes compiler warning C4804 when lexical casting from `float` to `bool`.
|
|
** Dropped dependency to Boost.TypeTraits. Many thanks to https://github.com/Romain-Geissler-1A[Romain Geissler]
|
|
for implementing the major part of the work (boost_gh:pr[lexical_cast,87]).
|
|
** Switch from implicit to explicit type conversion to avoid compiler warnings. Many thanks to
|
|
https://github.com/bmagistro[bmagistro] for the PR (boost_gh:pr[lexical_cast,85]).
|
|
** Fixed mistakes in documentation. Many thanks to https://github.com/ivanpanch[ivanpanch]
|
|
for the PR (boost_gh:pr[lexical_cast,86]).
|
|
** Fixed regression in `unsigned short` to `wstring` casting without `wchar_t` builtin type.
|
|
|
|
* boost_phrase:library[Log,/libs/log/]:
|
|
** Fixed a missed optimization in `value_ref` visitation.
|
|
** Fixed a possible long and useless loop on log file rotation in `text_file_backend`. If the log
|
|
file name pattern did not include a file counter and the log file size exceeded the `rotation_size` limit,
|
|
then the sink backend would repeatedly try to open a new log file with a different counter value and end up
|
|
opening the same file every time. (boost_gh:issue[log,252])
|
|
** Made file size checks more robust against integer overflows in `text_file_backend`.
|
|
|
|
* boost_phrase:library[Mp11,/libs/mp11/]:
|
|
** Updated `mp_reverse_fold` to work on fixed size lists
|
|
|
|
* boost_phrase:library[MSM,/libs/msm/]:
|
|
** Refurbished and updated the documentation to use Antora.
|
|
** Added a new back-end `backmp11` offering heavily reduced compile times, a refactored API and a couple of new features.
|
|
Requires {cpp}17, more details are available in the documentation.
|
|
** Fixed bug https://github.com/boostorg/msm/issues/87[GitHub #87: "boost::any stopped working as Kleene event in 1.86 in boost::msm"].
|
|
|
|
* boost_phrase:library[MySQL,/libs/mysql/]:
|
|
** Deprecated support for Clang versions older than 4.0. These compilers might still work,
|
|
but they won't be actively tested in CI.
|
|
** Added tests to guarantee compatibility with MySQL 9.x.
|
|
** Added tests to guarantee compatibility with Clang versions up to 20,
|
|
and GCC versions up to 15.
|
|
|
|
* boost_phrase:library[Parser,/libs/parser/]:
|
|
** Fixed ill-formedness when using move-only callables with closures
|
|
(boost_gh:pr[parser,284])
|
|
** Fix wonky `const`-incompatibility in `GlobalState` parser template params
|
|
(boost_gh:issue[parser,250]).
|
|
** Fix ill-formedness in some cases when using the permutation parser
|
|
(boost_gh:issue[parser,268]).
|
|
** Fixed an error in sequence parsing that could cause some attributes to be
|
|
overwritten by later parsers in a sequence (boost_gh:issue[parser,279]).
|
|
** Fix the handling of opt-parsers that could leave a `std::optional`
|
|
attribute containing a value even though the parser that produced it
|
|
failed (boost_gh:issue[parser,279] and boost_gh:issue[parser,285]).
|
|
** Multiple runtime optimizations (boost_gh:issue[parser,245],
|
|
boost_gh:pr[parser,254], boost_gh:pr[parser,255], boost_gh:pr[parser,256]).
|
|
** A modest compile-time and code size optimization
|
|
(boost_gh:issue[parser,250]).
|
|
** Make `transform` `constexpr` (boost_gh:pr[parser,275]).
|
|
** Move-versus-forward warning mitigation (boost_gh:issue[parser,272]).
|
|
** Correct the documentation for the attribute type of the `if_` directive
|
|
(boost_gh:issue[parser,278]).
|
|
** Correct many, many typos in the docs (boost_gh:pr[parser,271]).
|
|
|
|
|
|
* boost_phrase:library[PFR,/libs/pfr/]:
|
|
** Added an implementation based on C++26 destructuring into a pack, that
|
|
*fixes majority of known limitations* of the library and avoids excessive template
|
|
instantinations. The new implementation
|
|
can be explicitly enabled/disabled by a new `BOOST_PFR_USE_CPP26` macro. Many thanks to
|
|
https://github.com/jcelerier[Jean-Michaël Celerier] for the PR (boost_gh:pr[pfr,194]).
|
|
** Multiple fixes to CMake. Many thanks to https://github.com/Flamefire[Alexander Grund]
|
|
for the PRs!
|
|
|
|
|
|
* boost_phrase:library[Redis,/libs/redis/]:
|
|
** Important changes to *cancellation*:
|
|
*** Improved the per-operation support in `async_exec()`, and added
|
|
support for `asio::cancel_after`. Requests can now
|
|
be cancelled at any point, and cancellations don't interfere with other
|
|
requests anyhow.
|
|
Pull requests boost_gh:pr[redis,310] and boost_gh:issue[redis,226].
|
|
*** Deprecated the `cancel_on_connection_lost` and `cancel_if_not_connected`
|
|
flags in `request::config`.
|
|
To limit the time span that `async_exec`
|
|
might take, use `asio::cancel_after`, instead.
|
|
`cancel_on_connection_lost` default has been changed to `false`.
|
|
Pull requests boost_gh:pr[redis,329] and boost_gh:pr[redis,334].
|
|
*** Deprecated calling `cancel` with `operation::resolve`, `connect`,
|
|
`ssl_handshake`, `reconnection` and `health_check`.
|
|
Users should employ `cancel(operation::run)`, instead.
|
|
Pull request boost_gh:pr[redis,321].
|
|
*** Added support for per-operation cancellation in `async_run()`.
|
|
Issue boost_gh:issue[redis,319].
|
|
** Added support for *custom setup requests* using `config::setup`.
|
|
When setting these fields, users can
|
|
replace the library-generated `HELLO` request by any other arbitrary request.
|
|
Issue boost_gh:issue[redis,302] and pull request boost_gh:pr[redis,303]. +
|
|
** Deprecated `request::config::hello_with_priority`.
|
|
If you need to execute a request before any other, use `config::setup`, instead.
|
|
Pull request boost_gh:pr[redis,305].
|
|
** *Valkey* long-term support: we guarantee Valkey compatibility
|
|
starting with this release.
|
|
Issue boost_gh:issue[redis,296].
|
|
** Added a `request::append()` function, to concatenate request objects.
|
|
Issue boost_gh:issue[redis,341].
|
|
** The health checker algorithm has been redesigned to avoid
|
|
false positives under heavy loads. `PING` commands are now
|
|
only issued when the connection is idle, instead of periodically.
|
|
Issue boost_gh:issue[redis,104].
|
|
** Added `config::read_buffer_append_size`, which allows to control
|
|
the expansion of the connection's read buffer.
|
|
Pull request boost_gh:pr[redis,283].
|
|
** Added `usage::bytes_rotated`, which measures data copying when
|
|
reading and parsing data from the server.
|
|
Pull request boost_gh:pr[redis,311].
|
|
** Bug fixes:
|
|
*** Fixed a bug causing an exception to be thrown when parsing
|
|
a response that contains an intermediate error into a `generic_response`.
|
|
Issue boost_gh:issue[redis,287].
|
|
*** Fixed a number of race conditions in the `cancel()` function
|
|
of `connection` and `basic_connection` that could cause
|
|
cancellations to be ignored.
|
|
Issue boost_gh:issue[redis,318].
|
|
*** Users with an empty password but a non-default username are
|
|
now correctly authenticated. Issue boost_gh:issue[redis,298].
|
|
*** Fixed a problem that could cause an error during `HELLO`
|
|
to make subsequent `HELLO` attempts during reconnection to fail.
|
|
Issue boost_gh:issue[redis,290].
|
|
*** Errors during `HELLO` are now correctly logged.
|
|
Issue boost_gh:issue[redis,297].
|
|
|
|
* boost_phrase:library[SmartPtr,/libs/smart_ptr/]:
|
|
** The functionality enabled by the deprecated macros
|
|
`BOOST_SP_ENABLE_DEBUG_HOOKS`, `BOOST_SP_USE_STD_ALLOCATOR`,
|
|
and `BOOST_SP_USE_QUICK_ALLOCATOR` has been removed.
|
|
** The header `<boost/smart_ptr/detail/quick_allocator.hpp>` has
|
|
been marked deprecated and will be removed in a future release.
|
|
** Configurations that define `BOOST_NO_CXX11_HDR_ATOMIC` are no
|
|
longer supported; a conforming {cpp}11 `<atomic>` is now required.
|
|
** Consequently, Clang 3.5 and 3.6 are no longer supported.
|
|
** The deprecated macros `BOOST_AC_USE_SPINLOCK`, `BOOST_AC_USE_PTHREADS`,
|
|
`BOOST_SP_USE_SPINLOCK`, and `BOOST_SP_USE_PTHREADS` are no longer
|
|
functional.
|
|
** Platform-specific implementations of `atomic_count`, `sp_counted_base`
|
|
and `spinlock` are no longer used and have been removed.
|
|
** Configurations that define `BOOST_NO_CXX11_HDR_MUTEX` are no
|
|
longer supported; a conforming {cpp}11 `<mutex>` is now required.
|
|
** Some unused headers in `boost/smart_ptr/detail/` have been removed.
|
|
|
|
* boost_phrase:library[Stacktrace,/libs/stacktrace/]:
|
|
** Fixed missing include. Thanks to https://github.com/orgads[Orgad Shaneh]
|
|
for the fix!
|
|
** Fixed URL in `libbacktrace_impls.hpp`, thanks to
|
|
https://github.com/jwakely[Jonathan Wakely].
|
|
|
|
* boost_phrase:library[StaticString,/libs/static_string/]:
|
|
** Aligned `to_static_[w]string()` with `std::to_[w]string()` in C++26.
|
|
** Removed usage of an additional buffer in `to_static_[w]string()`.
|
|
** Added `resize_and_overwrite()`.
|
|
|
|
* boost_phrase:library[STLInterfaces,/libs/stl_interfaces/]:
|
|
** Fixed ill-formedness with GCC 14 (boost_gh:pr[stl_interfaces,80]).
|
|
** Fixed ill-formedness when using move-only callables with closures.
|
|
|
|
* boost_phrase:library[TypeIndex,/libs/type_index/]:
|
|
** Dropped dependency on Boost.Core.
|
|
** Run all the tests in CMake too, Many thanks to https://github.com/Flamefire[Alexander Grund]
|
|
for some fixes and help.
|
|
|
|
* boost_phrase:library[URL,/libs/url/]:
|
|
** `segments_view` and `segments_encoded_view` gained constant-time iterator-based subview constructors.
|
|
** Added zone-id setters (e.g. for IPv6 link-local addresses).
|
|
** Host setters now accept/propagate zone-id.
|
|
** Fixed: `resolve` now replicates the reference fragment in all cases (boost_gh:issue[url,920]).
|
|
** Fixed: `encoded_host_address` assertions account for zone-id.
|
|
** Refactor: replaced `BOOST_STATIC_ASSERT` with `BOOST_CORE_STATIC_ASSERT` (boost_gh:issue[url,934]).
|
|
** Refactor: preserved absolute semantics for segment subviews (boost_gh:issue[url,939]).
|
|
|
|
* boost_phrase:library[Uuid,/libs/uuid/]:
|
|
** `string_generator` is now `constexpr` on {cpp}14 and higher.
|
|
** Added header `boost/uuid/constants.hpp`.
|
|
** Renamed `boost/uuid/uuid_generators.hpp` to `boost/uuid/generators.hpp`. The old name is retained for compatibility.
|
|
|
|
* boost_phrase:library[Variant2,/libs/variant2/]:
|
|
** More functions have been marked as `constexpr`, including `~variant`.
|
|
This didn't matter before {cpp}20, but does now.
|
|
|
|
== Compilers Tested
|
|
|
|
// Edit this section as appropriate
|
|
|
|
Boost's primary test compilers are:
|
|
|
|
* Linux:
|
|
** 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
|
|
** Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
|
|
** 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
|
|
** 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
|
|
** Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
|
|
** GCC, C++03: 4.6.3, 11, 12
|
|
** GCC, C++11: 4.7.3, 4.8.5, 11, 12
|
|
** GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
|
|
** GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
|
|
** GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
|
|
* OS X:
|
|
** Apple Clang, C++03: 11.0.3
|
|
** Apple Clang, C++11: 11.0.3
|
|
** Apple Clang, C++14: 11.0.3
|
|
** Apple Clang, C++17: 11.0.3
|
|
** Apple Clang, C++20: 11.0.3
|
|
* Windows:
|
|
** Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
|
|
|
|
== Acknowledgements
|
|
|
|
// Edit this section as appropriate
|
|
|
|
Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release.
|