Boost C++ 库

...世界上最受推崇和设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码规范

2008 年 5 月审查向导状态报告

新闻

2007 年 12 月 7 日 - 前向库已接受 - 等待 SVN

12 月 16 日 - 无序容器库已接受 - 已在 SVN 中

12 月 21 日 - 工厂库已接受 - 等待 SVN

2008 年 1 月 13 日 - 切换库已获有条件接受 - 等待提交小型审查

1 月 18 日 - 单例库已拒绝 - 等待重新提交,John Torjo 已自愿管理下一次审查

1 月 30 日 - 享元库已接受 - 等待 SVN

2 月 13 日 - 日志记录库已拒绝 - 等待重新提交以进行新的审查,John Torjo 已重新提交,Gennadiy Rozental 再次自愿管理审查

2 月 27 日 - 浮点数实用程序库已接受 - 等待 SVN

3 月 14 日 - Proto 库已接受 - 作为 Xpressive 中的组件存在,但尚未作为单独的库存在

4 月 20 日 - Egg 审查已完成 - 结果待定

5 月 7 日 - 范围退出库已接受 - 等待 SVN

较旧的问题

binary_int 库在 2005 年 10 月接受,但尚未提交到 SVN。强烈建议作者联系审查向导

量化单位库在 2007 年 4 月接受,但尚未提交到 SVN

全局唯一标识符库于 2007 年 5 月获有条件接受,但尚未提交进行小型审查和最终接受

时间序列库在 2007 年 8 月接受,但尚未提交到 SVN

累加器库在 2007 年 2 月接受,已在 SVN 中

异常库在 2007 年 10 月接受,已在 SVN 中

范围退出审查报告尚未由审查经理提交。John Phillips 作为替代审查经理介入并制作了报告

对于仍在等待进入 SVN 的库,请准备好在库中使用它们。开发人员在制作库方面做了很多很棒的工作,所以不要错过与他人分享这项工作的机会。另请注意,审查流程页面已更新,其中包含有关库提交者权利和责任的部分。

对于范围退出审查,我们想公开向 Alexander Nasonov 道歉,因为这个问题已经很久没有报告了。审查向导将努力确保这种情况不再发生。

一般公告

像往常一样,我们需要经验丰富的审查经理。在过去几个月里,有很多审查,但高质量的提交流程同样庞大,因此如果可能请管理审查,如果不行,请确保查看审查计划并参与。请查看需要经理的库列表,并查看它们的描述。一般来说,审查经理是积极的 Boost 参与者或库贡献者。如果您能担任其中任何一个的审查经理,请分别向 Ron Garcia 或 John Phillips 发送电子邮件,"garcia at cs dot indiana dot edu" 和 "phillips at mps dot ohio-state dot edu"。

指向此报告的链接将发布到 www.boost.org。如果您希望我们在发布之前对该报告进行任何修改或添加,请发送电子邮件给 Ron 或 John。

如果您是库作者,并且计划在未来 3-6 个月内提交库进行审查,请向 Ron 或 John 发送您的库的简短描述,我们会将其添加到下面的正在构建的库中。我们知道有很多库即将完成,但我们很难跟踪所有这些库。请随时让我们了解您的进度。

审查队列

  • 有限状态机
  • 属性映射(快速通道)
  • 图形(快速通道)
  • 词法分析器
  • 线程安全信号
  • Boost.Range(更新)
  • 移位指针
  • 数据流信号
  • 日志记录
  • 期货(Braddock Gaskill)
  • 期货(Anthony Williams)
  • 加入(Yigong Liu)
  • Pimpl(Vladimir Batov)

有限状态机

作者 Andrey Semashev
审查经理 Martin Vuille
下载 Boost 沙盒库
描述

Boost.FSM 库是 FSM(代表有限状态机)编程概念的实现。该库的主要目标是

  • 简单。使用该库创建状态机应该非常简单。
  • 性能。状态机基础设施不应占用大量时间和内存,以便适用于更多用例。
  • 可扩展性。开发人员可能希望向现有状态机添加更多状态。开发人员还应该能够为机器指定额外的转换和事件,而对现有代码进行的修改最少。

属性映射(快速通道)

作者 Andrew Sutton
审查经理 Jeremy Siek
下载 http://svn.boost.org/svn/boost/sandbox/graph-v2
描述

对属性映射库进行了一些添加和修改,包括

  • 一个常量值属性映射,对于自然无权图很有用。
  • 一个 noop 写入属性映射,当您必须提供参数但并不关心输出时很有用。
  • 有关详细信息,请参阅 ChangeLog

图形(快速通道)

作者 Andrew Sutton
审查经理 Jeremy Siek
下载 http://svn.boost.org/svn/boost/sandbox/graph-v2
描述

对图形库进行了一些添加和修改,包括

  • 两个新的图形类(无向和有向),旨在使该库对新开发人员更易于使用
  • 一套图形度量,包括度数和紧密中心性、平均测地距离、偏心率和聚类系数。
  • 用于访问有向图中所有循环的算法(1970 年代的 Tiernan)。它也适用于无向图,但会报告两次循环(每个方向一次)。
  • 用于访问图中所有派系的算法(Bron&Kerbosch)。适用于有向和无向。
  • 派生图形度量半径和直径(来自偏心率)以及周长和周长(来自 Tiernan),以及派系数(来自 Bron&Kerbosch)。
  • 一个 exterior_property 类,它有助于隐藏外部属性的一些奇怪之处。
  • 新算法的运行时和编译时测试。
  • 大量文档
  • 图形核心,由 David Gleich(@Stanford University)实现
  • 确定性图形生成器 - 能够在顶点集上创建或诱导特定类型的图形(例如,星形图、轮形图、棱镜图等)。这里可以添加其他几种特定类型,但我还没有时间。

