Boost
发布
arrow_drop_down
上一版本 (1.84.0)
2023年12月6日
依赖项
此版本新增了 4 个依赖项 (分布在 2 个库中),移除了 61 个依赖项 (分布在 20 个库中)。
平台 文件 SHA256 哈希
Unix boost_1_84_0.tar.bz2 cc4b8....09454
boost_1_84_0.tar.gz a5800....45724
Windows boost_1_84_0.7z 81a4d....14f25
boost_1_84_0.zip cc77e....c76a4
Windows (二进制) boost_1_84_0-bin-msvc-all-32-64.7z 7d15a....7d1f9
boost_1_84_0-msvc-14.0-32.exe 3f643....4f5c4
boost_1_84_0-msvc-14.0-64.exe 90150....6b4db
boost_1_84_0-msvc-14.1-32.exe e4533....c11b6
boost_1_84_0-msvc-14.1-64.exe d4579....440bf
boost_1_84_0-msvc-14.2-32.exe 70ab3....ec9fd
boost_1_84_0-msvc-14.2-64.exe 0551c....0e32e
boost_1_84_0-msvc-14.3-32.exe 54039....ef554
boost_1_84_0-msvc-14.3-64.exe b1409....fa444

版本 1.84.0

2023年12月13日 23:54 GMT

文档

更新了默认目标 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 版本号列表可以在 页面上查看。

新库

  • Cobalt:
    • Klemens Morgenstern 提供的 C++20 协程的基本算法和类型。
  • Redis:
    • Marcelo Zimbres Silva 提供的基于 Boost.Asio 的异步客户端库。

