Boost
发布
arrow_drop_down
上一个版本 (1.50.0)
2013 年 4 月 13 日
平台 文件 SHA256 哈希
Unix boost_1_50_0.tar.bz2 c9ace....a8529
boost_1_50_0.tar.gz 78142....2994e
Windows boost_1_50_0.7z 60f57....b2c22
boost_1_50_0.zip cd461....29b39

版本 1.50.0

2012 年 6 月 28 日 12:48 GMT

文档

补丁

  • Boost.Unordered 补丁 - 修复了在使用 C++11 编译器但 C++03 分配器编译时的一个错误。在插入元素时,allocator_traits 检测到节点可以使用意外的隐式转换来构造,这会导致一些问题。
  • Locale 补丁 - 修复了一个错误,该错误导致 boost::locale::utf::utf_traits 接受了某些无效的 UTF-8 序列,这可能是一个安全漏洞。

新库

  • 算法:
    • 一套有用的通用算法,来自 Marshall Clow。其中包括几种不同的搜索算法,以及 C++11 标准库中的大部分新算法。
  • Functional/OverloadedFunction:
    • 将不同的函数重载为单个函数对象,来自 Lorenzo Caminiti。
  • LocalFunction:
    • 在其他函数内部,直接在需要它们的范围内,局部地实现函数,来自 Lorenzo Caminiti。
  • Utility/IdentityType:
    • 将类型包装在圆括号中,以便它们始终可以作为宏参数传递,来自 Lorenzo Caminiti。

