版本 1.55.0
版本 1.55.0
2013年11月11日 19:50 GMT
平台 | 文件 |
---|---|
unix | boost_1_55_0.tar.bz2 |
boost_1_55_0.tar.gz | |
windows | boost_1_55_0.7z |
boost_1_55_0.zip |
其他下载
-
PDF 文档 (仅适用于基于 BoostBook 的文档)。
新闻
Config 库已移除对一些非常旧版本的编译器的支持。新的最低要求是
-
Digitial Mars 8.41
-
GCC 3.3
-
Intel 6.0
-
Visual C++ 7.1
注意:这只是 Config 的最低要求。某些 Boost 库可能有更高的最低要求,并且可能不支持所有平台或编译器。
其他编译器目前保持不变,但我们正在考虑移除对其他一些旧编译器的支持。 候选移除的编译器是
-
Metroworks C++ (即 codewarrior)
-
SunPro 5.7 及更早版本
-
Borland C++ Builder 2006 (5.82) 及更早版本
如果您正在使用这些编译器中的任何一个,请在邮件列表中告知我们。我们将在做出决定之前考虑收到的任何反馈。
Visual Studio 2013/Visual C++ 12 的已知错误
Visual Studio 2013 在发布过程的后期才发布,因此存在一些未解决的问题。这些问题包括
-
由于缺少 include,无法编译序列化。
-
在诸如 Unordered 和 MultiIndex 之类的库中,使用初始化列表调用重载函数可能会导致编译错误,Visual C++ 声称重载不明确。这是一个 Visual C++ 的 bug,目前尚不清楚是否有好的解决方法。这不会影响不使用初始化列表的代码,或使用不需要隐式转换的初始化列表(即,容器的精确值类型的初始化列表)。
-
线程:
ex_scoped_thread
编译失败 (#9333)。
新库
-
Predef: 此库从 Rene Rivera 获取,定义了一组编译器、架构、操作系统、库和其他版本号,这些版本号来自 C、C++、Objective C 和 Objective C++ 预定义宏或在通常可用的头文件中定义的宏中收集的信息。
更新的库
-
Asio:
-
实现了对 Windows Runtime 的有限移植。此支持要求启用语言扩展。由于 Windows Runtime API 公开的功能受限,因此此移植还存在以下注意事项
-
诸如
io_service
、strand
、缓冲区、组合操作、定时器等核心功能应全部正常工作。 -
对于套接字,仅支持客户端 TCP。
-
不支持显式绑定客户端 TCP 套接字。
-
套接字不支持
cancel()
函数。只能通过关闭套接字来取消异步操作。 -
不支持使用
null_buffers
的操作。 -
仅支持
tcp::no_delay
和socket_base::keep_alive
选项。 -
解析器不支持服务名称,仅支持数字。也就是说,您必须使用“80”而不是“http”。
-
大多数解析器查询标志均无效。
-
-
修复了一个回归(在 Boost 1.54 中引入),在某些平台上,来自
async_connect
的错误没有正确传播到完成处理程序 (#8795)。 -
修复了 Windows 特有的回归(在 Boost 1.54 中引入),当多个线程正在运行
io_service
时会发生。发生此错误时,异步操作的结果(错误和传输的字节数)会被错误地丢弃,并改用零值。对于 TCP 套接字,这会导致虚假的 end-of-file 通知 (#8933)。 -
修复了处理程序跟踪中的一个 bug,该 bug 没有正确打印某些处理程序 ID (#8808)。
-
修复了用于测试成功同步接受操作的比较,以便它可以与无符号套接字描述符正常工作 (#8752)。
-
确保在已经引发的信号上启动
async_wait
时,信号编号会正确传递给完成处理程序 (#8738)。 -
禁止了 g++ 4.8+ 关于未使用 typedef 的警告 (#8980)。
-
为使用默认调用钩子的处理程序启用了移动优化 (#8624)。
-
澄清了程序不得发出重叠的
async_write_at
操作 (#8669)。 -
Visual C++ 语言扩展使用
generic
作为关键字。添加了一个解决方法,当这些语言扩展生效时,会将命名空间重命名为cpp_generic
。 -
为 Microsoft Visual Studio 2012 启用了移动支持 (#8959)。
-
为 Microsoft Visual Studio 2012 添加了
use_future
支持。 -
消除了一些不必要的处理程序副本。
-
-
Atomic:
-
为 GCC、MSVC 和兼容编译器上的 x86 目标添加了对 64 位原子操作的支持。当在编译时已知目标 CPU 支持所需指令时,将启用此支持。
-
为 GCC 和兼容编译器上的 x86-64 目标添加了对 128 位原子操作的支持。当在编译时已知目标 CPU 支持所需指令时,将启用此支持。可以使用新的
BOOST_ATOMIC_INT128_LOCK_FREE
宏来测试此支持。 -
添加了基于 GCC
__atomic*
内置函数的atomic<>
的更高效实现,该内置函数自 GCC 4.7 起可用。 -
添加了对更多 ARM v7 CPU 的支持,改进了对 Thumb 2 的检测。
-
在 GCC 和兼容编译器上添加了对 x32(即具有 32 位指针的 64 位 x86)目标的支持。
-
移除了对 Boost.Thread 的依赖。
-
内部锁池现在包括适当的填充和对齐,以避免虚假共享。
-
修复了在 Windows 上使用 Intel 编译器进行编译的问题。移除了在 Windows 上编译时内部宏的重复。
-
当可用时,一些代码重构以使用 C++11 功能。
-
-
配置:
-
重大更改: 移除对一些较旧编译器的支持。新的最低编译器版本为
-
Digitial Mars 8.41
-
GCC 3.3
-
Intel 6.0
-
Visual C++ 7.1
其他编译器保持不变。 -
-
-
几何:
-
附加功能
-
为线段类型添加了质心
-
为线段-盒子和线串-盒子添加了 intersects() 和 disjoints()
-
添加了使用打包算法创建 rtree
-
添加了 contains() 和 covers() 空间查询谓词
-
添加了迭代查询
-
-
缺陷修复
-
在某些情况下调用了 .back() 或 .clear(),违反了 Concepts 的用法。修复了报告的案例
-
-
-
图:
-
不再允许
void
作为捆绑的属性类型(例如,在图类型的 VertexProperties 模板参数中);它之前不能可靠地工作,但现在静态断言完全禁止它。请改用boost::no_property
。 -
在深度优先搜索中添加了对
finish_edge
访问者事件点的支持;此更改应向后兼容没有该成员函数的访问者。 -
禁用在 Sun 编译器上构建测试。
-
在
breadth_first_visit
、breadth_first_search
、dijkstra_shortest_paths
和dijkstra_shortest_paths_no_init
的非命名参数版本中支持多个源顶点。此功能尚未记录;要使用它,请将这些函数中每个函数的单个源顶点参数替换为包含要使用的源顶点的相同类型的两个输入迭代器。 -
添加了 Hawick 电路算法;由 Louis Dionne 贡献。
-
添加了边着色算法;由 Maciej Piechotka 贡献。
-
添加了最小成本最大流算法;由 Piotr Wygocki 贡献。
-
-
侵入式:
-
源码破坏性:已弃用 splay 容器中的
xxx_dont_splay
函数。已弃用 splay 容器中的splay_set_hook
,请改用bs_set_hook
。两者将在 Boost 1.56 中删除。 -
ABI 破坏性:哈希容器的末尾迭代器被实现为指向桶数组末尾的下一个位置(请参阅 #8698),这导致在要插入的值被分配在桶数组旁边时出现严重错误。末尾迭代器实现已更改为指向桶数组的开头。
-
为了减少模板和调试符号膨胀,进行了大规模重构。在调试模式下,MSVC 编译器中的测试对象文件已减少到一半。没有相同 COMDAT 折叠 (ICF) 的工具链应该会注意到大小的改进。
-
实现了 SCARY 迭代器。
-
-
日志:
-
一般更改
-
添加了一个新的配置宏
BOOST_LOG_WITHOUT_DEFAULT_FACTORIES
。通过定义此宏,用户可以禁用设置解析器使用的默认过滤器和格式化程序工厂的编译。这可以显着减小二进制大小,同时仍保留对设置解析器的支持。 -
重写了一些解析器,以减少编译的二进制大小。重写的解析器在检测模糊和不正确的输入方面更加健壮。
-
以下头文件已弃用:
boost/log/utility/intrusive_ref_counter.hpp
、boost/log/utility/explicit_operator_bool.hpp
、boost/log/utility/empty_deleter.hpp
。这些头文件将在未来的版本中删除。这些头文件的内容已移至其他库。
-
-
有关更多详细信息,请参阅 更新日志。
-
-
数学:
-
修复了 PGI 编译问题 #8333。
-
修复了 PGI 常数值初始化问题,该问题导致 erf 生成不正确的结果 #8621。
-
修复了 Student's T 分布在自由度很大(大于最大可表示整数)时的行为不正确的问题 #8837。
-
为 Intel C++ 14 中损坏的 <tuple> 添加了解决方法 #9087。
-
改进了椭圆积分中参数缩减的一致性 #9104。
-
修复了逆不完全贝塔函数中的错误,当贝塔函数实际上是反正弦函数或 Student's T 分布时会导致抵消错误。
-
修复了 Bessel I 和 K 函数连分数中导致虚假上溢/下溢的问题。
-
添加了 Thomas Luu 对非中心卡方分布分位数的改进。
-
多精度:
-
添加了对 Boost.Serialization 的支持。
-
抑制了一些 GCC 警告。请参阅 8872。
-
修复了对大整数参数使用 pow 时的错误。请参阅 8809。
-
修复了计算 0N 的 pow 中的错误。请参阅 8798。
-
修复了固定精度 cpp_int IO 代码中的错误,该错误导致当位数非常小(小于 CHAR_BIT)时转换为字符串失败。请参阅 8745。
-
修复了当固定精度类型溢出时导致左移失败的 cpp_int 中的错误。请参阅 8741。
-
修复了 cpp_int 中的一些外观警告。请参阅 8748。
-
修复了调用 C99 中需要是宏的函数的问题。请参阅 8732。
-
修复了导致 cpp_int 从 INT_MIN、LONG_MIN 等构造失败的错误。请参阅 8711。
-
-
MPI:
-
替换了对已弃用的 MPI 函数的调用
-
添加了对多线程初始化的支持
-
添加了原地集合操作
-
-
PropertyMap:
-
现在可以通过非破坏性地链接
.property(name, pm)
调用来构建 dynamic_properties 对象。示例boost::dynamic_properties() .property("color", color_map) .property("pos", position_map)
-
使用原始指针作为属性映射已弃用;它过去经常在 Visual Studio 中失败。此用法已从 Boost.Graph 中的所有测试和示例中删除。用于图中顶点属性的替代方法(此功能最常见的用途)是
boost::make_iterator_property_map( <pointer or container .begin() iterator>, get(boost::vertex_index, <graph object>))
(注意:此代码中 get() 缺少命名空间限定对于通用代码是必要的)。在图上下文之外,最接近的等效项是boost::make_iterator_property_map( <pointer>, boost::typed_identity_property_map<std::size_t>())
在<boost/property_map/property_map.hpp>
的第 151 行和第 159 行上有一些被注释掉的静态断言,可以取消注释以查找用户代码中已弃用的指针用法。
-
-
SmartPtr:
-
添加了
boost/smart_ptr/intrusive_ref_counter.hpp
头文件,该文件从 Boost.Log 中提取。该头文件实现了一个 mixin 基类,为用户的类添加了对intrusive_ptr
的支持。
-
-
线程:
-
新功能
-
#8519 同步:使用完成函数更新类 barrier。
-
#8515 异步:添加
shared_future::then
。 -
#8519 同步:使用完成函数更新类 barrier
-
#8615 异步:将 make_future/make_shared_future 替换为 make_ready_future。
-
#8627 异步:添加 future<>::unwrap 和解包装构造函数。
-
#8677 异步:添加 future<>::get_or。
-
#8678 异步:添加 future<>::fallback_to。
-
#8891 upgrade_to_unique_lock:缺少 mutex() 函数。
-
#8955 请求更有效的方式从 future 获取 exception_ptr。
-
-
修复的错误
-
#7461 detail::win32::ReleaseSemaphore 可能以 count_to_release 等于 0 的值调用
-
#8070 优先使用 GetTickCount64 而不是 GetTickCount
-
#8768 win32 condition_variable::wait_until 在极少数情况下无限等待。
-
#8817 Boost Thread Windows CE _createthreadex 处理破坏了 mingw w64。
-
#8943 在 Windows 上使用 Intel C++ Composer XE 2013 编译使用 boost::call_once 的代码失败。
-
#8931 external_locking 参考中的错别字。
-
#9029 文档中的拼写错误。
-
#9037 gcc -Wshadow 在 condition_variable{,_fwd}.hpp 中给出警告。
-
#9041 Boost.Thread DSO 可能需要与 Boost.Atomic 链接。
-
#9048 boost::scoped_thread 无用的带有可变参数模板参数的构造函数。
-
#9079 条件变量将永远等待某些时间点值 (Win)。
-
-
-
实用程序:
-
boost::result_of
可以设置为默认使用 TR1 协议,如果函数对象不支持(例如 C++11 lambda 函数),则回退到decltype
。定义BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
配置宏以启用此模式。 -
改进了
boost::base_from_member
类模板中对 C++11 的支持。如果编译器支持右值引用、可变参数模板和函数模板默认参数,则该类为构造函数参数实现完美转发。 -
添加了
boost/utility/explicit_operator_bool.hpp
和boost/utility/empty_deleter.hpp
头文件,这些文件是从 Boost.Log 中提取的。这些头文件分别实现了用于定义到bool
的显式转换运算符以及一个不执行任何操作的删除器函数对象的实用程序。
-
更新的工具
-
Quickbook:
-
Quickbook 1.6 已完成,有关详细信息,请参阅Quickbook 文档。
-
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang: 3.3、3.2、3.1、3.0
-
Clang, C++11, libc++: 3.4, 3.3
-
GCC: 4.8.1、4.7.3、4.6.3、4.5.3、4.4.7
-
GCC, C++11: 4.8.1
-
GCC, C++98: 4.8.1
-
-
OS X
-
GCC: 4.2
-
Apple Clang: 5.0
-
Apple Clang, C++11: 5.0
-
-
Windows
-
GCC, mingw: 4.8.0、4.7.2、4.6.3、4.5.4、4.4.7
-
Visual C++: 11.0、10.0、9.0
-
Boost 的其他测试编译器包括
-
OS X
-
Apple Clang: 5.0
-
Apple Clang, C++11: 5.0
-
Clang: trunk
-
Clang, C++11: trunk
-
GCC: 4.2.1
-
-
Linux
-
Clang: 3.3、3.2、3.1、3.0、trunk
-
Clang, C++11: 3.4
-
Clang, C++11, libc++: 3.4, 3.3
-
GCC: 4.9.0 (实验性)、4.8.1、4.7.3、4.6.4、4.5.3、4.4.7
-
GCC, C++11: 4.8.1
-
GCC, C++98: 4.8.1
-
Intel: 13.0.1、12.1.6
-
-
Windows
-
GCC, mingw: 4.8.0、4.7.2、4.6.3、4.5.4、4.4.7
-
Visual C++: 11.0、10.0、9.0
-
鸣谢
Beman Dawes、Eric Niebler、Rene Rivera、Daniel James、Vladimir Prus 和 Marshall Clow 管理了此版本。