词法分析器

作者 Ben Hanson
审查经理 Eric Neibler
下载 Boost 沙盒库
描述 一个可编程的词法分析器生成器,灵感来自 'flex'。与 flex 一样,它通过使用正则表达式进行编程,并将状态机输出为使用等价类进行压缩的多个 DFA。

线程安全信号

作者 Frank Hess
审查经理 需要志愿者
下载 Boost 沙盒库
描述 Boost.Signals 的线程安全实现,在接口方面有一些更改以适应线程安全性,主要是在自动连接管理方面。

Boost.Range(更新)

作者 Neil Groves
审查经理 需要
下载 Boost 沙盒库
描述 对范围库的重大更新,包括范围适配器。

移位指针

作者 Phil Bouchard
审查经理 需要
下载 Boost 沙盒库
描述 智能指针通常针对特定资源(内存使用、CPU 周期、用户友好性等)进行优化,具体取决于用户需要充分利用什么。此智能指针的主要目的是同时分配引用计数器(或所有者)和对象本身,以便简化动态内存管理,从而在内存映射中加速并降低成本。

数据流信号

作者 Stjepan Rajko
审查经理 需要
下载 http://dancinghacker.com/code/dataflow/
描述 Dataflow 是一个用于数据流编程的通用库。数据流程序通常可以表示为一个图,其中顶点代表处理数据的组件,边代表组件之间的数据流。因此,数据流程序可以通过更改组件和/或连接轻松地重新配置。

日志记录

作者 John Torjo
审查经理 Gennadiy Rozental
下载 http://torjo.com/log2/
描述 正确使用日志记录是一个非常强大的工具。除了帮助调试/测试之外,它还可以向您展示应用程序的使用方式。Boost 日志记录库支持这一点,支持许多场景,从非常简单(将所有内容转储到一个目的地)到非常复杂(多个日志,一些启用/一些禁用,级别等)。它具有非常简单灵活的接口、高效的日志消息过滤、线程安全、格式化程序和目标、易于操作日志、根据应用程序需求查找最佳日志记录器/过滤器类,您可以定义自己的宏等等!

期货

作者 Braddock Gaskill
审查经理 需要
下载 http://braddock.com/~braddock/future/
描述 boost.future 库的目标是提供一个明确的期货实现,它具有众多实现、提案和学术论文中最佳功能的组合,希望避免在相关概念(协程、活动对象、asio 等)的库中出现多个不兼容的期货实现。该库希望探索最佳期货概念的组合实现。

期货

作者 Anthony Williams
审查经理 需要
下载 http://www.justsoftwaresolutions.co.uk/files/n2561_future.hpp(代码) http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2561.html(描述)
描述

本文提出了一种返回缓冲区,它在一个(子)线程中获取一个值(或异常),并在另一个(控制)线程中提供该值。此缓冲区本质上提供两个接口

  • 一个接口用于将值分配为类 promise,以及
  • 一个接口用于等待、查询和从缓冲区检索值(或异常)作为类 unique_future 和 shared_future。unique_future 提供移动语义,其中值(或异常)只能检索一次,而 shared_future 提供复制语义,其中可以任意多次检索值。

使用 promise 和期货的典型过程如下

  • 控制线程创建一个 promise,
  • 控制线程从 promise 获取关联的期货,
  • 控制线程启动子线程,
  • 子线程调用实际函数并将返回值分配给 promise,
  • 控制线程等待期货变为就绪,
  • 控制线程从期货检索值。

本文还提出了一种 packaged_task,它包装一个可调用对象并提供另一个可在其自身线程中启动的可调用对象,并将返回值(或异常)分配给可以通过其中一个期货类访问的返回缓冲区。

使用 packaged_task 的典型过程如下

  • 控制线程使用可调用对象创建一个 packaged_task,
  • 控制线程从 packaged_task 获取关联的期货,
  • 控制线程启动子线程,该子线程调用 packaged_task,
  • packaged_task 调用可调用函数并分配返回值,
  • 控制线程等待期货变为就绪,
  • 控制线程从期货检索值。

请注意,我们处于不寻常的位置,在队列中同时拥有两个具有相同目标的完全不同的库。审查向导希望讨论如何最佳地进行这两次审查,以产生对 Boost 最好的可能补充。

加入

作者 刘义工
审查经理 需要
下载 http://channel.sourceforge.net/
描述 Join 是一个基于连接演算的异步、消息驱动的 C++ 并发库。它适用于多线程应用程序和异步、事件驱动的应用程序的编排。它遵循 Comega 的设计和实现,并使用 Boost 设施构建。它提供了一个高级并发 API,包括异步方法、同步方法和和弦,这些和弦是定义同步、异步和并发的“连接模式”。

Pimpl

作者 弗拉基米尔·巴托夫
审查经理 需要
下载 Boost Sandbox Vault http://www.ddj.com/cpp/205918714 (文档)
描述 Pimpl 习语是一种简单但稳健的技术,通过分离接口和实现,然后隐藏实现来最小化耦合。该库为 Pimpl 习语提供了一种便捷、灵活且通用的部署技术。它看似完整且广泛适用,但同时又很小巧、简单且易于使用。

正在开发的库

请告知您目前正在开发的任何打算提交审核的库。