版本 1.68.0
2018年8月9日 03:46 GMT
文档
Windows 用户说明
Boost.WinAPI 已更新为默认目标 Windows 7,在可能的情况下。在之前的版本中,Windows Vista 是默认目标。
Boost.WinAPI 在许多 Boost 库中用作 Windows SDK 抽象层,包括 Boost.Beast, Boost.Chrono, Boost.DateTime, Boost.Dll, Boost.Log, Boost.Process, Boost.Stacktrace, Boost.System, Boost.Thread 和 Boost.UUID。要选择目标 Windows 版本,请在编译 Boost 和用户代码时将 BOOST_USE_WINAPI_VERSION 定义为与 _WIN32_WINNT 类似的数字版本。例如:
b2 release define=BOOST_USE_WINAPI_VERSION=0x0501 stage
Windows API 版本号列表可在 此页面上找到。
新库
- YAP:
- 一个用于 C++14 及更高版本的表达式模板库,来自 Zach Laine。
更新的库
-
Beast:
- 此版本修复了在所有组合操作的实现中缺少 executor work guard 的问题。建议遇到与异步完成处理程序相关的崩溃的用户进行升级。
- 有关更改的完整列表,请参阅官方 发布说明。
-
Context:
-
#78: 链接器错误:
context-impl=ucontext:boost::context::detail::current_rec 多重定义
-
Coroutine2:
-
#14: 堆栈展开时崩溃
-
#18: 关于为何使用 coroutine2 的一些指导
-
#20: 由于错误 C2039,测试编译失败
-
#22: 未定义行为文档
-
Fiber:
-
#170: buffered_channel::try_push 文档不正确
-
#172: WIN64: 使用 mingw-w64 构建时出现 'HANDLE' 到 'std::thread::native_handle_type' 的无效转换错误
-
#175: 抛出异常 "Operation not permitted"
- NUMA 支持已移至 extra 库 (fiber-numa);通过属性 numa (numa=on) 启用。
-
Fusion:
- 为 GCC 4.4/c++0x 上的
fusion::deque 构造函数的歧义调用添加了变通方法 (PR#178, commit)。
- 修复了 C 风格数组的 bug (PR#177)。
- 修复了
fusion::for_each 的签名,使其按值接受 functor (#4427)。
- 这可能会破坏现有使用了不可复制(不可移动)functor 的代码,但实现了一段时间以来都不正确;文档从一开始就是正确的。因此,请确保您的使用方式。
- 修复了
fusion::transform 上意外的 MPL 占位符替换 bug (#5490)。
- 将如何将 Fusion 序列转换为 MPL 序列的描述移至 mpl 部分 (#4029)。
- 添加了关于适配类型 IO 功能的注释 (#6091)。
-
几何:
- 改进
-
469 SRS 转换中的水平网格偏移 (nadgrids) (由于潜在的接口更改,目前未记录)。
-
478 球面和地理坐标系的点段距离。
-
487 球面和地理坐标系距离中缺失的几何图形组合
-
489 内部使用的附加直接测地线问题公式
- 已解决的问题
-
470 球面和地理短段的断言失败。
-
471 球形多边形的无效包络
-
498 球面和地理坐标系 expand() 和 make_inverse() 的意外结果
-
504 未使用的参数警告。
- 错误修复
-
488 处理 closing_iterator 和 ever_circling_range_iterator 中的非真实引用
-
495 VxWorks 7 交叉编译问题。
-
GIL:
- 添加了
- 该库现在需要 C++11 兼容的编译器。
- 新的顶级 all-in-one `include/boost/gil.hpp` 头文件 (PR#70)。
- 新的 Toolbox 扩展,已评审并被 Boost 接受。
- 更改了
- 已移除
-
图:
- 有条件地用
std::bind 替换已弃用/已移除的 C++98 std::bind1st,用 std::unique_ptr 替换 std::auto_ptr,用 std::shuffle 替换 std::random_shuffle (PR#89)。
- 修复 VS2015 发布版本时的编译器错误 (PR#84)
- 修复 Stanford GraphBase 示例 (PR#87)
- 修复 iterator_core_access 的友元声明 (PR#103)
- 添加缺失的
<boost/iterator.hpp> include (PR#104)
- 避免未使用的变量警告 (PR#90)
- 修复文档中的一些拼写错误 (PR#88, PR#98, PR#102)
- 修复测试和示例中的一些问题 (PR#85, PR#105)
-
Lexical Cast:
- 修复 clang-tidy 警告 (#12092)
-
Log:
- 改进了对 VxWorks 的支持 (PR#39)。
- 在 x86 PIE 目标上的
dump 流操作符实现中,保存并恢复 ebx 寄存器。
-
数学:
- 支持任意精度复数算术积分,以及等高线积分
- 提高多项式加法的性能
- 继续改进数值积分例程,特别是添加了对路径积分的支持。
- 提高了 erfc 函数有理近似的准确性。
-
多索引容器:
- 现在可以序列化包含可移动但不可复制元素的容器 (ticket #13478)。感谢 Sébastien Paris 的报告。
-
multi_index_container 的默认构造函数不再是 explicit (ticket #13518)。
-
Multiprecision:
- 增加了对复数多精度数字的支持。
- 将转换为无符号整数类型的行为更改为截断,以匹配标准定义的行为。
- 修正 MPFR 字符串格式化中的错误。
- 修复 cpp_dec_float 从 long long 转换时的未定义行为。
- 添加了对 Eigen 互操作性的支持。
- float128.hpp: 修复 Intel 在 Windows 上的构建。
- 修复了包含混合表达式的表达式模板扩展时使用的类型中的临时变量。
- 修复了 gmp_float 到定点字符串转换中的无限循环。
- 更新了表达式模板,当尝试执行不支持的操作时,发出带有更好错误消息的 static_assert。
- 修复 cpp_int 中递增到零时未正确设置符号的 bug。
- 移除了 std::move 的错误使用,并依赖 NVRO。
- 修复了与 MPIR-3.0 更改兼容性的问题。
- 修复了 cpp_bin_float 中,当指数类型为
long long 时,或我们转换为比实际宽度更宽的整数时,发生的各种转换错误。
- 修复了由于引入
std::byte 而导致的 GCC-8 兼容性问题。
-
Optional:
- 添加了成员函数
has_value() 以与 std::optional 兼容 (issue #52)。
- 添加了成员函数
map(),用于使用类型为 T -> U 的函数将 optional<T> 转换为 optional<U>。
- 添加了成员函数
flat_map(),用于使用类型为 T -> optonal<U> 的函数将 optional<T> 转换为 optional<U>。
-
Predef:
- 添加对 __ARM_ARCH 宏的支持 (来自 Tim Blechmann)。
- 添加 PTX 架构检测 (来自 Benjamin Worpitz)。
- 添加 nvcc 编译器检测 (来自 Benjamin Worpitz)。
- 添加对检测 CUDA 的支持 (来自 Benjamin Worpitz)。
- 移除对已弃用的 BOOST_ARCH_AMD64 的引用 (来自 Peter Kolbus)。
-
Program Options:
- 支持选项的多个长名称,感谢 Eyal Rozenberg (PR#53)。
-
Python:
- 修复了自动链接支持 (Windows) 的 bug (#193)。
-
Rational:
- 修复了 normalize() 中的未定义行为 (PR#19)。
-
系统:
- 在 C++14 及以上版本中为 error_code 和 error_condition 成员添加 constexpr (PR#23)。
-
Signals:
-
移除通知:Boost.Signals 将在下个版本中移除。Boost.Signals 已在 1.54.0 版本中弃用。请立即迁移到 Boost.Signals2 以避免中断。
-
Spirit:
- Spirit.X3
- 列表解析器的小优化 (PR#368)。
- 将容器属性通过序列解析器或一元结束符传递到底层序列解析器 (PR#370 #12085)。
- 更精细的序列属性检查消息 (PR#371)。
- 在
skip_over 中移除了冗余检查 (PR#373)。
- 在 VS2015 的 noexcept bug 中对整个
x3::variant 进行了 constexpr 变通处理 (PR#379)。
- 修复了 calc4b 示例的编译 (PR#384)。
- 代码小幅改进 (PR#374)。
- Spirit.Qi
- 通过排列和 sequence_or 运算符修复了 ADT 支持 (PR#376)。
- 为随机访问特化 iterator_source (PR#383)。
- 在
skip_over 中移除了冗余检查 (PR#373)。
- Spirit.Karma
- 修复了
get_absolute_value 函数中的 UB (PR#246)。
- 修复了当 ADT getter 按值返回时的使用后范围 bug (PR#375 #6126)。
- Spirit.Classic
- 修复了在 PR#336 中引入的回归错误 (PR#386)。
- 代码小幅改进 (PR#367)。
-
Stacktrace:
- 修复了 Solaris 和其他平台上
dladdr 函数中将地址视为 const 的编译问题 (github 54)。
- 删除了对 Boost.LexicalCast 的依赖。
-
Test:
- Boost.test v3.8 更多详情请参阅 更改日志。
- 破坏性更改
master_test_suite_t 对象不再可复制
- 新功能
- Bug 修复和拉取请求。
-
TypeIndex:
-
Uuid:
-
重大更改:为了向后兼容,已移除 sha1 详细命名空间头文件重定向 (PR#69)。
- 添加了对 std::hash 的支持 (PR#67)。
- 添加了对随机生成器上的移动语义的支持 (PR#74)。
- 正确处理获取熵时的 EINTR (PR#74)。
- 在 Linux 上使用 getrandom(2) 而不是 getentropy(3) (PR#75)。
测试的编译器
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
- 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
- Clang, C++17:5.0.2, 6.0.1
- 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
- Apple Clang, C++11:9.0.0, 9.1.0
- Apple Clang, C++14:9.0.0, 9.1.0
- Apple Clang, C++17:9.1.0
- Apple 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
- 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
- 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
- Clang, C++17:5.0.2, 6.0.1
- 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
- Apple Clang, C++11:9.0.0, 9.1.0
- Apple Clang, C++14:9.0.0, 9.1.0
- Apple Clang, C++17:9.1.0
- Apple 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
- 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
致谢
Daniel James, Vladimir Prus 和 Marshall Clow 管理了此次发布。