Boost C++ 库

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

版本 1.36.0

版本 1.36.0

8 月 14 日, 2008 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 宏,用于反向迭代序列。
  • Function:
    • 改进的分配器支持,来自 Emil Dotchevski。
  • Hash: 细微的更新和修复,更多信息请参见变更日志
  • Interprocess:
    • 为 UNIX 系统添加了匿名共享内存。
    • 修复了托管内存类上缺少移动语义的问题。
    • 为共享内存和映射文件托管类添加了 copy_on_write 和 open_read_only 选项。
    • shared_ptr 是可移动的并支持别名。
  • Intrusive:
    • 为单链表添加了 linear<>cache_last<> 选项。
    • 为无序容器钩子添加了 optimize_multikey<> 选项。
    • 当钩子中使用 store_hash 选项时,优化了无序容器。
    • 更改了实现以避免显式使用 try-catch 块,并可在禁用异常的情况下编译。
  • Math:
    • 添加了新的非中心卡方分布、Beta 分布、F 分布和 T 分布。
    • 添加了指数积分和 Zeta 特殊函数。
    • 添加了舍入、截断和单位在最后一位的函数。
    • 添加了对运行时基数的编译时幂的支持。
    • 为 Lanczos 近似添加了一些基于 SSE2 的优化。
  • MPI:
    • 增加了对 Python 中非阻塞操作的支持,来自 Andreas Klöckner。
    • 增加了对图拓扑的支持。
  • Multi-index Containers: 细微的添加和维护修复。有关更多信息,请查阅库发行说明
  • PtrContainer: 支持更多容器,并添加了插入迭代器。有关详细信息,请参见升级详情
  • Spirit: 将“经典” Spirit V1.8.x 代码库与 Spirit V2 “新一代”集成。参见变更日志
  • Thread:
    • 新的通用 locktry_lock 函数,用于一次锁定多个互斥锁。
    • 在编译器支持的情况下,为移动语义提供 Rvalue 引用支持。
    • 修复了一些错误并添加了缺少的函数(包括严重的 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() 算法。
    • 修复了当语义动作放置在look-ahead、look-behind 或独立子表达式中时发生的崩溃。

测试的编译器

Boost 的主要测试编译器是

  • Mac OS X 10.4.10 上的 GCC 4.01,带有 Intel 和 Power PC
  • Ubuntu Linux 8.04.1 上的 GCC 4.2.3
  • HP-UX 64 位上的 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
  • Compaq Tru64 Unix on an OSF1 V5.1 平台上的 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 上
    • 带有 Visual C++ 9 后端的 Intel 10.1。
    • 在 Visual C++ 7.1、8.0、9.0 上进行了大量测试
    • 带有 Apache C++ Standard Library 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
    • 带有 Visual C++ 9 后端的 64 位 Intel 10.1。
    • 64 位 Visual C++ 9。
    • 带有 Visual C++ 9 后端的 Comeau C++ 4.3.10.1 beta 2。

致谢

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