版本 1.48.0
版本 1.48.0
2011 年 11 月 15 日 15:47 GMT
平台 | 文件 |
---|---|
unix | boost_1_48_0.tar.bz2 |
boost_1_48_0.tar.gz | |
windows | boost_1_48_0.7z |
boost_1_48_0.zip |
补丁
-
区域设置补丁 - 修复了一个导致
boost::locale::utf::utf_traits
接受一些无效 UTF-8 序列的错误,这是一个可能的安全漏洞。
新库
更新的库
-
Asio:
-
实施了各种性能改进,包括
-
在单线程用例(即当
concurrency_hint
为 1 时)中使用线程本地操作队列,以消除锁定/解锁对。 -
允许在不持有锁的情况下执行一些
epoll_reactor
投机操作。 -
通过在调用相应的处理程序之前立即执行
epoll_reactor
的 I/O 操作来提高引用局部性。还可以提高跨 CPU 的可扩展性。 -
专门针对恰好是两个缓冲区的数组(
boost::array
或std::array
)的缓冲区序列的异步读取和写入操作。
-
-
修复了
async_read_until
的 regex 重载中的编译错误 (#5688)。 -
通过显式指定全局命名空间的
signal()
函数来修复了特定于 Windows 的编译错误 (#5722)。 -
更改了
deadline_timer
实现,除非计时器堆非空,否则不读取时钟。 -
更改了 SSL 缓冲区大小,使其足够大以容纳完整的 TLS 记录 (#5854)。
-
修复了同步的
null_buffers
操作,以便它们遵守用户的非阻塞设置 (#5756)。 -
更改为在使用 Windows 时在运行时设置
fd_set
的大小。 -
由于将 const 限定符应用于函数类型,禁用了 MSVC 警告。
-
修复了使用 Intel C++ 编译器时发生的崩溃 (#5763)。
-
更改了 OpenSSL 初始化以支持所有可用的算法。
-
修复了会话正常关闭时的 SSL 错误映射。
-
添加了一些延迟测试程序。
-
阐明了当缓冲区已满时读取操作结束 (#5999)。
-
修复了
epoll_reactor
初始化中的异常安全问题 (#6006)。 -
通过
BOOST_ASIO_STRAND_IMPLEMENTATIONS
宏使 strand 实现的数量可配置。 -
添加了对
BOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION
标志的支持,该标志将 strand 分配切换为使用循环方法而不是哈希。 -
修复了当使用
strand.post()
时可能发生的潜在 strand 饥饿问题。
-
-
Fusion:
-
使
single_view
成为随机访问融合序列。 -
从
fusion::distance
中删除虚假的编译时断言。 -
更清晰的分割 Fusion 实现。
-
-
Geometry:
-
错误修复
-
健壮性问题,在某些情况下,并集未能输出。已修复。
-
健壮性问题,在某些情况下,计算出的交点在段外。已修复。
-
概念问题,笛卡尔交集不理解除了提供的段之外的其他段。已修复。
-
有时会错过线串中的自相交。已修复。
-
融合坐标系未正确注册。已修复。
-
-
算法的改进
-
现在不会自动完成自相交的检查,这可能会严重影响性能。
-
除此之外,自相交的检查也更快了。
-
交点现在避免输出重复的点。因此它们输出最小集。
-
-
其他算法
-
covered_by:within 定义为“within,不在边界上”。 covered_by 是“within 或在边界上”
-
-
其他功能
-
within:现在可以为 within<point, box> 和 within<box, box> 指定策略
-
convert:支持更广泛的转换
-
assign:idem,(当前部分)convert 的同义词(但参数相反)
-
-
其他坐标类型
-
对 Boost.Rational 的基本支持
-
-
-
Math:
-
向循环贝塞尔 I、J、K 和 Y 函数添加了新的级数求值方法。还非常注意避免这些函数的虚假上溢和下溢。修复了问题 #5560。
-
添加了 Thomas Mang 提供的使用逆卡方分布进行贝叶斯统计的示例。
-
添加了使用改进版本的 lexical_cast 的测试,该版本无需使用全局 facet 即可处理 C99 非有限值。
-
修正了错误的超出范围的均匀分布 CDF 补值 #5733。
-
在 OpenBSD 上启用了 long double 支持(问题 #6014)。
-
更改了 nextafter 和相关函数的行为方式与其他实现相同 - 因此 nextafter(+INF, 0) 是一个有限值(问题 #5832)。
-
更改了元组包含配置,以修复与 Boost.Tr1 结合使用时的问题(问题 #5934)。
-
更改了 class eps_tolerance 以在范围的两端均为零时正确运行(问题 #6001)。
-
修复了 prime.hpp 上缺少 include 保护(问题 #5927)。
-
从 constants.hpp 中删除了未使用的/未记录的常量(问题 #5982)。
-
修复了 nonfinite_num_facets.hpp 中缺少的 std:: 前缀(问题 #5914)。
-
Cray 编译器兼容性的次要补丁。
-
-
MSM:
-
eUML:添加了更简单的事件重新处理:process(event_) 和 reprocess()
-
重写了内部转换表。有一些错误(子子机器内部转换表中的递归失败)和缺少的功能(主状态机的未使用内部转换表)。
-
错误修复
-
将 favor_compile_time 策略恢复到 Boost 1.46 状态
-
none 事件现在可以从任何其他事件转换
-
eUML 和伪退出状态
-
修复了无法正常工作的 Flag_AND
-
修复了导致子机中多次处理同一事件的罕见错误,该子机的转换表包含此事件及其基本事件。
-
关于未使用的变量的 gcc 警告
-
-
重大更改:新的内部转换表特性导致了一个小的重大更改。在一个子状态机中,使用 internal_transition_table 声明的内部表的守卫/动作的 "Fsm" 模板参数现在是子状态机,而不是更高层的状态机。在更高层状态机中使用内部行声明的内部转换保持其行为("Fsm" 参数是更高层的状态机)。总结来说,内部转换的 "Fsm" 参数是包含此转换的最接近的状态机。
-
-
数值转换:
-
添加了 numeric_cast_traits;详情请参阅 'numeric_cast_traits'。
-
-
Proto:
-
重大更改: 通过在支持右值引用的编译器上使用右值引用,减少了运算符重载的数量。任何在 Proto 表达式上定义了额外运算符重载的用户代码都可能因此更改而变得模糊。解决方案是使用语法来禁用 Proto 的运算符,这些运算符因任何用户定义的运算符而变得模糊。
-
将 Proto 标签类型的定义移动到 ADL 阻止的命名空间中。
-
向
proto::siwtch_
添加第二个模板参数,以控制向 case 的分派。 -
允许使用
BOOST_PROTO_EXTENDS
和BOOST_PROTO_BASIC_EXTENDS
指定依赖域。
-
-
TypeTraits:
-
扩展以支持运算符检测。
-
测试过的编译器
Boost 的主要测试编译器是
-
Linux
-
LLVM Clang 2.8
-
GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.5.1, 4.5.2, 4.6
-
GCC,C++0x 模式:4.3.4, 4.4.3, 4.5.2
-
Intel 11.1
-
-
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
-
-
FreeBSD
-
GCC 4.2.1,32 位和 64 位。
-
-
QNX
-
QCC 4.4.2
-
QCC,C++0x 模式:4.4.2, 4.6.1
-
Boost 的其他测试编译器包括
-
Linux
-
来自 subversion 的 Clang,带有 libc++ 和 GNU libstdc++
-
LLVM Clang 2.8 x
-
GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.4, 4.5.2, 4.5.4, 4.6.1, 4.6.2
-
GCC,C++0x 模式:4.3.4, 4.4.3, 4.4.4, 4.5.2
-
pgCC: 11.2 x
-
Intel: 10.1, 11.1, 12.0
-
PathScale: 4.0.8
-
Visual Age 10.1
-
-
OS X
-
来自 subversion 的 Clang,带有 libc++ 和 GNU libstdc++。
-
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
-
带有 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.1
-
GCC,C++0x 模式,mingw:4.5.2
-
GCC,mingw 64 位:4.7.0
-
-
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 管理了此版本。