December 14, 2022
Dependencies
There were 7 dependencies added (in 5 libraries) and 11 dependencies removed (in 3 libraries) this release.
Version 1.81.0
December 14th, 2022 17:44 GMT
New Libraries
- URL:
- A library for parsing, modifying, and printing s using only C++11, from Vinnie Falco and Alan de Freitas. Features include fast compilation, strong invariants, and strict compliance using a memory-friendly approach.
Updated Libraries
-
Asio:
-
Added the
consigncompletion token adapter, which can be used to attach additional values to a completion handler. -
Added
any_completion_handler<>, which can be used to type-erase completion handlers. -
Added
experimental::co_composedto enable lightweight implementations of user-defined asynchronous operations using C++20 coroutines. -
Add range-based
experimental::make_parallel_group()overloads. -
Added
any_completion_executor, a type-erased wrapper for executors that are associated with completion handlers. -
Added missing
contextquery to use_future's executor. -
Added nothrow constructor overloads to
execution::any_executor<>andany_io_executor. -
Optimised representation of empty
execution::any_executorobjects to improve the performance of copy and move operations. -
Added an
associated_cancellation_slotspecialisation forstd::reference_wrapper. - Changed I/O objects to return their executors by const reference.
-
Changed associated to use deduced return types for all two-argument
getfunctions. -
Fixed
spawnimplementation to catch unhandled exceptions and rethrow them outside of the spawned "thread". -
Fixed
spawnto ensure the completion handler is dispatched through the correct executor. -
Fixed cleanup of of terminal-state
spawn"thread" objects. -
Fixed
spawnandco_spawnimplementations to dispatch cancellation handlers on the correct executor. - Changed semantics of 'dispatch' to mean the executor is used as-is.
-
Deprecated the
execution::executecustomisation point and sender/receiver facilities. -
Added a C++11
parallel_groupexample. -
Fixed example code to not use the deprecated
resolveconversions. -
Fixed an ambiguity in
experimental::channel_traitsspecialisations. -
Added a specialised channel implementation for the for
R(error_code)signature. -
Made
cancelled()public on theasync_compose'self' object. -
Added io_executor_type and get_io_executor to the
async_compose'self' object. -
Fixed implementation of
release()for Windows overlapped handles. -
Enabled deferred awaiting for
experimental::coro, regularisedexperimental::use_coro, and fixed allocator handling. -
Cleaned up
experimental::promiseand made it an asynchronous operation object. -
Constrained
post/deferoverloads on ability to requireblocking.never. -
Changed descriptor implementation to fall back to
fcntlifioctlfails withENOTTYwhen setting non-blocking mode. -
Fixed Xcode deprecation warnings related to use of
sprintf. -
Fixed the arguments passed to
select_reactor::runwhen it is run on an internal thread. -
Fixed compilation errors when
BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLINGis defined. - Updated detection of C++20 coroutine support on clang 14 and later.
-
Changed standard library feature detection to always enable
std::invoke_resultwhen targeting C++17 or later. - Fixed detection of return type deduction with MSVC.
- Updated the asynchronous operation requirements to relax the requirements on the associated executor.
- Added io_uring to the implementation notes.
- Consult the Revision History for further details.
-
Added the
-
Beast:
-
Add
buffers_generator -
Add
beast::http::message_generator -
Added
buffer_ref, so beast buffers can be used with asio. - Support for per-operation cancellation
- C++20 awaitable examples.
- websocket per-message compression options
- websocket timeout option api
- multiple content length error
- Support for default-completion and rebind
-
Add
-
Container Hash:
- Major update.
-
The specializations of
boost::hashhave been removed; it now always callshash_value. -
Support for
BOOST_HASH_NO_EXTENSIONShas been removed. The extensions are always enabled. -
All standard containers are now supported. This includes
std::forward_listand the unordered associative containers. -
User-defined containers (types that have
begin()andend()member functions that return iterators) are now supported out of the box. -
Described structs and classes (those annotated with
BOOST_DESCRIBE_STRUCTorBOOST_DESCRIBE_CLASS) are now supported out of the box. -
hash_combinehas been improved. -
The performance (and quality, as a result of the above change) of
string hashing has been improved.
boost::hashfor strings now passes SMHasher in 64 bit mode. - The documentation has been substantially revised to reflect the changes.
-
Core:
-
empty_valuemembers are now marked asconstexpr. -
Added
fclose_deleter, a deleter that callsstd::fcloseon a pointer tostd::FILE. -
Bit manipulation utilities in
boost/core/bit.hppnow explicitly require unsigned integers on input. (#129) -
bit_widthnow returnsintinstead of a value of the input argument type. This follows resolution of LWG3656.
-
-
Describe:
-
To allow the inclusion of
enumerators.hpp,bases.hpp, andmembers.hppwhen the option-pedanticis used, the invocation ofBOOST_DESCRIBE_ENUMhas been moved frommodifiers.hppinto a separate header,modifier_description.hpp. As a consequence,modifiers.hppno longer includesenum.hpp. Code that has been relying on this implicit inclusion may fail, and will need to be fixed to includeenum.hpp.
-
To allow the inclusion of
-
DLL:
-
Fixed
path_from_handleimplementation for Windows platforms, thanks to @SaltfishAmi for the bug report 57.
-
Fixed
-
Filesystem:
-
Deprecated:
pathconstruction, assignment and appending from containers of characters, such asstd::vector<char>orstd::list<wchar_t>, is deprecated in v3 and removed in v4. Please use string types or iterators instead. -
Deprecated:
boost/filesystem/path_traits.hppheader is deprecated and will be removed in a future release. The header contained implementation details ofpathand should not be used in user's code. -
Previously deprecated APIs will now generate compilation warnings
on use. To suppress these warnings,
BOOST_FILESYSTEM_ALLOW_DEPRECATEDmacro can be defined when compiling user's code. -
Fixed compilation due to a missing include on POSIX systems that
do not support
*atAPIs. (#250) -
On Windows prior to 10, added a workaround for network share filesystem
that produces
ERROR_INVALID_PARAMETERwhen constructing directory iterators. (PR#246, #245) -
On Windows, fixed
weakly_canonicalfailing with anERROR_INVALID_FUNCTIONerror code if the path started with the "\\?\" prefix. (#247) -
Added support for
std::string_view,boost::string_viewandboost::container::string(as well as respectivewchar_tcounterparts) inpathconstructors, assignment and appending operations. (#208) -
pathconstructors, assignment and appending operations taking a pair of iterators will no longer accept iterators with value types that are not one of the supported path character types. -
On Windows, improved compatibility of
directory_iteratorwith various mounted filesystems and Wine releases prior to 7.21. (#255, #266) - On Windows, deduplicated files are now reported as regular files rather than reparse files. (#262)
-
Deprecated:
-
Fusion:
-
Added
fusion::identity_view(PR#240) -
Added support for associative sequences on
fusion::transform_view(PR#239) -
Fixed compilation for the case when
fusion::reverse_viewused with an associative sequence (PR#237) - Fixed Clang 13 -Wdeprecated-copy warnings (PR#261)
-
A small dependency reorganization. Now
boost::refandboost::noncopyableare used from Boost.Core (PR#249) - Added CI testing on Linux and MacOS for clang and gcc, fixed CI testing on Windows (PR#245, PR#236)
- Improved docs and fixed typos (#234, PR#235, PR#238)
-
Added
-
Geometry:
- Solved issues
- Bugfixes
-
Histogram:
- Major update.
-
Added new
accumulators::fractionto compute fractions, their variance, and confidence intervals -
Added interval computers for fractions:
utility::clopper_pearson,utility::wilson_interval,utility::jeffreys_interval,utility::wald_intervalwhich can compute intervals with arbitrary confidence level -
Added
utility::confidence_levelandutility::deviationtypes to pass confidence levels as probabilities or in multiples of standard deviation for all interval computers, respectively -
Fixed internal
sub_arrayandspanin C++20
-
Iterator:
-
function_output_iteratornow supports perfect forwarding of the assigned values to the wrapped function object. (PR#73) -
Fixed compilation of constructing a
function_input_iteratorfrom result of post-incrementing anotherfunction_input_iterator. (#75) -
The result of post-incrementing an iterator based on
iterator_facadenow supportsoperator->.(it++)->foois equivalent to(*it++).foo, which was supported before.
-
-
JSON:
-
Added
object::stable_erase. -
Added
parseoverload forstd::istreamandoperator>>forvalue. -
Added rvalue ref-qualified accessors for
value. - Conversion traits were redesigned.
-
Added conversion support for described classes and enums,
std::optional,std::variant, and null-like types (includingstd::nullptr_t,std::nullopt_t, andstd::monotype). -
Added non-throwing conversion from
valueto user types.
-
Added
- LexicalCast:
-
Locale:
- Major update with some breaking changes.
- C++11 support is now required, support for C++03 and earlier is dropped
- Some enums have been converted to enum classes - Avoids name clashes
-
Replace
-sICU_LINK_LOCALE&-sICU_LINKby fine-grained configuration options as done in Boost.RegEx - Fix detection of libiconv allowing Boost.Locale to be build (again) on some platforms
-
Remove use of and support for
std::auto_ptr -
Make the
codecvtusingwchar_ton Windows assume/use UTF-16 enconding -
Performance improvements: Make
basic_format,date_time&hold_ptrmovable, Fix use of format cache - Make Boost.Locale compatible with more ICU versions (especially the tests)
- Fix RTTI definitions for some classes (visibility issues)
- Fix compatibility of the ICU backend with some libc++ versions
-
Fix return value of some operators to correctly return non-const
*this -
Fix int-overflow on negative roll of years in
date_time - Handle or suppress many warnings which makes the build log cleaner
- Add support for more Windows codepages
- Fix support for Windows codepages like ISO-2022-JP
-
Nowide:
- Fix build failure of tests on MSVC
-
Stacktrace:
- The library does not use COM initialization any more. Thanks to Alex Guteniev for the bug report, clarifications and PR PR#123!
-
The library now may use
BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILEmacro value while detecting the libbacktrace availability in b2, thanks to Ben Gemmill for the bug report #115. -
Added
BOOST_STACKTRACE_BACKTRACE_FORCE_STATICmacro to force a single backtrace_state static instance while using the libbacktrace. Thanks to the Rasmus Thomsen for the bug report #118! -
Avoid unresolved references when including only the
boost/stacktrace/stacktrace.hppheader. Thanks to the Long Deng for the bug report #116. -
Optimized stacktrace printing by not calling
strlenon Windows platforms. Thanks to Alex Guteniev for the bug report #122
-
PFR:
- Improved detection of aggregate initializables in C++14 mode, thanks to Denis Mikhailov for the PR PR#97.
- Suppress clang-tidy warnings, thanks to Alexander Malkov for the PRs PR#109, PR#104.
- Use fold expressions if they are supported by the compiler. Thanks to Jean-Michaël Celerier for the PR PR#96.
-
STLInterfaces:
-
Fix two ill-formed
iterator_interfaceoperators in pre-C++20 iterators with aconstvalue_type.
-
Fix two ill-formed
-
System:
-
The macro
BOOST_SYSTEM_DISABLE_THREADScan now be defined to disable the use of<mutex>(e.g. on single-threaded libstdc++). -
Added
value_type,error_type,in_place_value,in_place_errortoresult<>. -
Added
emplacetoresult<>.
-
The macro
-
Unordered:
- Major update.
-
Added fast containers
boost::unordered_flat_mapandboost::unordered_flat_setbased on open addressing. - Added CTAD deduction guides for all containers.
- Added missing constructors as specified in LWG issue 2713.
- Variant:
-
Variant2:
-
Added support for
boost::json::value_fromandboost::json::value_to.
-
Added support for
Compilers Tested
Boost's primary test compilers are:
-
Linux:
- Clang: 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: 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: 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
Marshall Clow and Glen Fernandes managed this release.