////
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[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[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])

* 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[Log,/libs/log/]:
** Fixed a missed optimization in `value_ref` visitation.

* 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[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.

== 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.
