版本 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 |
补丁
-
Locale 补丁 - 修复了一个导致
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)。 -
使 strand 实现的数量可通过
BOOST_ASIO_STRAND_IMPLEMENTATIONS
宏配置。 -
添加了对
BOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION
标志的支持,该标志将 strand 分配切换为使用轮询方法而不是哈希。 -
修复了当使用
strand.post()
时可能发生的潜在 strand 饥饿问题。
-
-
Fusion:
-
使
single_view
成为随机访问 fusion 序列。 -
从
fusion::distance
中删除伪造的编译时断言。 -
更清晰的分段 Fusion 实现。
-
-
Geometry:
-
错误修复
-
鲁棒性问题,在某些情况下,union 输出失败。已修复。
-
鲁棒性问题,在某些情况下,计算出的交点在段外。已修复。
-
概念问题,笛卡尔相交不理解除提供的段以外的其他段。已修复。
-
有时会遗漏线串中的自相交。已修复。
-
fusion 坐标系未正确注册。已修复。
-
-
算法改进
-
现在不会自动执行自相交检查,这可能会降低性能。
-
除此之外,自相交检查速度更快。
-
相交现在避免输出重复点。因此,它们输出最小集合。
-
-
附加算法
-
covered_by: within 定义为“在内,不在边界上”。 covered_by 是“在内或在边界上”
-
-
附加功能
-
within: 现在可以为 within<point, box> 和 within<box, box> 指定策略
-
convert: 支持更广泛的转换
-
assign: 同样,(目前部分) convert 的同义词(但参数相反)
-
-
附加坐标类型
-
对 Boost.Rational 的基本支持
-
-
-
Math:
-
为循环 Bessel I、J、K 和 Y 函数添加了新的级数求值方法。 还非常注意避免这些函数的虚假溢出和下溢。 修复了问题 #5560。
-
添加了使用逆卡方分布进行贝叶斯统计的示例,由 Thomas Mang 提供。
-
添加了测试以使用改进版本的 lexical_cast,该版本处理 C99 非有限数,而无需使用全局 facets。
-
更正了错误的超出范围的均匀分布 CDF 补值 #5733。
-
在 OpenBSD 上启用了 long double 支持(问题 #6014)。
-
更改了 nextafter 和相关函数的行为方式,使其与其他实现的行为方式相同 - 以便 nextafter(+INF, 0) 是一个有限值(问题 #5832)。
-
更改了 tuple 包含配置,以修复与 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 声明的内部表的 guard/action 的 "Fsm" 模板参数现在是子机器,而不是更高级别的状态机。 在更高级别的状态机中使用内部行声明的内部转换保留其行为(“Fsm”参数是更高级别的状态机)。 总结一下,内部转换 "Fsm" 参数是包含此转换的最接近的状态机。
-
-
Numeric.Conversion:
-
添加了 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 管理了此版本。