版本 1.76.0
版本 1.76.0
2021 年 4 月 16 日 21:05 GMT
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_76_0.tar.bz2 | f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41 |
boost_1_76_0.tar.gz | 7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca | |
windows | boost_1_76_0.7z | 88782714f8701b6965f3fce087a66a1262601dd5ccd5b2e5305021beb53042a1 |
boost_1_76_0.zip | 0fd43bb53580ca54afc7221683dfe8c6e3855b351cd6dce53b1a24a7d7fbeedd |
新库
-
无新库
已更新的库
-
Asio:
-
添加了
ip::scope_id_type
类型别名。 -
添加了
ip::port_type
类型别名。 -
为 IP 地址添加了
std::hash
特化。 -
为
ip::basic_endpoint<>
添加了std::hash
特化。 -
重构了 SFINAE 的使用以提高编译时间。
-
为自定义点添加了友元支持,并将大多数自定义设为私有。
-
将
any_io_executor
更改为“强 typedef”风格的类。 -
修复了
experimental::as_single
以便与处理程序钩子弃用一起使用。 -
确保在所有平台上清理 pthread 条件变量属性。
-
阐明了关于套接字和描述符的线程安全说明。
-
确保在 macOS/FreeBSD 上
socket()
失败时不会覆盖errno
。 -
修复了移动分配时
io_context
和thread_pool
执行器的任务跟踪。 -
确保内部
call_stack
对象仅从实现文件中访问。 -
修复了 I/O 对象移动分配,以确保执行器处于有效状态。
-
修复了 MSVC 上函数默认模板参数的编译器支持检测。
-
阻止了
blocking.always
属性与strand<>
一起使用,因为它没有产生正确的语义。 -
移除了已弃用的文件asio/impl/src.cpp.
-
-
Beast:
-
此更新带来了小的错误修复和改进的 CI 报告。
-
我们很想知道您或您的公司如何使用 Beast,请考虑在 使用 Beast 的公司和个人 列表中添加条目。
-
有关更改的完整列表,请参阅完整的 发行说明。
-
-
Bind:
-
添加了对将标准 C++11 占位符与
boost::bind
一起使用的支持。 -
更新
boost::apply
以使用可变参数模板和完美转发。
-
-
Container:
-
在所有容器中添加了 [[no-discard]] 属性,以捕获与未使用的返回值相关的错误。
-
将默认标准异常类替换为 Boost.Container 自己的类,大大减少了包含的文件开销。示例:在 MSVC 19 中,预处理后的
boost/container/vector.hpp
文件大小从 1.5MB 减少到 930KB。如果您仍然想使用标准异常类,可以在使用任何 Boost.Container 类之前定义BOOST_CONTAINER_USE_STD_EXCEPTIONS
。
-
-
Core:
-
在兼容的引用包装器之间添加隐式转换。
-
添加了
boost/core/cmath.hpp
,它是来自<cmath>
的浮点分类函数的便携式实现。 -
添加了
boost/core/bit.hpp
,它是 C++20 标准头文件<bit>
的便携式实现。 -
修复了 C++20 下字符类型的
BOOST_TEST_EQ
、BOOST_TEST_NE
。 -
修改了分配器访问实用程序(现在支持 VS2013,并且没有使用
allocator_traits
的解决方法。)
-
-
DLL:
-
重大变更:
boost::dll::import
已重命名为boost::dll::import_symbol
,以避免与 C++20import
关键字冲突。 -
更新了文档,包括 FAQ 部分。
-
-
Geometry:
-
重大变更
-
移除了策略 convex_hull::graham_andrew。
-
-
GIL:
-
重大变更:在下一个版本中,我们将放弃对 GCC 5 的支持。我们还将把所需的最低 C++ 版本从 C++11 更改为 C++14。
-
-
Intrusive:
-
减少了编译时依赖
-
linear_slist_algorithms
在返回时使用简单的 node_ptr 而不是 std::pair。 -
list
/slist
使用operator <
/operator ==
而不是std::equal_to
/std::less
。
-
-
-
Interprocess:
-
为提供本机宽字符 API 的操作系统(例如 Windows)中命名的资源添加了
wchar_t
API 支持。以下类已更新为wchar_t
名称支持-
file_mapping
-
managed_mapped_file
-
managed_shared_memory
-
managed_windows_shared_memory
-
shared_memory_object
-
windows_shared_memory_object
-
file_lock
-
named_condition
-
named_condition_any
-
named_mutex
-
named_recursive_mutex
-
named_semaphore
-
named_sharable_mutex
-
named_upgradable_mutex
-
message_queue
-
-
添加了
BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
宏选项,以禁用为进程共享同步原语使用通用仿真代码,而不是使用本机 POSIX 或 Winapi 函数。 -
修复了错误
-
-
Log:
-
错误修复
-
更正了
asynchronous_sink
前端的unbounded_fifo_queue
策略中使用的线程安全日志记录队列实现中的形式竞争条件。TSAN 可以检测到该竞争,但在大多数当前的 CPU 架构和编译器上,它并不是真正的问题。 (#139) -
复制带有通道属性的记录器(例如
channel_logger
)时,通道属性现在从原始记录器深层复制。这意味着修改新记录器中的通道将不再影响原始记录器。 -
将模板参数中
std::allocator<void>
的使用替换为新的标记类型boost::log::use_std_allocator
,以消除 libc++ 关于前者在 C++17 及更高版本中已弃用的警告。该标签指示实例化模板应在内部使用std::allocator
的特化来分配动态内存,因此更改没有功能影响。 (#141) -
Boost.Log 不再在 MinGW 和 MinGW-w64 上定义
__MSVCRT_VERSION__
宏。定义此宏导致与 UCRT 不兼容,UCRT 在最近的 MinGW-w64 中可用作一个选项。 (PR#149)
-
-
有关更多详细信息,请参阅 changelog。
-
-
Math:
-
重大变更:现在已删除 C++03 支持,现在需要使用符合 C++11 或更高版本的编译器才能使用此库。
-
添加了 Z 检验。
-
为单变量和双变量统计添加了执行策略支持:启用并行执行(需要 C++17 和
<execution>
)。 -
对 CI 测试进行了重大更新/改进。
-
双变量统计现在支持整数。
-
T 检验现在支持整数。
-
线性回归现在支持整数。
-
修正了 beta 分布在端点的 PDF。
-
修正了在某些多精度情况下对斯特林近似的使用,修复了 #396。
-
消除了 clang 上的 -Wimplicit-int-float-conversion 警告。
-
修复了四元数/八元数中的一些 constexpr 问题。
-
对 tanh_sinh 积分进行了小的性能修复。
-
更新了超几何函数的内部缩放,以允许使用多精度类型的 64 位(long long)指数。
-
-
Nowide:
-
修复了在使用 seek 或 sync 函数并且换行符被转换(例如在 Windows 上)时,文本文件流丢弃字符的问题。
-
修复了当重用(通过
open
)已关闭的文件流时,可能发生的 use-after-free 错误。 -
修复了当使用已移动或交换的文件流时,可能发生的无效内存访问,此时源具有回退字符或设置为无缓冲模式。
-
通过不定义
__MSVCRT_VERSION__
来修复与 ucrt 运行时的兼容性。 -
已知问题:文本文件的读取性能下降。二进制文件和写入不受影响。
-
-
Optional:
-
修复了 MSVC 警告 C4702。
-
-
Outcome:
-
公告
-
重大变更:经过一年和三个主要的 Boost 版本宣布这一即将到来的变更后,这是 v2.2 分支的第一个版本。此分支对 Boost 1.75 及更早版本中提供的 Outcome v2.1 进行了一些重大破坏性更改,请参阅文档了解详细信息。
-
-
增强
-
VS2019.8 更改了启用协程的方式,导致 Outcome 无法在该编译器上编译。
-
如果在 C++ 20 上,我们现在使用 C++ 20 的
[[likely]]
而不是编译器特定的标记来指示 TRY 何时可能成功或失败。 -
重大变更:以前,
spare_storage(const basic_result|basic_outcome *) noexcept
的值未通过BOOST_OUTCOME_TRY
传播,这会导致在构造错误结果时捕获的堆栈回溯在每个TRY
点被丢弃。通过向success_type<T>
和failure_type<T>
以及auto success(T &&, ...)
和auto failure(T &&, ...)
添加可选的spare_storage
,此问题已得到解决。
-
-
-
Predef:
-
版本 1.13
-
添加
ARCH_PPC_64
predef。 -
修复
ARCH_WORD_BITS*
重定义警告/错误。 -
从 Konstantin Ivlev 添加
ARCH_E2K
,Elbrus 2000 架构。 -
修复了不处理高于 10.x 版本的最近的 C++ 版本的问题。
-
版本 1.12
-
切换为在 OpenBSD 上使用 endian.h 头文件。(Brad Smith)
-
修复了不处理高于 9 版本的最近的 stdcxx 版本的问题。
-
修复了直接包含子 BSD OS 头文件导致重定义警告的问题。
-
添加了直接包含所有头文件的 CI 测试。
-
添加了 FreeBSD 上 clang 和 gcc 的 CI 测试。
-
添加了
WORD_BITS
一组预定义,以检测架构字大小。初始实现灵感来自 Mikhail Komarov 的提交。 -
为 Cygwin 32 和 64 添加了 CI 测试。
-
-
PropertyTree:
-
Property Tree 有了新的维护者。
-
修复了已弃用的 Boost.Bind 功能的使用。
-
修复了指向 Wikipedia 的链接。
-
使用 BOOST_OVERRIDE 来修复 GCC 警告。
-
添加了广泛的 CI 测试。
-
-
Regex:
-
Regex 现在是仅头文件的,C++03 模式除外。
-
现在已弃用对 C++03 的支持。
-
该库现在可以“独立”使用,无需其余的 Boost 存在。
-
-
TypeTraits:
-
修复了 Visual Studio 托管代码项目。
-
-
Variant2:
-
改进了双缓冲情况下的生成代码。
-
更新工具
-
构建:
-
包括 B2 版本 4.4.1 的发布。
-
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang: 3.0, 4.0.1, 6.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
-
GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
-
GCC, C++17: 7.3.0, 8.0.1
-
Intel, C++14: 18.0
-
-
OS X
-
Apple Clang: 9.0.0, 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++17: 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++1z: 9.0.0
-
Apple Clang, C++2a: 10.0.0, 11.0.0
-
-
Windows
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
-
GCC, C++17: 7.1.0, 7.2.0, 7.3.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
Boost 的其他测试编译器包括
-
Linux
-
Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
-
GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
-
GCC, C++17: 7.3.0, 8.0.1
-
Intel, C++14: 18.0
-
-
OS X
-
Apple Clang: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++17: 9.1.0, 10.0.0
-
Apple Clang, C++1z: 9.0.0
-
Apple Clang, C++2a: 10.0.0
-
-
Windows
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
-
GCC, C++17: 7.1.0, 7.2.0, 7.3.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
致谢
Marshall Clow, Michael Caisse 和 Glen Fernandes 管理了此版本。