版本 1.67.0
版本 1.67.0
2018 年 4 月 14 日 20:37 GMT
平台 | 文件 | SHA256 哈希 |
---|---|---|
unix | boost_1_67_0.tar.bz2 | 2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba |
boost_1_67_0.tar.gz | 8aa4e330c870ef50a896634c931adf468b21f8a69b77007e45c444151229f665 | |
windows | boost_1_67_0.7z | 1cd94f03a71334a67d36f5161b57f5931e0cd6ecf726d7aca8bd82a3be720b74 |
boost_1_67_0.zip | 7e37372d8cedd0fd6b7529e9dd67c2cb1c60e6c607aed721f5894d704945a7ec |
第三方下载
已知问题
这些是库作者提供的补丁,它们发现得太晚,无法在此版本中修复。请注意,它们尚未经过正常的测试流程。
新库
更新的库
-
Asio:
-
为
basic_socket_acceptor::get_option
添加了缺失的 const 限定符。 -
解决了某些版本的 gcc 中发生的解析错误。
-
修复了教程中损坏的代码示例。
-
添加了新的实验性功能。(请注意,“实验性”功能可能会在后续版本中更改,恕不另行通知。)
-
添加了
experimental::detached
完成令牌。 -
添加了
experimental::redirect_error
完成令牌。 -
添加了
experimental::co_spawn
工具,用于与协程技术规范集成。 -
更新了超时示例以使用最新功能。
-
使用了
asio::steady_timer
而不是asio::deadline_timer
。 -
使用了
asio::dynamic_buffer
而不是asio::streambuf
。 -
对阻塞客户端使用了定时
asio::io_context::run_for()
函数。 -
添加了展示用于使用超时进行阻塞的自定义完成令牌的示例。
-
-
修复了在定义
BOOST_ASIO_NO_DEPRECATED
时编译单元测试的问题。 -
更改了套接字 iostreams 默认使用 chrono,以修复与 Networking TS 的兼容性。定义
BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM
以在basic_socket_streambuf
和basic_socket_iostream
中启用旧的 Boost.Date_Time 接口。 -
更新了示例以使用 chrono 而不是 Boost.Date_Time。
-
修复了
is_dynamic_buffer
特性中不正确的成员函数检测器。 -
修复了与已弃用的
handler_type
的async_result
不兼容问题。 -
在 SSL 流实现中添加了缺失的移动优化。
-
修复了不正确的
basic_resolver_results::value_type
typedef。 -
修复了在定义
SSL_OP_NO_COMPRESSION
时某些 OpenSSL 版本出现的编译错误。 -
更改了
add_certificate_authority
以处理捆绑中的多个证书。 -
通过使用
std::invoke_result
而不是std::result_of
,消除了 MSVC 的弃用警告。 -
更改为对 C++17 或更高版本使用
std::string_view
,对 C++14 使用std::experimental::string_view
。定义预处理器宏BOOST_ASIO_DISABLE_STD_STRING_VIEW
以在 C++17 模式下编译时强制使用 std::experimental::string_view(假设它可用)。 -
确保在
enable_if
测试中使用之前,DynamicBuffer
模板参数已衰减。 -
更改了文档以区分旧的完成处理程序(仍然需要是 CopyConstructible)和新的 MoveConstructible 处理程序。
-
抑制了缓冲区调试支持中的已丢弃返回值警告。
-
修复了
basic_yield_context
以便与包含引用参数的完成签名一起使用。 -
确保使用
spawn()
启动的有栈协程正确存储其函数和处理程序参数的衰减副本。 -
修复了一些与 Android 的兼容性问题。
-
向 Jamfiles 添加了交叉编译支持。
-
修复了示例中的一些小的可移植性问题。
-
-
Atomic:
-
重大更改: 将 Boost 1.66 中添加的
(op)_and_test
操作的结果更改为相反 - 如果操作结果非零,则函数现在返回true
。这与 Boost.Atomic 和 C++ 标准库中的其他test
方法一致。用户可以在编译代码时定义BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST
,以便在使用更改的函数的任何地方发出警告。这样,用户可以找到需要更新的代码。(#11) -
更新以支持 C++2a。在支持范围枚举的 C++11 编译器上,
memory_order
枚举现在是范围的,并且包含具有较短名称的常量,如acquire
、release
或seq_cst
(即,用户可以使用memory_order::acquire
而不是memory_order_acquire
)。还提供了旧的常量以实现向后兼容性。 (P0439R0) -
更新以支持 C++2a。为浮点类型添加了原子操作的实验性支持。除了常规操作之外,还支持
add
、sub
、negate
操作及其fetch_(op)
和opaque_(op)
版本。可以使用新宏BOOST_ATOMIC_FLOAT/DOUBLE/LONG_DOUBLE_LOCK_FREE
测试无锁属性。对浮点类型的支持是可选的,可以通过定义BOOST_ATOMIC_NO_FLOATING_POINT
来禁用。 (P0020R6) -
添加了新的实验性操作
-
negate_and_test
和complement_and_test
,它们执行取反或按位求反,如果结果非零,则返回true
。 -
add
、sub
、negate
、bitwise_and
、bitwise_or
、bitwise_xor
、bitwise_complement
操作,它们执行操作并返回其结果。
-
-
对于泛型
atomic<T>
特化,如果T
的默认构造函数是平凡的,则默认构造函数现在是平凡的。 -
已更新
atomic<T>
的内部实现,以避免由有符号整数溢出引起的未定义行为。按照 C++ 标准的要求,该库在内部使用有符号整数的二进制补码表示形式,并根据溢出规则。目前,该库要求原生有符号整数类型也使用二进制补码表示形式(但没有定义的溢出语义)。 -
改进了 Clang 支持。特别是,修复了 DCAS 不是无锁的,并修复了在 32 位 x86 上生成的可能不正确的代码。
-
改进了 MinGW 支持。对于最高版本为 4.6 的 gcc 版本,修复了在 x86 上编译 DCAS 的问题。
-
在 x86 PIE 代码中,asm 块现在保留
ebx
值。
-
-
上下文:
-
日期时间:
-
纤程:
-
#128: 使用 condition_variable::wait_for 时断言 "! ctx->ready_is_linked()"
-
#132: 致命错误:找不到 'stdexception' 文件
-
#141: boost::fibers::async 问题
-
#146: 删除远程就绪队列自旋锁的不必要锁定
-
#153: 文档:将 set_ready() 替换为 schedule()
-
#154: 文档化通道上的迭代器
-
#155: this_fiber 被错误地记录为 boost::fibers 的成员
-
#156: 许多示例都在使用它们自己的 barrier.hpp
-
#158: 将 BOOST_FIBERS_DECL 添加到 work_stealing 类
-
#162: 删除定时等待操作的 use-coutner 增量
-
#166: 删除 schedule() 中对 wait_is_linked() 的断言
-
#167: 仅当 future 是从 shared_state 创建时才调用 shared_state::owner_destroyed()
-
#168: fiber/doc/installing.qbk 不是最新的
-
-
几何:
-
改进
-
新的地图投影和 SRS 变换表示(由于潜在的接口更改,目前未记录)。
-
新的 densify() 算法。
-
不再使用 std::iterator (感谢 Daniela Engert)。
-
不再在 rtree 中直接使用分配器。替换为 boost::container::allocator_traits (感谢 Daniela Engert)。
-
默认的 rtree 分配器更改为 boost::container::new_allocator,以便仍然在 C++03 中使用 boost::container::allocator_traits 支持移动语义模拟。
-
区域策略接口已更改。这可能是一个重大更改。
-
可以将半径或球体传递到球形策略中。
-
添加了点-盒和盒-盒球形和地理距离() 策略。
-
简化(多)边形将丢弃 2 个点的输出环或(对于闭合多边形)3 个点的输出环,但它会尝试避免创建这些环
-
简化(多)边形将从输出中省略空的内部环或多边形
-
-
Bugfixes
-
在 length() 算法中添加缺少的策略解析,影响 Variant 支持。
-
简化(多)边形现在简化闭合点
-
-
行为变化
-
简化(多)边形现在通常会在简化之前旋转输入环,以在其凸包上选择一个非共线点。这改进了输出。
-
-
-
区域设置:
-
除了 C++2003
auto_ptr
之外,还增加了对unique_ptr
接口的支持 - 为了支持 C++2017,现在可以使用BOOST_LOCALE_HIDE_AUTO_PTR
定义从接口中删除auto_ptr
并防止已弃用警告。 -
修复了 ICU >60.1 的测试问题
-
修复了 solaris 构建
-
修复了优化的构建中奇怪的 FreeBSD/clang 问题。可能是编译器解决方法
-
针对由于 932 代码页 codecvt 问题导致 MSVC 测试失败添加了解决方法
-
修复了错误 6851、12572、12453
-
修复了
icu/date_time
中失败时缺少抛出的错误 -
再次修复了针对 Boost.Thread v4 的构建
-
修复了 ICU 后端格式化中的周年份而不是年份
-
修复了 ICU 56.1 及更高版本的格式化测试
-
-
日志:
-
提高了与 C++17 的兼容性:使用
allocator_traits
来处理分配器,而不是直接访问其成员。 -
通过更新库 ABI 命名空间定义,提高了与 gcc 7 及更高版本的兼容性。
-
为“TextFile”接收器的“Append”配置文件参数添加了文档。该参数之前已支持,只是缺少文档。
-
-
数学:
-
添加朴素蒙特卡洛积分支持。
-
添加切比雪夫插值例程。
-
-
多索引容器:
-
避免使用 C++17 中已弃用的
std::allocator
成员。由 Daniela Engert 贡献。 -
维护修复。
-
多精度:
-
重大更改: 当将多精度整数转换为较窄的类型时,如果该值太大(或为负数)而无法容纳在较小的类型中,则结果将是目标类型的最大值(或最小值)。这始终是预期的行为,但以前的强制执行有些随意。如果您真的只想获取值的低 N 位,那么您需要在转换之前将其屏蔽掉,例如:
static_cast<unsigned>(~static_cast<unsigned>(0) & my_value)
。请注意,从技术上讲(为了避免未定义的行为),您也应该对内置整数类型执行相同的操作。请参阅 #13109。 -
修复了十进制到有理数类型转换中的错误(零需要特殊处理),请参阅 #13148。
-
修复了从 cpp_bin_float 到更宽的内置整数类型的转换,请参阅 #13301。
-
改进了 cpp_bin_float exp 函数中使用的性能启发式。
-
修复了当指数类型比 int 更宽时 floor/ceil 和 cpp_bin_float 中的错误,请参阅 #13264。
-
当目标类型已经可以从此类型构造时,禁用显式转换运算符,请参阅 #30。
-
修复了对 MPIR-3.0 新更改的支持,请参阅 #13124。
-
-
PolyCollection:
-
维护修复。
-
-
Python:
-
库名称现在包含用于编译它的 Python 版本的版本后缀。例如,使用 Python 2.7 编译的变体将生成库名称
boost_python27
和boost_numpy27
等。与 Boost.Build 中的相关修复相结合,这意味着现在可以在单个构建过程中为多个 Python 版本构建变体。
-
-
Spirit:
-
Spirit.X3
-
重大更改: 删除了
with_context
( #239) -
CR+LF 行在
error_handler::position()
中被错误地计数 ( #248) -
修复了解析到关联容器中 ( #289)
-
修复了
uint_parser<signed T>
中的溢出问题 ( #297) -
通过使用解决方法添加了 VS2015 Update 3 支持 ( #308)
-
修复了与 Qi 的包含保护名称冲突 ( #313)
-
重新启用了
fusion::map
支持 ( #330) -
取消引用单个项目视图而不是解包序列 ( #340)
-
防止
parse_nan
取消引用超出范围的迭代器 ( #351) -
使用特征来测试容器是否为空 ( #355)
-
-
Spirit V2
-
修复了顺序或运算符中未定义的行为。基础解析器的执行顺序取决于编译器 ( #310)
-
Spirit.Qi
-
-
Stacktrace:
-
在某些平台上,Windows 操作系统上的异步安全转储到文件会导致挂起,现在已禁用 #33。鼓励用户更新到最新的 Boost 版本。
-
现在使用 ContainerHash 库来减少依赖关系。
-
-
TypeIndex:
-
现在使用 ContainerHash 库来减少依赖关系。
-
小的修复 (包括 #17)
-
-
TypeTraits:
-
添加了新特征
detected
,detected_or
,is_detected
,is_detected_convertible
,is_detected_exact
,is_complete
。 -
为检测二元运算符添加了极大改进的代码。
-
为需要完整类型作为参数的 trait 添加了完整性断言:这可以防止各种 trait 从不完整类型中给出错误的结果。
-
修复了 mpl 兼容性的小问题,请参阅 #12212。
-
添加宏以指示
is_constructible
何时完全实现,请参阅 #12003。 -
更新
is_function
和is_member_function_pointer
以便与 C++17 noexcept 规范正确工作。 -
为
is_default_constructible
和std::pair
添加了解决方法。 -
为 pre-C++11 编译器上的
is_nothrow_swappable
添加了回退。
-
-
实用工具:
-
重大更改:
<boost/utility.hpp>
头文件不再包含boost::next
和boost::prior
,因为它们已移至 iterator 模块。请改为包含<boost/next_prior.hpp>
。不鼓励使用<boost/utility.hpp>
的其他用法,最好使用特定功能的头文件。
-
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang:3.0、4.0.1、5.0.1
-
Clang,C++0x:3.0
-
Clang,C++11:3.0、3.1、3.2、3.3、3.4、4.0.1、5.0.1
-
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.1
-
Clang,C++17:5.0.1
-
GCC:4.4.7、4.5.3、4.6.3、5.4.0、7.2.0
-
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、7.2.0
-
GCC,C++14:5.4.0、5.4.1、6.3.0、6.4.0、7.1.0、7.2.0、7.3.0
-
GCC,C++17:7.2.0
-
Intel,C++14:18.0
-
-
OS X
-
Clang:9.0.0
-
Clang,C++11:9.0.0
-
Clang,C++14:9.0.0
-
Clang,C++1z:9.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、7.1.0
-
Visual C++:7.1、8.0、9.0、10.0、11.0、12.0、14.0、14.1
-
Boost 的其他测试编译器包括
-
Linux
-
Clang:3.0、3.8.1、4.0.1、5.0.1
-
Clang,C++0x:3.0
-
Clang,C++11:3.0、3.1、3.2、3.3、3.4、4.0.1、5.0.1
-
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.1
-
Clang,C++17:5.0.1
-
GCC:4.4.7、4.5.3、4.6.3、4.7.2、4.9.2、5.4.0、7.2.0
-
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、7.2.0
-
GCC,C++14:5.4.0、5.4.1、6.3.0、6.4.0、7.1.0、7.2.0、7.3.0
-
GCC,C++17:7.2.0
-
Intel,C++14:18.0
-
-
OS X
-
Clang:9.0.0
-
Clang,C++11:9.0.0
-
Clang,C++14:9.0.0
-
Clang,C++1z:9.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、7.1.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
-
致谢
Beman Dawes、Daniel James、Vladimir Prus 和 Marshall Clow 管理了此版本。