版本 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
时单元测试无法编译的问题。 -
更改了套接字 iostream 以默认使用 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
特征中不正确的成员函数检测器。 -
修复了
async_result
与已弃用的handler_type
的不兼容性。 -
在 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 支持。 对于 gcc 4.6 及更早版本,修复了 x86 上 DCAS 的编译。
-
在 x86 PIE 代码中,asm 块现在保留
ebx
值。
-
-
Coroutine2:
-
#13:如果 pull 协程在第一次进入时抛出异常,则不会重新抛出异常
-
-
Fiber:
-
#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::owner_destroyed()
-
#168:fiber/doc/installing.qbk 不是最新的
-
-
Geometry:
-
改进
-
新的地图投影和 SRS 变换表示(由于潜在的接口更改,目前未记录在案)。
-
新的 densify() 算法。
-
不再使用 std::iterator(感谢 Daniela Engert)。
-
不再直接在 rtree 中使用分配器。 替换为 boost::container::allocator_traits(感谢 Daniela Engert)。
-
默认 rtree 分配器更改为 boost::container::new_allocator,以便仍然在 C++03 中使用 boost::container::allocator_traits 支持移动语义模拟。
-
区域策略接口已更改。 这可能是一个重大更改。
-
半径或 Sphere 可以传递到球形策略中。
-
添加了点-框和框-框球形和地理距离 () 策略。
-
简化(多边形)将丢弃 2 个点或(对于闭合多边形)3 个点的输出环,但它会尝试避免创建这些环
-
简化(多边形)将从输出中省略空内部环或多边形
-
-
Bugfixes
-
在 length() 算法中添加了缺失的策略解析,影响 Variant 支持。
-
简化(多边形)现在简化了闭合点
-
-
行为变更
-
简化(多边形)现在通常在简化之前旋转输入环,以在其凸包上选择一个非共线点。 这改进了输出。
-
-
-
Locale:
-
除了 C++2003
auto_ptr
之外,还添加了对unique_ptr
接口的支持 - 为了支持 C++2017,现在您可以使用BOOST_LOCALE_HIDE_AUTO_PTR
定义从接口中删除auto_ptr
并防止弃用警告。 -
修复了 ICU >60.1 的测试问题
-
修复了 solaris 构建
-
修复了优化的构建中 FreeBSD/clang 出现的 wired 问题。 可能是编译器解决方法
-
添加了针对由于 932 代码页 codecvt 问题导致 MSVC 测试失败的解决方法
-
修复了错误 6851、12572、12453
-
修复了
icu/date_time
中失败时缺少抛出的异常 -
修复了针对 Boost.Thread v4 的构建
-
修复了 ICU 后端格式设置的周年份而不是年份
-
修复了 ICU 56.1 及更高版本的格式设置测试
-
-
Log:
-
改进了与 C++17 的兼容性:使用
allocator_traits
来处理分配器,而不是直接访问其成员。 -
通过更新库 ABI 命名空间定义,改进了与 gcc 7 及更高版本的兼容性。
-
为 “TextFile” sink 添加了 “Append” 配置文件参数的文档。 先前支持该参数,只是缺少文档。
-
-
Math:
-
添加了朴素蒙特卡洛积分支持。
-
添加了切比雪夫插值例程。
-
-
Multi-index Containers:
-
避免使用 C++17 中弃用的
std::allocator
成员。 由 Daniela Engert 贡献。 -
维护修复。
-
Multiprecision:
-
重大更改: 当将多精度整数转换为较窄的类型时,如果该值太大(或为负数)而无法容纳在较小的类型中,则结果是目标类型的最大值(或最小值)。 这始终是预期的行为,但以前执行得有点随意。 如果您真的只想要值的低位 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) -
error_handler::position()
中错误地计算了 CR+LF 行 (#248) -
修复了解析为关联容器的问题 (#289)
-
修复了
uint_parser<signed T>
中的溢出问题 (#297) -
通过使用解决方法,添加了 VS2015 Update 3 支持 (#308)
-
修复了与 Qi 的包含保护名称冲突 (#313)
-
重新启用了
fusion::map
支持 (#330) -
取消引用单个项目视图而不是解包序列 (#340)
-
防止
parse_nan
从范围外迭代器取消引用 (#351) -
使用 traits 测试容器是否为空 (#355)
-
-
Spirit V2
-
修复了顺序或运算符中的未定义行为。 底层解析器的执行顺序取决于编译器 (#310)
-
Spirit.Qi
-
-
Stacktrace:
-
在 Windows OS 上异步安全转储到文件会导致某些平台上挂起,现在已禁用 #33。 鼓励用户更新到最新的 Boost 版本。
-
现在使用 ContainerHash 库来减少依赖项。
-
-
TypeIndex:
-
现在使用 ContainerHash 库来减少依赖项。
-
小修复 (包括 #17)
-
-
TypeTraits:
-
添加了新的 traits
detected
,detected_or
,is_detected
,is_detected_convertible
,is_detected_exact
,is_complete
。 -
为检测二元运算符添加了大大改进的代码。
-
为需要完整类型作为参数的 traits 添加了完整性断言:这防止了各种 traits 从不完整类型中给出错误的结果。
-
修复了 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
添加了回退。
-
-
Utility:
-
重大变更:
<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 管理了此版本。