Version 1.83.0
Version 1.83.0
August 11th, 2023 16:23 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_83_0.tar.bz2 | 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e |
boost_1_83_0.tar.gz | c0685b68dd44cc46574cce86c4e17c0f611b15e195be9848dfd0769a0a207628 | |
windows | boost_1_83_0.7z | 22ee9dcf3f1fb58f585772f70c69113a4077b92adeac58b643b3543b78633a16 |
boost_1_83_0.zip | c86bd9d9eef795b4b0d3802279419fde5221922805b073b9bd822edecb1ca28e |
Known Issues
These are patches from library authors which were found too late to be fixed in the release.
New Libraries
-
Compat: A repository of C++11 implementations of standard components added in later C++ standards, from Peter Dimov and contributors.
Updated Libraries
-
Any:
-
New
boost::anys::unique_any
C++11 class - an alternative toboost::any
(or tostd::any
) that does not require copy or move construction from the held type. -
Ported documentation to Quickbook, Doxygen comments now used in code.
-
-
Chrono:
-
Remove use of deprecated Boost.Ratio features.
-
-
Compat:
-
Added
latch.hpp
, an implementation ofstd::latch
(contributed by Christian Mazakas.) -
Added
shared_lock.hpp
, a (partial) implementation ofstd::shared_lock
(contributed by Christian Mazakas.)
-
-
Core:
-
Added support for incomplete types to
boost::core::type_name
. -
Bit manipulation functions in
boost/core/bit.hpp
are nowconstexpr
on recent MSVC versions (VS2019 update 5 and later.) -
Added
boost::core::byteswap
(an implementation ofstd::byteswap
from C++23) toboost/core/bit.hpp
. -
Moved the yield primitives
sp_thread_pause
,sp_thread_yield
,sp_thread_sleep
from SmartPtr implementation details toboost/core/yield_primitives.hpp
.
-
-
DLL:
-
Fixed tests failures on glibc 2.36+, thanks to Đoàn Trần Công Danh for the bugreport #58.
-
-
Filesystem:
-
Added
directory_entry::refresh
method that updates internal cached file statuses for the directory entry identified by path. -
v4:
directory_entry
constructors and modifiers that initialize or modify the path now automatically callrefresh
. This may result in errors that were not indicated before and in v3, if querying the filesystem for file statuses fails (e.g. if the file does not exist). This new behavior is similar to std::filesystem. -
v4:
directory_entry
constructors and methods takingfile_status
parameters are removed. Users are recommended to remove these arguments and rely ondirectory_entry
callingrefresh
internally. -
Added
directory_entry
member methods for checking the file type of the file, similar to std::filesystem. -
Added more methods for testing file status:
is_block_file
,is_character_file
,is_fifo
,is_socket
andis_reparse_file
. -
recursive_directory_iterator
is now more likely to reuse information about the file type that is obtained during filesystem iteration. This may improve performance. (#288) -
File streams defined in
boost/filesystem/fstream.hpp
are now movable, if the standard library file streams are. (#280) -
Added a new header
boost/filesystem/cstdio.hpp
with a portablefopen
overload that takespath
as the first argument. This function is equivalent tostd::fopen
, except that on Windows it uses the native wide character encoding for paths. -
Generic
path
comparison operators are now more restricted to avoid potential ambiguities when user's code contains ausing namespace boost::filesystem;
directive. (#285) -
Fixed potential overload resolution ambiguity in users' code, where
path
constructors from iterators could interfere with function overloads taking astd::initializer_list
argument. (#287) -
On Windows, relaxed access rights needed for querying file times. (#290)
-
-
Flyweight:
-
Added smart-pointer syntax to
boost::flyweight
(operator*
andoperator->
dereferencing to the underlying value). -
Fixed a situation where the mutex used by
simple_locking
was not recursive (issue #12).
-
-
JSON:
-
The library now only throws
system_error
, except for when allocation failed, in which casestd::bad_alloc
is thrown. -
Serialization behavior can now be changed by
serialize_options
. -
Contextual conversions.
-
Parser option for more precise number parsing.
-
Support
parse_options
in streamoperator<<
. -
Parser option to allow
Infinity
andNaN
JSON literals. -
Parser mode that only validates numbers rather than parsing them.
-
Numbers with exponent larger than
INT_MAX
are accepted by the parser and treated as infinity. -
Fix
object
member functions that should provide strong guarantee. -
Fix ambiguity of
end
call whenboost/range.hpp
is included. -
Fix ASan failures.
-
Fix error message for
error::size_mismatch
. -
Fix conversion into tuple with const elements.
-
-
Locale:
-
Bitwise/binary operators (left/right shift, binary and/or/xor/not) are no longer supported in message catalog files matching GNU gettext behavior
-
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)
-
localization_backend_manager::get
is deprecated, use the generator instead -
New converter classes as alternative to
to_utf
/from_utf
/between
-
Fix UB on invalid index in format strings
-
Fix conversion of UTF to e.g. iso-2022-jp on Windows without ICU
-
Use
long long
as the count parameter for pluralized translations -
Fix movability and exception specification for some classes
-
-
Math:
-
Added Numerical evaluation of Fourier transform of Daubechies scaling functions 921.
-
Added logcdf function to statistical distributions 946.
-
Added support for C++23's
<stdfloat>
types 978. -
Fixed various
-Wmaybe-uninitialized
warnings -
Fixed calculation of mode for F-distribution 976.
-
Fixed overflow in beta distribution 977.
-
Fixed overflow in hypergeometric distribution 987.
-
Fixed calculation of median absolute deviation with non-zero center 997.
-
-
Mp11:
-
Added an offset/from parameter to
mp_from_sequence
,mp_iota
,mp_iota_c
. -
Added
mp_value
,mp_list_v
,mp_rename_v
,mp_is_value_list
. -
Added value list support to the primitives in
<boost/mp11/list.hpp>
. -
Added value list support to
mp_repeat
,mp_fill
,mp_at
,mp_back
,mp_take
,mp_pop_back
,mp_drop
,mp_insert
,mp_erase
.
-
-
Multi-index Containers:
-
Updated range
insert
in non-unique ordered indices to preserve insertion order of equivalent elements (issue #68). -
Serialization now uses
std::size_t
instead ofunsigned long
to save and load the size of amulti_index_container
(unsigned long
is smaller thanstd::size_t
in LLP64 data models).multi_index_container
serialization class version has been bumped from 3 to 4 to reflect this change.
-
-
MySQL:
-
Major update.
-
Stored procedures are now fully supported, including
SELECT
statements producing data and procedures withOUT
parameters. -
Added support for multi-queries, which allows running multiple semicolon-separated statements with a single call.
-
A statically-typed interface has been added, which allows parsing query results into user-provided types, using Boost.Describe structs and tuples.
-
Text queries and prepared statements can now be executed using the new
connection::execute
andconnection::start_execution
functions (and their async counterparts). These superseedconnection::query
,connection::execute_statement
,connection::start_query
andconnection::start_statement_execution
. The new functions allow access to new features, like the static interface. -
A separate compilation mode has been added to help reduce build times. Sources are included in
boost/mysql/src.hpp
, which must be included in exactly one translation unit. -
Prepared statements can now be executed using an iterator pair to specify parameters, using
statement::bind
andconnection::execute
. This enables use cases where the number and type of parameters is not known at compile-time. -
Prepared statement execution now accepts parameters of type
bool
,std::optional
andboost::optional
. -
Added error codes and verified compatibility with MySQL v8.0.33 and MariaDB v11.0.
-
Fixed potential problems with Windows'
min()
andmax()
macros. -
All assertions now use Boost.Assert.
-
All exceptions are now thrown via Boost.ThrowException.
-
Immediate completions are now correctly dispatched through the I/O object executor.
-
-
Ratio:
-
Change default
BOOST_RATIO_VERSION
to 2. -
Support for
BOOST_RATIO_EXTENSIONS
is now deprecated and will eventually be removed when Boost.Ratio is implemented in terms of the standard<ratio>
header.
-
-
Timer:
-
Remove dependency on Boost.Chrono, Boost.System, and others.
-
Disable deprecated headers unless
BOOST_TIMER_ENABLE_DEPRECATED
is defined.
-
-
Unordered:
-
Major update.
-
Added
boost::concurrent_flat_map
, a fast, thread-safe hashmap based on open addressing. -
Sped up iteration of open-addressing containers.
-
In open-addressing containers,
erase(iterator)
, which previously returned nothing, now returns a proxy object convertible to an iterator to the next element. This enables the typicalit = c.erase(it)
idiom without incurring any performance penalty when the returned proxy is not used.
-
-
Variant2:
-
Added
uses_double_storage()
.
-
Updated Tools
-
Build:
-
Includes release of B2 version 4.10.1.
-
Compilers Tested
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
Marshall Clow and Glen Fernandes managed this release.