Boost C++ 库

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

2008年5月 Review Wizard 状态报告

新闻

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

12月16日 - Unordered Containers 库已接受 - 已在 SVN 中

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

2008年1月13日 - Switch 库已初步接受 - 等待提交以进行小型审查

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

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

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

2月27日 - Floating Point Utilities 库已接受 - 等待 SVN

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

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

5月7日 - Scope Exit 库已接受 - 等待 SVN

旧问题

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

Quantitative Units 库于 2007 年 4 月被接受,但尚未提交到 SVN

Globally Unique Identifier 库于 2007 年 5 月被初步接受,但尚未提交进行小型审查和完全接受

Time Series 库于 2007 年 8 月被接受,但尚未提交到 SVN

Accumulators 库于 2007 年 2 月被接受,已在 SVN 中

Exception 库于 2007 年 10 月被接受,已在 SVN 中

Scope Exit 审查报告尚未由审查经理提交。John Phillips 介入作为替代审查经理并生成了一份报告

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

对于 Scope Exit 审查,我们想公开向 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 (更新)
  • 移位指针
  • 数据流信号
  • 日志
  • Futures (Braddock Gaskill)
  • Futures (Anthony Williams)
  • Join (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
描述

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

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

图 (快速通道)

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

对图库的一些添加和修改,包括

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

词法分析器

作者 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 Logging Library 正是为此而设计的,它支持多种场景,从非常简单(全部转储到一个目标)到非常复杂(多个日志,一些启用/一些不启用,级别等)。它具有非常简单和灵活的接口、高效的消息过滤、线程安全、格式化程序和目标、易于操作日志、根据应用程序的需求找到最佳的记录器/过滤器类,您可以定义自己的宏等等!

Futures

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

Futures

作者 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 和 future 的典型过程如下所示

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

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

使用 packaged_task 的典型过程如下所示

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

请注意,我们处于一种不寻常的境地,即队列中同时有两个目标相同但非常不同的库。审查向导将感谢讨论如何最好地进行这两次审查,以产生对 Boost 的最佳补充。

Join

作者 Yigong Liu
审查经理 需要
下载 http://channel.sourceforge.net/
描述 Join 是一个基于 join calculus 的异步、基于消息的 C++ 并发库。它既适用于多线程应用程序,也适用于异步、基于事件的应用程序的编排。它遵循 Comega 的设计和实现,并使用 Boost 工具构建。它提供了一个高级并发 API,其中包含异步方法、同步方法和和弦,这些和弦是定义同步、异步和并发的“join-patterns”。

Pimpl

作者 Vladimir Batov
审查经理 需要
下载 Boost 沙箱仓库 http://www.ddj.com/cpp/205918714 (文档)
描述 Pimpl 惯用法是一种简单而强大的技术,通过分离接口和实现,然后隐藏实现来最大限度地减少耦合。该库为 Pimpl 惯用法提供了一种方便、灵活和通用的部署技术。它看似完整且广泛适用,但又非常精简、简单且易于使用。

正在开发的库

请告知我们您目前正在开发的任何计划提交审查的库。