| 平台 | 文件 | SHA256 哈希 | |
|---|---|---|---|
| Unix | boost_1_60_0.tar.bz2 | 686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b 686affff98....857933fd3b 686af....3fd3b | |
| boost_1_60_0.tar.gz | 21ef30e7940bc09a0b77a6e59a8eee95f01a766aa03cdfa02f8e167491716ee4 21ef30e794....7491716ee4 21ef3....16ee4 | ||
| Windows | boost_1_60_0.7z | a2488c452694e6d5c6496dc22a1eb7dd02e4dcfbac4003eea7b754b2590b2aa2 a2488c4526....b2590b2aa2 a2488....b2aa2 | |
| boost_1_60_0.zip | 1e22e1bd68928f98ba1ad346092283b2b942a1bbb8f7574e0240bee4192cdda8 1e22e1bd68....e4192cdda8 1e22e....cdda8 | ||
这是 Boost 的一个旧版本,发布于 2015 年。 当前版本是 1.90.0。
版本 1.60.0
2015年12月17日 15:52 GMT
新库
- VMD:
- 来自 Edward Diener 的 Variadic Macro Data 库。
更新的库
-
Atomic:
- 强制正确对齐
atomic<>存储。这应该可以修复在支持大于原生字长数据单元原子操作的平台上可能出现的问题。这还可能改变具有atomic<>成员的用户数据结构的二进制布局。 - 修复了在 IBM XL C++ 编译器下 PowerPC 的编译问题。修正了 PowerPC 汇编器中的内存屏障。
- 修复了在 MSVC-8 下 ARM 的编译问题。
- 修复了在 gcc 4.4 下 x86-64 的编译问题,当使用 128 位原子操作时。(#10994)
- 优化了 x86/x86-64 的一些 gcc 汇编块,以减少使用的寄存器数量。这可能需要 binutils 2.10 或更高版本。
- 强制正确对齐
-
Chrono - 2.0.5:
-
修复
- #10778 VC14 CTP4 Atomic 与非 TriviallyCopyable 的 boost::chrono durations 无法编译
- #10840 test_7868.cpp 中 puts 调用缺少 std:: 限定符
- #10851 time_point_output.cpp 中 puts 调用缺少 std:: 限定符
- #10893 Boost.Chrono 文档中的一个小笔误
- #10992 Chrono IO 状态保存器与 Boost.IO 状态保存器不一致
- #10995 duration_put::put_value 截断了小数部分
- #11006 由于几个错误,无法实例化 time_fmt_io_saver。
- #11012 chrono_io v2 与 boost::chrono::duration< boost::rational<int> > 编译失败
-
修复
-
Container:
- 实现了 Polymorphic Memory Resources。
- 添加了更多 BOOST_ASSERT 检查,以测试某些操作(如
pop_back、pop_front、back、front等)的先决条件。 - 向
basic_string添加了 C++11back/front操作。 - 修复的错误
-
Context:
- #11603 PPC32/MACH-O 汇编中的拼写错误
- 支持 CYGWIN
-
Core:
- 在符号 demangling 工具中,添加了对 Android NDK 中使用的 gabi++ ABI 实现的支持。
- 添加了新的
enable_if_has_type工具,用于执行 SFINAE 检查是否存在嵌套类型。
-
Filesystem:
-
新功能
- 添加了函数
lexically_normal、lexically_relative、relative和weakly_canonical。非常感谢 Jamie Allsop 的帮助和坚持。解决了 ticket #1976、#5897、#6249。 - 类
path添加了类型reverse_iterator和const_reverse_iterator,并添加了函数rbegin()和rend()。 - C++11
noexcept根据 Filesystem TS 的要求提供,如果编译器支持的话。 - C++11 移动构造函数和移动赋值函数根据 Filesystem TS 的要求提供,如果编译器支持的话。解决了 #10291。
- 对现有函数,其名称在 Filesystem TS 中发生更改的,现在支持旧名称和新名称。
- 向类
path添加了size()函数。解决了 #6874,Path 应该有一个size()成员函数。
- 添加了函数
-
Tickets
- 修复 #11733,boost/libs/filesystem/src/unique_path.cpp 中缺少 unistd.h include,应用了 Idar Tollefsen 的补丁。
- 修复 #5706,unique_path 在 Windows 上为临时用户配置文件时失败,通过应用 Sebastian Redl 的 pull request #15 修复了
unique_path中的竞态条件。 - 修复 #10591,boost::filesystem 在 iOS 8 上无法构建,应用了 Daniel Seither 提交的补丁。
- 修复 #9454,Boost Filesystem [library build] 在定义 BOOST_FILESYSTEM_NO_DEPRECATED 时无法编译,应用了 Makesim 提交的补丁。
- 修复 #11447,
__OpenBSD__宏名称拼写错误,应用了 Jasper Lievisse Adriaanse 提交的补丁。 - 修复 #11288,避免冗余字符串分配的补丁,应用了 Yevhen Ivannikov 提交的补丁。
- 解决 #11175,过时的文档导致用户错误地期望库可以在禁用异常的情况下使用。
- 解决 #11166,通过减轻(即降低可能性)
remove()中可能出现的外部文件系统竞态。 - 修复 #7258,如果路径以斜杠结尾,
create_directories返回 false。还修复了路径包含点或双点元素时的相关问题,并向测试套件添加了测试用例。 - 解决 #10766,带有冗余分隔符的
parent_path()返回错误的值,通过向参考文档添加示例和注释来显示返回的值实际上是正确的,并为该行为提供理由。请参阅参考文档的 path.itr 和 path.decompose 中parent_path()和filename()部分。 - 关闭 #7607,以斜杠结尾的路径不应推断末尾的隐藏 ".",正如 #7258 和 #10766 所解决的那样。
- 关闭 #11061、#11062,无法遍历反向迭代器的路径,因为类
path的反向迭代功能已得到有效解决。参考文档也已更新,其中包含一个 注释,警告类path迭代器的局限性。
-
其他修复
- 清除几个非必要的 GCC 警告。
- 修复
file_status和recursive_directory_iterator中的错误:C++ 将带有除第一个参数外其他参数都默认的显式构造函数转换为非显式的单参数构造函数。 - 应用参考文档的编辑清理:使用与其余文档相同的样式表。调整标签字体大小。修复表格和概要中过长的行。
- 小幅修复,包括来自 Jonathan Wakely 和 Marcel Raad 的 pull requests。
-
新功能
-
Flyweight:
- 维护修复。
-
Fusion:
- 所有 fusion 容器和生成器现在都支持 C++11 variadic templates。(pull-request 89、pull-request 97、pull-request 100)
-
fusion::vector的特别说明- 由于实现限制,编号形式(即
fusion::vectorN)通过 C++11 别名模板提供,并在 C++11 或更高版本中被弃用。在这种情况下,您应该检查BOOST_FUSION_HAS_VARIADIC_VECTOR宏并切换用法,因为某些偏特化将导致编译错误(例如,Spirit 的 pull-request)。
- 由于实现限制,编号形式(即
-
-
fusion::nview现在支持 C++11 variadic templates。(pull-request 90) -
fusion::fold现在是 SFINAE 友好的。(pull-request 102) - 错误修复
- 所有 fusion 容器和生成器现在都支持 C++11 variadic templates。(pull-request 89、pull-request 97、pull-request 100)
-
几何:
- 已解决的工单
-
错误修复
- 修复了接触内环/外环的共置问题,当它也接触另一个多边形时。
- 修复了从空 rtree 中移除值 - 无效果且返回 0 而不是断言失败。
- 修复了多几何体包含空单几何体时的 centroid 段错误(感谢 Jiri Drbalek)。
- 修复了积分坐标的 liang_barsky 策略(感谢 Dane Springmeyer)。
-
Interprocess:
- 改进了
offset_ptr的性能并消除了任何未定义行为。无需针对不同编译器进行特殊处理。 - 修复的错误
- 改进了
-
Intrusive:
- 有序关联容器的先进查找和插入现在支持不要求提供与
key_compare相同的严格弱序的比较函数,容器必须相对于传递的比较对象进行分区。 - 修复的错误
- 有序关联容器的先进查找和插入现在支持不要求提供与
- Lexical Cast:
-
Locale:
- 实现了通用 codecvt facet 并添加了通用 utf8_codecvt facet。
- 为 FreeBSD 10.0 及以上版本添加了 posix 区域支持。
- 修复了问题 #10017(SunOS 上的 sun 重定义)、#11163(set_default_messages_domain 行为不正确)、#11673 构建问题。
- 一些警告清理。
- 修复了针对最新 ICU 版本的测试。
- 为
libc++问题添加了解决方法。 - 添加了新的宏定义
BOOST_LOCALE_ENABLE_CHAR16_T和BOOST_LOCALE_ENABLE_CHAR32_T,以启用 C++11 的char16_t和char32_t,而不是已弃用的。
-
Log:
- 一般性更改
- 在 Windows 上,库不再使用配置宏
BOOST_LOG_USE_WINNT6_API。目标 Windows 版本应通过定义宏BOOST_USE_WINAPI_VERSION进行配置。
- 在 Windows 上,库不再使用配置宏
- 错误修复
- 修复了使用 Google NDK 的 Android 编译问题。(#11559)
- 修复了某些日志语句的编译问题,其中要放入流的第一个对象不被
formatting_ostream直接支持。(#11549) - 为 Solaris Studio 12.4 添加了解决方法,这应该可以修复
formatting_ostream的编译问题。(#11545) - 修复了当本地
wchar_t类型被禁用时的编译问题。(#11541) - 修复了在 POSIX 类系统上从
boost_log_setup库导出符号的问题。 - 修复了字符装饰符的编译问题。
- 为文本文件接收器后端中文件名包含日期/时间占位符时生成不正确的文件名的问题添加了解决方法。(#11691)
- 有关更多详细信息,请参阅 更改日志。
- 一般性更改
- Move:
-
多索引容器:
- 修复了与 Qt 的互操作性问题,原因是该框架中可选定义了名称为
foreach的宏。 - 维护修复。
- 修复了与 Qt 的互操作性问题,原因是该框架中可选定义了名称为
-
odeint:
- 新功能
- 添加了在执行过多 ODE 步数时抛出异常的功能。
- 添加了在自适应方法中限制最大步长的可能性。
- several Bug fixes, see https://github.com/headmyshoulder/odeint-v2/issues
- 新功能
-
Optional:
- 再次更改了
boost::none的实现。现在它是一个具有内部链接的 const 对象(与其他 tag 一样)。这修复了 #11203。
- 再次更改了
-
Predef:
- 添加了 SIMD 硬件检测。
- 有关更多详细信息,请参阅 历史记录。
- Test:
-
Thread - 4.6.0: 新实验性功能:
- #11231 允许将 continuation future 的析构行为设置为非阻塞
- #11424 提供 shared_timed_mutex 作为 shared_mutex 的替代名称,并弃用 shared_mutex 作为 timed mutex 的用法
- #11734 future::then(Cont) 应该能够在未确定的线程上执行 continuation
- #11736 允许在 future::then(launch::executor, cont) 上使用 launch::executor
- #11737 添加一个 launch::inherit 策略,该策略可用于 ::then() 以使用父 future 的策略 修复的 Bug:
- #3926 thread_specific_ptr + dlopen 库导致 SIGSEGV。
- #6377 更改时间时,条件变量阻塞
- #6787 如果系统时间回滚,boost::thread::sleep() 会挂起
- #7665 this_thread::sleep_for 在 thread 中不再使用 steady_clock
- #7720 在密集锁定/解锁 mutex 时发生 exception lock_error
- #9309 test_latch 在 clang-darwin-tot11 上经常失败
- #10788 GetLogicalProcessor 在版本小于等于 0x0502 的 Windows 平台上不可用
- #11090 ex_future_unwrap - ThreadSanitizer: lock-order-inversion (潜在死锁)
- #11158 Pthread 线程死锁,当使用 faketime 时
- #11174 boost::condition_variable::timed_wait 带有谓词,在应该无限等待时意外唤醒
- #11185 URL 重定向错误
- #11192 boost::future<>::then() 与 executor 在回调返回 future 时无法编译
- #11250 由 make_exceptional 制作的 future 在析构函数中因断言失败
- #11256 future<>::is_ready() 在 continuation 函数中为 false
- #11261 basic_thread_pool 中对作用域线程的错误使用
- #11262 shared_state_nullary_task 中对直接指针的错误使用
- #11263 锁定已锁定的锁
- #11266 boost::packaged_task 具有无效的 variadic signature
- #11302 boost thread 在使用 BOOST_THREAD_PATCH 时无法构建。
- #11322 sleep_for() nanoseconds 重载在 Windows 上总是过早返回
- #11329 使用声明式 for GetProcessHeap, .... 失败
- #11368 boost thread 使用 CreateWaitableTimer 会唤醒 PC 休眠(doh)
- #11377 Boost 条件变量总是等待系统时钟截止日期
- #11435 gcc 编译器在 future.hpp 中发出警告
- #11555 devector.hpp 假定 allocator_traits_type 始终存在
- #11562 Timer(使用 steady_clock)在计算机时间向前调整后过期(Ubuntu 64 位)
- #11672 Thread: 应使用 unique_ptr,而非 auto_ptr
- #11688 thread::try_join_until:避免在系统时钟变化时忙等待
- #11716 ::then(f) 应继承父 Executor
-
UUID:
- 为 MSVC 代码生成错误添加了解决方法,该错误可能导致比较 UUID 时崩溃。
- 添加了对 MSVC 编译器开关启用 AVX 的检测。
新闻
Windows 用户说明
此版本的 Boost,如果编译器支持足够新的 Windows SDK,则默认编译为 Windows Vista/Windows Server 2008,否则编译为 Windows XP。默认选项编译的二进制文件可能无法在较旧的 Windows 版本上运行。
仍然可以通过定义 BOOST_USE_WINAPI_VERSION 为 Windows API 的数字版本来显式指定目标 Windows 版本。例如,使用以下命令可以为 Windows XP 构建 Boost
b2 release define=BOOST_USE_WINAPI_VERSION=0x0501
Windows API 版本号列表可以在 此页面上查看。
此更改仅影响使用通用 Windows API 抽象层的库。目前,这些库包括:Boost.Chrono、Boost.Dll、Boost.Log、Boost.UUID。这也将影响所有依赖库。
Hana 发布推迟
由于时间限制,Hana 的发布将推迟到 Boost 的后续版本。这也将允许在将该库正式作为 Boost 的一部分发布之前妥善解决一些已知问题。更多信息可以在 邮件列表上找到。
Boost.DLL 库发布推迟
为了提供对不常见工具集和平台的卓越支持,Boost.DLL 的发布被推迟到 Boost 的后续版本。这还允许更好地测试最近添加的复制构造和复制赋值 boost::dll::shared_library 实例的功能,并提供导入具有非默认调用约定的函数的示例。最新版本和库的开发文档可以在 GitHub repo 上找到。
测试的编译器
Boost 的主要测试编译器是:
- Linux
- Clang: 3.4, 3.6
- Clang, C++14: 3.7
- GCC: 4.4.7, 4.8.4, 4.9.3, 5.1.0, 5.2.1
- GCC, C++11: 4.4.7
- GCC, C++14: 4.9.3
- Windows
- GCC, C++03, mingw: 3.4.5
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android
- Clang: 3.6, 3.7
- GCC: 4.9.0, 5.2.0
- QNX
- QCC: 4.4.2
- SunOS
- Oracle Solaris Studio: 12.4, 12.5
Boost 的其他测试编译器包括:
- Linux
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4.2, 3.6.0, 3.8.0
- Clang, C++14: 3.7.0
- GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 4.9.3, 5.1.0, 6.0.0
- GCC, C++11: 4.4.7
- GCC, C++14: 4.9.3, 5.2.1
- IBM XL C++: 13.1.2.0
- Intel: 16.0
- OS X
- Clang: 7.0.0
- GCC: 5.2.0
- Windows
- GCC, C++03, mingw: 3.4.5
- GCC, C++11, mingw: 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android
- Clang: 3.6, 3.7
- GCC: 4.9.0, 5.2.0
- FreeBSD
- Clang, C++11: 3.4.1, 3.7.0
- GCC, C++11: 4.8.5, 5.2.0, 6.0.0
- QNX
- QCC: 4.4.2
- SunOS
- Oracle Solaris Studio: 12.4, 12.5
致谢
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus 和 Marshall Clow 管理了此次发布。