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:
    • filters,来自 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 命名管道使用唯一的名称,以避免在 Asio 被用于多个独立的插件 DLL 时发生冲突。
    • BOOST_ASIO_CONCURRENCY_HINT_SAFE 更改为与 io_context 默认构造函数保持一致。
    • 修复了 BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO 的文档,以反映注册锁定仍然启用。
    • 为可选依赖项添加了单独的b2andcmake构建目标。
    • [[noreturn]] 属性添加到 boost::asio::detail::throw_exception
    • 修复了 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 操作,该操作可用作自旋循环中的退避措施。增加了对 PowerPC 的支持,并改进了 thread_pause 对 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 赋值修复。
    • 修复了内部异常。
    • 添加了 IO 库。Cobalt.io 提供了一个大量的 asio 子集作为编译库。
  • Compat:
    • 添加了 move_only_function.hpp
  • ContainerHash:
    • 添加了 hash_is_avalanching 特性类。
  • Conversion:
    • 添加了在 constexpr 中使用 polymorphic_downcastpolymorphic_cast 的能力(需要 C++20)。
  • Core:
    • 修复了 bit_ceil 在输入为 0 时返回 1,符合规范。(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#1404 提高了 buffer 的性能
      • PR#1405 避免在头文件中使用静态变量和函数
    • 破坏性更改
      • PR#1401 移除已弃用的头文件
    • 已解决的问题
      • #1221 具有整数坐标的多边形差集产生无效的多边形,内部不连通
      • #1295 交集错误(结果多边形等于输入多边形中最大的那个)
      • #1349 多边形差集产生错误结果
      • #1382 Buffer 操作产生自交
      • 各种错误和警告修复
  • Hash2:
    • 添加了 Blake2 算法(`blake2s_256`,`blake2b_512`)。
    • 添加了 XXH3 算法(`xxh3_128`)。
  • Iterator:
    • 修复了 filter_iterator 的复制/转换构造函数,该构造函数以前可能产生无效的迭代器。(#92
    • iterator_facade 中移除了 is_trivial 的使用,因为它在 C++26 中已被弃用。(#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)。
    • 修复了因缺少 include 文件导致 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
贡献者