版本 1.73.0
版本 1.73.0
2020年4月28日 03:57 GMT
平台 | 文件 | SHA256 哈希 |
---|---|---|
unix | boost_1_73_0.tar.bz2 | 4eb3b8d442b426dc35346235c8733b5ae35ba431690e38c6a8263dce9fcbb402 |
boost_1_73_0.tar.gz | 9995e192e68528793755692917f9eb6422f3052a53c5e13ba278a228af6c7acf | |
windows | boost_1_73_0.7z | d2e7501bb04fe7abc09aa93f013ae997604286a882da1bd36ddd96ea1163ea71 |
boost_1_73_0.zip | 0909a79524f857ef54570ceef8f397cc0629202532cc997785479c7c08bbc2a4 |
已知问题
这些是库作者提供的补丁,发现得太晚以至于无法在发布版本中修复。请注意,它们尚未经过正常的测试流程。
-
Outcome
status_code_domain
断言移除 -
Beast 和协程
新库
-
Nowide: Windows 上具有 UTF-8 API 的标准库函数,来自 Artyom Beilis。
-
StaticString: 具有编译时固定容量和连续嵌入式存储的字符动态可调整大小的字符串,来自 Vinnie Falco 和 Krystian Stasiowski
更新的库
-
Align:
-
更新
aligned_alloc
以支持较旧的 mingw32。
-
-
Any:
-
通过不包含
<algorithm>
来加速编译。 -
维护工作,包括 CI 强化。
-
-
Asio:
-
修复了与 C++20 概念语法的兼容性。
-
将 POSIX 描述符类的移动构造函数标记为
noexcept
。 -
添加了
ssl::host_name_verification
类,它是ssl::rfc2818_verification
的直接替代品。ssl::rfc2818_verification
类已被标记为已弃用。由于此更改,SSL 支持现在依赖于 OpenSSL 1.0.2 中引入的函数。 -
添加了一个
ssl::context
构造函数来获取本机句柄的所有权。 -
使用以下方法更改了 C++ 语言版本检测gcc使用
__cplusplus
宏。 -
修复了端点的异步解析操作中的工作计数问题。
-
修复了
strand<>
转换构造函数和赋值运算符。 -
确保在 fork 后正确重启解析器。
-
修复了与当前 NetBSD 版本的兼容性。
-
移除了一些
async_read
重载中多余的处理程序需求检查。 -
更改了
ssl::context
类以传播来自add_certificate_authority
函数的非 EOF 错误。 -
修复了 Windows 特有的
thread_pool
析构函数挂起问题,该问题在池具有关联的 I/O 对象时发生。 -
更改了select反应器以在出错时重新创建“自管道技巧”套接字。这解决了 Windows 某些版本上的一个问题,在这些版本上,这些套接字在系统睡眠后断开连接。
-
修复了由于 C++98 中缺少引用折叠而导致的缓冲流中的编译错误。
-
更改了
priority_scheduler
示例以演示对shutdown()
和destroy()
的调用。 -
移除了一些不必要的空指针检查。
-
更改了 Windows 平台检测以将 TV 标题识别为 Windows 应用程序。
-
添加了一些 emscripten 兼容性补丁。
-
修复了
use_awaitable_t::as_default_on
函数中的编译错误。 -
将所有 boost.bind 占位符的使用更改为使用
boost::placeholders
命名空间。 -
修复了由于不正确的重载选择而可能在
async_compose
实现中发生的编译错误。 -
抑制了一些非虚析构函数警告。
-
各种文档修复和改进。
-
-
Assert:
-
添加了
source_location
。
-
-
Atomic:
-
实现了 C++20 中引入的
atomic_flag::test
操作。 -
atomic<T>
现在应该考虑T
的对齐要求,如果这些要求高于atomic
的内部存储要求,则会有所不同。 -
添加了静态断言,强制执行对与
atomic
和atomic_ref
一起使用的值类型T
的要求。这应该禁止将无效类型用作原子类型。 -
改进了内部锁池实现。池更大,并且锁选择考虑了原子对象对齐,这应减少线程争用的可能性。
-
修复了为 8 位和 16 位参数生成的
bit_test_and_*
操作生成的不正确的 x86 代码。其他架构不受影响。 -
如果
value_type
的对齐要求小于atomic
的内部存储要求,则修复了compare_exchange_*
操作中可能发生的未对齐内存访问。 -
boost/atomic/atomic.hpp
不再包含boost/atomic/atomic_flag.hpp
和boost/atomic/fences.hpp
,并且仅定义boost::atomic
类模板和相关的 typedef。显式包含其他头文件,或使用boost/atomic.hpp
来包含 Boost.Atomic 的所有部分。 -
atomic<T>::storage()
访问器和相关的atomic<T>::storage_type
类型已被弃用。相反,建议用户分别使用atomic<T>::value()
和atomic<T>::value_type
。用户可以定义BOOST_ATOMIC_SILENCE_STORAGE_DEPRECATION
以在过渡期间禁用弃用警告。弃用的部分将在未来的版本中删除。 -
移除了对
BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST
的支持。此宏用作过渡到 Boost.Atomic 1.67 中*_and_test
操作的更新返回值的助手,该版本在 1.73 发布前 2 年发布。
-
Beast:
-
这是一个维护更新。
-
Beast 动态缓冲区中嵌套的
mutable_data_type
已被弃用。 -
我们很想知道您或您的公司如何使用 Beast,请考虑将条目添加到 使用 Beast 的公司和个人 列表中。
-
请参阅完整的 发行说明,以获取完整的更改列表。
-
-
Conversion:
-
为引用添加了
boost::polymorphic_downcast
(感谢 Julien Delacroix 的补丁)。 -
重要的文档更新。
-
-
Dynamic Bitset:
-
修复了最大块限制定义中的可移植性问题。
-
-
Flyweight:
-
维护工作。
-
-
GIL:
-
已更改
-
移除了
extension/dynamic_image/reduce.hpp
,因为它未使用且可能未完成 (PR#466)。Lubomir Bourdev 和 Jaakko Jarvi 的论文 使用最小代码膨胀在泛型编程中实现高效运行时分派 中描述的技术的实现尝试。 -
移除了对 Boost.MPL、Boost.System 和 Boost.Test 的直接依赖。
-
开始移除用于编译时配置 I/O 扩展测试的公共宏,即
BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
和BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
。相反,如果构建了测试目标,它将无条件地构建其所有测试用例。
-
-
致谢
-
Samuel Debionne, Thiago Henrique Hüpner, Pranam Lashkari, Mateusz Loskot, Debabrata Mandal, Olzhas Zhumabek
-
-
IO:
-
使所有 IOS 状态保存器类不可复制。(Glen Fernandes)
-
在读取带引号的字符串时,正确处理从输入流首次读取时发生的错误。(Glen Fernandes)
-
为基于分隔符的连接实现了
ostream_joiner
。(Glen Fernandes) -
将
ostream_string
从 Utility 库重新定位到 IO 库,作为ostream_put
。 -
正确处理带引号输出中的流宽度和填充。(Glen Fernandes)
-
优化带引号的输出以直接写入流缓冲区。(Glen Fernandes)
-
Glen Fernandes 成为 IO 库的维护者。
-
-
Log:
-
新功能
-
当日志核心中未注册任何 sink 时,在琐碎日志记录中使用的默认 sink 现在会在每个日志记录后自动刷新输出。(#103)
-
core::flush
现在对用于琐碎日志记录的默认 sink 执行刷新,当未注册任何 sink 时。
-
-
错误修复
-
为某些 syslog API 实现(例如 glibc)添加了解决方法,这些实现不会在
openlog
调用中保存应用程序标识字符串。此类实现在每次syslog
调用时都可能访问已释放的内存,从而导致未定义的行为。(#97) -
修复了在每月的特定日期(例如
rotation_at_time_point(boost::gregorian::greg_day(1))
) 进行日志文件轮换可能会被静默忽略且不会发生的问题。(#98) -
修复了如果尚未写入任何日志记录且设置了目标文件名模式,则
text_file_backend::rotate_file
可能会抛出异常的问题。 -
将库的各种组件移植到
std::allocator_traits
,以提高与 C++20 分配器的兼容性。 -
修复了在 MSYS2 Cygwin 环境中构建时发生的编译错误。(#102)
-
-
有关更多详细信息,请参阅 更改日志。
-
-
Math:
-
重要提示:C++03 支持现已弃用,并将于 2021 年 3 月移除。
-
添加了三次埃尔米特插值。
-
添加了修正的 Akima 插值。
-
添加了 PCHIP 插值。
-
添加了五次埃尔米特插值。
-
向许多分布添加了熵。
-
允许两个端点相等的琐碎正交情况,并且允许交换边界。
-
修复了 exp_sinh 正交以处理非本机范围上的复数类型。
-
修复了 factorial.hpp 中的各种编译器警告。
-
在定时 pFq 计算中使用 std::chrono 而不是 boost::chrono。
-
移除了很多旧的 boost::mpl 依赖项,以改进 constexpr 支持。
-
-
Mp11:
-
添加了
mp_unique_if
(由 Kris Jusiak 贡献) -
添加了
mp_flatten
-
添加了
mp_rotate_left
、mp_rotate_right
(由 Duncan Barber 贡献) -
添加了
mp_compose
-
添加了
mp_power_set
-
添加了
mp_partial_sum
-
添加了
mp_iterate
-
-
Multi-index Containers:
-
multi_index_container
现在是AllocatorAware
。 -
内部
KeyFromValue
、Compare
、Hash
和Pred
对象的交换现在在std::swap
和 ADL 候选项之间选择适当的swap
函数,这符合 [swappable.requirements] 中的标准规范(问题 #29)。 -
提供了一些内部复制构造函数和赋值运算符,这些构造函数和运算符的默认隐式定义在 C++11 及更高版本中已弃用 ([depr.impldec]),一些编译器对此发出警告。
-
维护工作。
-
-
Multiprecision:
-
重要提示:将 C++03 支持标记为已弃用,并计划在 2021 年移除。
-
cpp_int 的重大更新添加了更快的 Karatsuba 和 Coomba 乘法例程。
-
修复了 gmp_rational 到
long double
和__float128
的转换,修复了 #178。 -
修复了 libtommath 支持以使其与最新的 libtom 版本一起工作。
-
修复了一些与最新 Intel C++ 编译器的不兼容性。
-
修复了最新 MSVC 版本的
constexpr
算术支持。
-
-
Outcome:
-
增强功能
-
大大提高了 clang 编译的基于 Outcome 的代码的性能。Outcome 的状态位字段的先前实现使 clang 的优化器感到困惑,这导致了低质量的代码生成。与大多数代码生成问题不同,这在真实代码的经验基准测试中显而易见,如 P1886 错误速度基准测试 所示。
-
better_optimisation
Outcome v2.2.0 未来分支的安全部分已合并到 Outcome v2.1.3,其中包括新的状态位字段实现。这似乎不会使 clang 的优化器感到困惑,并且 clang 9 生成的代码通常在各种预定义的用例中击败 GCC 9 的代码。 -
现在对每个提交测试了可安装性。由于独立 Outcome 的可安装性(例如
make install
)比理想情况更频繁地自行破坏,因此现在在 CI 上对每个提交测试可安装性。
-
-
-
PolyCollection:
-
抑制了
boost::poly_collection::for_each
中潜在的冗余移动警告。 -
修复了一个错误,该错误导致在使用非传播、不相等分配器的情况下,在集合之间进行分配器扩展的移动构造和移动赋值时,元素被复制而不是移动。
-
对于 GCC 4.8 随附的旧版 libstdc++-v3(Clang 也可以使用),分配器扩展的移动构造不再衰减为分配器扩展的复制构造。
-
-
Stacktrace:
-
修复了 msvc-9 构建
-
ThrowException:
-
添加了
throw_exception
的重载,它接受boost::source_location
对象。 -
注意:使用禁用异常的
BOOST_THROW_EXCEPTION
的项目将需要添加此新重载的定义。
-
-
TTI:
-
为来自 gcc 和 vc++ 的更新的 C++ 编译器版本以及所有版本的 clang 添加了函数模板的内省。14.0 之前的旧版本 vc++ 和 4.8 之前的 gcc 可能会失败。
-
为 struct/class、enum 和 union 类型的元素添加了特定的内省,它可用于比一般的“类型”内省更精细的内省。
-
-
TypeIndex:
-
维护工作,包括与 inspect 工具的 CI 集成。
-
-
Utility:
-
ostream_string
工具已从 Utility 库移动到 IO 库,作为ostream_put
。
-
-
Variant2:
-
添加了对
std::hash
、boost::hash
的支持。 -
当
T...
中的所有类型都是平凡类型时,variant<T...>
现在是平凡类型。这通过使其能够传递到函数和从函数返回寄存器来提高性能。
-
更新的工具
测试的编译器
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
-
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, 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
-
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
-
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 管理了此版本。