版本 1.82.0
版本 1.82.0
2023 年 4 月 14 日 03:08 GMT
平台 | 文件 | SHA256 哈希 |
---|---|---|
unix | boost_1_82_0.tar.bz2 | a6e1ab9b0860e6a2881dd7b21fe9f737a095e5f33a3a874afc6a345228597ee6 |
boost_1_82_0.tar.gz | 66a469b6e608a51f8347236f4912e27dc5c60c60d7d53ae9bfe4683316c6f04c | |
windows | boost_1_82_0.7z | e72ff100482d4b371327b6c550dbd244d49c0186860ccc3b8c093dd621537e39 |
boost_1_82_0.zip | f7c9e28d242abcd7a2c1b962039fcdd463ca149d1883c3a950bbcc0ce6f7c6d9 |
已知问题
这些是库作者提供的补丁,发现得太晚,无法在此版本中修复。
关于放弃 C++03 支持的通知
以下库将在 1.84 版本(即两个版本之后)中放弃 C++03 支持
-
Align
-
Any
-
Asio
-
Atomic
-
Bind
-
Chrono
-
ContainerHash
-
Conversion
-
DLL
-
Endian
-
文件系统
-
Function
-
Functional
-
Io
-
LexicalCast
-
Log
-
Random
-
Ratio
-
SmartPtr
-
System
-
Stacktrace
-
Thread
-
Timer
-
TypeIndex
-
Typeof
-
Unordered
-
Variant
此版本 (1.82) 和下一个版本 (1.83) 将是为上述库及其大多数依赖项提供 C++03 支持的最后版本。
上述库以及大多数 Boost 的新基线要求将是 C++11。由于旧编译器版本通常仅部分实现 C++11,原因是缺少支持或存在错误,因此哪些编译器被认为满足 C++11 要求可能因库而异。
但是,一般规则是,如果编译器根本无法识别 C++11 关键字或语法(例如,使用 noexcept
,使用 constexpr
,或定义 =delete
d 函数会导致立即编译错误),或者如果编译器根本不提供所需的 C++11 头文件(例如,尝试包含 <atomic>
或 <chrono>
失败),或者编译器提供的 C++11 功能或头文件完全不可用,则此编译器不被视为 C++11 编译器。
例如,这排除了 14.0 之前的 Microsoft Visual C++ 或 4.8 之前的 GCC。
新库
-
Mysql: 基于 Boost.Asio 的 MySQL 数据库服务器的 C++11 客户端,来自 Ruben Perez。
更新的库
-
Asio:
-
添加了在操作立即完成时自定义完成处理程序执行的能力。
-
为缓冲区类型添加了用户定义的字面量。
-
添加了一个新的协议类型
local::seq_packet_protocol
来表示带有SOCK_SEQPACKET
的AF_UNIX
。 -
通过
signal_set::add
的可选参数公开了sigaction()
标志。 -
更改
allocator_binder
、executor_binder
和cancellation_slot_binder
以支持检测未专门化的关联器。 -
修复了
associated_cancellation_slot<reference_wrapper>::get()
中的歧义。 -
修复了包含
std::exception_ptr
的完成签名的awaitable<>
处理。 -
修复了
experimental::channel<>
在cancel
后的try_send
失败。 -
修复了当池没有内部线程时
thread_pool::join()
死锁。 -
修复了在使用以下内容时的管道
release()
io_uring. -
修复了以下内容中的数据初始化和清理问题io_uring后端。
-
修复了
get_associated_executor()
的执行上下文重载中的悬空引用问题。 -
确保当
experimental::channel<>
关闭时,缓冲的消息仍然可以接收。 -
修复了
any_completion_handler
赋值运算符。 -
约束了
any_completion_handler
的构造函数以防止意外复制 -
更改为对 OpenSSL 选项使用
uint64_t
,以匹配 OpenSSL 3。 -
修复了
deferred
与多个完成签名的互操作性。 -
修复了通道以添加对 C++11 和 C++14 的部分支持。
-
当等待打包的异步操作时,为
co_composed
和 'awaitable<>' 协程添加了缺失的处理程序跟踪源位置支持。 -
修复了一些“潜在的空指针解引用”和阴影变量警告。
-
修复了与
const_buffers_1
和mutable_buffers_1
一起使用时asio::buffer
重载选择。 -
除非目标是旧版本的 Windows,否则禁用运行时检查当前 Windows 版本。
-
修复了缓冲流包装器和可移动构造流(例如
ssl::stream<>
)之间的兼容性。 -
修复了
basic_socket_acceptor::async_accept
与具有推导返回类型的 lambda 的兼容性。 -
修复了
as_tuple
与旧式完成令牌的兼容性。 -
修复了
redirect_error
与新完成令牌的兼容性。 -
修复了由于本应允许从析构函数中转义的异常而导致的潜在的 Windows 特定程序终止。
-
防止意外的布尔表达式
co_await
。 -
修复了
experimental::use_coro
中对自定义分配器的结果处理和支持。 -
修复了
is_async_operation
和completion_signature_of
的可变参数模板模拟。 -
修复了
experimental::promise
中移动后的结果的错误重用。 -
修复了
experimental::coro
与自定义分配器的使用。 -
修复了 Windows 上面向流的文件的
seek_cur
行为。 -
对文档进行了各种添加和修改。
-
有关更多详细信息,请参阅修订历史。
-
-
Atomic:
-
当为支持 AVX 的 x86 目标编译时,向量指令现在用于 128 位原子加载和存储。
-
对于 32 位 x86 目标,具有
memory_order_seq_cst
语义的 64 位原子加载和存储现在将发出内存排序指令。 -
删除了在 Boost.Atomic 1.73 中已弃用的
atomic<T>::storage()
访问器和atomic<T>::storage_type
类型。建议用户改用atomic<T>::value()
和atomic<T>::value_type
。
-
-
Beast:
-
添加
error_code
s 使用 source_location -
tcp_stream 使用计时器的正确执行器。
-
error_categories 使用数字 ID
-
file_body
支持 seek
-
-
ContainerHash:
-
为
std::nullptr_t
添加了hash_value
的重载。 -
为类似元组的类型添加了
is_tuple_like
和hash_value
的重载。 -
将字符串哈希更改为使用
mulxp1_hash
。这提高了质量和速度。
-
-
Core:
-
添加了带有
snprintf
、vsnprintf
及其wchar_t
对等项的可移植定义的boost/core/snprintf.hpp
头文件。 -
弃用了
boost/core/is_same.hpp
和boost::core::is_same
。该头文件将在未来版本中删除。建议用户改用 Boost.TypeTraits 或 C++ 标准库类型特征。 -
用
noexcept
标记了boost::ref
成员函数和关联方法。 -
用
noexcept
标记了boost::swap
函数,具体取决于该类型是否支持非抛出 swap 操作。 -
添加了
boost::core::launder
,std::launder
的可移植实现。 -
添加了
BOOST_CORE_ALIGNOF
,alignof
的可移植实现。 -
添加了
boost::core::max_align_t
,std::max_align_t
的可移植等效项,以及boost::core::max_align
,max_align_t
的对齐方式。 -
添加了
boost::core::memory_resource
,来自 C++17 的std::pmr::memory_resource
的可移植等效项。 -
添加了
boost/core/serialization.hpp
,一组原语,允许库为其类型实现 Boost.Serialization 支持,而无需包含 Serialization 头文件,从而使库依赖于 Serialization。 -
添加了
boost::data
,std::data
的实现。 -
添加了
boost::size
,std::size
的实现。 -
更新了
boost::span
以使用boost::data
,它添加了对从std::initializer_list
进行范围构造的支持。 -
添加了
boost::identity
,std::identity
的实现。此工具已从 Boost.Functional 移动。
-
-
文件系统:
-
修复了由于
path
转换构造函数对接受的参数过于宽松而可能导致的编译错误。 (#273) -
v4:
path::remove_filename
现在保留了尾部目录分隔符。 (#271) -
添加了
path::remove_filename_and_trailing_separators
,它从路径中删除文件名和前面的目录分隔符。此行为类似于 Filesystem v3 中的path::remove_filename
,但也适用于 v4。 -
添加了
path::replace_filename
,它替换路径中的文件名。 -
更新了库版本选择的实现,以避免 ODR 违规。 (#279)
-
在 Windows 上,为查询 SMBv1 共享中文件的文件属性添加了一个解决方法。以前,SMBv1 共享中的目录可能被报告为常规文件。这不影响 SMBv2 或更高版本。 (#282)
-
-
Histogram:
-
用
boost::core
中的实现替换detail::span
和detail::make_span
-
文档改进
-
在某些情况下保护
std::min
和std::max
的用法,由 Han Jiang 贡献(流行的 Windows 头文件非法设置了 min,max 宏,因此我们需要解决) -
添加了测试以捕获将来库中未受保护的 min,max 令牌的用法
-
修复了对最新 clang-14 和 gcc-11+ 中的推导指南的支持
-
-
JSON:
-
set_at_pointer
. -
boost::hash
支持。 -
调用方提供的序列化器存储。
-
value_to
支持std::optional
的缺失元素。 -
修复了解析器在转义字符内的暂停。
-
使 sentinel() 返回一个唯一指针。
-
-
Math:
-
已弃用 C++11 支持:我们现在要求 C++14 作为最低标准。我们最低测试的编译器版本现在是 Clang-5、GCC-5 或 MSVC-14.1。
-
添加了用于多项式求值的 Estrin 方法。
-
修复了非中心分布中的各种问题,以允许更大的非中心性,请参阅 939。
-
添加了 CMake 安装目标。
-
修复了 special_functions.hpp 以禁用任何无法在无异常环境中使用的内容。
-
使条件数计算在 C++14 中工作。
-
改进了 tanh_sinh 边界处理,请参阅 894。
-
添加了 Linux arm64、s390x 和 Apple M1 测试,修复了测试用例以处理 128 位长双精度浮点数。
-
改进了
constexpr
数学函数,以更好地处理无穷大和 NaN。 -
使积分器符合常量正确性。
-
修复了 tanh_sinh 积分器在函数下溢的情况,请参阅 898。
-
不要使用
std::cbrt
,因为某些平台仍然不支持它。 -
阻止非中心 T 引发虚假的 FE_INVALID 异常,请参阅 892。
-
修复了二项分布边缘情况。
-
改进了 ibeta 对非常小参数的处理,请参阅 884。
-
改进了 ibeta 对无穷大和 NaN 的处理,请参阅 878。
-
改进了 powm1 中的错误处理,请参阅 781。
-
改进了求根器括号,以便在指数超大或超小时更快地进行括号。
-
修复了求根边缘情况,请参阅 873。
-
许多杂项警告修复。
-
在使用需要 C++17 的功能时添加断言,以便在较低 std 版本中调用编译器时提供更好的错误消息。
-
-
Multi-index Containers:
-
序列化现在使用
unsigned long
而不是collection_size_type
,并且multi_index_container
序列化类版本已从 2 提升到 3 以反映此更改。对于特殊处理collection_size_type
值的自定义存档类型,读取旧存档可能会失败:如果发生这种情况,请全局定义宏BOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2
以确保读取操作的向后兼容性。 -
维护工作。
-
-
Multiprecision:
-
已弃用 C++11 支持:我们现在要求 C++14 作为最低标准。我们最低测试的编译器版本现在是 Clang-5、GCC-5 或 MSVC-14.1。
-
添加了新的前向声明头文件。
-
更新了 Eigen 互操作性,因此我们不再依赖 Eigen 的详细信息,请参阅 479。
-
添加 Cmake 安装目标。
-
修复了 cpp_dec_float 从独立情况下的字符串构造,以获得更好的错误处理,请参阅 499。
-
在 C++17 模式下删除冗余定义,请参阅 530。
-
修复了独立 itrunc 和 ltrunc 中的错误处理。
-
修复了在解析八进制字符串时可能未初始化的存储。
-
添加 arm64 和 s390x CI 测试。
-
为
powm
添加了一些缺失的表达式模板解包代码,请参阅 506。
-
-
PFR:
-
实现了
boost::pfr::is_implicitly_reflectable
和用于将聚合专门化为可反射或不可反射的机制,感谢 Denis Mikhailov 的 PR PR#111。 -
实现了
boost::pfr::get
,按聚合中元素的类型获取。 -
实现了
BOOST_PFR_ENABLED
宏以检测库对反射的支持,感谢 Denis Mikhailov 的 PR PR#86。 -
修复了缺失的终止字符,感谢 Denis Mikhailov 的 PR PR#114。
-
修复了旧编译器上
boost/pfr/config.hpp
的编译,感谢 Denis Mikhailov 的 PR PR#118。 -
修复了旧编译器中损坏的 C++17 结构化绑定的解决方法,感谢 Denis Mikhailov 的 PR PR#119。
-
避免 -Wzero-as-null-pointer-constant 警告,感谢 Markus F.X.J. Oberhumer 的 PR PR#117。
-
修复了多个拼写错误,感谢 Denis Mikhailov 的修复。
-
对文档进行了多次修复和改进。
-
-
Process:
-
在 V2 中添加了对外部进程的管理(仍处于实验阶段)
-
弃用了 V1 中的
wait_for
和wait_until
- 它们将在未来版本中删除!
-
-
Stacktrace:
-
修复了文档和注释中的拼写错误,感谢 Chocobo1 的 PR PR#132。
-
如果定义了
BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC
,则修复了backtrace_create_state
的多线程标志检测。
-
-
StaticString:
-
Boost.Core
string_view
和std::string_view
互操作性
-
-
Test:
-
修复了几个未使用的变量警告
-
修复了 sprintf 弃用警告
-
修复了
basic_cstring::rfind
中的未定义行为 -
通过 Github Actions 添加了 CI
-
-
URL:
-
添加了带有自动百分比编码的
url::format
-
URL 路由器示例
-
set_params
便利函数 -
支持隐式转换为
string_view
-
解析构造函数是隐式的
-
string_token::arg
具有虚拟析构函数和切片保护 -
支持
BOOST_URL_DISABLE_THREADS
-
改进和 Bug 修复
-
WIN32_LEAN_AND_MEAN 宏重新定义警告
-
比较区分不存在和空的组件
-
检测带有类似空端口段的
hier_part_rule
-
段比较,如同规范化在根目录之上工作一样
-
hier-part path-rootless 考虑无效段
-
当端口溢出时,端口作为数字设置为 0
-
ipv4 到字符串溢出检测算法
-
-
更新的工具
-
构建:
-
包括 B2 版本 4.9.4 的发布。
-
已测试的编译器
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 管理了此版本。