Boost
发布
arrow_drop_down
最新发布 (1.90.0)
2025年12月10日
依赖项
本次发布新增了 1 个依赖项 (在 1 个库中),并移除了 16 个依赖项 (在 10 个库中)。
平台 文件 SHA256 哈希
Unix boost_1_90_0.tar.bz2 49551....fc305
boost_1_90_0.tar.gz 5e93d....7eea9
Windows boost_1_90_0.7z 78413....695b2
boost_1_90_0-bin-msvc-all-32-64.7z d92b9....81303
boost_1_90_0-msvc-14.1-32.exe cd24f....6307e
boost_1_90_0-msvc-14.1-64.exe 6d103....aeafa
boost_1_90_0-msvc-14.2-32.exe 8fe7c....6f4e5
boost_1_90_0-msvc-14.2-64.exe b29c6....7276c
boost_1_90_0-msvc-14.3-32.exe e1528....31b3e
boost_1_90_0-msvc-14.3-64.exe b4b90....cfb4e
boost_1_90_0.zip bdc79....9973c

版本 1.90.0

新库

  • OpenMethod:

    • 在 C++17 及更高版本中打开(多)方法,来自 Jean-Louis Leroy。

更新的库

  • Asio

    • 添加了 execution::inline_exception_handling 属性,用于描述内联执行时所做的异常处理保证。

    • 添加了 inline_executor,它始终内联执行提交的函数。

    • associated_executor 的默认候选执行器从 system_executor 更改为 inline_executor

    • 添加了 inline_or_executor<> 适配器和 inline_or() 助手,它会在可能的情况下内联执行,否则将委托给另一个执行器。

    • 添加了 dispatchpostdefer 的重载,它们接受一个函数对象在目标执行器上运行,并将结果传递给完成处理程序。

    • 添加了 redirect_disposition 完成令牌适配器,作为 redirect_error 的通用对应项。

    • 使用 [[deprecated]] 属性标注了已弃用的项。

    • 添加了一个新的配置参数“reactor” / “reset_edge_on_partial_read”,它决定在使用 epoll 时,部分读取是否会消耗掉边缘。

    • 添加了新的配置参数“reactor” / “use_eventfd”和“reactor” / “use_timerfd”,分别用于确定 epoll 后端是否使用 eventfdtimerfd

    • 添加了 BOOST_ASIO_DISABLE_TIMERFD 所需的预处理器检查。

    • 除了 std::experimental::source_location 之外,还实现了对 std::source_location 支持的编译时特性检查。

    • 停止使用已弃用的 boost::array::c_array() 函数。

    • 修复了 asio::awaitable 移动赋值中的资源泄漏。

    • 修复了 ssl 流移动赋值中的内存泄漏。

    • 修复了 kqueue reactor 中的线程检查器问题。

    • 修复了 io_uring 后端中的处理程序跟踪参数。

    • 修复了 boost::asio::detail::null_thread 中的未使用参数警告。

    • 更改了基于宏的协程实现,以确保在 __COUNTER__ 被使用时具有确定的 case 标签。

    • 修复了同步 SSL 流 shutdown,使其将 error::eof 映射为 async_shutdown 所做的。

    • 在 Windows 上将 stream_filerandom_access_file 更改为将文件路径视为 UTF-8 编码的字符串。

    • experimental::parallel_groupexperimental::ranged_parallel_group 中添加了检查,以检测空的事务集。

    • 移除了 _FORTIFY_SOURCE 的变通方法,并为 ip::basic_resolver_results 添加了地址长度检查。

    • 修复了 experimental::coro,使其能够防止 max 被用作宏。

    • 更新了对较新 libc++ 版本中 std::aligned_alloc 的检测。

    • 各种文档修复和改进。

    • 请查阅 boost_at:/doc/libs/latest//doc/html/boost_asio/history.html[修订历史] 以获取更多详细信息。

  • Beast:

    • http::parser 默认拒绝非标准尾部字段。

    • http::basic_parser 为尾部字段使用专用回调。

    • http::field 常量已更新。

    • 修复了 flat_buffermulti_buffer 中的分配器移动/复制赋值。

    • 修复了 websocket permessage-deflate 在部分消息消费时的错误。

    • http::buffer_body 忽略空块。

    • 添加了 http::basic_fields::contains 成员函数。

    • 移除了对 Boost.Preprocessor 和 Boost.StaticAssert 的依赖。

  • Bloom:

    • 添加了批量插入和查找模式以提高性能。

    • 使 blockfast_multiblock32fast_multiblock64 的查找实现无分支,这带来了一些性能提升,特别是在混合成功/不成功查询时。

  • Charconv:

    • 修复了 CMake 中用于交叉编译的 quadmath 检测。

    • 修复了一个问题,即在浮点数 to_chars 中,足够大的缓冲区会因不够大而报错。

  • Compat:

    • 添加了 to_underlying.hpp(由 Braden Ganetsky 贡献)。

  • Container:

  • Conversion:

    • 删除了对 Boost.SmartPtr 的依赖。

  • Core:

    • boost/core/lightweight_test.hpp 中定义的 BOOST_TEST_THROWSBOOST_TEST_NO_THROW 宏的实现已更改,以避免在某些编译器上使用宏时出现编译器警告(例如在 if/else 块中使用时)。作为此更改的副作用,宏后面的分号现在是必需的。(PR#205

    • boost::databoost::size 现在分别是 std::datastd::size 的别名(当后者由编译器提供时)。这解决了编译器找到 Boost. 和 std. 备选方案时可能出现的歧义,例如 ADL 的结果。(PR#206

  • DLL:

    • 修复了将 std::error_code 传递给 boost::system::error_code& 的问题。非常感谢 Thomas Klausner 的修复(PR#106)。

    • 修复了使用 CMake 进行安装。非常感谢 Yury Bura 的修复(PR#103)。

    • 修复了 size 变量的遮蔽问题。

  • DynamicBitset:

    • 添加了 C++20 迭代器。

    • 允许选择底层容器类型。

    • 在编译为 C++20 或更高版本时,添加了 constexpr 支持。

    • 提高了 push_back()、pop_back() 和 lowest_bit() 的效率。

    • 将从 basic_string 的构造函数设为 explicit。

    • 移除了几个依赖项。

    • 添加了 push_front()、pop_front()、find_first_off()、find_next_off() 以及从 C 风格字符串和 basic_string_view(后者在 C++17 或更高版本中)的构造函数。

    • 更改了流插入器,以便在输出过程中发生异常时设置 badbit。

    • 使流提取器重新抛出来自底层向量的任何异常。

    • 将文档移植到 MrDocs 和 Antora。

  • Filesystem:

    • permissions 操作成功完成后,清除了传入的 error_code 参数。(PR#338

    • 在 Windows 上,为 directory_iterator 构造函数在 Samba 3.0.2 共享上因需要 SMB 签名而导致“无效签名”错误添加了变通方法。(#334

  • Flyweight:

    • 修复了 Clang 19 及更高版本中因支持 P0522R0 而导致的编译错误。

  • 几何:

  • GIL:

  • Interprocess:

  • JSON:

    • 移除了对 Boost.Align 和 Boost.StaticAssert 的依赖。

    • 切换到更快的哈希算法。

  • LexicalCast:

    • 更多关于浮点特殊值转换为整数和 bool 的测试和修复。修复了当从 float 词法转换为 bool 时出现的编译器警告 C4804。

    • 放弃了对 Boost.TypeTraits 的依赖。非常感谢 Romain Geissler 完成了大部分工作(PR#87)。

    • 从隐式转换为显式类型转换,以避免编译器警告。非常感谢 bmagistro 的 PR(PR#85)。

    • 修复了文档中的错误。非常感谢 ivanpanch 的 PR(PR#86)。

    • 修复了 unsigned shortwstring 转换而没有 wchar_t 内置类型时的回归。

  • Locale:

    • 修复了 B2 构建文件,以避免在仅请求静态库时构建各种 Boost 库的动态版本(PR#266)。

    • 当请求 ISO8859-1 或 ISO8859-8 编码时,允许使用 Windows 代码页 1252 或 1255(相应地)代替使用“C”(经典)区域设置,当选定的 Windows 区域设置不支持该 ISO8859 编码时。

    • 启用了针对 Cygwins stdlib 中转换某些长 UTF-8 序列到 UTF-16 时问题的变通方法。

  • Log:

    • 修复了 value_ref 访问中的一个遗漏的优化。

    • 修复了 text_file_backend 中日志文件旋转时可能发生的冗长且无用的循环。如果日志文件名模式不包含文件计数器且日志文件大小超过 rotation_size 限制,则接收器后端将反复尝试以不同的计数器值打开新日志文件,并最终每次都打开同一个文件。(#252

    • 使 text_file_backend 中的文件大小检查更健壮,能够抵抗整数溢出。

  • 数学:

    • 添加了新的子库:反向模式自动微分。

    • 添加了新常量:log_pi

    • logitlogistic_sigmoidlogistic 分布添加了适当的提升策略支持。

    • 对特殊函数进行了大量修复和边缘情况处理。

  • Mp11:

    • 更新了 mp_reverse_fold 以在固定大小列表上工作。

  • MQTT5:

    • 移除了对 Boost.Spirit 的依赖。

    • 自动重连现在会在任何传输层错误时触发,而不是仅限于少数白名单错误(#38)。

    • 向 Logger 接口添加了 at_transport_error 回调。

  • MSM:

  • Multiprecision:

    • 对较新的 cpp_double_fp_backend 的测试和覆盖率进行了重大改进。

  • MySQL:

    • 弃用了对 Clang 4.0 以下版本的支持。这些编译器可能仍能工作,但不会在 CI 中进行积极测试。

    • 添加了测试以确保与 MySQL 9.x 的兼容性。

    • 添加了测试以确保与 Clang 20 及更早版本、GCC 15 及更早版本的兼容性。

  • 解析器:

    • 修复了使用移动独占可调用对象与闭包时的格式错误(PR#284

    • 修复了 GlobalState 解析器模板参数中的糟糕的 const 不兼容问题(#250)。

    • 修复了在某些情况下使用置换解析器时的格式错误(#268)。

    • 修复了序列解析中的一个错误,该错误可能导致某些属性被后续的序列解析器覆盖(#279)。

    • 修复了 opt-parsers 的处理方式,它们可能即使解析器失败,仍会留下一个包含值的 std::optional 属性(#279#285)。

    • 多项运行时优化(#245, PR#254, PR#255, PR#256)。

    • 适度的编译时和代码大小优化(#250)。

    • 使 transform 成为 constexprPR#275)。

    • 移动与转发警告缓解(#272)。

    • 修正了 if_ 指令属性类型的文档(#278)。

    • 修正了文档中的大量拼写错误(PR#271)。

  • PFR:

    • 添加了一个基于 C++26 解构打包的实现,它**修复了库的大多数已知限制**并避免了过多的模板实例化。新实现可以通过新的 BOOST_PFR_USE_CPP26 宏显式启用/禁用。非常感谢 Jean-Michaël Celerier 的 PR(PR#194)。

    • CMake 多项修复。非常感谢 Alexander Grund 的 PR!

  • Random:

    • 修复了从 SeedSeq 构造 xoshiro 系列生成器的问题。

  • Redis:

    • 重要的**取消**更改

      • 改进了 async_exec() 中的按操作支持,并添加了对 asio::cancel_after 的支持。现在可以在任何时候取消请求,并且取消不会干扰其他请求。Pull requests PR#310#226

      • 弃用了 request::config 中的 cancel_on_connection_lostcancel_if_not_connected 标志。要限制 async_exec 可能花费的时间,请改用 asio::cancel_aftercancel_on_connection_lost 的默认值已更改为 false。Pull requests PR#329PR#334

      • 弃用了使用 operation::resolveconnectssl_handshakereconnectionhealth_check 调用 cancel。用户应改用 cancel(operation::run)。Pull request PR#321

      • async_run() 中添加了对按操作取消的支持。Issue #319

    • 添加了对使用 config::setup 的**自定义设置请求**的支持。在设置这些字段时,用户可以用任何其他任意请求替换库生成的 HELLO 请求。Issue #302 和 pull request PR#303

    • 弃用了 request::config::hello_with_priority。如果需要先于其他请求执行一个请求,请改用 config::setup。Pull request PR#305

    • **Valkey** 长期支持:我们保证从本次发布开始兼容 Valkey。Issue #296

    • 添加了一个 request::append() 函数,用于连接请求对象。Issue #341

    • 健康检查算法已重新设计,以避免在高负载下出现误报。现在只在连接空闲时发出 PING 命令,而不是周期性发出。Issue #104

    • 添加了 config::read_buffer_append_size,它允许控制连接读取缓冲区的扩展。Pull request PR#283

    • 添加了 usage::bytes_rotated,它测量从服务器读取和解析数据时的数据复制。Pull request PR#311

    • 错误修复

      • 修复了一个在解析包含中间错误的响应到 generic_response 时抛出异常的 bug。Issue #287

      • 修复了 connectionbasic_connectioncancel() 函数中的一些竞态条件,这些条件可能导致取消被忽略。Issue #318

      • 具有空密码但有非默认用户名的用户现在可以正确通过身份验证。Issue #298

      • 修复了一个问题,该问题可能导致 HELLO 期间的错误导致后续重连期间的 HELLO 尝试失败。Issue #290

      • HELLO 期间的错误现在已正确记录。Issue #297

  • SmartPtr:

    • 已移除由已弃用的宏 BOOST_SP_ENABLE_DEBUG_HOOKSBOOST_SP_USE_STD_ALLOCATORBOOST_SP_USE_QUICK_ALLOCATOR 启用的功能。

    • 头文件 <boost/smart_ptr/detail/quick_allocator.hpp> 已被标记为弃用,将在未来的版本中移除。

    • 不再支持定义 BOOST_NO_CXX11_HDR_ATOMIC 的配置;现在需要符合 C++11 标准的 <atomic>

    • 已弃用的宏 BOOST_AC_USE_SPINLOCKBOOST_AC_USE_PTHREADSBOOST_SP_USE_SPINLOCKBOOST_SP_USE_PTHREADS 不再起作用。

    • 不再使用平台特定的 atomic_countsp_counted_basespinlock 实现,并已将其移除。

    • 不再支持定义 BOOST_NO_CXX11_HDR_MUTEX 的配置;现在需要符合 C++11 标准的 <mutex>

    • 已移除 boost/smart_ptr/detail/ 中一些未使用的头文件。

  • Stacktrace:

  • StaticString:

    • 在 C++26 中,将 to_static_[w]string()std::to_[w]string() 对齐。

    • to_static_[w]string() 中移除了对额外缓冲区的用法。

    • 添加了 resize_and_overwrite()

  • STLInterfaces:

    • 修复了 GCC 14 时的格式错误(PR#80)。

    • 修复了使用移动独占可调用对象与闭包时的格式错误。

  • Test:

    • 修复了 Windows Clang 上的一些警告。

  • TypeIndex:

    • 放弃了对 Boost.Core 的依赖。

    • 在 CMake 中也运行了所有测试。非常感谢 Alexander Grund 的一些修复和帮助。

  • URL:

    • segments_viewsegments_encoded_view 获得了常数时间迭代器创建的子视图构造函数。

    • 添加了区域 ID 设置器(例如 IPv6 链路本地地址)。

    • 主机设置器现在接受/传播区域 ID。

    • 修复:resolve 现在在所有情况下都复制引用片段(#920)。

    • 修复:encoded_host_address 断言会考虑区域 ID。

    • 重构:将 BOOST_STATIC_ASSERT 替换为 BOOST_CORE_STATIC_ASSERT#934)。

    • 重构:为片段子视图保留了绝对语义(#939)。

  • Uuid:

    • string_generator 在 C++14 及更高版本中现在是 constexpr

    • 添加了头文件 boost/uuid/constants.hpp

    • boost/uuid/uuid_generators.hpp 重命名为 boost/uuid/generators.hpp。旧名称保留以兼容。

  • Variant2:

    • 更多函数被标记为 constexpr,包括 ~variant。这在 C++20 之前无关紧要,但现在却很重要。

测试的编译器

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

贡献者

Peter Dimov
Peter Dimov
贡献者
Gennaro Prota
贡献者
Christopher Kormanyos
Christopher Kormanyos
贡献者
Alexander Grund
Alexander Grund
贡献者
Ion Gaztañaga
Ion Gaztañaga
贡献者
Matt Borland
Matt Borland
贡献者
Christian Granzin
贡献者
Nana Sakisaka
Nana Sakisaka
贡献者
Andrey Semashev
Andrey Semashev
贡献者
mzhelyez
贡献者
ivanpanch
贡献者
Rene Rivera
Rene Rivera
贡献者
Anarthal (Rubén Pérez)
Anarthal (Rubén Pérez)
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Klemens Morgenstern
Klemens Morgenstern
贡献者
Mohammad Nejati
Mohammad Nejati
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Alan de Freitas
Alan de Freitas
贡献者
Joaquin M. López Muñoz
Joaquin M. López Muñoz
贡献者
Zach Laine
Zach Laine
贡献者
Dmitry
Dmitry
贡献者
Nigel Stewart
Nigel Stewart
贡献者
spreadsort
spreadsort
贡献者
Maksym Zhelyeznyakov
贡献者
Vissarion Fisikopoulos
Vissarion Fisikopoulos
贡献者
Marcelo Zimbres
Marcelo Zimbres
贡献者
Andreas Buhr
贡献者
Oliver Kowalke
Oliver Kowalke
贡献者
E Kawashima
E Kawashima
贡献者
Tim Blechmann
Tim Blechmann
贡献者
Maksym Zhelyeznyakov
贡献者
Stefan Seefeld
Stefan Seefeld
贡献者
sdarwin
sdarwin
贡献者
James E. King III
James E. King III
贡献者
Bruno Iljazovic
贡献者
Andrew Johnson
Andrew Johnson
贡献者
Emil Dotchevski
Emil Dotchevski
贡献者
Dirk Stolle
Dirk Stolle
贡献者
Glen Fernandes
Glen Fernandes
贡献者
Maksym Zhelyeznyakov
贡献者
Christophe Henry
Christophe Henry
贡献者
henry-ch
贡献者
Vinnie Falco
Vinnie Falco
贡献者
bmagistro
贡献者
Barend Gehrels
Barend Gehrels
贡献者
John Maddock
John Maddock
贡献者
Frank Mori Hess
Frank Mori Hess
贡献者
Samuel Debione
Samuel Debione
贡献者
Tinko Bartels
Tinko Bartels
贡献者
Romain Geissler
Romain Geissler
贡献者
dependabot[bot]
贡献者
braden
braden
贡献者
Erik Bråthen Solem
贡献者
sigbjorn
贡献者
m4xG4
贡献者
warren
warren
贡献者
Vasanth Karanam
贡献者
Niall Douglas
Niall Douglas
贡献者
wmamrak
wmamrak
贡献者
Richard Thomson
Richard Thomson
贡献者
crueter
贡献者
Thomas Kent
Thomas Kent
贡献者
Jeremy W. Murphy
Jeremy W. Murphy
贡献者
Robert Adam
贡献者
Marcos Simental
贡献者
Dong Wang
贡献者
Miguel Company
贡献者
Zayd Rajab
贡献者
Stat1cV01D
贡献者
Ashish Sadanandan
Ashish Sadanandan
贡献者
AnonymousPC
贡献者
Lukas Friembichler
Lukas Friembichler
贡献者
ZHUO Qiang
贡献者
Hans Dembinski
Hans Dembinski
贡献者
Anthony Eden
Anthony Eden
贡献者
Thomas Höhlig
贡献者
Aditya Pillai
贡献者
greg7mdp
贡献者
zs
贡献者
Vladimir Prus
Vladimir Prus
贡献者
EelisVP
贡献者
Anton Gladky
贡献者
Sylvain Joubert
Sylvain Joubert
贡献者
Adem Budak
贡献者
Carlo Bramini
贡献者
chn
贡献者
Sergey Chebotarev
贡献者
Pavel P
贡献者
Joel de Guzman
Joel de Guzman
贡献者
dvtate
贡献者
Yury Bura
Yury Bura
贡献者
Jonathan Wakely
Jonathan Wakely
贡献者
newyork_loki
贡献者
Ta'am
贡献者
Francisco Tapia
Francisco Tapia
贡献者
Konvicka Filip
贡献者
Sébastien Loriot
贡献者
Juan Carlos Arevalo Baeza (JCAB)
贡献者
Arthur O'Dwyer
贡献者
Harsha Totakura
贡献者
me@kennethreitz.org
贡献者
Orgad Shaneh
Orgad Shaneh
贡献者
Hennadii Stepanov
Hennadii Stepanov
贡献者
Jenkins nedprod CI
贡献者
Marshall Clow
Marshall Clow
贡献者
biljazovic
贡献者
zjyhjqs
贡献者
Abhay Kumar
贡献者
chrisse74
chrisse74
贡献者
ericli-splunk
贡献者