Boost
发布
arrow_drop_down
最新发布 (1.89.0)
2025年8月6日
依赖项
本次发布增加了 5 个依赖项 (在 4 个库中),并移除了 5 个依赖项 (在 2 个库中)。
平台 文件 SHA256 哈希
Unix boost_1_89_0.tar.bz2 85a33....a0c7a
boost_1_89_0.tar.gz 9de75....13c93
Windows boost_1_89_0.7z d8b0c....1d49d
boost_1_89_0.zip 77bee....4ccde
Windows (二进制) boost_1_89_0-bin-msvc-all-32-64.7z 3af5e....943c7
boost_1_89_0-msvc-14.1-32.exe c56f0....6c6d7
boost_1_89_0-msvc-14.1-64.exe a15a6....fbe4e
boost_1_89_0-msvc-14.2-32.exe f4fb1....29156
boost_1_89_0-msvc-14.2-64.exe 1c6bb....26a42
boost_1_89_0-msvc-14.3-32.exe e5a3d....dc264
boost_1_89_0-msvc-14.3-64.exe 36dd9....a72a8

版本 1.89.0

2025年8月14日 02:16 GMT

文档

新库

  • Bloom:
    • 过滤器,来自 Joaquín M López Muñoz。

更新的库

  • Any:
    • 为 C++20 模块提供初始支持。更多信息请参见文档。
  • Asio:
    • execution_contextio_contextthread_pool 添加了分配器构造函数,提供的分配器用于分配与执行上下文相关的对象。
    • 添加了一个新的配置参数“timer”/“heap_reserve”,可用于为计时器队列的堆使用的向量预留空间。
    • 添加了一个新的配置参数“resolver”/“threads”,用于指定 async_resolve 用于模拟异步地址解析的内部线程数。
    • 从便捷头文件中移除了 deadline_timerbasic_deadline_timertime_traitsboost/asio.hpp.
    • 确保 connect_pipe 创建的 Windows 命名管道使用唯一的名称,以免在 Boost.Asio 用于多个独立插件 DLL 时发生冲突。
    • BOOST_ASIO_CONCURRENCY_HINT_SAFE 更改为与 io_context 默认构造函数保持一致。
    • 修复了 BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO 的文档,以反映注册锁定仍处于启用状态。
    • 为可选依赖项添加了单独的b2andcmake构建目标。
    • boost::asio::detail::throw_exception 添加了 [[noreturn]] 属性。
    • 修复了 co_spawn 以遵守非重入调用完成处理程序的异步操作要求。
    • basic_signal_set 添加了异步信号安全性的文档说明。
    • 修复了不同平台上各种小的编译错误。
    • 有关更多详细信息,请参阅 修订历史记录
  • Atomic:
    • 在基于汇编的 x86、AArch32、AArch64 和 PPC 后端中添加了 TSAN 插装。这可以消除使用 Boost.Atomic 进行线程同步的代码中 TSAN 的误报。
    • 遵循 Boost 1.84 中的公告,移除了对 Windows 10 以下版本的支持。
      • 给 MinGW-w64 用户的一点说明。由于 MinGW-w64 上的 Windows SDK 头文件默认将 _WIN32_WINNT 定义为较旧的 Windows 版本,因此在编译 Boost.Atomic 和使用 Boost.Atomic 的代码时,您可能需要定义 _WIN32_WINNT=0x0A00BOOST_USE_WINAPI_VERSION=0x0A00
    • 对 Windows CE 的支持已被弃用,将在未来的版本中移除。
    • 添加了对定时等待操作的支持。
    • 公开了 thread_pause 操作,可用于自旋循环中的回退措施。在 thread_pause 中增加了对 PowerPC 的支持,并改进了对 AArch64 的支持。
    • 移除了 BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT 宏定义。由于该库现在需要 C++11,因此 BOOST_ATOMIC_FLAG_INIT 始终受支持。
    • 为原子枚举启用了按位操作。当枚举用于实现位掩码时,这可能很有用。
  • Beast:
    • 修复
      • async_base 中有条件地定义了 immediate_executor_type
      • detail/cpu_info.hpp 添加了缺失的 cstdint 头文件。
      • 修复了 std::is_trivial 弃用警告。
      • handshake_timeout 现在适用于读取期间的关闭握手。
    • 改进
      • net::executor_work_guard 替换了 detail/work_guard.hpp
      • 修复了 MinGW 中构建测试的可移植性问题。
    • 文档
      • 移除了文档中已移动的部分。
      • 移除了测试中多余的日志消息。
    • 致谢
      • yliu1021
  • Charconv:
    • 修复了 from_chars 对整数类型的性能下降问题。
    • 修复了 to_chars 对指定精度浮点类型的舍入和尾随小数点错误。
  • Cobalt:
    • 修复了 generator & promise 的 move assign。
    • 修复了内部异常。
    • 添加了 IO 库。Cobalt.io 提供了一个大型的 asio 子集作为编译后的库。
  • Compat:
    • 添加了 move_only_function.hpp
  • ContainerHash:
    • 添加了 hash_is_avalanching 特性类。
  • Conversion:
    • 增加了在 constexpr 中使用 polymorphic_downcastpolymorphic_cast 的能力(需要 C++20)。
  • Core:
    • 修复了 bit_ceil 根据规范返回 1(对于输入 0)。(PR#199
    • boost::core::string_view 添加了对 std::format 的支持。(#190
  • Detail:
    • BOOST_BITMASK 生成的运算符现在使用枚举的底层类型来实现位运算符。如果可能,这些运算符被标记为 noexceptconstexpr
    • BOOST_BITMASK 生成的 bitmask_set 函数被标记为已弃用。在未来的版本中,BOOST_BITMASK 将不再生成此函数。建议用户使用双重否定(!!mask)来测试值是否为零。这会影响例如 Boost.Filesystem 中定义的枚举。
  • DLL:
    • 修复了 Cygwin 上的编译和导出问题。非常感谢 Luohao Wang 的 PR!
    • 修复了 FreeBSD 上的构建问题。感谢 ash 的 bug 报告!
    • 添加了 BOOST_DLL_USE_STD_FS CMake 选项以匹配预处理器选项。感谢 Yury Bura 的 PR!
  • Filesystem:
    • 纠正了 path::append 中关于比较指向可能无关对象的指针的 ASAN 警告。(#335
  • 几何:
    • 主要改进
      • PR#1369 重写了遍历
      • PR#1402 添加了 geometry polyhedral surface
    • 改进
      • PR#1404 改进了 buffer 的性能
      • PR#1405 避免在头文件中使用静态变量和函数
    • 破坏性更改
      • PR#1401 移除了已弃用的头文件
    • 已解决的问题
      • #1221 带有整数坐标的直角多边形之间的差异会产生无效的多边形,其内部不连通。
      • #1295 交集结果错误(结果多边形等于输入多边形中较大的一个)
      • #1349 多边形之间的差异产生错误结果
      • #1382 Buffer 操作创建了自交
      • 各种错误和警告修复
  • Hash2:
    • 添加了 Blake2 算法(`blake2s_256`,`blake2b_512`)。
    • 添加了 XXH3 算法(`xxh3_128`)。
  • Iterator:
    • 修复了 filter_iterator 的复制/转换构造函数,该函数以前可能产生无效的迭代器。(#92
    • 由于 C++26 中 is_trivial 已弃用,因此在 iterator_facade 中移除了 is_trivial 的使用。(#93
    • iterator_facade::operator[] 现在始终返回一个代理,而不是有条件地返回一个值或代理。这使得用户可以绑定到该运算符结果的引用,而不管值类型是否可平凡复制。(#61
    • iterator_facade::operator[] 返回的代理现在支持将解引用运算符转发给被引用值。这使得 it[n]->foo()(*it[n]).foo() 表达式能够编译。
    • iterator_facade::operator[] 返回的代理现在在其赋值运算符中实现了完美转发。
  • JSON:
    • 重新设计了文档。
    • 被分类为可选类型的范围被归类为可选类型。
    • 类支持描述已启用,支持带基类的类型。
  • Log:
    • 添加了对 BOOST_LOG_WITHOUT_ASIO 配置宏的支持,该宏可用于移除对 Boost.Asio 的依赖并禁用相关功能。
    • text_file_backend 中使用与区域设置无关的格式化文件计数器来组成日志文件名。这修复了 file_collector::scan_for_files 中后续文件名解析的失败。(PR#246
    • 添加了一个新的 wrap_filter 工具,用于简化在过滤表达式中注入用户定义的函数对象。(#195
  • 数学:
    • 收集了 C++14 <type_traits>constexpr 的构建需求。
    • 收集了在各种平台上支持 GPU 的修复。
    • 修复了 x = 0 时的下不完全 gamma 函数。
    • 修复了 jSO 算法中的外部存档错误。
    • 修复了 ibeta 中的数值下溢。
    • 修复了 ibeta 的逆函数对 a 和 b 的大值。
    • 修复了变长函数,使其在 C++26 中安全。
  • MQTT5:
    • 修复了代理列表中 URI 路径的错误解析(#31)。
    • CONNECT 数据包中明确设置了默认的最大数据包大小。(#33)。
    • 修复了当最大数据包值很大时的高 CPU 使用率问题(#33)。
  • Multiprecision:
    • 重大更新。
    • 添加了一种新的后端类型:cpp_double_fp_backend
    • 修复了与 Boost.Serialization 的命名空间冲突。
  • MySQL:
    • caching_sha2_password 认证插件现在可以在没有 TLS 的情况下使用。这是 MySQL 8 及以上版本的默认设置。尝试使用此插件的明文连接不再因 client_errc::auth_plugin_requires_ssl 而失败(#313)。
    • 修复了一个问题,该问题导致在目标数据库不存在且使用 caching_sha2_password 时,在连接建立期间返回 client_errc::incomplete_message。现在会返回相应的服务器生成的诊断信息。请参见问题 #468#488
    • 握手算法现在对协议违规更加健壮(#469)。
    • 修复了由于缺少包含文件而导致的 gcc-15 的构建失败(PR#475)。感谢 hhoffstaette 的 PR。
    • 添加了与官方驱动程序的基准测试
    • 优化了 metadata 的表示,使其构建更快、占用内存更少(#461)。
  • PFR:
    • 根据新的推荐 Boost 实践重写了 C++20 模块。更多信息请参见文档。
    • 修复了在现代 clang 编译器上的 C++26 编译问题。感谢 Valery Mironov 的报告!
    • 支持使用“零长度数组”编译器扩展的类型。
    • 修复了拼写错误。感谢 Egor 指出这些问题!
    • boost::pfr::names_as_array(empty_struct{}) 返回 std::array<std::string_view, 0> 类型,以允许 for (std::string_view name : boost::pfr::names_as_array(empty_struct{})) 编译。非常感谢 sabudilovskiy 的 bug 报告!
  • process:
    • 添加了 v1.hpp 以模拟 v1 process.hpp 的包含。
    • 修复了 Windows 路径转义问题。
    • 修复了退出代码问题,其中 terminate & async_wait 导致退出代码值丢失。
  • Random:
    • 修复了 beta_distribution 生成 NAN 的问题。
    • 改进了 beta_distribution::operator() 的性能。
  • TypeIndex:
    • 为 C++20 模块提供初始支持。更多信息请参见文档。
  • Unordered:
    • 已弃用的 boost::unordered::hash_is_avalanching 现在是 boost::hash_is_avalanching<boost/container_hash/hash_is_avalanching.hpp> 中的 using 声明。请直接使用该头文件。<boost/unordered/hash_traits.hpp> 将在未来移除。
    • 向开放寻址容器添加了 pull(const_iterator)。此操作允许通过移动构造高效地移除和检索元素。
  • 直方图:
    • 更新 CMake 最低版本和 CMake 中的 Python 检测
    • 改进文档
      • 添加一个示例,说明如何创建一个接受多种非隐式可转换值类型的轴
      • 展示了如何高效地将 histogram::fill 与多维直方图一起使用,当每个维度的可用数据已经是连续数据时。
    • 不要使用已弃用的用户定义字面量运算符形式
    • 通过 b2 添加对模块化构建结构的支持
    • 修复 MSVC 中关于截断类型的警告
    • 添加了收集器累加器,用于存储存储桶中的所有值
    • 在 detail 命名空间内的测试和类中进行内部更改

更新了工具

测试的编译器

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 和 Ion Gaztañaga 负责本次发布。

贡献者

Christopher Kormanyos
Christopher Kormanyos
贡献者
Rene Rivera
Rene Rivera
贡献者
Andrey Semashev
Andrey Semashev
贡献者
John Maddock
John Maddock
贡献者
Peter Dimov
Peter Dimov
贡献者
Matt Borland
Matt Borland
贡献者
Syed Fahad
贡献者
Klemens Morgenstern
Klemens Morgenstern
贡献者
Janek Kozicki
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Christian Mazakas
Christian Mazakas
贡献者
Alexander Grund
Alexander Grund
贡献者
Anarthal (Rubén Pérez)
Anarthal (Rubén Pérez)
贡献者
Ion Gaztañaga
Ion Gaztañaga
贡献者
Niall Douglas
Niall Douglas
贡献者
Zach Laine
Zach Laine
贡献者
Vissarion Fisikopoulos
Vissarion Fisikopoulos
贡献者
Dirk Stolle
Dirk Stolle
贡献者
Joaquin M. López Muñoz
Joaquin M. López Muñoz
贡献者
Alan de Freitas
Alan de Freitas
贡献者
Mohammad Nejati
Mohammad Nejati
贡献者
Marcelo Zimbres
Marcelo Zimbres
贡献者
Oliver Kowalke
Oliver Kowalke
贡献者
Bruno Iljazovic
贡献者
sdarwin
sdarwin
贡献者
Barend Gehrels
Barend Gehrels
贡献者
Kilian Kilger
贡献者
Dmitry
Dmitry
贡献者
Jeff Trull
Jeff Trull
贡献者
Abhay Kumar
贡献者
Adder
贡献者
Igor Zhukov
贡献者
Hans Dembinski
Hans Dembinski
贡献者
Ed Catmur
Ed Catmur
贡献者
spreadsort
spreadsort
贡献者
Fahad Syed
贡献者
Tim Blechmann
Tim Blechmann
贡献者
Pavel P
贡献者
braden
braden
贡献者
Tomato-in
贡献者
Petter Reinholdtsen
贡献者
Thomas Barbier
Thomas Barbier
贡献者
Luohao Wang
贡献者
James E. King III
James E. King III
贡献者
high on tantor
贡献者
Jenkins nedprod CI
贡献者
Glen Fernandes
Glen Fernandes
贡献者
Yury Bura
Yury Bura
贡献者
Sergiu Deitsch
贡献者
tkoecker
tkoecker
贡献者
Philipp Otterbein
贡献者
Danijel Zlaus
贡献者
RK-BFX
贡献者
Eugene Zelenko
贡献者
Davin
贡献者
Thomas Dickerson
贡献者
Wolfgang Bangerth
贡献者
Holger Hoffstätte
贡献者
Yuhan Liu
贡献者
Adem Budak
贡献者
Abel Sinkovics
Abel Sinkovics
贡献者
Nigel Stewart
Nigel Stewart
贡献者
DockedFerret800
贡献者
BrianWeed
BrianWeed
贡献者
Nana Sakisaka
Nana Sakisaka
贡献者
zjyhjqs
贡献者
Ruggero Turra
Ruggero Turra
贡献者
Daniil
贡献者
Coia Prant
贡献者
Mathias Stearn
贡献者
Paweł Stankowski
贡献者
Jan Palus
贡献者
Korina Šimičević
贡献者
AnonymousPC
贡献者
Osyotr
Osyotr
贡献者