版本 1.84.0
版本 1.84.0
2023年12月13日 23:54 GMT
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_84_0.tar.bz2 | cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454 |
boost_1_84_0.tar.gz | a5800f405508f5df8114558ca9855d2640a2de8f0445f051fa1c7c3383045724 | |
windows | boost_1_84_0.7z | 81a4d10075731966477276c47324ecd9cac02da49899d36c48eba66e40014f25 |
boost_1_84_0.zip | cc77eb8ed25da4d596b25e77e4dbb6c5afaac9cddd00dc9ca947b6b268cc76a4 |
更新了默认目标 Windows 版本
Boost.WinAPI,一个被其他 Boost 库内部用于定义 Windows SDK 组件的库,已更新为默认情况下以 Windows 10 API 为目标(如果可能)。这意味着 Boost 库将默认以 Windows 10 为目标,并且可能无法在较旧的 Windows 版本上运行。这包括 Boost 分发的预构建二进制文件。
受影响的库包括
-
Boost.Atomic
-
Boost.Beast
-
Boost.Chrono
-
Boost.DateTime
-
Boost.DLL
-
Boost.Filesystem
-
Boost.Interprocess
-
Boost.Log
-
Boost.Pool
-
Boost.Process
-
Boost.System
-
Boost.Stacktrace
-
Boost.Thread
-
Boost.UUID
以及依赖于上述库的库。
用户可以通过在构建和使用 Boost 时定义 BOOST_USE_WINAPI_VERSION
或 _WIN32_WINNT
为所需的版本号来更改默认设置。例如,要构建以 Windows 7 为目标的 Boost,可以使用如下命令行
b2 variant=release define=BOOST_USE_WINAPI_VERSION=0x0601 stage
但是请注意,各个库可能对其支持的最低 Windows 版本有自己的要求。
Windows API 版本号列表可以在 此 页面上查看。
新库
更新的库
-
Asio:
-
更改为需要 C++11 作为最低语言标准。不再支持 C++03。
-
从
boost::asio::execution
命名空间中删除了已弃用的功能。 -
删除了已弃用的调用和分配钩子。
-
为通道添加了
try_send_via_dispatch
和try_send_n_via_dispatch
函数。 -
添加了 Asio 占位符和
std::bind
之间的兼容性。 -
改进了对具有多个完成签名的通道的 C++11 支持。
-
修复了通道异步操作和
any_completion_handler
之间的兼容性。 -
修复了
any_completion_handler
与使用BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
进行编译之间的兼容性。 -
为比较属于同一类别的混合执行器属性类型添加了缺少的相等运算符。
-
修复了当基于
spawn
的堆栈协程与具有以std::exception_ptr
开头的完成签名的异步操作一起使用时,会导致程序终止的问题。 -
修复了尝试访问默认构造的
any_completion_handler
对象的关联器时可能发生的崩溃。 -
修复了
ssl::stream<>
类的async_handshake
操作,使其可以使用默认完成令牌。 -
更新了所有示例以使用 C++11 作为最低语言标准。
-
-
Beast:
-
支持
immediate_executor
。 -
删除已弃用的分配和调用钩子。
-
完成 transfer_op 时使用显式类型 std::size_t。
-
将
BOOST_ASIO_INITFN_RESULT_TYPE
替换为BOOST_ASIO_INITFN_AUTO_RES
。 -
server-flex-awaitable
示例重置解析器。 -
修正了
websocket::stream::async_ping/pong
处理程序要求。 -
更新了
websocket::stream::async_write_some
的文档。
-
-
Chrono:
-
不再支持 C++03。
-
-
ContainerHash:
-
不再支持 C++03。
-
-
Conversion:
-
不再支持 C++03 PR#27。
-
-
Core:
-
boost::swap
实用程序函数已重命名为boost::core::invoke_swap
,以避免在参数不可交换时形成潜在的无限递归。新函数在boost/core/invoke_swap.hpp
中定义,并且在功能上等同于boost::swap
。旧的boost::swap
名称为了向后兼容性而保留,但已弃用,将在未来的版本中删除。其noexcept
规范已被删除,以避免由编译时递归引起的编译错误。可以定义BOOST_ALLOW_DEPRECATED_SYMBOLS
或BOOST_ALLOW_DEPRECATED
以在过渡期间抑制弃用警告。 (#148) -
头文件
boost/swap.hpp
、boost/utility/swap.hpp
和boost/core/swap.hpp
已弃用,将被删除。请切换到boost/core/invoke_swap.hpp
。可以定义BOOST_ALLOW_DEPRECATED_HEADERS
或BOOST_ALLOW_DEPRECATED
以抑制弃用警告。
-
-
CRC:
-
C++03 支持已弃用,将在 1.86 版本中删除。
-
-
Endian:
-
不再支持 C++03。
-
-
Filesystem:
-
正如在 Boost 1.82.0 中宣布的那样,不再支持 C++03。需要 C++11 或更高版本的编译器。
-
在 Windows 上,提高了日期和时间转换的鲁棒性,并增加了对 1970 年 1 月 1 日之前的日期的支持。 (#293)
-
删除了自 Boost.Filesystem 1.79.0 起已弃用的对 Windows CE 的支持。
-
删除了
boost/filesystem/string_file.hpp
头文件。该头文件自 Boost.Filesystem 1.79.0 起已弃用。 -
已弃用: 对 Windows 10 之前版本的 Windows 的支持已弃用,将在 Boost 1.87 中删除。
-
-
Heap:
-
C++03 支持已弃用,将在 1.86 版本中删除。新要求将是 C++14。
-
-
JSON:
-
实现直接解析到用户类型。
-
为 optionals 和 variants 添加转换类别。
-
放宽从迭代器对构造函数的迭代器要求。
-
修复读取超出输入缓冲区的问题。
-
修复 init list 构造函数的不一致选择。
-
-
LEAF:
-
类 result<T> 标记为 nodiscard。
-
添加成员 typedef result<T>::value_type。
-
verbose_diagnostic_info 将转换为字符串的操作延迟到达到错误处理范围为止。
-
改进了对嵌入式开发的支持。
-
改进了 Visual Studio 2015 兼容性(感谢 godmaycrying)。
-
次要错误修复和改进。
-
放弃了对 GCC 4.8 和 4.9 的支持。
-
-
LexicalCast:
-
不再支持 C++03 PR#62。
-
修复了 clang 的 -Wdeprecated-copy-with-dtor 警告。感谢 Romain Geissler 的 PR PR#59!
-
删除了对 Boost.Range 的依赖 PR#63。
-
-
Lockfree:
-
C++03 支持已弃用,将在 1.86 版本中删除。新要求将是 C++14。
-
-
Log:
-
不再支持 C++03。需要 C++11 或更高版本的编译器。
-
当使用对于使用 Boost.Regex v5 来说足够一致的 C++11 编译器构建时,Boost.Log 不再链接 Boost.Regex 预构建库,因为 Boost.Regex v5 是仅头文件的库。
-
对 Windows 10 之前版本的 Windows 的支持已弃用,将在 Boost 1.87 中删除。
-
-
Math:
-
改进 ccmath 错误检测。
-
删除对已弃用的 std::numeric_limits<>::has_denorm 的使用,请参阅 1028。
-
修正了非中心 t 分布中的非收敛错误,请参阅 1035。
-
调整 Bessel 函数近似值 [sub 1]F[sub 1] 以避免在负整数处取 tgamma,请参阅 1034。
-
避免 ibeta 中出现虚假的溢出和除以零,请参阅 1006。
-
提高了使用 Sterling 近似值 tgamma 时的精度,完成了在 1007 中开始的工作。
-
修复了大型初始猜测的 inverse_discrete_quantile,请参阅 1007。
-
改进了 Newton 求根,请参阅 1000。
-
修复了非零中心的 median_absolute_deviation,请参阅 997。
-
修复了 gcc-14 的 cstdfloat.hpp。
-
更新为适用于 <stdfloat> 中声明的新类型。
-
更改 hypergeometric_distribution 以使用 64 位而不是 32 位整数,以避免不必要的溢出和使用限制。
-
-
Multi-index Containers:
-
修复了旧编译器中没有 ADL 支持的序列化相关编译时错误(问题 #70)。
-
-
MySQL:
-
添加了
connection::reset_connection
和connection::async_reset_connection
。这些函数清理会话状态(包括预处理语句、变量、锁等),而无需关闭和重新打开连接。 -
添加了 MySQL 服务器 v8.1.0 中引入的错误代码。
-
为反序列化函数添加了模糊测试。
-
-
PFR:
-
重大新功能:字段名称反射。添加了新的
constexpr
boost::pfr::get_name<N, T>()
函数,该函数返回一个std::string_view
,其中包含聚合T
中索引N
处的字段名称。需要 C++20。如果该功能可用,则定义BOOST_PFR_CORE_NAME_ENABLED
为 1。非常感谢 Denis Mikhailov、Bela Schaum 和 X-Ryl669 的 PR PR#129 和实现思路。
-
-
Predef:
-
版本 1.15.0
-
添加了对 Microsoft STL 的检测(来自 Henrik Gaßmann)。
-
-
Random:
-
不再支持 C++03。
-
修复了使用 Boost.Multiprecision 的测试中的溢出
-
-
Ratio:
-
不再支持 C++03。
-
已删除对
BOOST_RATIO_EXTENSIONS
的支持。Ratio 现在根据标准<ratio>
头文件实现。
-
-
Stacktrace:
-
添加了缺少的 include。感谢 Francesco Ballarin 的 PR PR#143!
-
System:
-
添加了对
result<U&, E>
的支持。 -
为
result
添加了operator|
。 -
为
result
添加了operator&
。 -
为
result
添加了operator&=
。
-
-
Thread:
-
不再支持 C++03。
-
-
TypeIndex:
-
不再支持 C++03。
-
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((A)(B)(C)(D))
更改了语法为BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(A, B, C, D)
。 -
删除了 Boost.PP 依赖。
-
-
TypeOf:
-
不再支持 C++03。
-
-
Unordered:
-
重大更新。
-
添加了
boost::concurrent_flat_set
。 -
为并发容器添加了
[c]visit_while
操作,具有串行和并行变体。 -
添加了从
boost::concurrent_flat_(map|set)
到boost::unordered_flat_(map|set)
和反之亦然的高效移动构造。 -
为并发容器添加了批量访问,以提高查找性能。
-
添加了调试模式机制,用于检测用户代码非法重入并发容器。
-
为所有容器及其(非本地)迭代器类型添加了 Boost.Serialization 支持。
-
添加了对花式指针的支持,以用于开放寻址和并发容器。这使得可以使用 Boost.Interprocess 分配器在共享内存中构造容器等场景成为可能。
-
修复了封闭寻址容器的本地迭代器的成员指针运算符中的错误 (PR#221,感谢 GitHub 用户 vslashg 发现并修复了此问题)。
-
从该版本开始,
boost::unordered_[multi]set
和boost::unordered_[multi]map
仅适用于 C++11 及更高版本。
-
测试的编译器
Boost 的主要测试编译器是
-
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 管理了此版本。