Boost
发布
arrow_drop_down
上一个版本 (1.60.0)
2015年12月14日
依赖项
此版本增加了 8个依赖项(在8个库中),并移除了 6个依赖项(在4个库中)。
平台 文件 SHA256 哈希
Unix boost_1_60_0.tar.bz2 686af....3fd3b
boost_1_60_0.tar.gz 21ef3....16ee4
Windows boost_1_60_0.7z a2488....b2aa2
boost_1_60_0.zip 1e22e....cdda8

版本 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:
  • Context:
    • #11603 PPC32/MACH-O 汇编中的拼写错误
    • 支持 CYGWIN
  • Core:
    • 在符号 demangling 工具中,添加了对 Android NDK 中使用的 gabi++ ABI 实现的支持。
    • 添加了新的 enable_if_has_type 工具,用于执行 SFINAE 检查是否存在嵌套类型。
  • Filesystem:
    • 新功能
      • 添加了函数 lexically_normallexically_relativerelativeweakly_canonical。非常感谢 Jamie Allsop 的帮助和坚持。解决了 ticket #1976#5897#6249
      • path 添加了类型 reverse_iteratorconst_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.itrpath.decomposeparent_path()filename() 部分。
      • 关闭 #7607,以斜杠结尾的路径不应推断末尾的隐藏 ".",正如 #7258#10766 所解决的那样。
      • 关闭 #11061#11062,无法遍历反向迭代器的路径,因为类 path 的反向迭代功能已得到有效解决。参考文档也已更新,其中包含一个 注释,警告类 path 迭代器的局限性。
    • 其他修复
      • 清除几个非必要的 GCC 警告。
      • 修复 file_statusrecursive_directory_iterator 中的错误:C++ 将带有除第一个参数外其他参数都默认的显式构造函数转换为非显式的单参数构造函数。
      • 应用参考文档的编辑清理:使用与其余文档相同的样式表。调整标签字体大小。修复表格和概要中过长的行。
      • 小幅修复,包括来自 Jonathan Wakely 和 Marcel Raad 的 pull requests。
  • Flyweight:
    • 维护修复。
  • Fusion:
    • 所有 fusion 容器和生成器现在都支持 C++11 variadic templates。(pull-request 89pull-request 97pull-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 序列转换为 deque 会导致编译器错误。(#11572
      • (文档)函数返回类型不正确。(#3358
  • 几何:
    • 已解决的工单
      • #10803 Union 算法返回无效几何
      • #11522 buffer 中 traits::detail 的命名空间冲突
      • #11533 rtree 中的 assert 失败,原因是在 min 元素数量为 1 时 remove() 的错误
      • #11607 私有 geometry::exception::what()
      • #11709 is_simple 段错误
      • #11710 is_simple - 空几何逻辑
      • #11711 is_simple 和 is_valid - NaN 或 Infinity 的点
    • 错误修复
      • 修复了接触内环/外环的共置问题,当它也接触另一个多边形时。
      • 修复了从空 rtree 中移除值 - 无效果且返回 0 而不是断言失败。
      • 修复了多几何体包含空单几何体时的 centroid 段错误(感谢 Jiri Drbalek)。
      • 修复了积分坐标的 liang_barsky 策略(感谢 Dane Springmeyer)。
  • Interprocess:
  • Intrusive:
  • Lexical Cast:
    • 修复了 lexical_cast 与移动类型一起使用的错误 #11570
    • 修复了定义 BOOST_LCAST_NO_COMPILE_TIME_PRECISION 时发生的崩溃 #11669
    • 抑制了在 #11570#4946 中报告的一些警告。
  • 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_TBOOST_LOCALE_ENABLE_CHAR32_T,以启用 C++11 的 char16_tchar32_t,而不是已弃用的。
  • Log:
    • 一般性更改
      • 在 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 库导出符号的问题。
      • 修复了字符装饰符的编译问题。
      • 为文本文件接收器后端中文件名包含日期/时间占位符时生成不正确的文件名的问题添加了解决方法。(#11691
    • 有关更多详细信息,请参阅 更改日志
  • Move:
  • 多索引容器:
    • 修复了与 Qt 的互操作性问题,原因是该框架中可选定义了名称为 foreach 的宏。
    • 维护修复。
  • 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 管理了此次发布。

贡献者

John Maddock
John Maddock
贡献者
Vicente J. Botet Escriba
Vicente J. Botet Escriba
贡献者
Raffi Enficiaud
Raffi Enficiaud
贡献者
Andrey Semashev
Andrey Semashev
贡献者
Paul A. Bristow
Paul A. Bristow
贡献者
Beman Dawes
Beman Dawes
贡献者
Ion Gaztañaga
Ion Gaztañaga
贡献者
Oliver Kowalke
Oliver Kowalke
贡献者
John Fletcher
John Fletcher
贡献者
Adam Wulkiewicz
Adam Wulkiewicz
贡献者
Daniel Wallin
贡献者
akumta
akumta
贡献者
Edward Diener
Edward Diener
贡献者
Charly Chevalier
Charly Chevalier
贡献者
Kohei Takahashi
Kohei Takahashi
贡献者
Joel de Guzman
Joel de Guzman
贡献者
Gennadiy Rozental
Gennadiy Rozental
贡献者
Barend Gehrels
Barend Gehrels
贡献者
Peter Dimov
Peter Dimov
贡献者
Dave Abrahams
Dave Abrahams
贡献者
Mario Mulansky
Mario Mulansky
贡献者
Menelaos Karavelas
Menelaos Karavelas
贡献者
Marshall Clow
Marshall Clow
贡献者
Glen Fernandes
Glen Fernandes
贡献者
Marcel Raad
Marcel Raad
贡献者
Vladimir Batov
Vladimir Batov
贡献者
Joaquin M. López Muñoz
Joaquin M. López Muñoz
贡献者
Artyom Beilis
Artyom Beilis
贡献者
Rene Rivera
Rene Rivera
贡献者
Daniel James
Daniel James
贡献者
Steven Watanabe
Steven Watanabe
贡献者
Robert Ramey
Robert Ramey
贡献者
Tim Blechmann
Tim Blechmann
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Ben Wiederhake
Ben Wiederhake
贡献者
jofaber
jofaber
贡献者
Joel Falcou
Joel Falcou
贡献者
Joachim Faulhaber
Joachim Faulhaber
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Mikael Olenfalk
Mikael Olenfalk
贡献者
zerotypos-found
zerotypos-found
贡献者
Stefan Seefeld
Stefan Seefeld
贡献者
spreadsort
spreadsort
贡献者
Andrii Sydorchuk
Andrii Sydorchuk
贡献者
Ilja
Ilja
贡献者
Jürgen Hunold
Jürgen Hunold
贡献者
Stephen Kelly
Stephen Kelly
贡献者
Mario Lang
Mario Lang
贡献者
Billy Donahue
贡献者
Karsten Ahnert
Karsten Ahnert
贡献者
Jeremy W. Murphy
Jeremy W. Murphy
贡献者
Michel Morin
Michel Morin
贡献者
Alain Miniussi
Alain Miniussi
贡献者
Stefan Bühler
Stefan Bühler
贡献者
Jonathan Wakely
Jonathan Wakely
贡献者
Troy D. Straszheim
Troy D. Straszheim
贡献者
Takeshi Abe
Takeshi Abe
贡献者
Frank Richter
Frank Richter
贡献者
Andrzej Krzemieński
Andrzej Krzemieński
贡献者
Ed Schouten
Ed Schouten
贡献者
Louis Dionne
Louis Dionne
贡献者
Vladimir Prus
Vladimir Prus
贡献者
Gaurav
Gaurav
贡献者
Michael A. Jackson
Michael A. Jackson
贡献者
Lorenzo Caminiti
Lorenzo Caminiti
贡献者
Adrian Vogelsgesang
Adrian Vogelsgesang
贡献者
Björn Dahlgren
Björn Dahlgren
贡献者
AntonBikineev
AntonBikineev
贡献者
Artem Tokmakov
Artem Tokmakov
贡献者
Jessica Hamilton
Jessica Hamilton
贡献者
Jiri Drbalek
Jiri Drbalek
贡献者
Lee Clagett
Lee Clagett
贡献者
Markus Schöpflin
贡献者
Dane Springmeyer
Dane Springmeyer
贡献者
David Deakins
David Deakins
贡献者
Sergiu Dotenco
Sergiu Dotenco
贡献者
Ahmed Charles
Ahmed Charles
贡献者
Arvin Schnell
Arvin Schnell
贡献者
Terrell Russell
Terrell Russell
贡献者
Hartmut Kaiser
Hartmut Kaiser
贡献者
Nicola Musatti
Nicola Musatti
贡献者
Chris Glover
Chris Glover
贡献者
Nicolas Cornu
贡献者
Christopher Moore
Christopher Moore
贡献者
Thomas Kent
Thomas Kent
贡献者
John Sebastian Peterson
John Sebastian Peterson
贡献者
fiesh
fiesh
贡献者
Emil Dotchevski
Emil Dotchevski
贡献者
Douglas Gregor
Douglas Gregor
贡献者
David Abdurachmanov
David Abdurachmanov
贡献者
Ashish Sadanandan
Ashish Sadanandan
贡献者
6recetru
6recetru
贡献者
Jeremiah Willcock
Jeremiah Willcock
贡献者
Alexandre Hamez
Alexandre Hamez
贡献者
Zoey Greer
Zoey Greer
贡献者
tobias-loew
tobias-loew
贡献者
Romain Geissler
Romain Geissler
贡献者
Sebastien Loriot
Sebastien Loriot
贡献者
VemundH
VemundH
贡献者
sampatht
sampatht
贡献者
Jeff Trull
Jeff Trull
贡献者
Nico Schlömer
Nico Schlömer
贡献者
Jeremy Murphy
贡献者
K. Noel Belcourt
K. Noel Belcourt
贡献者
Dmitry Sobinov
Dmitry Sobinov
贡献者
Patrick J. LoPresti
Patrick J. LoPresti
贡献者
Mathias Gaunard
Mathias Gaunard
贡献者
scopeInfinity
scopeInfinity
贡献者
Frank Mori Hess
Frank Mori Hess
贡献者
Laurent Stacul
Laurent Stacul
贡献者
Václav Slavík
Václav Slavík
贡献者
Christoph Weiss
Christoph Weiss
贡献者
marcinz
marcinz
贡献者
sehe
sehe
贡献者
Sebastian Redl
Sebastian Redl
贡献者
Ruslan Baratov
Ruslan Baratov
贡献者
Eric Niebler
Eric Niebler
贡献者