更新的库

  • Accumulators:
    • 添加了缺失的 #include <boost/throw_exception.hpp>,修复了 #6702
    • 为 msvc 提供的解决方法,允许构造函数模板成为拷贝构造函数,修复了 #6535
    • 缩短文件名以符合 Boost 指南,修复了 #6196
  • Array:
    • 添加了对 Boost.Hash 的支持 #6791
  • Asio:
    • epoll_reactor 后端更改为对 EPOLLOUT 事件进行延迟注册。
    • 修复了 epoll_reactor 对带外数据的处理,该处理在上一版本中因不完整的修复而损坏。
    • 将 Asio 的 SSL 包装器更改为尊重 OpenSSL 的 OPENSSL_NO_ENGINE 功能测试 #define (#6432)。
    • 修复了 windows::object_handle,使其可以与支持 C++11 移动语义的 Windows 编译器(如g++).
    • 提高了 strand 重调度的性能。
    • 增加了对g++4.7 的支持,当以 C++11 模式编译时 (#6620)。
    • 修复了当 io_service 使用 concurrency_hint 为 1 构建时,signal_set 处理器未被传递的问题 (#6657)。
  • Bimap:
    • 移除了对 Boost.Serialization 的多余依赖,修复了 #3868
    • 解决了未使用的构造函数参数警告,修复了 #5749
    • 为 map 视图添加了 key_type 和 mapped_type (为向后兼容保留了 data_type) typedef,修复了 #6031
  • Chrono:
    • 修复的 Bug
      • #6361 在 Windows 32 位系统下,boost::chrono::process_real_cpu_clock::now() 存在整数溢出。
      • #6628 process_cpu_clocks.hpp 中的编译器警告。
      • #6666 thread_clock.hpp 需要 pthread.h。
  • Concept Check:
    • 修复了
      • #6738 变量被隐藏的警告。
  • Filesystem:
    • 从发行版中移除了 Filesystem V2。现在 V3 是唯一分发的版本。敦促仍在使用 V2 的用户尽快迁移到 V3。
    • 为 class path 添加了 constexpr value_type preferred_separator。
    • 修复了 #5118replace_extension 的行为与文档不符。文档、实现和测试用例都已进行修复。文档未能提及任何现有扩展名都会被移除。简单情况下的行为已恢复到 V2 的行为,但进行了修正,以便复杂的替换现在能够正常工作。已添加来自 #5118 的两个测试用例。
    • 修复了 #3737,Boost.Filesystem 在 Windows Mobile 上无法编译。在 Windows 上,不再包含 <sys/stat.h>
    • 修复了 #4065,Boost Filesystem 的字典序路径比较不一致。这需要多个源代码 bug 修复和代码清理,纠正了与字典序无关的问题。
    • 为 class path 添加了成员函数 compare,以与 std::string 保持一致。
    • filesystem/config.hpp 中收紧了 BOOST_FILESYSTEM_DYN_LINKBOOST_FILESYSTEM_STATIC_LINK 的逻辑,以便始终定义其中一个,而同时定义两者会触发 #error
    • 修复了 #6690#6737,解决了与 VC++ 8 到 11 相关的静态链接问题。请注意,此修复可能会重新引入 codecvt 线程安全问题 (#4889, #6320),对于这些编译器,如果使用静态链接。
    • 添加了 path::operator+= 和 concat 函数,用于附加后缀或数字。由 Ed Smith-Rowland 等人建议。
    • 修复了 #6809,MS Windows 的 filesystem::rename() 方法实现错误,通过添加 MOVEFILE_COPY_ALLOWED 来处理跨驱动器、卷、文件系统的重命名。此修复对非 Windows 系统没有影响。
    • 修复了 #6819,源为单字符数组的路径操作数被视为空,即使它并非为空。这种数组可能出现在联合体或使用 C 变长数组惯用法中的代码里。
    • 修复了 #6932,即使指定了 error_code,create_directories 也会抛出异常。
  • Foreach:
    • 回滚了对 #6131 的修复,该修复弊大于利。
  • 几何:
    • 修复的 Bug
      • 可比较的投影点策略对整数点的返回类型不正确 (整数),已修复。
      • 修复了片段和多边形相交处的若干鲁棒性问题。
      • 已过滤掉无效的相交输出。
      • 修复了 multi_polygon 的 disjoint 可能错误地返回 true 的问题。
    • 已解决的工单
      • 6585 适用于 alternative syntax multipoint 的补丁,已应用。
      • 6584 适用于 distance 中 bug 的补丁,已应用。
      • 5730 与 6584 同一个问题,已修复。
      • 6166 适用于缺失转换的补丁,已应用。
      • 6696 无效的相交输出,在报告之前 (碰巧) 已经在 Trunk 中修复。
    • 附加功能
      • 为 *polygon/*polygon 添加了算法 "touches" (符合 OGC SF 标准)。
  • :
    • 修复的 Bug
      • #4622 在具有自环的顶点上调用 clear_vertex 会导致段错误。
      • #6033 biconnected_components(...) 计算的 lowpoint map 有时是错误的。
      • #6242 同构性没有重置映射。
      • #6435 cube_topology 文档应指明 3D,而非 2D。
      • #6520 graph_parallel 文档中的 small_world_1_70_6_0p02.png 已损坏。
      • #6564 BGL 子图的复制构造函数不跟踪局部顶点/边。
      • #6573 BGL: boost::isomorphism 例程在大图上失败。
      • #6583 Dijkstra Visitor Concept 文档可能显示了错误的变量类型。
      • #6647 BGL strong_components 在 MSVC 8 上无法编译。
      • #6656 子图中的依赖类型在使用时未加 typename。
      • #6707 is_straight_line_drawing.hpp 缺失 #include <map>。
      • #6708 是否将 is_straight_line_drawing.hpp 中的 bool boost::intersects() 设为内联?
      • #6739 无法使用 write_graphviz_dp 处理 constified 的子图。
      • #6858 g++ 错误解析了 boost::get() 的调用。
      • #6892 bron_kerbosch_all_cliques() 未要求 VertexIndexGraph 概念。
      • Trac 中未记录的其他 bug 和警告。
  • 哈希:
    • 支持 std::arraystd::tuple (当可用时) (#6806)。
    • 避免 gcc 的 -Wfloat-equal 警告 (#6771)。
    • 向长期弃用的 boost/functional/detail/container_fwd.hpp 添加了弃用警告。
  • Iostreams:
    • 改进了 gzip 支持 (#5908)。
    • 更新了 Boost.Filesystem 和 Boost.Test 的最新测试。
    • 修复了一些文档错误 (#6530, #6650)。
  • Iterator:
    • 修复了
      • #5127 transform_iterator 中 result_of 用法不正确。
      • #5697 iterator_facade::operator-> 对于代理引用是错误的。
  • MultiArray:
    • Concepts bug 修复和 Visual Studio 2010 的解决方法 (#4874)
    • 修复了 assert.cpp 测试用例 (补丁)
  • Lexical cast:
    • boost::bad_lexical_cast 异常现在全局可见,即使代码使用 -fvisibility=hidden 编译也可以捕获。
    • 现在可以禁用异常编译和使用库 (#5800)
    • 提高了 boost::iterator_range<character_type*> 转换的性能,减少了内存使用,并修复了 bug。
    • 修复的 Bug 和警告: #6645, #6562, #6812, #6852, #6717, #6770, #6504
  • Locale:
    • 修复了使用 STLPort 库时的构建问题。
    • Boost.System 现在是必需的依赖项。
    • 修复了 Bug #6635, #6833
  • 数学:
    • 将数学常数提升为一等公民,包括通过三个命名空间方便地访问最广泛使用的内置浮点数、双精度数和长双精度数。
    • 添加了 Benjamin Sobotta 编写的 Owen's T 函数和 Skew Normal 分布。
    • 添加了 Hankel 函数。
    • 根据 K R Walker 提交的补丁,纠正了 #6627 nonfinite_num_put 格式化 0.0 不正确 的问题。
    • 更改了常量初始化机制,使其对用户定义类型也具有线程安全,并使用户定义类型能够获得常量的完整精度,即使 long double 不支持。因此,例如 128 位有理数近似值与 UDT 一起使用时将正常工作,即使 long double 可能只有 64 或 80 位。
    • 修复了 bessel_jy 中的问题,该问题导致 Y[sub 8.5](4[pi]) 产生 NaN。
  • MSM:
    • eUML:使用 eUML 作为仅转换表的 front-end 时,语法更好。注意:破坏性更改!/docs/libs/1_50_0/libs/msm/doc/HTML/ch03s04.html#eUML-composite-table
    • Bug 修复:图构建仅在 initial_state 定义为 sequence 时才有效。
    • Bug 修复:为 Terminate 或 Interrupt 状态定义的标志不再破坏这些状态的阻塞功能。
    • Bug 修复:来自多个区域的多个延迟事件并非在所有情况下都有效。
    • Bug 修复:访问者按值传递给子机。
    • Bug 修复:对于将事件发送给自己的子机,没有调用 no_transition。
    • 修复了 gcc 的警告。
  • Program Options:
  • PropertyMap:
    • 修复的 Bug
      • #6539 get() 的返回类型未正确记录。
      • #6721 property_map_traits 文档未提及引用。
  • Proto:
    • 仅当编译器实现 N3276 时,才使用基于 decltyperesult_of
    • 对于 C++11,强制将 mpl::eval_if_cmpl::if_c 的参数设为 bool
    • 禁用'__forceinline not inlined'msvc 上的警告。
  • Ratio:
    • 修复的 Bug
      • #6498 boost::ratio 在默认设置下无法编译。
  • ScopeExit:
    • 新功能
      • 使用可变参数宏指定逗号分隔的捕获列表 (但为了向后兼容,保留了预处理器序列语法)。
      • 使用 this_ 捕获作用域中的对象。
      • 使用 void 支持空捕获。
      • 在支持 C++11 lambda 函数的编译器上,使用 BOOST_SCOPE_EXIT_ALL 进行隐式 lambda 式捕获。
  • Thread:
    • 新功能
      • #1850 请求提供与 lock_guard 相辅相成的 unlock_guard。
      • #2637 请求提供 shared_mutex 持续时间 timed_lock 和 timed_lock_shared。
      • #2741 提案管理可移植和不可移植的线程属性。
      • #3567 请求提供 shared_lock_guard。
      • #6194 适应 Boost.Move。
      • #6195 C++11 合规性:使用 Boost.Chrono 提供标准的日期时间接口。
      • #6217 增强 Boost.Thread 的共享互斥接口,遵循 Howard Hinnant 的提案。
      • #6224 C++11 合规性:在支持的编译器上添加 standard noexcept 的使用。
      • #6226 C++11 合规性:从锁中添加显式 bool 转换。
      • #6228 添加带有分配器的 promise 构造函数,遵循 C++11 标准。
      • #6230 C++11 合规性:遵循 C++11 定义的异常报告机制。
      • #6266 破坏性更改:如果线程可 join,则线程析构函数应调用 terminate。
      • #6269 破坏性更改:如果线程可 join,则线程移动赋值应调用 terminate。
      • #6272 C++11 合规性:添加 thread::id 的 hash 特化。
      • #6273 C++11 合规性:添加 cv_status enum class 并将其用于条件等待函数。
      • #6231 在文档中添加 BasicLockable 要求,以遵循 C++11。
      • #6342 C++11 合规性:将 one_flag 适配到 C++11 接口。
      • #6671 upgrade_lock:缺失 mutex 和 release 函数。
      • #6672 upgrade_lock:缺少来自时间相关类型的构造函数。
      • #6675 upgrade_lock:缺少非成员 swap。
      • 添加了缺失的 packaged_task::result_type 和 packaged_task:: 带有分配器的构造函数。
      • 添加了 packaged_task::reset()
    • 修复的 Bug
      • #2575 Bug - Boost 1.36.0 在 Itanium 平台上的问题。
      • #4345 thread::id 和线程级联时的 join 问题。
      • #4921 BOOST_THREAD_USE_DLL 和 BOOST_THREAD_USE_LIB 至关重要,需要记录。
      • #5013 文档:boost::thread: pthreas_exit 导致 terminate()。
      • #5173 boost::this_thread::get_id 速度非常慢。
      • #5351 中断 future get 时出现 boost::unknown_exception。
      • #5516 当存在另一个读锁时,upgrade lock 在前一个 upgrade lock 释放后未被获取。
      • #5990 shared_future<T>::get() 返回类型错误。
      • #6174 packaged_task 未正确处理移动结果。
      • #6222 SunStudio 编译错误:unique_future 移动。
      • #6673 shared_lock:移动赋值在 c++11 下无效。
      • #6674 shared_mutex:try_lock_upgrade_until 无效。
      • 修复了 task_object(task_object const&) 在存在 task_object(task_object&&) 的情况下 ML 上报告的问题。
  • Unordered:
    • 修复了 unordered_multisetunordered_multimap 的相等性。
    • 实现 reserve (#6857)。
    • 避免 gcc 的 -Wfloat-equal-Wshadow 警告 (#6190, #6771)。
    • 修复了 bcp 的命名空间问题 (#6905)。
    • 修复了 Sun 的解决方法 (#6784)。
    • 存储桶分配的一些内部更改。
    • 请参阅 变更日志 以获取完整详细信息。
  • Wave:
    • Wave V2.3.2,请参阅 Changelog 获取详细信息。
  • xpressive:
    • 用一个稍微不那么丑陋的 lexical_cast 方式替换了非常丑陋的 hack。
    • 将 MPL assert 替换为 static assert,因为它在 C++11 中存在问题,修复了 #6846

测试的编译器

Boost 的主要测试编译器是:

  • Linux
    • Intel: 11.1
    • LLVM Clang 2.8
    • GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2
    • GCC, C++0x 模式: 4.3.4, 4.4.3, 4.5.3, 4.6.2
  • OS X
    • Intel: 11.1
    • GCC: 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.0, 4.4.7, 4.5.4, 4.6.3, 4.7.0

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

  • Linux
    • Clang 从 subversion
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.5.3, 4.6.2
    • GCC, C++0x 模式: 4.3.4, 4.4.4, 4.5.3, 4.6.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.0, 12.1
    • 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, 10.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.2, 4.5.4, 4.6.4, 4.7.0
    • GCC, C++0x 模式, mingw: 4.5.2
  • AIX
    • IBM XL C/C++ Enterprise Edition, V12.1.0.0
  • FreeBSD
    • GCC 4.2.1, 32 位和 64 位
  • Solaris
    • Sun 5.10

致谢

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

贡献者

Anthony Williams
贡献者
Vicente J. Botet Escriba
Vicente J. Botet Escriba
贡献者
Beman Dawes
Beman Dawes
贡献者
Daniel James
Daniel James
贡献者
John Maddock
John Maddock
贡献者
Paul A. Bristow
Paul A. Bristow
贡献者
Barend Gehrels
Barend Gehrels
贡献者
Lorenzo Caminiti
Lorenzo Caminiti
贡献者
Daniel Walker
贡献者
Steven Watanabe
Steven Watanabe
贡献者
Ion Gaztañaga
Ion Gaztañaga
贡献者
Marshall Clow
Marshall Clow
贡献者
Jeremiah Willcock
Jeremiah Willcock
贡献者
Pavol Droba
贡献者
Eric Niebler
Eric Niebler
贡献者
David Deakins
David Deakins
贡献者
Bryce Adelstein-Lelbach
Bryce Adelstein-Lelbach
贡献者
Daniel Frey
Daniel Frey
贡献者
Daryle Walker
Daryle Walker
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Joel de Guzman
Joel de Guzman
贡献者
Dave Abrahams
Dave Abrahams
贡献者
Gennadiy Rozental
Gennadiy Rozental
贡献者
Jürgen Hunold
Jürgen Hunold
贡献者
Hartmut Kaiser
Hartmut Kaiser
贡献者
Troy D. Straszheim
Troy D. Straszheim
贡献者
Tobias Schwinger
Tobias Schwinger
贡献者
Vladimir Prus
Vladimir Prus
贡献者
Robert Ramey
Robert Ramey
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Ronald Garcia
Ronald Garcia
贡献者
Peter Dimov
Peter Dimov
贡献者
Ralf W. Grosse-Kunstleve
贡献者
Matias Capeletto
Matias Capeletto
贡献者
Artyom Beilis
Artyom Beilis
贡献者
Jeffrey Lee Hellrung, Jr.
Jeffrey Lee Hellrung, Jr.
贡献者
Michael A. Jackson
Michael A. Jackson
贡献者
Christophe Henry
Christophe Henry
贡献者
nobody
贡献者
Emil Dotchevski
Emil Dotchevski
贡献者
Andrey Semashev
Andrey Semashev
贡献者
Neil Groves
Neil Groves
贡献者
Sebastian Redl
Sebastian Redl
贡献者
Rene Rivera
Rene Rivera
贡献者
Joachim Faulhaber
Joachim Faulhaber
贡献者
Tim Blechmann
Tim Blechmann
贡献者