版本 1.60.0
版本 1.60.0
2015年12月17日 15:52 GMT
平台 | 文件 |
---|---|
unix | boost_1_60_0.tar.bz2 |
boost_1_60_0.tar.gz | |
windows | boost_1_60_0.7z |
boost_1_60_0.zip |
新库
-
VMD: 可变参数宏数据库,来自 Edward Diener。
更新的库
-
Chrono - 2.0.5:
-
修复
-
#10778 VC14 CTP4 Atomic 无法使用非 TriviallyCopyable 的 boost::chrono 时间段编译
-
#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:
-
实现了 多态内存资源。
-
添加了更多 BOOST_ASSERT 检查来测试某些操作中的前提条件(例如
pop_back
,pop_front
,back
,front
等)。 -
为
basic_string
添加了 C++11back
/front
操作。
-
-
Core:
-
在符号去混淆工具中,添加了对 Android NDK 中使用的 gabi++ ABI 实现的支持。
-
添加了一个新的
enable_if_has_type
工具,用于对嵌套类型的存在执行 SFINAE 检查。
-
-
Filesystem:
-
新功能
-
添加了函数
lexically_normal
,lexically_relative
,relative
, 和weakly_canonical
。非常感谢 Jamie Allsop 的帮助和坚持。解决了 #1976, #5897, #6249。 -
如果编译器支持,则提供 Filesystem TS 中指定的 C++11
noexcept
。 -
如果编译器支持,则提供 Filesystem TS 中指定的 C++11 移动构造函数和移动赋值运算符。解决了 #10291。
-
Filesystem TS 中名称已更改的现有函数现在同时支持旧名称和新名称。
-
-
问题
-
修复了 #11733, boost/libs/filesystem/src/unique_path.cpp 中缺少 unistd.h 包含,通过应用来自 Idar Tollefsen 的补丁。
-
修复了 #5706, Windows 上临时用户配置文件中的 unique_path 失败,通过应用来自 Sebastian Redl 的 pull request #15 来修复
unique_path
中的竞争条件。 -
修复了 #10591, boost::filesystem 未在 iOS 8 上构建,通过应用由 Daniel Seither 提交的补丁。
-
修复了 #9454, 当定义了 BOOST_FILESYSTEM_NO_DEPRECATED 时,Boost Filesystem [库构建] 未编译,通过应用由 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()
部分。
-
-
其他修复
-
清除了几个虚假的 GCC 警告。
-
修复了
file_status
和recursive_directory_iterator
中的错误:C++ 将除第一个参数外的所有参数都默认的显式构造函数转换为非显式单参数构造函数。 -
应用参考文档编辑清理:使用与文档其余部分相同的样式表。调整选项卡字体大小。修复表格,概要中的过长行。
-
小修复,包括来自 Jonathan Wakely 和 Marcel Raad 的 pull request。
-
-
-
Flyweight:
-
维护修复。
-
-
Fusion:
-
所有 fusion 容器和生成器现在都支持 C++11 可变参数模板。 (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 可变参数模板。 (pull-request 90) -
fusion::fold
现在是 SFINAE 友好的。 (pull-request 102)
-
-
Geometry:
-
Bugfixes
-
修复了接触内部环/外部环的共位,其中它也接触另一个多边形
-
修复了从空 rtree 中删除值 - 无效果并返回 0 而不是断言失败
-
修复了包含空单个几何图形的多个几何图形的质心的段错误(感谢 Jiri Drbalek)
-
修复了积分坐标的 liang_barsky 策略(感谢 Dane Springmeyer)
-
-
Interprocess:
-
改进了
offset_ptr
性能并删除了任何未定义的行为。 对于不同的编译器,不需要特殊情况。
-
-
Intrusive:
-
有序关联容器中的高级查找和插入现在支持不需要提供与
key_compare
相同的严格弱排序的比较函数,该容器必须在传递的比较对象方面进行分区。
-
-
Locale:
-
实现了通用 codecvt facet 并添加了通用 utf8_codecvt facet
-
为 FreeBSD 10.0 及更高版本添加了 posix locale 支持
-
清理了一些警告
-
修复了最新 ICU 版本的测试
-
添加了针对
libc++
问题的解决方法 -
添加了新的宏定义
BOOST_LOCALE_ENABLE_CHAR16_T
和BOOST_LOCALE_ENABLE_CHAR32_T
以启用 C++11 的char16_t
和char32_t
,而不是已弃用的版本
-
-
日志:
-
常规变更
-
在 Windows 上,配置宏
BOOST_LOG_USE_WINNT6_API
不再被库使用。目标 Windows 版本应通过定义宏BOOST_USE_WINAPI_VERSION
进行配置。
-
-
错误修复
-
修复了使用 Google NDK 的 Android 编译问题。 (#11559)
-
修复了一些日志语句的编译问题,其中要放入流的第一个对象不被
formatting_ostream
直接支持。 (#11549) -
为 Solaris Studio 12.4 添加了一个解决方法,应该可以修复
formatting_ostream
的编译问题。 (#11545) -
修复了禁用本机
wchar_t
类型时的编译问题。 (#11541) -
修复了从类 POSIX 系统上的
boost_log_setup
库导出符号的问题。 -
修复了字符修饰符的编译问题。
-
添加了一个针对文本文件 sink 后端中文件名包含日期/时间占位符时生成不正确文件名问题的解决方法。 (#11691)
-
-
有关更多详细信息,请参阅 更新日志。
-
-
Multi-index Containers:
-
修复了与 Qt 的互操作性问题,原因是该框架中可以选择性地定义一个名为
foreach
的宏。 -
维护修复。
-
-
odeint:
-
新功能
-
添加了功能,如果执行了过多的 ODE 步骤,则抛出异常。
-
添加了限制自适应方法中最大步长的可能性。
-
-
多个错误修复,请参阅 https://github.com/headmyshoulder/odeint-v2/issues
-
-
Thread - 4.6.0: 新的实验性功能:
-
#11231 允许将 continuation future 的析构函数行为设置为非阻塞
-
#11424 提供 shared_timed_mutex 作为 shared_mutex 的替代名称,并弃用将 shared_mutex 用作定时互斥锁
-
#11734 future::then(Cont) 应该能够在不确定的线程上执行 continuation
-
#11736 允许在 future::then(launch::executor, cont) 上使用 launch::executor
-
#11737 添加一个 launch::inherit 策略,该策略可用于 ::then() 以使用父 future 的策略 修复的错误:
-
#3926 thread_specific_ptr + dlopen 库导致 SIGSEGV。
-
#6377 更改时间时,条件变量阻塞
-
#6787 如果系统时间回滚,boost::thread::sleep() 挂起
-
#7665 this_thread::sleep_for 不再在线程中使用 steady_clock
-
#7720 在互斥锁的密集锁定/解锁期间出现异常 lock_error
-
#9309 test_latch 经常在 clang-darwin-tot11 上失败
-
#10788 GetLogicalProcessor 不适用于小于或等于 0x0502 的 Windows 平台
-
#11090 ex_future_unwrap- ThreadSanitizer: lock-order-inversion(潜在的死锁)
-
#11158 使用 faketime 时,Pthread 线程死锁
-
#11174 boost::condition_variable::timed_wait 带有谓词意外唤醒,而应该无限等待
-
#11185 不正确的 URL 重定向
-
#11192 当回调返回 future 时,带有 executor 的 boost::future<>::then() 不会编译
-
#11250 从 make_exceptional 创建的 future 在析构函数中出现断言失败
-
#11256 在 continuation 函数中 future<>::is_ready() == false
-
#11261 basic_thread_pool 中错误地使用了 scoped threads
-
#11262 shared_state_nullary_task 中错误地使用了直接指针
-
#11263 锁已经被锁定
-
#11266 boost::packaged_task 具有无效的可变参数签名
-
#11302 boost thread 无法使用 BOOST_THREAD_PATCH 构建。
-
#11322 sleep_for() 纳秒重载在 Windows 上总是过早返回
-
#11329 使用 GetProcessHeap 的声明失败
-
#11368 boost thread 对 CreateWaitableTimer 的使用会将 PC 从睡眠状态唤醒 (doh)
-
#11377 Boost 条件变量始终等待系统时钟截止时间
-
#11435 future.hpp 中的 gcc 编译器警告
-
#11555 devector.hpp 假定 allocator_traits_type 始终存在
-
#11562 在 Ubuntu 64 位上将计算机时间设置为向前后,计时器(使用 steady_clock)到期
-
#11672 Thread: 应该使用 unique_ptr,而不是 auto_ptr
-
#11688 thread::try_join_until:如果系统时钟发生变化,避免忙等待
-
#11716 ::then(f) 应该继承父 Executor
-
-
UUID:
-
添加了针对 MSVC 代码生成错误的解决方法,该错误可能导致在比较 UUID 时发生崩溃。
-
添加了对使用 MSVC 编译器开关启用 AVX 的检测。
-
新闻
Windows 用户注意事项
如果编译器支持足够新的 Windows SDK,则此版本的 Boost 默认情况下将为 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 仓库中找到。
测试的编译器
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 管理了此版本。