版本 1.81.0
版本 1.81.0
2022 年 12 月 14 日 17:44 格林尼治标准时间
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_81_0.tar.bz2 | 71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa |
boost_1_81_0.tar.gz | 205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6 | |
windows | boost_1_81_0.7z | d7bc4e2a2aee374a8c24832cacfed1265680c1e824d09fab3e00f87508155353 |
boost_1_81_0.zip | 6e689b266b27d4db57f648b1e5c905c8acd6716b46716a12f6fc73fc80af842e |
新增库
-
URL: 一个仅使用 C++11 解析、修改和打印 URL 的库,由 Vinnie Falco 和 Alan de Freitas 提供。其特点包括快速编译、强大的不变性以及使用内存友好型方法的严格合规性。
更新的库
-
Asio:
-
添加了
consign
完成标记适配器,可用于将附加值附加到完成处理程序。 -
添加了
any_completion_handler<>
,可用于类型擦除完成处理程序。 -
添加了
experimental::co_composed
,可以使用 C++20 协程实现轻量级用户定义的异步操作。 -
添加了基于范围的
experimental::make_parallel_group()
重载。 -
添加了
any_completion_executor
,一个与完成处理程序关联的执行器的类型擦除包装器。 -
将缺失的
context
查询添加到 use_future 的执行器。 -
向
execution::any_executor<>
和any_io_executor
添加了无异常构造函数重载。 -
优化了空
execution::any_executor
对象的表示,以提高复制和移动操作的性能。 -
为
std::reference_wrapper
添加了associated_cancellation_slot
特化。 -
更改了 I/O 对象,使其通过 const 引用返回其执行器。
-
更改了关联,以便为所有两个参数的
get
函数使用推导的返回类型。 -
修复了
spawn
实现,以捕获未处理的异常并在生成的“线程”外部重新抛出它们。 -
修复了
spawn
,以确保完成处理程序通过正确的执行器调度。 -
修复了终端状态
spawn
“线程”对象的清理。 -
修复了
spawn
和co_spawn
实现,以便在正确的执行器上调度取消处理程序。 -
更改了“调度”的语义,表示执行器按原样使用。
-
弃用了
execution::execute
自定义点和发送方/接收方工具。 -
添加了一个 C++11
parallel_group
示例。 -
修复了示例代码,使其不使用已弃用的
resolve
转换。 -
修复了
experimental::channel_traits
特化中的歧义。 -
为
R(error_code)
签名添加了一个专门的通道实现。 -
使
cancelled()
在async_compose
“自身”对象上公开。 -
将
io_executor_type
和get_io_executor
添加到async_compose
“自身”对象。 -
修复了 Windows 重叠句柄的
release()
实现。 -
为
experimental::coro
启用了延迟等待,规范化了experimental::use_coro
,并修复了分配器处理。 -
清理了
experimental::promise
并将其设为异步操作对象。 -
限制了
post
/defer
重载,使其能够要求blocking.never
。 -
更改了描述符实现,如果
ioctl
在设置非阻塞模式时失败并返回ENOTTY
,则回退到fcntl
。 -
修复了与使用
sprintf
相关的 Xcode 已弃用警告。 -
修复了在内部线程上运行时传递给
select_reactor::run
的参数。 -
修复了定义
BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING
时的编译错误。 -
更新了 clang 14 及更高版本上 C++20 协程支持的检测。
-
更改了标准库功能检测,以便在面向 C++17 或更高版本时始终启用
std::invoke_result
。 -
修复了使用 MSVC 进行返回类型推导的检测。
-
更新了异步操作要求,以放宽对关联执行器的要求。
-
添加了io_uring到实现说明中。
-
请参阅 修订历史 以了解更多详情。
-
-
Beast:
-
添加
buffers_generator
-
添加
beast::http::message_generator
-
添加了
buffer_ref
,以便 beast 缓冲区可与 asio 一起使用。 -
支持每个操作的取消
-
C++20 可等待示例。
-
websocket 每消息压缩选项
-
websocket 超时选项 API
-
多个内容长度错误
-
支持默认完成和重新绑定
-
-
容器哈希:
-
主要更新。
-
已删除
boost::hash
的特化;它现在始终调用hash_value
。 -
已删除对
BOOST_HASH_NO_EXTENSIONS
的支持。扩展程序始终启用。 -
现在支持所有标准容器。这包括
std::forward_list
和无序关联容器。 -
现在开箱即用地支持用户定义的容器(具有返回迭代器的
begin()
和end()
成员函数的类型)。 -
现在开箱即用地支持描述的结构和类(那些用
BOOST_DESCRIBE_STRUCT
或BOOST_DESCRIBE_CLASS
注释的结构和类)。 -
hash_combine
已改进。 -
字符串哈希的性能(以及由于上述更改而产生的质量)已得到改进。字符串的
boost::hash
现在在 64 位模式下通过了 SMHasher。 -
文档已大幅修订,以反映这些更改。
-
-
描述:
-
为了允许在使用选项
-pedantic
时包含enumerators.hpp
、bases.hpp
和members.hpp
,BOOST_DESCRIBE_ENUM
的调用已从modifiers.hpp
移动到单独的头文件modifier_description.hpp
中。因此,modifiers.hpp
不再包含enum.hpp
。依赖于此隐式包含的代码可能会失败,需要修复以包含enum.hpp
。
-
-
文件系统:
-
已弃用:在v3 中弃用,在v4 中删除了从字符容器(例如
std::vector<char>
或std::list<wchar_t>
)构造、赋值和附加path
的操作。请改用字符串类型或迭代器。 -
已弃用:
boost/filesystem/path_traits.hpp
头文件已弃用,并将在未来的版本中删除。该头文件包含path
的实现细节,不应在用户代码中使用。 -
先前已弃用的 API 现在会在使用时生成编译警告。要抑制这些警告,可以在编译用户代码时定义宏
BOOST_FILESYSTEM_ALLOW_DEPRECATED
。 -
修复了由于在不支持
*at
API 的 POSIX 系统上缺少包含文件而导致的编译错误。(#250) -
增加了对
std::string_view
,boost::string_view
和boost::container::string
(以及相应的wchar_t
对应项)在path
构造函数、赋值和追加操作中的支持。(#208) -
采用迭代器对的
path
构造函数、赋值和追加操作将不再接受其值类型不是支持的路径字符类型之一的迭代器。 -
在 Windows 上,重复数据删除的文件现在报告为常规文件,而不是重新分析文件。(#262)
-
-
Histogram:
-
主要更新。
-
添加了新的
accumulators::fraction
来计算分数、方差和置信区间 -
为分数添加了区间计算器:
utility::clopper_pearson
,utility::wilson_interval
,utility::jeffreys_interval
,utility::wald_interval
,它们可以计算具有任意置信水平的区间 -
添加了
utility::confidence_level
和utility::deviation
类型,分别用于将置信水平作为概率或标准差的倍数传递给所有区间计算器 -
修复了 C++20 中的内部
sub_array
和span
-
-
JSON:
-
添加了
object::stable_erase
。 -
添加了
std::istream
的parse
重载和value
的operator>>
。 -
为
value
添加了右值引用限定的访问器。 -
转换特性已重新设计。
-
增加了对描述的类和枚举、
std::optional
、std::variant
和空类型(包括std::nullptr_t
、std::nullopt_t
和std::monotype
)的转换支持。 -
添加了从
value
到用户类型的非抛出转换。
-
-
Locale:
-
主要更新,包含一些重大更改。
-
现在需要 C++11 支持,已放弃对 C++03 和更早版本的支持
-
一些枚举已转换为枚举类——避免名称冲突
-
将
-sICU_LINK_LOCALE
和-sICU_LINK
替换为 Boost.RegEx 中使用的细粒度配置选项 -
修复 libiconv 的检测,允许 Boost.Locale 在某些平台上再次构建
-
删除对
std::auto_ptr
的用法和支持 -
使 Windows 上使用
wchar_t
的codecvt
假定/使用 UTF-16 编码 -
性能改进:使
basic_format
、date_time
和hold_ptr
可移动,修复格式缓存的使用 -
使 Boost.Locale 与更多 ICU 版本兼容(特别是测试)
-
修复某些类的 RTTI 定义(可见性问题)
-
修复 ICU 后端与某些 libc++ 版本的兼容性
-
修复某些运算符的返回值以正确返回非 const
*this
-
修复
date_time
中年份负向滚动时的整数溢出 -
处理或抑制许多警告,使构建日志更清晰
-
添加对更多 Windows 代码页的支持
-
修复对像 ISO-2022-JP 这样的 Windows 代码页的支持
-
-
Nowide:
-
修复 MSVC 上测试的构建失败
-
-
Stacktrace:
-
库**不再使用 COM 初始化**。感谢 Alex Guteniev 报告的错误、说明和 PR PR#123!
-
库现在可以在 b2 中检测 libbacktrace 的可用性时使用
BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE
宏值,感谢 Ben Gemmill 报告的错误 #115。 -
添加了
BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC
宏,以便在使用 libbacktrace 时强制使用单个 backtrace_state 静态实例。感谢 Rasmus Thomsen 报告的错误 #118! -
避免仅包含
boost/stacktrace/stacktrace.hpp
头文件时出现未解析的引用。感谢 Long Deng 报告的错误 #116。 -
通过不在 Windows 平台上调用
strlen
来优化堆栈跟踪打印。感谢 Alex Guteniev 报告的错误 #122
-
-
STLInterfaces:
-
修复了在具有
const
value_type
的 C++20 之前的迭代器中,两个格式错误的iterator_interface
运算符。
-
-
System:
-
现在可以定义宏
BOOST_SYSTEM_DISABLE_THREADS
来禁用<mutex>
的使用(例如,在单线程 libstdc++ 上)。 -
添加了
value_type
,error_type
,in_place_value
,in_place_error
到result<>
。 -
添加了
emplace
到result<>
。
-
-
Unordered:
-
主要更新。
-
添加了基于开放寻址的快速容器
boost::unordered_flat_map
和boost::unordered_flat_set
。 -
为所有容器添加了 CTAD 推导指南。
-
添加了LWG issue 2713中指定的缺失构造函数。
-
-
Variant2:
-
添加了对
boost::json::value_from
和boost::json::value_to
的支持。
-
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang: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: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: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 负责本次发行。