版本 1.88.0
版本 1.88.0
2025 年 4 月 10 日 20:39 GMT
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_88_0.tar.bz2 | 46d9d2c06637b219270877c9e16155cbd015b6dc84349af064c088e9b5b12f7b |
boost_1_88_0.tar.gz | 3621533e820dcab1e8012afd583c0c73cf0f77694952b81352bf38c1488f9cb4 | |
windows | boost_1_88_0.7z | e84a33716a31c1c8cb00783a411630d41c008e9364002dc0fe55aea4f54f4726 |
boost_1_88_0.zip | 8ee21476f1aca1978339f0f4a218b9b8a6746eec83070f32630f97b09c7e91b7 |
新库
更新的库
-
Array:
-
将文档转换为 AsciiDoc (Christian Mazakas)。
-
根据需要添加了
noexcept
和constexpr
。 -
将过时的函数标记为已弃用。
-
移除了过时的编译器解决方法。
-
更改了
array<T, 0>::begin()
,cbegin()
,end()
,cend()
以返回nullptr
,从而启用constexpr
。这与std::array
的行为一致。 -
移除了本地
hash_value
重载;boost::hash
原生支持类似数组的类型。 -
array<T, 0>
现在可以使用= {{}}
进行初始化。 -
添加了
operator<=>
。 -
添加了
to_array
。
-
-
Asio:
-
为各种
local::basic_endpoint
成员函数添加了noexcept
限定符,使其与ip::basic_endpoint
一致。 -
修复了
boost::asio::config
类对整数值的处理。 -
修复了
experimental::ranged_parallel_group
中的移动后使用错误。 -
修复了
experimental::promise
实现中不正确的默认模板参数。 -
修复了
io_uring
实现,使其在 fork 后,如果内部描述符之前未注册,则不再尝试向 reactor 重新注册它们。 -
修复了
thread_pool
默认构造函数中未初始化的成员。 -
修复了将
std::span
传递给boost::asio::buffer
函数时出现的歧义重载问题。 -
移除了一些在移除已弃用的缓冲区功能后遗留的虚假宏定义。
-
添加了文档以阐明打开文件时
file_base::flags
的用法。 -
添加了关于可用运行时配置选项的概述文档。
-
更新了概述文档,以反映使用
deferred
作为默认完成令牌。 -
更新了
async_result
文档,以反映对 trait 特化的当前类型要求。
-
-
Assert:
-
当定义了
BOOST_ASSERT_HANDLER_IS_NORETURN
时,boost::assertion_failed
和boost::assertion_failed_msg
被声明为BOOST_NORETURN
。
-
-
Beast:
-
修复
-
修复了
iequals
函数中的越界访问。
-
-
改进
-
更新了 SSL 示例以验证对等证书主机名。
-
重构了 CMakeLists。
-
从示例中移除了 Boost.Scope 依赖项。
-
WebSocket 中的对等 ping 现在计为活动。
-
-
文档
-
为 Unix 域套接字添加了新示例。
-
向文档添加了 SSL/TLS 证书部分。
-
改进了
websocket::stream::async_close
的文档。
-
-
致谢
-
Morten M. Neergaard
-
-
-
Conversion:
-
在示例和库代码中使用现代 C++。
-
-
DLL:
-
移除了对其他 Boost 库(包括 Spirit、SmartPtr、Move、TypeTraits 和 Function)的多个依赖项。DLL 在编译时变得更加轻量。
-
API 中使用了
std::error_code&
而不是boost::system::error_code&
。这不是一个破坏性更改,因为boost::system::error_code
可转换为std::error_code&
。 -
boost::dll:import_*
函数现在返回std::shared_ptr
而不是boost::shared_ptr
。定义BOOST_DLL_USE_BOOST_SHARED_PTR
以恢复旧的行为,但请注意,该宏将在即将到来的 Boost 版本之一中移除。 -
在示例和库代码中使用现代 C++。
-
boost::dll::library_info
现在在二进制文件损坏的情况下始终抛出异常。更新了文档并添加了一些测试。 -
在 FAQ 中记录了为什么缺少
RTLD_NODELETE
以及为什么没有.release()
方法。提供了关于可能的变通方法的建议。 -
更新了关于构建和使用库的信息。CMake 目标现在在平台需要时与
-ldl
链接。 -
修复了 Windows 操作系统上长路径的
detail::path_from_handle
实现。 -
在文档中强调了库的
boost/dll/smart_*
部分是实验性的和不完整的。 -
修复了库的
boost/dll/smart_*
部分中的多个名称修饰问题。
-
Graph:
-
Bug 修复
-
替换了
maximum_weighted_matching
的实现,解决了多个问题。 -
确保在使用前初始化
named_graph
。 -
用 Boost.Geometry 替换了
is_straight_line_drawing
中的自定义几何代码,修复了极小角度的不正确结果。 -
修复了
undirected_dfs
中finish_edge
的不正确回调。
-
-
性能改进
-
adjacency_list
: 从基于vector
的存储的add_vertex
中移除不必要的resize
/reserve
调用!快速基准测试表明图构造时间提高了 10%。 -
lengauer_tarjan_dominator_tree
: 将std::deque
替换为std::vector
,对于大型图,性能提高了约 40%。
-
-
通用改进
-
用 C++14 语言特性替换了几个 Boost 实用程序的用法。
-
使用 C++14 语言特性使示例现代化。
-
对文档和构建系统进行了各种修复。
-
vertex_by_property
不再需要可变图。 -
修复了
cycle_canceling
和 Clang 19 的编译问题。
-
-
-
Iterator:
-
放弃了对 C++03 和旧编译器的支持,更新了代码库以使用 C++11 和 MP11,减少了 MPL 的使用。 (PR#82)
-
添加了
min_category
trait,它是minimum_category
的可变参数等效项,不依赖于 MPL。minimum_category
已弃用,将在未来的版本中移除。 -
将
enable_if_convertible
trait 提取到单独的头文件enable_if_convertible.hpp
中。该 trait 之前在iterator_adaptor.hpp
中定义,并且该头文件在包含时仍提供enable_if_convertible
。提供此依赖项是为了向后兼容,并将在未来的版本中移除。建议用户根据需要添加enable_if_convertible.hpp
的包含。 -
添加了生成类型的各种迭代器 trait 的
*_t
变体。 -
filter_iterator
和transform_iterator
现在使用空基类优化 (EBO) 来减小迭代器的大小,当采用的函数对象是无状态的时。 -
zip_iterator
现在原生支持boost::tuple
、std::tuple
和std::pair
用于迭代器元组,并且不需要包含 Fusion 支持头文件。 -
当包装的函数是指针函数时,
function_output_iterator
不再允许默认构造。这种构造以前会创建一个具有未初始化函数指针值的迭代器,并且这样的迭代器将不可用。 -
generator_iterator.hpp
和shared_container_iterator.hpp
头文件已移动到boost/iterator
目录下。boost
中之前的头文件仍然保留以实现向后兼容,但将在未来的版本中移除。建议用户更新他们的包含。 -
shared_container_iterator
现在使用std::shared_ptr
在内部引用容器。对boost::shared_ptr
的支持仍然保留,但它会在迭代器构造时产生性能开销,因为boost::shared_ptr
现在包装在std::shared_ptr
中。建议使用std::shared_ptr
来引用容器。
-
-
Lockfree:
-
添加了新的 spsc_value,一个基于三重缓冲区的无锁单生产者单消费者值
-
-
Log:
-
在 C++20 及更高版本模式中禁用了
std::codecvt<char16_t>
和std::codecvt<char32_t>
区域设置 facet 的使用,因为它们在 C++20 中已弃用。这意味着在 C++20 及更高版本中,不再提供与char16_t
和char32_t
之间的字符代码转换。 -
修复了在使用 CMake 和 MinGW-w64 时的构建问题。 (PR#241)
-
修复了当后端配置为附加到现有文件,并且活动写入的文件名模式没有计数器占位符,但目标文件名模式有,并且日志文件直接写入目标存储时,
text_file_backend
使用的不正确的文件计数器。 (#245)
-
-
Mp11:
-
修复了非整数值的
mp_from_sequence
(由于偏移量支持在 1.83.0 中意外损坏)
-
-
MySQL:
-
即使在存在许多会话建立中的连接的情况下,
connection_pool
现在也能正确调整大小。旧算法可能导致池在某些条件下无法按预期调整大小 (#395)。 -
添加了
any_connection::connection_id
。此函数检索连接的 ID,随后可在KILL
SQL 语句中使用以取消查询。此函数等效于官方 C API 中的mysql_thread_id
(#408) -
当
connection
或any_connection
上正在进行另一个操作时,尝试启动异步操作不再触发未定义的行为。现在它会失败,并显示client_errc::operation_in_progress
错误 (#405)。 -
当
connection
或any_connection
正在进行多函数操作时,尝试启动操作不再产生潜在危险的数据包不匹配。相反,它会失败,并显示client_errc::engaged_in_multi_function
错误 (#448)。 -
改进了在尝试使用没有已建立会话的连接时的诊断。操作现在会失败,并显示
client_errc::not_connected
错误 (#450)。 -
修复了
connection
和any_connection
中关于每个操作取消的竞争条件。在以前的版本中,如果在中间异步操作完成后,但在其处理程序被调用之前发出取消信号,则该信号将被忽略。现在情况不再如此 (#199)。 -
field
的构造函数和从std::string_view
的赋值现在在 C++17 中可用,而不是 C++20。这些函数由标准特性测试宏保护,仅在 C++20 中可用。这些宏已被替换为它们的 Boost.Config 等效项。 -
添加了一个使用 C++20 协程的 HTTP 服务器示例。
-
添加了一个关于同步和异步代码接口的文档页面。这取代了同步连接池代码片段,该代码片段包含竞争条件。
-
改进了一些其他示例和文档页面。
-
-
PolyCollection:
-
添加了
boost::variant_collection
,一个封闭的多态集合,行为类似于std::vector<std::variant<...>>
。
-
-
SmartPtr:
-
修复了宽流的
operator<<
(在 1.87.0 中意外损坏)
-
-
Stacktrace:
-
打印相对地址,以便稍后在不知道基地址的情况下对其进行解码。可以通过定义
BOOST_STACKTRACE_DISABLE_OFFSET_ADDR_BASE
来禁用此逻辑。非常感谢 Maciej Czarnecki 的 PR#200。 -
将所有 stacktrace 库作为 b2 功能公开,以便更好地控制构建并显式了解构建了哪些库。有关更多信息,请参阅“配置和构建”部分。非常感谢 Uilian Ries 在 PR#202 中对该功能的初始实现。
-
修复了使用 MinGW 的
stacktrace_from_exception
构建。感谢 crhilton 的修复。
-
TypeIndex:
-
修复了在 Boost.TypeIndex 1.84 中引入的 UB,并阻止了库在 clang-20 上构建。
-
-
Unordered:
-
使用 Antora 将文档迁移到多页格式。
-
-
Variant2:
-
为索引使用最小的适当无符号类型。
-
测试编译器
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 管理了此版本。