更新的库

  • Any:
    • 不再支持 C++03 PR#26
    • 修复了引用文档生成。现在不会被 Boost.PFR 引用覆盖。感谢 Peter Dimov 进行调试。
  • Asio:
    • 将最低语言标准更改为要求 C++11。不再支持 C++03。
    • 移除了 boost::asio::execution 命名空间中已弃用的功能。
    • 移除了已弃用的调用和分配钩子。
    • 为通道添加了 try_send_via_dispatchtry_send_n_via_dispatch 函数。
    • 添加了 Asio 的占位符与 std::bind 之间的兼容性。
    • 改进了具有多个完成签名的通道的 C++11 支持。
    • 修复了通道异步操作与 any_completion_handler 之间的兼容性。
    • 修复了 any_completion_handler 与使用 BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT 进行编译之间的兼容性。
    • 添加了用于比较属于同一类别的混合执行器属性类型的缺失的相等运算符。
    • 修复了当与完成签名以 std::exception_ptr 开头的异步操作一起使用时,基于 spawn 的堆栈式协程会终止程序的错误。
    • 修复了在尝试访问默认构造的 any_completion_handler 对象关联项时可能发生的崩溃。
    • 修复了 ssl::stream<> 类的 async_handshake 操作,使其可以与默认的完成标记一起使用。
    • 更新了所有示例以使用 C++11 作为最低语言标准。
  • Atomic:
    • 不再支持 C++03,最低要求的语言版本是 C++11。
    • 增加了对 x87 扩展双精度(精度降低)的支持,该支持在 FreeBSD 和 OpenBSD 上使用。(#14
    • 对早于 Windows 10 的 Windows 版本的支持已弃用,并将在 Boost 1.87 中移除。
  • 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_SYMBOLSBOOST_ALLOW_DEPRECATED 来抑制弃用警告。(#148
    • 标头文件 boost/swap.hppboost/utility/swap.hppboost/core/swap.hpp 已弃用,将被移除。请切换到 boost/core/invoke_swap.hpp。可以定义 BOOST_ALLOW_DEPRECATED_HEADERSBOOST_ALLOW_DEPRECATED 来抑制弃用警告。
  • CRC:
    • C++03 支持已弃用,将在 1.86 版本中移除。
  • DLL:
    • 不再支持 C++03 PR#66
  • Endian:
    • 不再支持 C++03。
  • Filesystem:
    • 正如 Boost 1.82.0 中宣布的,不再支持 C++03。需要 C++11 或更高版本的编译器。
    • 修正了在某些接受 error_code& ec 参数的 directory_entry 观察者在成功返回时未清除错误代码的问题。(#291
    • 在 Windows 上,改进了日期和时间转换的健壮性,并增加了对 1970 年 1 月 1 日之前的日期的支持。(#293
    • 移除了自 Boost.Filesystem 1.79.0 起已弃用的对 Windows CE 的支持。
    • 移除了 boost/filesystem/string_file.hpp 头文件。该头文件自 Boost.Filesystem 1.79.0 起已弃用。
    • 已弃用: 对 Windows 10 以下版本的支持已弃用,并将在 Boost 1.87 中移除。
  • 几何:
    • 已解决的问题
      • #1138 修复了两个多边形的差集
      • #1183 修复了 union_ 不完整结果多边形的问题
      • #1184 修复了交集问题
      • #1186 修复了 union_ 内环分配不当的问题
      • 各种错误和警告修复
  • Heap:
    • C++03 支持已弃用,将在 1.86 版本中移除。新的要求将是 C++14。
  • JSON:
    • 实现直接解析到用户类型。
    • 为 optional 和 variant 添加了转换类别。
    • 放宽了来自迭代器对的构造函数的迭代器要求。
    • 修复了读取超出输入缓冲区的问题。
    • 修复了初始化列表构造函数选择不一致的问题。
  • LEAF:
    • 类 result<T> 被标记为 nodiscard。
    • 添加了成员类型 result<T>::value_type。
    • verbose_diagnostic_info 延迟到达到错误处理范围后才进行字符串转换。
    • 改进了对嵌入式开发的支持。
    • 改进了 Visual Studio 2015 的兼容性(感谢 godmaycrying)。
    • 小的 bug 修复和改进。
    • 放弃了对 GCC 4.8 和 4.9 的支持。
  • LexicalCast:
    • 不再支持 C++03 PR#62
    • 修复了 clang 的 -Wdeprecated-copy-with-dtor 警告。感谢 Romain Geissler 的 PR PR#59
    • 放弃了对 Boost.Range 的依赖 PR#63
  • Locale:
    • to_title 对于 WinAPI 后端返回未更改的字符串而不是空字符串。
    • 改进了对 char8_tstd::u8string 的支持。
    • 修复了使用负时间时的偏移一位错误 PR#198
    • 修复了格式字符串中花括号的转义处理 #194
    • 修复了一些构建错误和警告,尤其是在 MSVC 上,请参阅 #189
  • 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 中移除。
  • 数学:
    • 改进了 ccmath 错误检测。
    • 移除对已弃用的 std::numeric_limits<>::has_denorm 的使用,请参阅 1028
    • 修正了非中心 t 分布的非收敛 bug,请参阅 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 位整数,以避免不必要的溢出和使用限制。
  • 多索引容器:
    • 修复了旧编译器(无 ADL 支持)中与序列化相关的编译时 bug(问题 #70)。
  • Multiprecision:
    • 在测试中将 boost::array 更改为 std::array,修复了 567
    • 将 cpp_int::eval_convert_to 修正为 noexcept,修复了 553
    • 确保全局精度更改时,当前线程的精度也会随之更改。
    • 修复了 rational_adaptor 的构造 bug,修复了 540
  • MySQL:
    • 添加了 connection::reset_connectionconnection::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 MikhailovBela SchaumX-Ryl669 的 PR PR#129 以及实现思路。
    • 对于 C++17,for_each_field() 现在是 constexpr。非常感谢 Alexander Karatarakis 的 PR PR#134
  • Predef:
    • 版本 1.15.0
    • 添加了 Microsoft STL 的检测(来自 Henrik Gaßmann)。
  • Random:
    • 不再支持 C++03。
    • 修复了使用 Boost.Multiprecision 的测试中的溢出问题。
  • Ratio:
    • 不再支持 C++03。
    • 已移除对 BOOST_RATIO_EXTENSIONS 的支持。Ratio 现在基于标准 <ratio> 头文件实现。
  • Stacktrace:
  • 系统:
    • 添加了对 result<U&, E> 的支持。
    • result 添加了 operator|
    • result 添加了 operator&
    • result 添加了 operator&=
  • Test:
    • 不再支持 C++03。
    • 修复了 glibc 2.2 - 2.17 下 PRIxPTR 的使用 PR#392
    • 修复了 MSVC 警告 C5263:在临时对象上调用 'std::move' 会阻止副本省略 PR#390
  • 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::unordered_flat_(map|set)boost::concurrent_flat_(map|set) 之间高效的移动构造。
    • 为并发容器添加了批量访问,以提高查找性能。
    • 为检测从用户代码非法重入并发容器添加了调试模式机制。
    • 为所有容器及其(非本地)迭代器类型添加了 Boost.Serialization 支持。
    • 为开放寻址和并发容器添加了对 Fancy Pointer 的支持。这使得可以使用 Boost.Interprocess 分配器在共享内存中构造容器等场景。
    • 修复了开放寻址容器本地迭代器的指针成员运算符中的 bug(PR#221,此问题由 GitHub 用户 vslashg 发现并修复)。
    • 从本次发布开始,boost::unordered_[multi]setboost::unordered_[multi]map 仅支持 C++11 及以上版本。
  • variant:
    • 不再支持 C++03 PR#107
    • 放弃了 Boost.Move 和 Boost.Bind 依赖。
  • Wave:修复了 bug
    • #188:遇到 "#pragma\n" 时发生段错误

测试的编译器

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 管理了此次发布。

贡献者

Peter Dimov
Peter Dimov
贡献者
Andrey Semashev
Andrey Semashev
贡献者
Christian Mazakas
Christian Mazakas
贡献者
Joaquin M. López Muñoz
Joaquin M. López Muñoz
贡献者
Robert Ramey
Robert Ramey
贡献者
Alexander Grund
Alexander Grund
贡献者
Niall Douglas
Niall Douglas
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Denis Mikhailov
Denis Mikhailov
贡献者
John Maddock
John Maddock
贡献者
Matt Borland
Matt Borland
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Dmitry
Dmitry
贡献者
Klemens Morgenstern
Klemens Morgenstern
贡献者
Emil Dotchevski
Emil Dotchevski
贡献者
Jenkins nedprod CI
贡献者
Christopher Kormanyos
Christopher Kormanyos
贡献者
Mohammad Nejati
Mohammad Nejati
贡献者
spreadsort
spreadsort
贡献者
Oliver Kowalke
Oliver Kowalke
贡献者
Barend Gehrels
Barend Gehrels
贡献者
Vissarion Fisikopoulos
Vissarion Fisikopoulos
贡献者
Jeff Trull
Jeff Trull
贡献者
Ryan
Ryan
贡献者
Alain Miniussi
Alain Miniussi
贡献者
Joachim Faulhaber
Joachim Faulhaber
贡献者
Joel de Guzman
Joel de Guzman
贡献者
Rene Rivera
Rene Rivera
贡献者
Romain Geissler
Romain Geissler
贡献者
sdarwin
sdarwin
贡献者
Samuel Debione
Samuel Debione
贡献者
Ed Catmur
Ed Catmur
贡献者
Louis Dionne
Louis Dionne
贡献者
Yuriy Chernyshov
Yuriy Chernyshov
贡献者
Francisco Tapia
Francisco Tapia
贡献者
Daniel Richard G
Daniel Richard G
贡献者
Nigel Stewart
Nigel Stewart
贡献者
Anarthal (Rubén Pérez)
Anarthal (Rubén Pérez)
贡献者
jofaber
jofaber
贡献者
Edward Diener
Edward Diener
贡献者
Tinko Bartels
Tinko Bartels
贡献者
Andrzej Krzemieński
Andrzej Krzemieński
贡献者
Frank Mori Hess
Frank Mori Hess
贡献者
A.Abelha
贡献者
Dmitry Arkhipov
Dmitry Arkhipov
贡献者
Jean-Noël Grad
Jean-Noël Grad
贡献者
Ivan A. Melnikov
Ivan A. Melnikov
贡献者
fanquake
fanquake
贡献者
Alan de Freitas
Alan de Freitas
贡献者
Nikita Kniazev
Nikita Kniazev
贡献者
godmaycrying
godmaycrying
贡献者
Jimmy Lu
Jimmy Lu
贡献者
Marshall Clow
Marshall Clow
贡献者
SilverPlate3
SilverPlate3
贡献者
Henrik Gaßmann
Henrik Gaßmann
贡献者
Christophe Henry
Christophe Henry
贡献者
Vassil Vassilev
Vassil Vassilev
贡献者
Rose
Rose
贡献者
Bruno Martinez
Bruno Martinez
贡献者
Dimitri John Ledkov
Dimitri John Ledkov
贡献者
Sergey Fedorov
Sergey Fedorov
贡献者
Alexander Karatarakis
Alexander Karatarakis
贡献者
Zoltan DeWitt
Zoltan DeWitt
贡献者
olologin
olologin
贡献者
Francesco Ballarin
Francesco Ballarin
贡献者
Ed Tanous
Ed Tanous
贡献者
Karsten Ahnert
Karsten Ahnert
贡献者
Edward Nolan
Edward Nolan
贡献者
Yang Lin
Yang Lin
贡献者
snpefk
snpefk
贡献者
Samuel Venable
Samuel Venable
贡献者
Jonathan Wakely
Jonathan Wakely
贡献者
Johannes Schauer Marin Rodrigues
Johannes Schauer Marin Rodrigues
贡献者
Alexander Morozov
贡献者
Mohammad Bahoosh
Mohammad Bahoosh
贡献者
wevsty
wevsty
贡献者
Jonathan Stein
Jonathan Stein
贡献者
swatanabe
swatanabe
贡献者
nevilad
nevilad
贡献者
Mark Melton
Mark Melton
贡献者
ja2142
ja2142
贡献者
tohru
贡献者
Ilia K
Ilia K
贡献者
Rahul Rameshbabu
Rahul Rameshbabu
贡献者
Ruslan Balagansky
Ruslan Balagansky
贡献者
zhixingchen
zhixingchen
贡献者
yhsb2k
贡献者
Felix L
Felix L
贡献者
Alexandre Hamez
Alexandre Hamez
贡献者
AJIOB
AJIOB
贡献者
Giovanni Mascellani
Giovanni Mascellani
贡献者
Roberto Rodriguez
Roberto Rodriguez
贡献者
Hans Dembinski
Hans Dembinski
贡献者
Fernando Pelliccioni
Fernando Pelliccioni
贡献者
Paul Harris
Paul Harris
贡献者
Alexander Babayants
Alexander Babayants
贡献者
Anis Ladram
Anis Ladram
贡献者
Shukant Pal
Shukant Pal
贡献者
Michiel De Witte
Michiel De Witte
贡献者
Aurelien Chartier
Aurelien Chartier
贡献者
Tobias Lange
Tobias Lange
贡献者
Shauren
Shauren
贡献者
Alexander Malkov
Alexander Malkov
贡献者
mpsuzuki
mpsuzuki
贡献者
Jörg Czeranski
Jörg Czeranski
贡献者
David Eritsyan
David Eritsyan
贡献者
slowriot
slowriot
贡献者
Adam Wulkiewicz
Adam Wulkiewicz
贡献者
Владислав Щапов
Владислав Щапов
贡献者
Tosiekdev
Tosiekdev
贡献者
Wei Hu
Wei Hu
贡献者
NamaNamazu
NamaNamazu
贡献者
leha-bot
leha-bot
贡献者
Rosgard
Rosgard
贡献者
Marcel Raad
Marcel Raad
贡献者
Marian Klymov
Marian Klymov
贡献者
tnagler
贡献者
jeffworl
贡献者
BrianWeed
BrianWeed
贡献者