The summary is being generated, please check back later.
| Platform | File | SHA256 Hash |
|---|---|---|
|
Unix
|
boost_1_93_0_b1.tar.bz2 |
|
| boost_1_93_0_b1.tar.gz |
|
|
|
Windows
|
boost_1_93_0_b1.7z |
|
| boost_1_93_0_b1.zip |
|
|
|
Windows (Binary)
|
boost_1_93_0_b1-bin-msvc-all.7z |
|
Added extract( pos, len ), which returns the bits in a range as a new bitset, as
std::basic_string::substr() does for strings.
Made the constructor from a size and a value take the value as an unsigned long long, as
std::bitset does (where unsigned long has 32 bits, the result changes for wider values),
and made it non-explicit, adding an explicit constructor from a size alone.
Added the allocator-extended copy and move constructors, and a constructor from a size and an
allocator, to support uses-allocator construction (e.g. in std::pmr containers).
Made the string constructors and to_string() independent of the global locale, which fixes
them for char8_t, char16_t and char32_t, and made the constructor from a const CharT *
accept only character types and read at most n characters.
Made the constructor from a range of blocks take two unscoped enumerators as a size and a
value, and the functions which take a range of blocks accept a value_type which converts
implicitly to Block, other than bool and the floating-point types.
Improved the iterators: they are default-constructible, iterator converts to
const_iterator, their difference type is std::intmax_t, and the std::ranges algorithms,
std::sort() and std::reverse() work on a dynamic_bitset. Also added the member types
value_type and difference_type.
Declared noexcept the functions which have no precondition and can’t throw, and the move
operations when those of the underlying container are (#85).
In C++20, made to_string(), the string constructors and the find_*() functions usable in
constant expressions, and documented the constexpr support.
Fixed several issues with user-supplied containers and allocators (e.g. std::deque and
std::pmr::polymorphic_allocator), and documented the requirements on a container.
Made append() of a range of blocks give the strong exception guarantee, and made a
moved-from bitset, and one whose copy or move assignment throws, always empty.
Made loading from a Boost.Serialization archive check the data, and throw
std::invalid_argument if it is invalid.
Fixed link errors with npos and bits_per_block in C++11 and C++14, a regression of
Boost 1.90.
Made faster the bitwise and shift operators, set(), reset() and flip() of a range, the
find_*() functions and to_string().
Moved undocumented implementation details, such as bit_iterator, out of namespace boost.
MSM:
The backmp11 back-end is no longer experimental. Its API is considered stable from this release on, after the cleanup listed below.
Breaking changes (backmp11):
The active state switch policy can no longer be configured; the active state is now always set after source exit, in compliance with the UML specification (#222).
The deprecated HANDLED_-prefixed values are removed from the process_result enum, use discarded, consumed, rejected and deferred instead (#242).
Fixed a bug in the back11 back-end where a matching transition could be ignored depending on the order of rows in the transition table (#252)
Added unordered, stable collections boost::base_unordered_collection,
boost::function_unordered_collection, boost::any_unordered_collection and
boost::variant_unordered_collection, internally based on
boost::container::hub.
Fixed CVE-2023-34399: a pointer loaded with a negative class id other than -1 read the class table out of bounds. Every negative id now loads as a null pointer (PR#332).
Raised the archive library version to 21, so earlier versions of the library reject text and
binary archives written by this one; archives written by earlier versions still load. The
change stores at full width the enumerations whose underlying type is wider than int, which
used to be truncated (#353).
Fixed the termination of the program when an XML input archive is destroyed at the end of its input, e.g. after a failed read, a regression of Boost 1.66 (#82, #99, #109).
Deprecated <boost/serialization/std_variant.hpp>, as <boost/serialization/variant.hpp>
handles std::variant too, and removed <boost/serialization/variant2.hpp>, which was
ill-formed and so could not be used (PR#379).
Added support for std::filesystem::path, except with GCC before 9, whose <filesystem> is
unreliable (#337).
Added BOOST_CLASS_TEMPLATE_VERSION, which sets the version of a class template, as
BOOST_CLASS_VERSION does for a class (#179).
Made optional<T> serializable when T has no default constructor, or only a private one, by
loading its value as a container element is loaded; archives of other optional types are
unchanged (#121, #165).
Made optional<T> serializable when T is move-only (PR#330).
Made the alternatives of a variant load as container elements do, so that they no longer
need a public default constructor (#338).
Made a std::basic_string with an allocator of its own, such as std::pmr::string,
serializable with no declaration, in the same form as std::string
(#267).
Added move operations to the types defined by BOOST_STRONG_TYPEDEF
(#341).
Made public the base_type typedef of version_type, class_id_type, object_id_type,
collection_size_type, item_version_type, library_version_type and tracking_type,
naming the type each of them wraps (#326).
Added constructors which take the end of the input to transform_width and
remove_whitespace. With them, a base64 decoder no longer reads past the end of an input whose
length leaves a remainder of one when divided by four, nor remove_whitespace past one which
ends in whitespace (#324, #254).
Made archive_exception give the offset at which an input stream error occurred
(PR#380).
Made infinities and NaNs written to text and XML archives read back. They are now written as
inf, -inf and nan with any standard library, and the forms earlier versions wrote load
too (#386).
Fixed an object saved through a pointer to its base class, across shared libraries, loading with its base part empty, a regression of Boost 1.85 (#329).
Fixed silent data loss when the same variant is serialized by value more than once
(#203).
Made the XML output archive write the closing tag of a complete document even when it is destroyed during stack unwinding (#188).
Fixed the loading from XML archives of a std::wstring with characters outside ASCII, which
was decoded according to the locale rather than as UTF-8 (#298).
Fixed malformed escapes in wide XML archives, and the archive iterators xml_escape,
xml_unescape, transform_width and remove_whitespace losing their state when copied
(#229).
Fixed a leak and double frees in the cleanup after an exception interrupts a load: the object being loaded leaked, and objects an owning smart pointer had taken over were freed again. Note that objects which used to leak are now freed, so a handler which deleted them must stop doing so (#260).
Fixed undefined references from a version trait written by hand whose value has no
out-of-class definition (#311).
Fixed BOOST_SERIALIZATION_FACTORY_1 to BOOST_SERIALIZATION_FACTORY_4, which didn’t compile
(#215).
Fixed a GCC error when serializing a std::optional with
<boost/serialization/shared_ptr.hpp> included (#319).
Fixed a link error when a program built with clang-cl uses the library built with MSVC, by no longer deriving the archive exceptions virtually (#321).
Fixed a multiply defined symbol error from MSVC when both a DLL and an executable use a wide archive with static linking (#232).
Fixed the loss of a type’s registration in every shared library when one of the libraries registering it is unloaded (#325).
Silenced a GCC -Wuninitialized warning (#333).
Declared C++11 as the minimum standard, which the library had in fact required for some time (PR#367).
Replaced the frames of the documentation with ordinary pages (#300).
Documented that a derived archive must call init() itself (#182),
that the file using BOOST_CLASS_EXPORT_IMPLEMENT must include the archive headers
(#327), and that a value written through a polymorphic archive
needs a name (#189).
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
Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release.
Boost is publicly released three times a year in April, August, and December. Each release has updates to existing libraries, and any new libraries that have passed the rigorous acceptance process.
Achievements capture your contributions to Boost — automatically tracked where possible, manually verified for high-value activities.
Badges recognize your journey on Boost — from the contributions you make to the time you've invested and the milestones you've reached along the way.