Boost C++ 库

...世界上最受尊敬和最专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

版本 1.36.0

版本 1.36.0

2008 年 8 月 14 日 12:00 GMT

文档

下载
平台文件
unixboost_1_36_0.tar.bz2
boost_1_36_0.tar.gz
windowsboost_1_36_0.7z
boost_1_36_0.zip

新库

  • 累加器 (Accumulators): 来自 Eric Niebler 的用于增量计算和统计累加器收集的框架。
  • 异常 (Exception): 来自 Emil Dotchevski 的用于在异常对象中传输任意数据,并在线程之间传输异常的库。
  • 单位 (Units): 来自 Matthias Schabel 和 Steven Watanabe 的零开销量纲分析和单位/数量操作与转换。
  • 无序 (Unordered): 来自 Daniel James 的无序关联容器。

更新的库

  • Asio:
    • 添加了对串行端口的支持。
    • 添加了对 UNIX 域套接字的支持。
    • 添加了对原始套接字和 ICMP 的支持。
    • 为 POSIX 流式文件描述符(不包括常规文件)添加了包装器。
    • 为 Windows 流式 HANDLE(例如命名管道)添加了包装器(需要与 I/O 完成端口一起使用的 HANDLE)。
    • 为 Windows 随机访问 HANDLE(例如文件)添加了包装器(需要与 I/O 完成端口一起使用的 HANDLE)。
    • 使用新的 null_buffers 类型添加了对反应器式操作(即,它们报告就绪但执行无 I/O)的支持。
    • 为缓冲区序列的字节方式遍历添加了迭代器类型。
    • 添加了新的 read_until()async_read_until() 重载,它们采用用户定义函数对象来查找消息边界。
    • 添加了一个实验性的双锁队列(通过定义 BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE 启用),它可以为跨多个处理器的 io_service 提供更好的可伸缩性。
    • 各种修复、性能改进以及更全面的自定义内存分配支持。
  • 赋值 (Assign): list_of() (及其变体)现在具有重载的比较运算符。 这允许你编写测试代码,例如 BOOST_CHECK_EQUAL( my_container, list_of(2)(3)(4)(5) );
  • 循环缓冲区:
    • 默认构造函数现在不分配内存,并将缓冲区容量设置为 0
  • Foreach: 来自 Eric Niebler 的用于轻松迭代序列元素的 BOOST_FOREACH 宏。
    • 用于反向迭代序列的新 BOOST_REVERSE_FOREACH 宏。
  • 函数:
    • 改进了分配器支持,来自 Emil Dotchevski。
  • 哈希 (Hash): 次要更新和修复,有关更多信息,请参阅更改日志
  • 进程间 (Interprocess):
    • 为 UNIX 系统添加了匿名共享内存。
    • 修复了托管内存类中缺失的移动语义。
    • 为共享内存和映射文件托管类添加了 copy_on_write 和 open_read_only 选项。
    • shared_ptr 是可移动的并支持别名。
  • 侵入式 (Intrusive):
    • 向单链表添加了 linear<>cache_last<> 选项。
    • 向无序容器挂钩添加了 optimize_multikey<> 选项。
    • 当在挂钩中使用 store_hash 选项时,优化了无序容器。
    • 更改了实现以避免显式使用 try-catch 块,并且可以在禁用异常的情况下编译。
  • 数学:
    • 添加了新的非中心卡方、Beta、F 和 T 分布。
    • 添加了指数积分和 Zeta 特殊函数。
    • 添加了舍入、截断和最后一位的单元函数。
    • 添加了对运行时基数的编译时幂的支持。
    • 为 Lanczos 近似添加了一些基于 SSE2 的优化。
  • MPI:
    • 从 Andreas Klöckner 添加了对 Python 中非阻塞操作的支持。
    • 添加了对图拓扑的支持。
  • 多索引容器 (Multi-index Containers): 次要添加和维护修复。有关更多信息,请查阅库发行说明
  • PtrContainer: 支持更多容器,并添加了插入迭代器。有关详细信息,请参阅升级详细信息
  • Spirit: 集成了“经典”Spirit V1.8.x 代码库和 Spirit V2,“新一代”。请参阅变更日志
  • 线程:
    • 用于一次锁定多个互斥锁的新通用 locktry_lock 函数。
    • 在编译器支持的情况下,对移动语义的右值引用支持。
    • 修复了一些错误并添加了缺失的函数(包括严重的 win32 条件变量错误)。
    • scoped_try_lock 类型现在向后兼容 Boost 1.34.0 和以前的版本。
    • 通过向 thread 构造函数提供额外的参数来支持将函数参数传递给线程函数。
    • timed_locktimed_wait 函数添加了向后兼容的重载,以允许使用 xtime 进行超时。
  • Wave:
    • Wave V2.0 是一个新的主要版本,引入了一些重大 API 更改,使其无法与早于 V1.36.0 的 Boost 版本一起使用。 主要地,API 和钩子接口已进行了精简以提高一致性。
    • 修复了一些错误,改进了回归测试系统以包括对预处理钩子接口的测试(有关详细信息,请参阅:变更日志)。
  • Xpressive: 可以编写为字符串或表达式模板,并且可以使用上下文无关语法的强大功能相互递归引用的正则表达式,来自 Eric Niebler。
    • skip() 用于指定在将输入序列与正则表达式匹配时要忽略的输入序列的哪些部分。
    • regex_replace() 除了格式字符串之外,还接受格式化程序对象和格式化程序表达式。
    • 基于范围的 regex_replace() 算法。
    • 修复了当语义操作放置在先行、后行或独立的子表达式中时的崩溃问题。

