版本 1.79.0
版本 1.79.0
2022年4月13日 14:22 格林尼治标准时间
平台 | 文件 | SHA256 哈希值 |
---|---|---|
Unix | boost_1_79_0.tar.bz2 | 475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39 |
boost_1_79_0.tar.gz | 273f1be93238a068aba4f9735a4a2b003019af067b9c183ed227780b8f36062c | |
Windows | boost_1_79_0.7z | 6c97cf4f4a0eb00ed776c88065ab3f59e183fa5e65f6464ff94f92328352d9d6 |
boost_1_79_0.zip | 3634f9a85759311f321e587eace21799c0d0c946ff933e477a2f98885c54bbff |
新增库
-
无新增库。
更新的库
-
Asio:
-
添加了
bind_allocator
。 -
添加了
file_base::sync_all_on_write
标志。 -
添加了缺失的
basic_file::release()
实现。 -
为信号集添加了每个操作的取消支持。
-
将
recycling_allocator
作为公共接口的一部分公开。 -
为许多函数添加了
nodiscard
属性。 -
添加了 OpenSSL 3.0 兼容性。
-
添加了将现有
SSL*
采用到ssl::stream<>
中的支持。 -
在所有构建配置中启用了
executor_work_guard<>
。 -
在使用 clang 时启用了可移动套接字 iostream。
-
修复了
bind_cancellation_slot
和bind_executor
与旧版完成标记的兼容性。 -
修复了
associator
的experimental::append
和experimental::prepend
特化。 -
修复了
associated_allocator
主模板。 -
修复了io_uring套接字的
async_receive_from
和文件的write_some_at
实现。 -
修复了io_uring特性检测。
-
修复了
experimental::coro
的每个操作取消。 -
修复了
experimental::promise
的类型擦除完成处理程序中的内存管理。 -
修复了
operator=
的移动实现ssl::stream
。 -
修复了
any_io_executor
的实现,使其在同时定义BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
和BOOST_ASIO_SEPARATE_COMPILATION
时也能工作。 -
修复了使用
sockatmark()
系统调用时basic_socket::at_mark()
的实现。 -
更改了回收分配器,使其使用默认对齐方式作为分配的最小对齐方式。
-
添加了解决 Apple clang 的协程代码生成错误的变通方法。
-
在 Windows 上,更改了文件支持,以便使用与
fopen()
相同的共享模式打开文件。 -
在 Linux 上,修复了 UNIX 域套接字实现,以正确处理
EAGAIN
。 -
修复了
experimental::basic_channel::reset()
和experimental::basic_concurrent_channel::reset()
的实现。 -
修复了
experimental::promise
中潜在的未定义行为。 -
更改了
co_spawn
实现,以便在某些情况下通过执行程序分派取消信号。 -
修复了各种头文件包含问题。
-
修复了各种警告。
-
许多文档增强,包括
-
添加了 Asio 异步模型的概述。
-
根据异步模型重新编写了参考和要求文档。
-
更新了
dispatch()
、post()
和defer()
的文档。 -
为串口记录了每个操作的取消。
-
阐明了为分配器做出的非并发保证。
-
将
io_context
参考文档恢复为使用executor_work_guard
。 -
为
make_strand()
、make_work_guard()
、ip::address_v4
、ip::address_v6
、experimental::basic_channel
和experimental::basic_concurrent_channel
添加了更详细的参考文档。 -
重新排列并扩展了概述文档,以涵盖最近添加的功能。
-
-
添加了一个 C++11 示例,演示了通过本地套接字传递文件描述符。
-
添加了 C++14 示例,演示了在异步操作中包装基于回调的 API。
-
请参阅 修订历史 以获取更多详细信息。
-
-
断言:
-
source_location().file_name()
和source_location().function_name()
现在返回""
而不是"(unknown)"
。 -
添加了从
std::source_location
的source_location
构造函数。 -
更改了
BOOST_CURRENT_LOCATION
以更紧密地匹配std::source_location::current()
的行为,例如在顶层或作为默认函数参数可用。
-
-
Beast:
-
添加了文件主体测试的缺失包含。
-
修复了失败时的 WebSocket 握手响应。
-
修复了
file_posix
和file_win32
的打开追加模式。 -
修复了在 Windows 上使用追加/追加现有标志打开文件。
-
修复了 clang-cl 为
file_win32
和file_stdio
处理 UTF8 路径。 -
为 drone CI 添加了 ARM64 构建。
-
修复了 async_base 文档链接。
-
添加了以追加/追加现有模式打开文件的测试。
-
更新了 CI,包括 gcc 11、clang 12、msvc 14.3。
-
为 CMake 工作流程添加了单独的测试。
-
我们非常想知道您或您的公司如何使用 Beast,请考虑向 使用 Beast 的公司和个人 列表添加条目。
-
查看完整的 发行说明 以获取更改的完整列表。
-
-
核心:
-
使
boost::pointer_traits
对 SFINAE 友好,解决了 LWG3545。(Glen Fernandes) -
添加了
boost::allocator_traits
,它使用单独的分配器访问特性。此实现支持 C++03 及更高版本。(Glen Fernandes) -
更新了分配器访问特性,以在 C++03 中支持 C++11 分配器模型的大部分。(Glen Fernandes)
-
boost/iterator.hpp
已弃用,将在未来的版本中删除。此头文件定义了boost::iterator
模板,它等效于<iterator>
头文件中的std::iterator
。但是,由于std::iterator
本身在 C++17 中已弃用,因此建议用户从代码中删除boost::iterator
或std::iterator
的使用。 -
添加了
boost::core::verbose_terminate_handler
,这是一个实用程序函数,旨在传递给std::set_terminate
,它会将有关未捕获异常的信息打印到stderr
。
-
-
描述:
-
在
BOOST_DESCRIBE_STRUCT
中启用了联合,并更新了示例以检查std::is_union<T>
。 -
添加了定义
fmtlib
类格式化程序的示例。 -
添加了定义
fmtlib
枚举格式化程序的示例。 -
添加了打印指向成员的指针的示例。
-
-
文件系统:
-
v3:
path::replace_extension
现在根据path::extension
的 v3 定义而不是 v4 定义工作。 -
修复了使用可转换为
path
或兼容字符串类型的参数的路径追加和连接运算符的编译。(#223) -
在支持
fdopendir
和O_NOFOLLOW
的 POSIX 系统和 Windows 上,remove_all
现在受到 CVE-2022-21658 的保护。此漏洞是一个竞争条件,允许第三方进程将正在由remove_all
并发处理的目录替换为目录符号链接,并导致remove_all
跟踪符号链接并删除链接目录中的文件,而不是删除符号链接本身。(#224) -
在 Windows 系统中,`
remove
` 和 `remove_all
` 的实现中,会在操作系统支持的情况下(Windows 10 1709 及更高版本),使用 POSIX 语义进行文件删除。当支持 POSIX 语义时,文件一旦被标记为删除,其文件名就会立即从文件系统命名空间中移除,即使该文件仍然处于打开和使用状态。使用传统的 Windows 语义时,文件名会保留在文件系统命名空间中,直到文件的最后一个文件句柄被关闭,这允许打开被标记为删除的文件,并阻止创建同名的新的文件。(#216) -
在 Windows 系统中,`
remove
` 和 `remove_all
` 现在支持删除只读目录。之前已经添加了删除只读非目录文件的支持。 -
在 Windows 系统中,`
directory_iterator
` 的内部实现已被重新设计,以更好地利用现代 Windows API,这可能会提高处理符号链接时的性能。 -
在 Windows 系统中,如果可能,尽早初始化内部 WinAPI 函数指针,以允许在全局构造函数中调用 Boost.Filesystem 操作。这仅在 MSVC、GCC、Clang 和兼容的编译器上受支持。
-
在 Windows 系统中,如果要调整大小的文件已打开,`
resize_file
` 不应该再失败并返回错误。 -
在 Android 11.0(API 版本 30)之前的版本上,禁用了 `
statx
` 系统调用的使用。该系统调用被 seccomp 列入黑名单,并导致运行时进程终止。(#229) -
已弃用:`
boost/filesystem/string_file.hpp
头文件已弃用,将在未来的版本中移除。该头文件不再默认包含在 `boost/filesystem.hpp
中。建议用户自行实现此功能或迁移到其他实现。 -
已弃用:Windows CE 支持已弃用,将在未来的版本中移除。多年来 Windows CE 一直未经测试,并且可能无法正常工作。
-
-
IO:
-
添加了 `
boost::io::basic_nullbuf
`(一个空流缓冲区)和 `boost::basic_onullstream
`(一个空输出流)(Glen Fernandes)。
-
-
迭代器:
-
在 `
counting_iterator
` 中,添加了对某些目标平台上 gcc 和 clang 及兼容编译器支持的内置 128 位整数类型的支持。 -
消除了 gcc 关于 `
counting_iterator
` 中已弃用的隐式复制赋值运算符的警告。
-
-
JSON:
-
库的独立模式已被移除。希望继续使用独立 JSON 的用户可以切换到 C++ Alliance 的分支。
-
添加了 `
std::error_code
` 重载。 -
将 `
boost::source_location
` 添加到 `error_codes
`。 -
添加了对 JSON 指针的支持。
-
在序列化期间自然增长字符串。
-
-
LEAF:
-
支持 FreeRTOS 和其他嵌入式平台
-
改进的诊断信息
-
改进的配置宏
-
在 `__GNUC__` 下使用 `BOOST_LEAF_CHECK` 语句表达式
-
修复了符号反汇编错误
-
-
日志:
-
一般更改
-
在 `
text_file_backend
` 中,添加了对追加到先前写入的日志文件(当使用文件轮换并且日志文件名使用文件计数器时)的支持。 -
破坏性更改:`
file_collector
` 接口已更改-
`
scan_for_files
` 方法返回一个 `scan_result
` 结构,其中包含扫描期间收集的信息; -
添加了 `
is_in_storage
` 方法,用于测试路径是否指向目标存储目录中的文件。
-
-
添加了一个新的 `
invoke_manip
` 流操作符,可用于将用户函数注入流输出表达式中。
-
-
错误修复
-
修复了如果用户多次调用 `
text_file_backend::scan_for_files
` 并且第二次及后续调用没有找到任何新文件,则文件计数器被设置为零的问题。(#179)
-
-
有关更多详细信息,请参阅 更改日志。
-
-
多索引容器:
-
将排名索引中 `
count
` 操作的效率从 `O(log(n) + count)
` 提高到 `O(log(n))
`。由 Damian Sawicki 贡献。 -
维护工作。
-
-
Nowide:
-
修复了某些平台上的编译问题(例如,MinGW-w64 和 Cygwin 上的 GCC 11)
-
修复了使用 `
BOOST_USE_WINDOWS_H
` 和 `WIN32_LEAN_AND_MEAN
` 时缺少包含文件的问题 -
在使用 `
boost::nowide::stat
` 和 `boost::nowide::stat_t
` 时添加了健全性检查
-
-
预定义:
-
1.14.0 版
-
添加了 LoongArch 的检测(来自张娜)。
-
-
QVM:
-
在 C++17 下添加了 constexpr
-
改进了单头文件分发
-
-
智能指针:
-
添加了 `
boost::get_allocator_pointer
` 以从 `boost::allocate_unique
` 的结果中获取分配器指针(Glen Fernandes)。
-
-
系统:
-
向 `
throw_exception_from_error
` 添加了 `boost::source_location
` 参数。 -
为 `
errc::errc_t
`、`std::error_code
`、`std::errc
`、`std::exception_ptr
` 添加了 `throw_exception_from_error
` 重载。 -
`
result<T>::value
` 现在通过默认参数自动向 `throw_exception_from_error
` 提供 `BOOST_CURRENT_LOCATION
`。 -
添加了一个采用源位置的 `
errc::make_error_code
` 重载。
-
-
抛出异常:
-
添加了 `
boost::throw_with_location
`,这是一个更轻量级的 `BOOST_THROW_EXCEPTION
` 替代方案,适用于不使用 Boost.Exception 的程序。
-
-
无序:
-
所有容器都已更新为支持异构 `
count
`、`equal_range
` 和 `find
`。 -
所有容器现在都实现了成员函数 `
contains
`。 -
已为所有容器实现了 `
erase_if
`。 -
所有容器都已更新为支持异构 `
erase
` 和 `extract
`。 -
更改了 `
reserve
` 的行为,使其积极分配。 -
测试套件中的各种警告修复。
-
更新代码以在内部使用 `
boost::allocator_traits
`。 -
切换到斐波那契哈希。
-
更新文档,使用 AsciiDoc 代替 QuickBook 编写。
-
-
Variant2:
-
添加了 `
operator<<
` 用于 `monostate
`。
-
更新的工具
-
构建:
-
包括 B2 4.8.2 版 的发行版。
-
已测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang:3.4、3.5、3.6、3.7、3.8、3.9、12.0.0
-
Clang,C++11:3.4、11.0.0
-
Clang,C++14:3.5、3.6、3.7、3.8、3.9、4.0、5.0、12.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
-
Clang,C++20:11.0.0、12.0.0、13.0.0
-
GCC:4.6.3、11
-
GCC,C++11:4.7.3、4.8.5、11
-
GCC,C++14:5.4.0、6.4.0、7.3.0、8.0.1、9.1.0、11
-
GCC,C++17:7.3.0、8.0.1、9.1.0、11
-
GCC,C++20:8.0.1、9.1.0、10、11
-
-
OS X
-
Apple Clang: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
-
鸣谢
Marshall Clow、Michael Caisse 和 Glen Fernandes 负责此版本的发布。