版本 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
更改为“强类型定义”风格的类。 -
修复了
experimental::as_single
以使其与处理程序钩子弃用一起工作。 -
确保在所有平台上清理 pthread 条件变量属性。
-
阐明了套接字和描述符的线程安全注意事项。
-
确保如果 macOS/FreeBSD 上的
socket()
失败,则不会覆盖errno
。 -
修复了移动赋值时
io_context
和thread_pool
执行程序的 work tracking。 -
确保仅从实现文件访问内部
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
,以消除有关前者在 C++17 及更高版本中已弃用的 libc++ 警告。该标签指示实例化的模板应在内部使用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。
-
修正了在某些多精度情况下 Stirling 近似的使用,修复了 #396。
-
消除了 clang 上的 -Wimplicit-int-float-conversion。
-
修复了 quaternion/octonion 中的一些 constexpr 问题。
-
tanh_sinh 积分的次要性能修复。
-
更新了超几何函数内部缩放,以允许使用多精度类型的 64 位(long long)指数。
-
-
Nowide:
-
修复了当使用 seek 或 sync 函数并且转换了换行符(例如在 Windows 上)时,文本文件流字符的丢弃问题
-
修复了重用(通过
open
)已关闭的文件流时潜在的 use-after-free 错误 -
修复了当使用已移动或交换到源具有 put-back 字符或设置为非缓冲模式的文件流时,潜在的无效内存访问
-
通过不定义
__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
来修复。
-
-
错误修复
-
Boost.Outcome 现在应该可以使用定义的
BOOST_NO_EXCEPTIONS
进行编译。感谢 Boost.Exception 的维护者 Emil 为我做的更改,Boost.Outcome 现在应该可以在全局禁用 C++ 异常的情况下进行编译。您将无法使用boost::exception_ptr
,因为它在全局禁用 C++ 异常时无法包含。 -
重大更改 #244 令人震惊的是,自此库创建以来,
BOOST_OUTCOME_TRY
对于某些边界情况代码一直被破坏,这需要在 TRY 的工作方式上进行重大更改。有关更多详细信息,请参阅 文档中的 changelog。
-
-
-
Predef:
-
版本 1.13
-
添加了
ARCH_PPC_64
预定义。 -
修复了
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:
-
改进了双缓冲情况的生成代码。
-
更新的工具
-
Build:
-
包括 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 管理了此版本。