版本 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_timer、steady_timer 和 system_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:
-
Filesystem:
- 修复 #3714,为类路径错误添加了测试用例和修复,当赋值或追加使用自身或自身的一部分作为源时。
- 修复 #4889、#6320,Locale codecvt_facet 在 Windows 上不是线程安全的。将 Windows、Mac OS X、locale 和 codecvt facet 移回命名空间范围。POSIX(除 OS X 外)使用局部静态初始化(即惰性初始化)来确保在环境变量配置错误时异常是可捕获的,并避免在未实际使用 locale("") 时使用它。
- 修复 #5652,
recursive_directory_iterator 在循环符号链接上失败。感谢 Daniel Aarno 提供补丁。
- 修复 #5653,
recursive_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 中引入)。
- 凸包在空范围(例如,空的多点)上崩溃。
- 已解决的工单
- 附加功能
- 支持线/多边形交集和差集
- 支持转换不同点类型的线段/盒子
- 支持多点的追加
- 标量函数(距离、面积、长度、周长)现在在输入为空时抛出 empty_input_exception。
- 文档
- 内部更改
- Updates in specializations/not_implemented for distance/convert/assign/area
- 将 wkt/dsv 移至 io 文件夹,使 domain 冗余
- 将 Strategy concepts 分配给零以避免 clang 警告(由 Vishnu 打补丁)。
-
图:
-
Icl:
- 修复了 ticket #6095 和 #6210。
- 为构造函数、赋值运算符和二元运算符添加了移动语义。
-
Interprocess:
-
Intrusive:
-
Lexical cast:
-
Locale:
- 修复了
MultiByteToWideChar 在检测无效输入序列中的不正确使用。
-
Move:
-
PropertyTree:
-
Proto:
- 强制某些函数内联,修复 #5735。
- 添加了关于每个域
as_expr 和 as_child 的用户文档;其他文档调整。
- 修复了一些有 bug 和过于复杂的示例程序。
- 添加了一些缺失的版权声明。
-
Spirit:
-
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:
-
xpressive:
测试的编译器
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
- 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
- Solaris
致谢
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James 和 Vladimir Prus 管理了此次发布。