版本 1.79.0
版本 1.79.0
2022 年 4 月 13 日 14:22 GMT
平台 | 文件 | 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
与旧式完成令牌的兼容性问题。 -
修复了
experimental::append
和experimental::prepend
的associator
特化。 -
修复了
associated_allocator
主模板。 -
修复了io_uringsockets 的
async_receive_from
和 files 的write_some_at
的实现。 -
修复了io_uring功能检测。
-
修复了
experimental::coro
的每个操作的取消。 -
修复了
experimental::promise
的类型擦除完成处理程序中的内存管理。 -
修复了
ssl::stream
的移动operator=
实现。 -
修复了当
BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
和BOOST_ASIO_SEPARATE_COMPILATION
都被定义时any_io_executor
实现工作的问题。 -
修复了当使用
sockatmark()
系统调用时basic_socket::at_mark()
的实现。 -
更改了 recycling allocator 以使用默认对齐作为分配的最小对齐。
-
为 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:
-
为 file_body 测试添加了缺失的 include。
-
修复了 WebSocket 握手失败时的响应。
-
修复了
file_posix
和file_win32
的打开追加模式。 -
修复了 Windows 上使用 append/append_existing 标志打开文件的问题
-
修复了
file_win32
和file_stdio
的 clang-cl UTF8 路径处理。 -
将 ARM64 构建添加到 drone CI。
-
修复了 async_base 文档链接。
-
为在 append/append_existing 模式下打开文件添加了测试。
-
更新了 CI 以包含 gcc 11、clang 12、msvc 14.3。
-
将单独的测试添加到 CMake 工作流程。
-
我们很想知道您或您的公司如何使用 Beast,请考虑在 “使用 Beast 的公司和个人” 列表中添加条目。
-
有关完整的更改列表,请参阅完整的发行说明。
-
-
Core:
-
使
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
。
-
-
Describe:
-
在
BOOST_DESCRIBE_STRUCT
中启用了 unions,并更新了示例以检查std::is_union<T>
。 -
添加了定义
fmtlib
类格式化程序的示例。 -
添加了定义
fmtlib
枚举格式化程序的示例。 -
添加了打印成员指针的示例。
-
-
文件系统:
-
v3:
path::replace_extension
现在根据 v3 定义的path::extension
而不是 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::io::basic_onullstream
(一个空输出流)(Glen Fernandes)。
-
-
Iterator:
-
在
counting_iterator
中,添加了对某些目标平台上 gcc 和 clang 以及兼容编译器支持的内置 128 位整数类型的支持。 -
消除关于
counting_iterator
中已弃用的隐式复制赋值运算符的 gcc 警告。
-
-
LEAF:
-
支持 FreeRTOS 和其他嵌入式平台
-
改进的诊断信息
-
改进的配置宏
-
BOOST_LEAF_CHECK
在 __GNUC__ 下使用语句表达式 -
修复了符号反解错误
-
-
Log:
-
一般更改
-
在
text_file_backend
中,当使用文件轮换且日志文件名使用文件计数器时,添加了对追加到先前写入的日志文件的支持。 -
破坏性更改:
file_collector
接口已更改-
scan_for_files
方法返回一个scan_result
结构,其中包含扫描期间收集的信息; -
添加了
is_in_storage
方法,用于测试路径是否指向目标存储目录中的文件。
-
-
添加了一个新的
invoke_manip
流操纵器,可用于将用户的函数注入到流输出表达式中。
-
-
Bug fixes
-
修复了如果用户多次调用
text_file_backend::scan_for_files
,并且第二次和后续调用未找到任何新文件,则文件计数器被设置为零的问题。(#179)
-
-
有关更多详细信息,请参阅变更日志。
-
-
Multi-index Containers:
-
将排名索引中
count
操作的效率从O(log(n) + count)
提高到O(log(n))
。由 Damian Sawicki 贡献。 -
维护工作。
-
-
Nowide:
-
修复了一些平台上的编译问题(例如 MinGW-w64 和 Cygwin 上的 GCC 11)
-
修复了当使用
BOOST_USE_WINDOWS_H
和WIN32_LEAN_AND_MEAN
时缺失 include 的问题 -
当使用
boost::nowide::stat
和boost::nowide::stat_t
时添加健全性检查
-
-
Predef:
-
版本 1.14.0
-
添加了 LoongArch 的检测(来自 Zhang Na)。
-
-
QVM:
-
在 C++17 下添加了 constexpr
-
改进了单头文件分发
-
-
Smart Pointers:
-
添加了
boost::get_allocator_pointer
,以从boost::allocate_unique
的结果中获取 Allocator 指针 (Glen Fernandes)。
-
-
System:
-
为
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
现在通过默认参数自动将BOOST_CURRENT_LOCATION
提供给throw_exception_from_error
。 -
添加了一个采用源位置的
errc::make_error_code
重载。
-
-
ThrowException:
-
添加了
boost::throw_with_location
,对于不使用 Boost.Exception 的程序,它是BOOST_THROW_EXCEPTION
的更轻量级替代方案。
-
-
Unordered:
-
所有容器都已更新以支持异构
count
、equal_range
和find
。 -
所有容器现在都实现了成员函数
contains
。 -
已为所有容器实现了
erase_if
。 -
所有容器都已更新以支持异构
erase
和extract
。 -
更改了
reserve
的行为以 eager allocate。 -
测试套件中的各种警告修复。
-
更新代码以在内部使用
boost::allocator_traits
。 -
切换到 Fibonacci 哈希。
-
更新文档以用 AsciiDoc 而不是 QuickBook 编写。
-
-
Variant2:
-
为
monostate
添加了operator<<
。
-
更新的工具
-
构建:
-
包括 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 管理了此版本。