版本 1.50.0
版本 1.50.0
2012年6月28日 12:48 GMT
平台 | 文件 |
---|---|
unix | boost_1_50_0.tar.bz2 |
boost_1_50_0.tar.gz | |
windows | boost_1_50_0.7z |
boost_1_50_0.zip |
补丁
-
Boost.Unordered 补丁 - 修复了使用 C++11 编译器但使用 C++03 分配器时的一个bug。插入元素时,
allocator_traits
检测到节点可以使用意外的隐式转换进行构造,这会导致若干问题。 -
Locale 补丁 - 修复了一个bug,该bug导致
boost::locale::utf::utf_traits
接受一些无效的 UTF-8 序列,这是一个潜在的安全漏洞。
新增库
更新的库
-
文件系统:
-
从发行版中删除文件系统版本 2。版本 3 现在是唯一的发行版本。仍然使用 V2 的用户应尽快迁移到 V3。
-
向 path 类添加 constexpr value_type preferred_separator。
-
修复 #3737,Boost.Filesystem 无法在 Windows Mobile 上编译。在 Windows 上,不再包含
<sys/stat.h>
。 -
修复 #4065,Boost Filesystem 词法路径比较不一致。这需要多个源代码错误修复和代码清理,纠正与词法问题无关的问题。
-
添加 path 类成员函数 compare 以与 std::string 保持一致。
-
在
filesystem/config.hpp
中收紧BOOST_FILESYSTEM_DYN_LINK
和BOOST_FILESYSTEM_STATIC_LINK
逻辑,以便始终定义一个或另一个,并且同时定义两者是#error
。 -
添加
path::operator+=
和 concat 函数来附加后缀或数字等内容。由 Ed Smith-Rowland 和其他人建议。 -
修复 #6809,通过添加
MOVEFILE_COPY_ALLOWED
来处理跨驱动器、卷、文件系统的重命名,从而修复了 MS Windows 的filesystem::rename()
方法的错误实现。此修复对非 Windows 系统没有影响。 -
修复 #6819,即使源不是空,一个源为一个字符数组的路径操作数也被视为空。这种数组可能出现在联合体或使用 C 变量长度数组习惯用法的代码中。
-
修复 #6932,即使指定了
error_code
,create_directories 也会抛出异常。
-
-
图:
-
已修复的bug
-
#4622 对具有自环的顶点进行 clear_vertex 操作可能会导致分段错误。
-
#6033 由 biconnected_components(...) 计算的低点映射有时是错误的。
-
#6242 同构不重置映射。
-
#6435 cube_topology 文档应说明是 3D,而不是 2D。
-
#6520 graph_parallel 文档中的 small_world_1_70_6_0p02.png 已损坏。
-
#6564 子图的 BGL 复制构造函数不跟踪局部顶点/边。
-
#6573 BGL:boost::isomorphism 例程在大型图中失败。
-
#6583 Dijkstra 访问者概念文档可能显示了变量的错误类型。
-
#6647 BGL 强连通分量无法在 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 与 const 子图一起使用。
-
#6858 boost::get() 调用被 g++ 错误地解析。
-
#6892 bron_kerbosch_all_cliques() 不需要 VertexIndexGraph 概念。
-
Trac 中未列出的其他错误和警告。
-
-
-
区域设置(Locale):
-
修复了与STLPort库的构建问题
-
Boost.System现在是必需的依赖项
-
-
数学 (Math):
-
将数学常量提升为一等公民,包括通过三个命名空间方便地访问最常用的内置浮点数float、double和long double。
-
添加了由Benjamin Sobotta编写的Owen T函数和偏态正态分布。
-
添加了汉克尔函数。
-
根据K R Walker提交的补丁,修正了问题#6627 nonfinite_num_put格式化0.0不正确。
-
更改了常量初始化机制,使其即使对于用户自定义类型也是线程安全的,并且即使`
long double
`不是,用户自定义类型也能获得常量的完整精度。例如,即使`long double
`可能只有64位或80位,128位有理数逼近也能与UDT一起工作并执行正确的操作。 -
修复了`
bessel_jy
`中的问题,该问题导致Y[sub 8.5](4[pi])产生NaN。
-
-
状态机 (MSM):
-
eUML:改进仅使用eUML作为状态转换表的前端的语法。注意:重大更改!https://boost.ac.cn/doc/libs/1_50_0/libs/msm/doc/HTML/ch03s04.html#eUML-composite-table
-
Bug修复:只有当初始状态定义为序列时,图构建才有效。
-
Bug修复:为终止或中断状态定义的标志不再中断这些状态的阻塞功能。
-
Bug修复:并非所有情况下,来自多个区域的多个延迟事件都能正常工作。
-
Bug修复:访问者按值传递给子状态机。
-
Bug修复:对于向自身发送事件的子状态机,未调用no_transition。
-
修复了GCC的警告。
-
-
程序选项 (Program Options):
-
改进错误报告(来自Leo Goodstadt的补丁)。
-
支持自定义帮助信息中选项值的名称(#4781)
-
修复了与GCC 4.7的编译问题(#6790)。
-
-
Proto:
-
当且仅当编译器实现N3276时,使用基于`
decltype
`的`result_of
`。 -
对于C++11,强制`
mpl::eval_if_c
`和`mpl::if_c
`的参数为`bool
`。 -
禁用`'__forceinline未内联'在msvc上的警告。
-
-
比率 (Ratio):
-
已修复的bug
-
#6498 使用默认设置,boost::ratio无法编译。
-
-
-
作用域退出 (ScopeExit):
-
新特性
-
使用可变参数宏以逗号分隔列表的形式指定捕获(但保留了预处理器序列语法以保证向后兼容性)。
-
使用`
this_
`捕获作用域中的对象。 -
使用`
void
`支持空捕获。 -
在支持C++11 lambda函数的编译器上,使用`
BOOST_SCOPE_EXIT_ALL
`进行隐式类似lambda的捕获。
-
-
-
线程 (Thread):
-
新特性
-
#1850 请求unlock_guard以补充lock_guard。
-
#2637 请求shared_mutex duration timed_lock和timed_lock_shared。
-
#2741 建议管理可移植和不可移植的线程属性。
-
#3567 请求shared_lock_guard。
-
#6194 适配Boost.Move。
-
#6195 C++11兼容性:使用Boost.Chrono提供标准时间相关接口。
-
#6217 按照Howard Hinnant的建议增强Boost.Thread共享互斥锁接口。
-
#6224 C++11兼容性:在支持的编译器上添加标准noexcept的使用。
-
#6226 C++11兼容性:添加来自锁的显式bool转换。
-
#6228 添加具有分配器的promise构造函数,遵循标准C++11。
-
#6230 C++11兼容性:遵循C++11中定义的异常报告机制。
-
#6266 重大更改:如果可连接,线程析构函数应调用terminate。
-
#6269 重大更改:如果可连接,线程移动赋值应调用terminate。
-
#6272 C++11兼容性:添加thread::id哈希特化。
-
#6273 C++11兼容性:添加cv_status枚举类并在条件等待函数中使用它。
-
#6231 在文档中添加BasicLockable需求以遵循C++11。
-
#6342 C++11兼容性:将one_flag适配到C++11接口。
-
#6671 upgrade_lock:缺少互斥锁和释放函数。
-
#6672 upgrade_lock::缺少来自时间相关类型的构造函数。
-
#6675 upgrade_lock::缺少非成员交换。
-
添加了缺失的packaged_task::result_type和具有分配器的packaged_task::构造函数。
-
添加了packaged_task::reset()
-
-
已修复的bug
-
#2575 Bug - Itanium平台上的Boost 1.36.0。
-
#4345 thread::id和线程级联的连接问题。
-
#4921 BOOST_THREAD_USE_DLL和BOOST_THREAD_USE_LIB至关重要,需要记录在案。
-
#5013 文档:boost::thread:pthreads_exit导致terminate()。
-
#5173 boost::this_thread::get_id非常慢。
-
#5351 中断future get抛出boost::unknown_exception。
-
#5516 如果存在另一个读锁,则在之前的升级锁释放时不会获取升级锁。
-
#5990 shared_future
::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&&)的问题。
-
-
测试的编译器
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
-
来自subversion的Clang
-
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
-
来自subversion的Clang
-
Intel 11.1, 12.0
-
GCC: 4.4.4
-
GCC,C++0x模式:4.4.4
-
-
Windows
-
Visual C++ 8.0, 10.0
-
带有STLport的Visual C++:9.0
-
带有STLport的Visual C++,Windows Mobile 5: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负责此次发布。