Boost
发布
arrow_drop_down
prior Release (1.49.0)
2013 年 4 月 13 日
依赖项
本次发布新增了 7 个依赖项 (涉及 6 个库),并移除了 3 个依赖项 (涉及 3 个库)。
平台 文件 SHA256 哈希
Unix boost_1_49_0.tar.bz2 dd748....80d3c
boost_1_49_0.tar.gz a3ec4....39bf3
Windows boost_1_49_0.7z 663b9....89a7f
boost_1_49_0.zip 69af4....be0ad

版本 1.49.0

2012 年 2 月 24 日 21:20 GMT

文档

补丁

  • Locale Patch - 修复了一个导致 boost::locale::utf::utf_traits 接受某些无效 UTF-8 序列的错误,这可能是一个安全漏洞。

新库

  • Heap:
    • 优先级队列数据结构,由 Tim Blechmann 提供。

更新的库

  • Asio:
    • 添加了一个新的类模板 basic_waitable_timer,该模板基于 C++11 时钟类型的要求。它可以与 C++11 <chrono> 库设施中的时钟一起使用,或者,如果不可用,则使用 Boost.Chrono。typedefs high_resolution_timersteady_timersystem_timer 可用于创建标准时钟类型的计时器对象。
    • 添加了一个新的 windows::object_handle 类,用于在 Windows 内核对象上执行等待。感谢 Boris Schaeling 对此功能的开发做出了实质性贡献。
    • 在 Linux 上,connect() 在某些情况下可能返回 EAGAIN。将其重新映射到另一个错误,使其看起来不像非阻塞操作(#6048)。
    • 修复了 NetBSD 上的编译错误(#6098)。
    • 修复了 Mac OS X 上的死锁(#6275)。
    • 修复了 buffered_write_stream 中的回归错误(#6310)。
    • 修复了当 io_service 重复运行时没有任何操作时,Windows 上的非分页池“泄漏”(#6321)。
    • 已撤销早期允许执行一些投机性操作而不持有锁的更改,因为它在某些多线程场景中引入了竞态条件。
    • 修复了一个错误,即如果第一个缓冲区为空,则可能忽略两个缓冲区数组中的第二个缓冲区。
  • Chrono:
    • Bug 修复
      • #6092 来自非整数时长的输入会导致编译器失败。
      • #6093 [1/3]秒无法作为有效的时长输入。
      • #6113 当定义 BOOST_CHRONO_HEADER_ONLY 时出现重复符号。
      • #6243 Sandia-pgi-11.9:多个“min”重载函数实例匹配。
      • #6257 process_cpu_clock::now() 在 Linux 上返回的时间点精度为 1/1000。
  • Container:
    • 修复了 bug #6499#6336#6335#6287#6205#4383
    • 通过内部 allocator_traits 克隆,为 C++11 和 C++03 编译器增加了 allocator_traits 支持。
  • Filesystem:
    • 修复 #3714,为类路径错误添加了测试用例和修复,当赋值或追加使用自身或自身的一部分作为源时。
    • 修复 #4889#6320,Locale codecvt_facet 在 Windows 上不是线程安全的。将 Windows、Mac OS X、locale 和 codecvt facet 移回命名空间范围。POSIX(除 OS X 外)使用局部静态初始化(即惰性初始化)来确保在环境变量配置错误时异常是可捕获的,并避免在未实际使用 locale("") 时使用它。
    • 修复 #5652recursive_directory_iterator 在循环符号链接上失败。感谢 Daniel Aarno 提供补丁。
    • 修复 #5653recursive_directory_iterator(error_code) 仍可能抛出 filesystem_error。
    • 修复 #5900,如果抛出错误,Windows 上的 directory_iterator 访问冲突。感谢 Andreas Eckleder 提供补丁。
    • 修复 #5900 注释 2,director_iterator 构造中的一个错误,使用了 error_code 参数,导致 increment 在未传递 ec 参数的情况下被调用。
    • 通过清理 test suite path_test.cpp 代码来修复 #5989,尽管 ticket 本身不是一个缺陷,并澄清了文档;遍历路径会生成通用格式。
    • 修复 #5592,将 Windows codecvt 处理从 CP_THREAD_ACP 更改为 CP_ACP。
    • Operations 函数为 PGI 编译器修复,感谢 Noel Belcourt。
    • 放宽权限测试以反映实际情况,尤其是在 Sandia 测试平台上。
  • Foreach:
  • 几何:
    • 修复的错误
      • 多几何体的距离忽略了指定的距离策略。
      • 在多边形/多多边形的差集中(2011/10/24 在 GGL-list 上报告)。
      • 当计算其中一个为空的多几何体(们)的距离时,抛出异常。
      • Multi DSV 未能正确使用设置。
      • 自交有时会被错过(在 1.48 中引入)。
      • 凸包在空范围(例如,空的多点)上崩溃。
    • 已解决的工单
      • #6028 文档:closure。
      • #6178 缺少头文件。
      • #6021 多点的凸包。
    • 附加功能
      • 支持线/多边形交集和差集
      • 支持转换不同点类型的线段/盒子
      • 支持多点的追加
      • 标量函数(距离、面积、长度、周长)现在在输入为空时抛出 empty_input_exception。
    • 文档
      • 更新了支持状态
    • 内部更改
      • Updates in specializations/not_implemented for distance/convert/assign/area
      • 将 wkt/dsv 移至 io 文件夹,使 domain 冗余
      • 将 Strategy concepts 分配给零以避免 clang 警告(由 Vishnu 打补丁)。
  • :
    • 修复了 bug #5881#6033#6061#6137#6246#6239#6293#6306#6313#6371,以及 Trac 中未列出的其他 bug。
    • 重新启用了 LEDA 图支持(感谢 Jens Muller 提供补丁)。
    • edge_predecessor_recorder 添加了文档。
  • Icl:
    • 修复了 ticket #6095#6210
    • 为构造函数、赋值运算符和二元运算符添加了移动语义。
  • Interprocess:
  • Intrusive:
  • Lexical cast:
  • Locale:
    • 修复了 MultiByteToWideChar 在检测无效输入序列中的不正确使用。
  • Move:
  • PropertyTree:
  • Proto:
    • 强制某些函数内联,修复 #5735
    • 添加了关于每个域 as_expras_child 的用户文档;其他文档调整。
    • 修复了一些有 bug 和过于复杂的示例程序。
    • 添加了一些缺失的版权声明。
  • Spirit:
    • Spirit V2.5.2,详情请参阅 'What's New' 部分。
  • Thread:
    • 修复了 Bug
      • #2309 Boost.Thread 中缺少 g++ 符号可见性支持。
      • #2639 文档应扩展(defer_lock, try_to_lock, ...)。
      • #3639 Boost.Thread 在 Linux 上使用 Sun-5.9 无法构建。
      • #3762 Thread 无法与 winscw(Nokia 的 Codewarrior)编译。
      • #3885 关于混合使用 boost.thread 和原生线程 API 的文档。
      • #3975 promise::set_wait_callback() 的前提条件不正确。
      • #4048 thread::id 格式化涉及 locale。
      • #4315 gcc 4.4 警告:inline ... declared as dllimport: attribute ignored。
      • #4480 OpenVMS 补丁用于编译器问题规避。
      • #4819 boost.thread 的文档印刷错误。
      • #5040 boost::thread 中的 future.hpp 在 /clr 下不编译。
      • #5423 C++0x 下的 thread 问题。
      • #5502 shared_mutex timed_lock 和 lock_shared 之间的竞态条件。
      • #5594 boost::shared_mutex 与 Windows CE 不完全兼容。
      • #5617 boost::thread::id copy ctor。
      • #5739 使用 gcc-4.6 时出现 set-but-not-used 警告。
      • #5826 threads.cpp:线程创建失败时资源泄漏。
      • #5839 thread.cpp:ThreadProxy 在异常时泄漏。
      • #5859 win32 shared_mutex 构造函数在异常时泄漏。
      • #6100 在 GLIBC 系统上使用 get_nprocs() 计算 hardware_concurrency()。
      • #6141 当 boost.thread 和 boost.move 一起使用时出现编译错误。
      • #6168 recursive_mutex 使用了错误的配置符号(可能的拼写错误)。
      • #6175 使用 SunStudio 时出现编译错误。
      • #6200 补丁使 condition_variable 和 mutex 更好地处理 EINTR。
      • #6207 clang 3.0 c++11 下 shared_lock swap 编译错误。
      • #6208 clang 3.0 c++11 下 try_lock_wrapper swap 编译错误。
  • Unordered:
    • 在没有 rvalue 引用的编译器上,容器默认不再可移动,因为移动模拟会产生一些奇怪的怪癖(#6167#6311)。定义 BOOST_UNORDERED_USE_MOVE 使它们可移动——Boost.Move 仍然用于元素。
    • 修复了顺序点警告(#6370)。
    • 更好地支持使用旧标准库的 C++11 编译器。
  • Uuid:
    • 修复了 #6258
    • 修复了 #5325(sha1 实现处理消息符合规范)
    • #6118 上取得进展(警告减少了)
  • xpressive:
    • 消除了 gcc 上的一些未使用的变量警告。

测试的编译器

Boost 的主要测试编译器是:

  • Linux
    • Intel: 11.1
    • LLVM Clang 2.8
    • GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.2, 4.6.2
    • GCC, C++0x 模式: 4.3.4, 4.4.3, 4.5.2
  • OS X
    • Intel: 11.1
    • GCC: 4.2.1, 4.4.4
    • GCC, C++0x 模式: 4.4.4
  • Windows
    • Visual C++ 8.0, 9.0, 10.0
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.1, 4.7.0
  • FreeBSD
    • GCC 4.2.1, 32 位和 64 位。
  • QNX
    • QCC, C++0x 模式: 4.4.2, 4.6.1, 4.6.2

Boost 的其他测试编译器包括:

  • Linux
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.6.2
    • GCC, C++0x 模式: 4.3.4, 4.4.4, 4.5.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.0
    • PathScale: 4.0.8
    • Visual Age 10.1
  • OS X
    • Clang 来自 subversion
    • Intel 11.1, 12.0
    • GCC: 4.4.4
    • GCC, C++0x 模式: 4.4.4
  • Windows
    • Visual C++ 8.0, 9.0, 10.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
    • GCC, mingw: 4.4.0, 4.5.2
    • GCC, C++0x 模式, mingw: 4.5.2
    • GCC, mingw 64 位: 4.4.7, 4.5.4, 4.6.1
  • AIX
    • IBM XL C/C++ Enterprise Edition, V11.1.0.0
  • FreeBSD
    • GCC 4.2.1, 32 位和 64 位
  • Solaris
    • Sun 5.10

致谢

Beman Dawes, Eric Niebler, Rene Rivera, Daniel James 和 Vladimir Prus 管理了此次发布。

贡献者

Barend Gehrels
Barend Gehrels
贡献者
Ion Gaztañaga
Ion Gaztañaga
贡献者
Beman Dawes
Beman Dawes
贡献者
Bruno Lalande
Bruno Lalande
贡献者
Daniel James
Daniel James
贡献者
Mateusz Łoskot
Mateusz Łoskot
贡献者
John Maddock
John Maddock
贡献者
Peter Dimov
Peter Dimov
贡献者
Marshall Clow
Marshall Clow
贡献者
Vicente J. Botet Escriba
Vicente J. Botet Escriba
贡献者
Daniel Walker
贡献者
Paul Mensonides
Paul Mensonides
贡献者
Eric Niebler
Eric Niebler
贡献者
Jeremiah Willcock
Jeremiah Willcock
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Joachim Faulhaber
Joachim Faulhaber
贡献者
Rene Rivera
Rene Rivera
贡献者
Andy Tompkins
Andy Tompkins
贡献者
Hartmut Kaiser
Hartmut Kaiser
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Steven Watanabe
Steven Watanabe
贡献者
Troy D. Straszheim
Troy D. Straszheim
贡献者
Douglas Gregor
Douglas Gregor
贡献者
Michael A. Jackson
Michael A. Jackson
贡献者
Bryce Adelstein-Lelbach
Bryce Adelstein-Lelbach
贡献者
Joel de Guzman
Joel de Guzman
贡献者
Brandon Kohn
Brandon Kohn
贡献者
Ralf W. Grosse-Kunstleve
贡献者
Christophe Henry
Christophe Henry
贡献者
Tim Blechmann
Tim Blechmann
贡献者
K. Noel Belcourt
K. Noel Belcourt
贡献者
Artyom Beilis
Artyom Beilis
贡献者
Sebastian Redl
Sebastian Redl
贡献者
Joaquin M. López Muñoz
Joaquin M. López Muñoz
贡献者
Frank Mori Hess
Frank Mori Hess
贡献者