版本 1.43.0
版本 1.43.0
2010年5月6日 12:00 格林尼治标准时间
平台 | 文件 |
---|---|
Unix | boost_1_43_0.tar.bz2 |
boost_1_43_0.tar.gz | |
Windows | boost_1_43_0.7z |
boost_1_43_0.zip |
新库
-
Functional/factory: 用于动态和按值构造的函数对象,来自 Tobias Schwinger。
-
Functional/forward: 用于解决转发问题的函数对象适配器,来自 Tobias Schwinger。
主要更新
-
Range: Boost.Range 进行了大量更新,包括最近审查的 Boost.RangeEx 的所有功能,来自 Neil Groves。
-
基于范围的完整 STL 基于迭代器的算法版本。
-
可以与基于范围的算法结合使用的范围适配器,具有前所未有的表达能力和效率。
-
新函数:irange、istream_range、join、combine。
-
更新的库
-
累加器 (Accumulators):
-
避免在运算符重载返回类型中过早地进行模板求值。
-
-
数组 (Array):
-
添加了对 SunCC 编译器的支持。
-
添加了“fill”成员函数。
-
将异常代码更改为使用 boost::throw_exception。
-
-
Asio:
-
改进性能。
-
减少编译时间。
-
减小生成的代码大小。
-
扩展了保证后台线程不调用用户代码的范围,使其涵盖所有异步操作 (#3923)。
-
更改为在 Linux 上使用边沿触发的 epoll。
-
更改为在 Linux 上使用
timerfd
分派计时器(如果可用)。 -
更改为在 Mac OS X 和 BSD 平台上使用单次通知的 kqueue。
-
根据 TR2 建议,添加了位掩码类型
ip::resolver_query_base::flags
。此类型可防止从int
到flags
的隐式转换,从而允许编译器捕获用户错误地将数字端口号作为服务名称传递的情况。 -
修复了一个错误,该错误导致 0 字节异步读取错误地将
error::eof
结果传递给完成处理程序 (#4023)。 -
更改解析器实现,不再需要类型定义
InternetProtocol::resolver_query
和InternetProtocol::resolver_iterator
,因为这两个类型定义都不是已记录的InternetProtocol
需求的一部分。ip::tcp
、ip::udp
和ip::icmp
类中的相应类型定义已被弃用。 -
修复了非基于
select()
的反应器的带外处理。 -
添加了新的
BOOST_ASIO_DISABLE_THREADS
宏,允许独立禁用 Asio 的线程支持。 -
次要文档改进。
-
-
多索引容器 (Multi-index Containers):
-
现在通过用户提供的工具
save_construct_data
和load_construct_data
正确支持非默认可构造值的序列化。multi_index_container
序列化类版本已从 1 提升到 2。
-
-
Proto:
-
行为上的细微变化:非常量表达式自我赋值会创建一个赋值节点。有关详细信息,请参阅 Proto 的发行说明。
-
对推荐的表达式扩展机制的细微更改:使用
BOOST_PROTO_EXTENDS_USING_ASSIGN()
。有关详细信息,请参阅 Proto 的发行说明。 -
修复了在 Proto 转换中调用可调用单态函数对象时的错误。
-
修复了各种常量正确性问题,解决了 Fusion 错误。
-
向 Proto 终端添加非常量函数调用重载。
-
向
proto::literal<>
添加默认构造函数。 -
不要使用已弃用的配置宏。
-
添加
proto::assert_matches()
函数及其相关函数到<boost/proto/debug.hpp>. -
functional::make_expr<>
和functional::unpack_expr<>
返回常量限定的右值。 -
添加 Expr 和 Domain 概念的文档。
-
-
Random:
-
将 random_device 的实现放在编译后的库中,并添加了 Windows 支持。
-
使用 Quickbook/Doxygen/Boostbook 重写了文档并使其保持最新。
-
-
Thread:
-
对除
thread_interrupted
之外的所有异常使用boost::throw_exception
-
添加了对问题 2742 的修复
-
对互斥锁和
call_once
进行了优化
-
-
Xpressive:
-
添加缺少的包含到<boost/xpressive/regex_error.hpp>.
-
构建系统
-
交叉编译到 GNU 目标时,会正确创建静态库。以前,使用此类库会导致存档没有索引错误。
-
使用 Windows 上的 gcc 编译器(mingw 和 cygwin)命名的 DLL 和导入库现在与这些环境的默认约定相匹配。以前,命名方案与其他 Windows 编译器相同。
更新的工具
-
Quickbook:
-
Unicode 转义字符。
-
支持 UTF-8 字节顺序标记。
-
在简单标记中禁止使用
[
。修复了一些标点符号不匹配的错误。 -
添加命令行标志 (
-D
) 以在命令行中定义宏。 -
改进了后处理器输出。
-
检查模板中
[section]
和[endsect]
标记是否平衡。
-
测试的编译器
Boost 的主要测试编译器是
-
OS X
-
Intel Leopard 上的 GCC 4.0.1。
-
-
Linux
-
Ubuntu Linux 上的 GCC 4.4.1。
-
64 位 Suse 上的 GCC 4.4。
-
-
Windows
-
Windows XP 上的 Visual C++ 8.0 SP1 和 9.0 SP1。
-
使用 Mingw 的 GCC 4.3.3
-
-
FreeBSD
-
GCC 4.2.1,32 位和 64 位。
-
Boost 的其他测试编译器包括
-
Linux
-
32 位 Red Hat Enterprise Linux 上的 Intel 10.1、11.1。
-
64 位 Red Hat Enterprise Linux 上的 Intel 10.1、11.0、11.1。
-
Red Hat Enterprise Linux 上的 GCC 3.4.6、4.2.4、4.3.4、4.4.3。
-
Red Hat Enterprise Linux 上具有 C++0x 扩展的 GCC 4.3.4、4.4.3。
-
QLogic PathScale(TM) 编译器套件:Red Hat Enterprise Linux 上的版本 3.2。
-
-
OS X
-
Leopard 上的 Intel C++ 编译器 10.1、11.0、11.1。
-
Intel Leopard 上的 GCC 4.0.1。
-
来自 Subversion 的 Clang。
-
-
Windows
-
32 位 XP 上的 Visual C++ 8.0、9.0。
-
XP 和 Windows Mobile 5.0 上使用 STLport 5.2 的 Visual C++ 9.0。
-
XP 上的 Visual C++ 10.0。
-
64 位 Windows 7 上的 Visual C++ 10.0。
-
Borland/Codegear C++ 5.9.3、6.1.3 (2009)、6.2.1 (2010)。
-
Vista 32 位上使用 Visual C++ 9.0 后端的 Intel C++ 11.1。
-
Mingw 上的 GCC 4.3.3。
-
Mingw 上的 GCC 4.4.3,带和不带 C++0x 扩展。
-
Mingw 上的 GCC 4.5。
-
-
AIX
-
AIX 版本 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition,V10.1.0.0。
-
-
FreeBSD
-
FreeBSD 7.2 64 位上的 GCC 4.2.1。
-
FreeBSD 8.0 32 位上的 GCC 4.2.1。
-
-
Solaris
-
Solaris 5.10 上的 Sun C++ 5.10。
-
致谢
Beman Dawes、Eric Niebler、Rene Rivera、Daniel James 和 Vladimir Prus 负责此版本的管理。