2009 年 6 月 Review Wizard 状态报告
新闻
Futures: Williams 变体已接受;Gaskill 变体已拒绝
- Boost 1.38 已发布
- 新库: 修订后的库
Boost.Range 扩展已接受
Polynomial 库已拒绝
Boost 1.39 已发布
Constrained Value Review - 审核结果待定
库问题
Time Series 库于 2007 年 8 月被接受,但尚未提交到 SVN。Eric Niebler 和 John Phillips 正在努力根据审核期间提出的建议进行修改。
Floating Point Utilities 库尚未提交到 SVN。它计划与 Boost.Math 库集成。
Switch 库于 2008 年 1 月被有条件接受,但尚未提交以进行迷你审核和完全接受。
Phoenix 库于 2008 年 9 月被有条件接受,但尚未提交以进行迷你审核和完全接受。基于 Proto 元编程库的 Phoenix 重写工作刚刚开始。
Property Tree 库的维护已由 Sebastian Redl 从 Marcin Kalicinski 接管。该库已签入 svn trunk,但 Sebastian 正在一个分支中对其进行重大维护。他的目标是 1.41 或 1.40 版本。
一般公告
与往常一样,我们需要有经验的审核经理。审核队列一直在大幅增长,但我们只有少数志愿者,因此请尽可能管理审核,如果不能,请务必关注审核计划并参与。请查看需要经理的库列表并查看其描述。一般来说,审核经理是活跃的 boost 参与者或库贡献者。如果您可以担任其中任何一个的审核经理,请发送电子邮件给 Ron Garcia 或 John Phillips,电子邮件地址分别为 "garcia at osl dot iu dot edu" 和 "phillips at mps dot ohio-state dot edu"。
我们还面临审核人员短缺的问题。虽然我们都理解时间压力和完成有偿工作的需要,但 Boost 的优势在于您提交的详细且知情的审核。最近的一项努力是试图确保至少有五个人承诺提交审核,以此作为开始审核期的先决条件。考虑为此志愿服务,甚至尽早花时间创建审核。没有规则说您只能在审核期间进行审核工作。
此报告的链接将发布到 www.boost.org。如果您希望我们在发布之前对此报告进行任何修改或添加,请发送电子邮件给 Ron 或 John。
如果您是库作者,并计划在未来 3-6 个月内提交库进行审核,请向 Ron 或 John 发送您的库的简短描述,我们将将其添加到下面的“正在开发的库”列表中。我们知道有很多库即将完成,但我们很难跟踪所有这些库。请随时告知我们您的进度。
审核队列
- Lexer
- Shifted Pointer
- Logging
- Log
- Join
- Pimpl
- Thread Pool
- Endian
- Meta State Machine
- Conversion
- Sorting
- GIL.IO
- AutoBuffer
- String Convert
Lexer
作者 | Ben Hanson |
---|---|
审核经理 | Eric Niebler |
下载 | Boost Vault |
描述 | 一个可编程的词法分析器生成器,灵感来自 'flex'。 像 flex 一样,它通过使用正则表达式进行编程,并输出一个状态机,该状态机作为许多利用等价类进行压缩的 DFA。 |
Shifted Pointer
作者 | Phil Bouchard |
---|---|
审核经理 | 需要 |
下载 | Boost Vault |
描述 | 智能指针通常针对特定资源(内存使用、CPU 周期、用户友好性等)进行优化,具体取决于用户需要最大化利用的资源。此智能指针的目的是主要同时分配引用计数器(或所有者)和对象本身,以便简化动态内存管理,从而加速内存管理并降低内存映射的成本。 |
Logging
作者 | John Torjo |
---|---|
审核经理 | Gennadiy Rozental |
下载 | http://torjo.com/log2/ |
描述 | 如果使用得当,日志记录是一个非常强大的工具。除了辅助调试/测试之外,它还可以向您展示您的应用程序是如何被使用的。Boost Logging Library 允许这样做,支持从非常简单(全部转储到一个目的地)到非常复杂(多个日志,一些启用/一些未启用,级别等)的多种场景。它具有非常简单而灵活的界面、高效的消息过滤、线程安全、格式化程序和目的地、易于操作的日志、根据您的应用程序需求查找最佳的记录器/过滤器类,您可以定义自己的宏等等! |
Log
作者 | Andrey Semashev |
---|---|
审核经理 | 需要 |
下载 | Boost Vault |
描述 | 该库旨在帮助向应用程序添加日志记录功能。它为许多广泛使用的功能提供开箱即用的支持,例如基于属性的格式化和过滤,将日志发送到 syslog 服务器或 Windows 事件日志,或者只是将日志存储到文件中。它还为从设置文件初始化库提供基本支持。该库还可以用于更广泛的任务,并实现收集和处理统计信息或通知用户有关应用程序事件。 |
Join
作者 | Yigong Liu |
---|---|
审核经理 | 需要 |
下载 | http://channel.sourceforge.net/ |
描述 | Join 是一个基于 join calculus 的异步、基于消息的 C++ 并发库。它既适用于多线程应用程序,也适用于异步、基于事件的应用程序的编排。它遵循 Comega 的设计和实现,并使用 Boost 工具构建。它提供了一个高级并发 API,具有异步方法、同步方法和 chords,chords 是定义同步、异步和并发的“join-patterns”。 |
Pimpl
作者 | Vladimir Batov |
---|---|
审核经理 | 需要 |
下载 | |
描述 | Pimpl 惯用法是一种简单而强大的技术,可以通过分离接口和实现以及隐藏实现来最大限度地减少耦合。此库为 Pimpl 惯用法提供了一种方便、灵活且通用的部署技术。它看似完整且广泛适用,但又最小、简单且易于使用。 |
Thread Pool
作者 | Oliver Kowalke |
---|---|
审核经理 | 需要 |
下载 | |
描述 |
|
Endian
作者 | Beman Dawes |
---|---|
审核经理 | 需要 |
下载 | |
描述 | 头文件 boost/integer/endian.hpp 提供了类似整数的字节持有者二进制类型,可以显式控制字节序、值类型、大小和对齐方式。Typedefs 为常用配置提供了易于使用的名称。 这些类型为整数数据提供可移植的字节持有者,独立于特定的计算机架构。用例几乎总是涉及 I/O,无论是通过文件还是网络连接。虽然数据可移植性是主要动机,但这些整数字节持有者也可用于减少内存使用、文件大小或网络活动,因为它们提供了其他方式无法获得的二进制整数大小。 |
Meta State Machine
作者 | Christophe Henry |
---|---|
审核经理 | 需要 |
下载 | |
描述 | Msm 是一个框架,使您能够以直接、描述性和易于使用的方式构建有限状态机。它只需要最少的努力就可以从 UML 状态机图生成一个可工作的程序。这项工作受到了 David Abrahams 和 Aleksey Gurtovoy 的著作“C++ 模板元编程”中描述的状态机的启发,并添加了 UML 设计师对 UML 状态机框架的大部分期望
|
Conversion
作者 | Vicente Botet |
---|---|
审核经理 | 需要 |
下载 | |
描述 | 不相关类型之间的通用显式转换。
|
Sorting
作者 | Steven Ross |
---|---|
审核经理 | 需要 |
下载 | |
描述 | 3 个模板化的混合基数/基于比较的排序算法的组合,与 std::sort 相比,它们提供了更优越的最坏情况和平均情况性能:integer_sort,它对支持右移(默认为 >>)和比较(默认为 <)运算符的固定大小数据类型进行排序。float_sort,它通过安全地将标准浮点数转换为整数来对它们进行排序。string_sort,它对可变长度数据类型进行排序,并针对 8 位字符字符串进行了优化。 所有 3 种算法的运行时均为 O(n(k/s + s)),其中 k 是数据类型中的位数,s 是一个常数,并且内存开销有限(对于实际输入,以 kB 为单位)。在测试中,integer_sort 比 std::sort 快 35% 到 8 倍,具体取决于处理器、编译器优化和数据分布。在 x86 处理器上,float_sort 比 std::sort 大约快 7 倍。string_sort 比 std::sort 大约快 2 倍。 |
GIL.IO
作者 | Christian Henning |
---|---|
审核经理 | 需要 |
下载 | GIL Google 代码库 |
描述 | I/O 扩展,用于boost::gil允许读取和写入各种图像格式(tiff、jpeg、png 等)。此审核还将包括 Toolbox 扩展,该扩展为 gil 添加了一些常用功能,例如新的颜色空间、算法等。 |
AutoBuffer
作者 | Thorsten Ottosen |
---|---|
审核经理 | Robert Stewart |
下载 | 这里 |
描述 | Boost.AutoBuffer 提供了一个用于高效动态本地缓冲区的容器。此外,该容器可以用作 std::vector 的替代品,提供更大的灵活性,有时甚至更好的性能。 |
String Convert
作者 | Vladimir Batov |
---|---|
审核经理 | 需要 |
下载 | |
描述 | 该库在字符串到类型和类型到字符串转换领域采用了 boost::lexical_cast 的方法,建立在过去的 boost::lexical_cast 经验之上,并将该转换功能进一步提升,以额外提供:* 抛出和非抛出转换失败行为;* 支持在转换失败时返回的默认值;* 两种类型的转换失败检查 - 基本的和更好/更安全的;* 基于标准 I/O 流和标准(或用户定义的)I/O 流操作器(如 std::hex、std::scientific 等)的格式化支持;* 区域设置支持;* 支持符合 boost::range 的基于 char 和 wchar_t 的字符串容器;* 目标类型没有默认可构造性要求;* 统一的框架,可以统一合并任何类型到类型的转换。 它是一个重要的工具,适用于广泛使用配置文件或必须处理/准备大量数据(例如 XML 等)的应用程序。 |
正在开发的库
请告知我们您当前正在开发的任何计划提交审核的库。
Mirror
作者 | Matus Chochlik |
---|---|
下载 | |
描述 | Mirror 库的目标是在编译时和运行时提供有关常见 C++ 构造(如命名空间、类型、typedef 定义的类型、类及其基类和成员属性、实例等)的有用元数据,并为它们的内省提供通用接口。 Mirror 的设计考虑了分层原则,并力求尽可能少地侵入。新的或现有的类不需要被设计为直接支持 Mirror,并且在类的定义中不需要任何与 Mirror 相关的代码,只要遵循一些通用准则即可 Mirror 库当前实现的最重要功能包括
我希望在未来几个月内使其准备好进行审核。 |
Interval Template Library
作者 | Joachim Faulhaber |
---|---|
描述 | Interval Template Library (Itl) 提供了区间和两种区间容器:Interval_sets 和 interval_maps。Interval_sets 和 maps 可以像元素集或元素映射一样使用。然而,当元素以连续的块(区间)出现时,它们在空间和时间上效率更高。这在许多问题领域中显然是这样,尤其是在处理与日期和时间相关的问题的领域中。 区间容器允许与 interval_sets 相交以处理分段。例如,您可能希望将区间容器与月份网格相交,然后迭代这些月份。 最后,如果添加的区间与存储在 interval_map 中的区间重叠,则 interval_maps 提供对关联值的聚合。此功能称为重叠聚合。示例如下 typedef set<string> guests; interval_map<time, guests> party; guests mary; mary.insert("Mary"); guests harry; harry.insert("Harry"); party += make_pair(interval<time>::rightopen(20:00, 22:00),mary); party += make_pair(interval<time>::rightopen_(21:00, 23:00),harry); // party now contains [20:00, 21:00)->{"Mary"} [21:00, 22:00)->{"Harry","Mary"} //guest sets aggregated on overlap [22:00, 23:00)->{"Harry"} 从示例中可以看出,interval_map 既具有分解行为(在时间维度上),又具有累积行为(在关联值上)。 |
StlConstantTimeSize
作者 | Vicente J. Botet Escriba |
---|---|
下载 | Boost Vault |
描述 | Boost.StlConstantTimeSize 定义了 stl 容器 list 的包装器,让用户选择 size 函数的复杂度:线性时间、常数时间或准常数时间。在未来的版本中,该库可能会包含类似的 slist 包装器。 |
InterThreads
作者 | Vicente J. Botet Escriba |
---|---|
下载 | |
描述 | Boost.InterThreads 扩展了 Boost.Threads,添加了一些功能
(thread_decorator 和 thread_specific_shared_ptr)基于 Roland Schwarz 编写的 threadalert 的原始实现。 Boost.InterThreads 扩展了 Boost.Threads,添加了线程 setup/cleanup 装饰器、线程特定共享指针、线程保活机制和线程元组。 |
Channel
作者 | Yigong Liu |
---|---|
下载 | |
描述 | Channel 是一个 C++ 模板库,用于为分布式消息传递和事件分发提供命名空间。消息发送者和接收者绑定到命名空间中的名称;绑定和匹配规则决定哪些发送者将绑定到哪些接收者(绑定集);然后可以在绑定的发送者和接收者之间发生消息传递。 命名空间的类型是 Channel 的模板参数。各种命名空间(线性/分层/关联)可用于不同的应用程序。例如,整数 id 可用于在线性命名空间中发送消息,字符串路径名称 id(例如“/sports/basketball”)可用于在分层命名空间中发送消息,而正则表达式模式或 Linda 元组空间样式元组可用于在关联命名空间中发送消息。 Dispatcher 是 Channel 的另一个可配置模板参数;它将消息/事件从发送者分发到有界接收者。Dispatcher 的设计可以在多个维度上有所不同:msgs 如何移动:push 或 pull;回调如何执行:同步或异步。示例 dispatcher 包括:同步广播 dispatcher,具有 choice_arbiter 和 join_arbiters 的异步 dispatcher。 命名空间和 dispatcher 是正交的;它们可以自由混合和匹配在一起。命名空间和名称绑定为发送者和接收者创建绑定集,而 dispatcher 是在绑定集上定义的算法。 可以连接分布式通道以允许透明的分布式消息传递。过滤器和转换器用于控制命名空间更改。 |
Bitfield
作者 | Vicente Botet |
---|---|
下载 | |
描述 |
我已获得 Emile Cormier 的许可改编了 Bitfield 库,我希望您将其添加到正在开发的库列表中。该库非常稳定,但我想在使用 Boost.Endian 添加一些测试后再将其添加到正式审核计划列表中。
- Boost.Bitfield 由以下部分组成
一个通用的 bitfield traits 类,提供通用的 getter 和 setter 方法。
一个 BOOST_BITFIELD_DCL 宏,使 bitfield traits 和 bitfield getter 和 setter 函数的定义更容易
struct X { typedef boost::ubig_32 storage_type; storage_type d0; typedef unsigned int value_type; BOOST_BITFIELD_DCL(storage_type, d0, unsigned int, d00, 0, 10); BOOST_BITFIELD_DCL(storage_type, d0, unsigned int, d01, 11, 31); };
Synchro
作者 | Vicente Botet |
---|---|
下载 | Boost Vault: Boost Sandbox: Html 文档仅包含在 Vault 中 |
描述 | Synchro 提供 |
基于 lockables(互斥锁) 概念和 locker(guards) 概念的 Boost.Thread 和 Boost.Interprocess 同步机制的统一用法。
- lockables traits 和锁生成器,
- 关于 lockables 的通用自由函数,如:lock, try_lock, ...
- Boost.Thread 和 Boost.Interprocess lockers 模型的 locker 适配器,
- 使用单线程程序的相应模型完成它们:null_mutex 和 null_condition 类,
- 锁定族,
- semaphore 和 binary_semaphore,
- condition_lockable 锁,它将锁及其关联的条件放在一起。
用于函数和构造函数的连贯的基于异常的定时锁定方法,
丰富的 lockers 调色板,如
- strict_locker, nested_strict_locker,
- condition_locker,
- reverse_locker, nested_reverse_locker,
- locking_ptr, on_derreference_locking_ptr,
- externally_locked,
array_unique_locker 在多个 lockables 上。
关于多个 lockables 的通用自由函数 lock, try_lock, lock_until, lock_for, try_lock_until, try_lock_for, unlock
Boost.Thread 和 Boost.Interprocess lockable 模型的锁适配器,
lock_until, lock_for, try_lock_until, try_lock_for
多态 lockable 层次结构。
用于处理更复杂的同步问题的高级抽象,包括
- monitor 用于保证对对象的独占访问。
一种用于处理对象之间直接通信的 rendezvous 机制 concurrent_components 通过 ports 使用基于 Beta 语言并发库设计的 accept-synchronize 协议。
类似语言的同步块宏