测试过的编译器

Boost 的主要测试编译器是

  • 在带有 Intel 和 Power PC 的 Mac OS X 10.4.10 上的 GCC 4.01
  • 在 Ubuntu Linux 8.04.1 上的 GCC 4.2.3
  • 在 64 位 HP-UX 上的 HP C/aC++ B3910B A.06.17
  • Visual C++ 9.0 SP1 beta、8.0 SP1 和 7.1,全部在 Windows XP SP-2 上

Boost 的其他测试编译器包括

  • 在 FreeBSD-7 上的 GCC 4.2.1
  • 在 NetBSD 上的 GCC 4.1.2
  • 在 OS:HP-UX B.11.31 U ia64 和 HP-UX B.11.31 9000/800 RISC 上的 HP aCC
  • 在 AIX 版本 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition for AIX,V10.1.0.0
  • 在 Mac OS X 10.4.1 上的 Intel 9.1、10.0 和 10.1
  • 在 OSF1 V5.1 平台上的 Compaq Tru64 Unix 的 Compaq C++ V7.1-006。
  • 在 Sun Solaris 5.10 上的 Sun C++ 5.7、5.8、5.9 和 GCC 3.4.6。
  • 在 Linux 上
    • GCC 3.4.3、4.0.1、4.2.1、4.3.0。
    • 带有 C++0x 扩展的 GCC 4.3.0。
    • 在 64 位 linux 上的 GCC 3.4.6、4.1.1、4.2.1。
    • Intel C++ 8.1、9.0 和 9.1。
    • QLogic PathScale(TM) 编译器套件:3.1 版
    • 在 x86-64 Linux 上的 pgCC 7.2-3 64 位目标
  • 在 Windows 上
    • Intel 10.1,带有 Visual C++ 9 后端。
    • 在 Visual C++ 7.1、8.0、9.0 上进行了大量测试
    • 带有 Apache C++ 标准库 4.2.x 分支的 Visual C++ 7.1。
    • 带有 STLport 5.1 的 Visual C++ 8.0
    • 带有 STLport 5.1 的 Visual C++ 8.0 交叉编译用于 Windows Mobile 5.0 Pocket PC SDK (ARMV4I)。
    • Borland 5.6.4、5.8.2、5.9.3
    • 64 位 Intel 10.1,带有 Visual C++ 9 后端。
    • 64 位 Visual C++ 9。
    • Comeau C++ 4.3.10.1 beta 2,带有 Visual C++ 9 后端。

致谢

Beman DawesRene Rivera 和 Daniel James 管理了此版本。