mirror of
https://github.com/boostorg/website.git
synced 2026-01-19 04:42:17 +00:00
Add missing files from merge.
[SVN r53715]
This commit is contained in:
876
development/report-jun-2009.html
Normal file
876
development/report-jun-2009.html
Normal file
@@ -0,0 +1,876 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<title>Review Wizard Status Report for June 2009</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
|
||||
<link rel="icon" href="/favicon.ico" type="image/ico" />
|
||||
<link rel="stylesheet" type="text/css" href=
|
||||
"../style/section-development.css" />
|
||||
<!--[if IE]> <style type="text/css"> body { behavior: url(../style/csshover.htc); } </style> <![endif]-->
|
||||
</head><!--
|
||||
Note: Editing website content is documented at:
|
||||
http://www.boost.org/development/website_updating.html
|
||||
-->
|
||||
|
||||
<body>
|
||||
<div id="heading">
|
||||
<!--#include virtual="/common/heading.html" -->
|
||||
</div>
|
||||
|
||||
<div id="body">
|
||||
<div id="body-inner">
|
||||
<div id="content">
|
||||
<div class="section" id="intro">
|
||||
<div class="section-0">
|
||||
<div class="section-title">
|
||||
<h1>Review Wizard Status Report for June 2009</h1>
|
||||
</div>
|
||||
|
||||
<div class="section-body">
|
||||
<h2><a name="news" id="news"></a>News</h2>
|
||||
<p>Futures: Williams variant Accepted; Gaskill variant Rejected</p>
|
||||
<dl class="docutils">
|
||||
<dt>Boost 1.38 Released</dt>
|
||||
<dd>New Libraries:
|
||||
Revised Libraries:</dd>
|
||||
</dl>
|
||||
<p>Boost.Range Extension Accepted</p>
|
||||
<p>Polynomial Library Rejected</p>
|
||||
<p>Boost 1.39 Released</p>
|
||||
<p>Constrained Value Review - Review Result Pending</p>
|
||||
</div>
|
||||
<div class="section" id="library-issues">
|
||||
<h1>Library Issues</h1>
|
||||
<p>The Time Series Library, accepted in August 2007, has not yet been
|
||||
submitted to SVN. Eric Niebler and John Phillips are working on
|
||||
making the changes suggested during the review.</p>
|
||||
<p>The Floating Point Utilities Library, has not yet been submitted to
|
||||
SVN. It is slated to be integrated with the Boost.Math library.</p>
|
||||
<p>The Switch Library, accepted provisionally in January 2008,
|
||||
has not yet been submitted for mini-review and full acceptance.</p>
|
||||
<p>The Phoenix Library, accepted provisionally in September 2008, has not
|
||||
yet been submitted for mini-review and full acceptance. A rewrite of
|
||||
Phoenix, basing it on the Proto metaprogramming library, has just
|
||||
begun.</p>
|
||||
<p>Maintenance of The Property Tree Library has been taken over by
|
||||
Sebastian Redl from Marcin Kalicinski. The library has been checked
|
||||
into svn trunk, but Sebastian is doing major maintenance on it in a
|
||||
branch. He is aiming for a 1.41 or 1.40 release.</p>
|
||||
</div>
|
||||
<div class="section" id="general-announcements">
|
||||
<h1>General Announcements</h1>
|
||||
<p>As always, we need experienced review managers. The review queue has
|
||||
been growing substantially but we have had few volunteers, so manage
|
||||
reviews if possible and if not please make sure to watch the review
|
||||
schedule and participate. Please take a look at the list of libraries
|
||||
in need of managers and check out their descriptions. In general
|
||||
review managers are active boost participants or library
|
||||
contributors. If you can serve as review manager for any of them,
|
||||
email Ron Garcia or John Phillips, "garcia at osl dot iu dot edu"
|
||||
and "phillips at mps dot ohio-state dot edu" respectively.</p>
|
||||
<p>We are also suffering from a lack of reviewers. While we all
|
||||
understand time pressures and the need to complete paying work, the
|
||||
strength of Boost is based on the detailed and informed reviews
|
||||
submitted by you. A recent effort is trying to secure at least five
|
||||
people who promise to submit reviews as a precondition to starting
|
||||
the review period. Consider volunteering for this and even taking the
|
||||
time to create the review as early as possible. No rule says you can
|
||||
only work on a review during the review period.</p>
|
||||
<p>A link to this report will be posted to www.boost.org. If you would
|
||||
like us to make any modifications or additions to this report before
|
||||
we do that, please email Ron or John.</p>
|
||||
<p>If you're a library author and plan on submitting a library for review
|
||||
in the next 3-6 months, send Ron or John a short description of your
|
||||
library and we'll add it to the Libraries Under Construction below. We
|
||||
know that there are many libraries that are near completion, but we
|
||||
have hard time keeping track all of them. Please keep us informed
|
||||
about your progress.</p>
|
||||
</div>
|
||||
<div class="section" id="review-queue">
|
||||
<h1>Review Queue</h1>
|
||||
<ul class="simple">
|
||||
<li>Lexer</li>
|
||||
<li>Shifted Pointer</li>
|
||||
<li>Logging</li>
|
||||
<li>Log</li>
|
||||
<li>Join</li>
|
||||
<li>Pimpl</li>
|
||||
<li>Thread Pool</li>
|
||||
<li>Endian</li>
|
||||
<li>Meta State Machine</li>
|
||||
<li>Conversion</li>
|
||||
<li>Sorting</li>
|
||||
<li>GIL.IO</li>
|
||||
<li>AutoBuffer</li>
|
||||
<li>String Convert</li>
|
||||
</ul>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="lexer">
|
||||
<h2>Lexer</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Ben Hanson</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Eric Niebler</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://boost-consulting.com/vault/index.php?action=downloadfile&filename=boost.lexer.zip&directory=Strings%20-%20Text%20Processing">Boost Vault</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">A programmable lexical analyser generator inspired by 'flex'.
|
||||
Like flex, it is programmed by the use of regular expressions
|
||||
and outputs a state machine as a number of DFAs utilising
|
||||
equivalence classes for compression.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="shifted-pointer">
|
||||
<h2>Shifted Pointer</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Phil Bouchard</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Needed</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=Memory">Boost Vault</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">Smart pointers are in general optimized for a specific resource
|
||||
(memory usage, CPU cycles, user friendliness, ...) depending on
|
||||
what the user need to make the most of. The purpose of this smart
|
||||
pointer is mainly to allocate the reference counter (or owner) and
|
||||
the object itself at the same time so that dynamic memory management
|
||||
is simplified thus accelerated and cheaper on the memory map.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="logging">
|
||||
<h2>Logging</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">John Torjo</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Gennadiy Rozental</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://torjo.com/log2/">http://torjo.com/log2/</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">Used properly, logging is a very powerful tool. Besides aiding
|
||||
debugging/testing, it can also show you how your application is
|
||||
used. The Boost Logging Library allows just for that, supporting
|
||||
a lot of scenarios, ranging from very simple (dumping all to one
|
||||
destination), to very complex (multiple logs, some enabled/some
|
||||
not, levels, etc). It features a very simple and flexible
|
||||
interface, efficient filtering of messages, thread-safety,
|
||||
formatters and destinations, easy manipulation of logs, finding
|
||||
the best logger/filter classes based on your application's
|
||||
needs, you can define your own macros and much more!</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="log">
|
||||
<h2>Log</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Andrey Semashev</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Needed</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://tinyurl.com/cm9lum">Boost Vault</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">The library is aimed to help adding logging features to
|
||||
applications. It provides out-of-box support for many widely used
|
||||
capabilities, such as formatting and filtering based on attributes,
|
||||
sending logs to a syslog server or to Windows Event Log, or simply
|
||||
storing logs into files. It also provides basic support for the
|
||||
library initialization from a settings file. The library can also be
|
||||
used for a wider range of tasks and implement gathering and processing
|
||||
statistical information or notifying user about application events.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="join">
|
||||
<h2>Join</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Yigong Liu</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Needed</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://channel.sourceforge.net/">http://channel.sourceforge.net/</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">Join is an asynchronous, message based C++ concurrency
|
||||
library based on join calculus. It is applicable both to
|
||||
multi-threaded applications and to the orchestration of asynchronous,
|
||||
event-based applications. It follows Comega's design and
|
||||
implementation and builds with Boost facilities. It provides a high
|
||||
level concurrency API with asynchronous methods, synchronous methods,
|
||||
and chords which are "join-patterns" defining the synchronization,
|
||||
asynchrony, and concurrency.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="pimpl">
|
||||
<h2>Pimpl</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Vladimir Batov</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Needed</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><div class="first last line-block">
|
||||
<div class="line"><a class="reference external" href="http://www.boost-consulting.com/vault/index.php?action=downloadfile&filename=Pimpl.zip&directory=&">Boost Vault</a></div>
|
||||
<div class="line"><a class="reference external" href="http://www.ddj.com/cpp/205918714">http://www.ddj.com/cpp/205918714</a> (documentation)</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">The Pimpl idiom is a simple yet robust technique to
|
||||
minimize coupling via the separation of interface and implementation
|
||||
and then implementation hiding. This library provides a convenient
|
||||
yet flexible and generic deployment technique for the Pimpl idiom.
|
||||
It's seemingly complete and broadly applicable, yet minimal, simple
|
||||
and pleasant to use.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="thread-pool">
|
||||
<h2>Thread Pool</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Oliver Kowalke</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body"><p class="first">Needed</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=boost-threadpool.2.tar.gz&amp;directory=Concurrent%20Programming">Boost Vault</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><dl class="first last docutils">
|
||||
<dt>The library provides:</dt>
|
||||
<dd><ul class="first last">
|
||||
<li><dl class="first docutils">
|
||||
<dt>thread creation policies: determines the management of worker threads:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li>fixed set of threads in pool</li>
|
||||
<li>create workerthreads on demand (depending on context)</li>
|
||||
<li>let worker threads ime out after certain idle time</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><dl class="first docutils">
|
||||
<dt>channel policies: manages access to queued tasks:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li>bounded channel with high and low watermark for queuing tasks</li>
|
||||
<li>unbounded channel with unlimited number of queued tasks</li>
|
||||
<li>rendezvous syncron hand-over between producer and consumer threads</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><dl class="first docutils">
|
||||
<dt>queueing policy: determines how tasks will be removed from channel:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li>FIFO</li>
|
||||
<li>LIFO</li>
|
||||
<li>priority queue (attribute assigned to task)</li>
|
||||
<li>smart insertions and extractions (for instance remove oldest task with certain attribute by newst one)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><p class="first">tasks can be chained and lazy submit of taks is also supported (thanks to
|
||||
Braddocks future library).</p>
|
||||
</li>
|
||||
<li><p class="first">returns a task object from the submit function. The task it self can
|
||||
be interrupted if its is cooperative (means it has some interruption points
|
||||
in its code -> <tt class="docutils literal"><span class="pre">this_thread::interruption_point()</span></tt> ).</p>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="endian">
|
||||
<h2>Endian</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Beman Dawes</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body"><p class="first">Needed</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://mysite.verizon.net/beman/endian-0.10.zip">http://mysite.verizon.net/beman/endian-0.10.zip</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Header boost/integer/endian.hpp provides integer-like byte-holder
|
||||
binary types with explicit control over byte order, value type, size,
|
||||
and alignment. Typedefs provide easy-to-use names for common
|
||||
configurations.</p>
|
||||
<p class="last">These types provide portable byte-holders for integer data,
|
||||
independent of particular computer architectures. Use cases almost
|
||||
always involve I/O, either via files or network connections. Although
|
||||
data portability is the primary motivation, these integer byte-holders
|
||||
may also be used to reduce memory use, file size, or network activity
|
||||
since they provide binary integer sizes not otherwise available.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="meta-state-machine">
|
||||
<h2>Meta State Machine</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Christophe Henry</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body"><p class="first">Needed</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://www.boostpro.com/vault/index.php?direction=0&amp;order=&amp;directory=Msm">Boost Vault</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Msm is a framework which enables you to build a Finite State Machine
|
||||
in a straightforward, descriptive and easy-to-use manner . It requires
|
||||
minimal effort to generate a working program from an UML state machine
|
||||
diagram. This work was inspired by the state machine described in the
|
||||
book of David Abrahams and Aleksey Gurtovoy "C++ Template
|
||||
Metaprogramming" and adds most of what UML Designers are expecting
|
||||
from an UML State Machine framework:</p>
|
||||
<ul class="last simple">
|
||||
<li>Entry and Exit Methods</li>
|
||||
<li>Guard Conditions</li>
|
||||
<li>Sub state machines (also called composite states in UML)</li>
|
||||
<li>History</li>
|
||||
<li>Terminate Pseudo-State</li>
|
||||
<li>Deferred Events</li>
|
||||
<li>Orthogonal zones</li>
|
||||
<li>Explicit entry into sub state machine states</li>
|
||||
<li>Fork</li>
|
||||
<li>Entry / Exit pseudo states</li>
|
||||
<li>Conflicting transitions</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="conversion">
|
||||
<h2>Conversion</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Vicente Botet</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body"><p class="first">Needed</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=conversion.zip&amp;directory=Utilities&amp;">Boost Vault</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Generic explicit conversion between unrelated types.</p>
|
||||
<dl class="last docutils">
|
||||
<dt>Boost.Conversion provides:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li>a generic <tt class="docutils literal"><span class="pre">convert_to</span></tt> function which can be specialized by the user to
|
||||
make explicit conversion between unrelated types.</li>
|
||||
<li>a generic <tt class="docutils literal"><span class="pre">assign_to</span></tt> function which can be specialized by the user to
|
||||
make explicit assignation between unrelated types.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">std::complex</span></tt> of explicitly convertible types.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">std::pair</span></tt> of explicitly convertible types.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">boost::optional</span></tt> of explicitly convertible types.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">boost::rational</span></tt> of explicitly convertible types.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">boost::interval</span></tt> of explicitly convertible types.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">boost::chrono::time_point</span></tt> and <tt class="docutils literal"><span class="pre">boost::ptime</span></tt>.</li>
|
||||
<li>conversion between <tt class="docutils literal"><span class="pre">boost::chrono::duration</span></tt> and <tt class="docutils literal"><span class="pre">boost::time_duration</span></tt>.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="sorting">
|
||||
<h2>Sorting</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Steven Ross</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body"><p class="first">Needed</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=algorithm_sorting.zip">Boost Vault</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">A grouping of 3 templated hybrid radix/comparison-based sorting
|
||||
algorithms that provide superior worst-case and average-case
|
||||
performance to std::sort: integer_sort, which sorts fixed-size data
|
||||
types that support a rightshift (default of >>) and a comparison
|
||||
(default of <) operator. float_sort, which sorts standard
|
||||
floating-point numbers by safely casting them to integers.
|
||||
string_sort, which sorts variable-length data types, and is optimized
|
||||
for 8-bit character strings.</p>
|
||||
<p class="last">All 3 algorithms have O(n(k/s + s)) runtime where k is the number of
|
||||
bits in the data type and s is a constant, and limited memory overhead
|
||||
(in the kB for realistic inputs). In testing, integer_sort varies
|
||||
from 35% faster to 8X as fast as std::sort, depending on processor,
|
||||
compiler optimizations, and data distribution. float_sort is roughly
|
||||
7X as fast as std::sort on x86 processors. string_sort is roughly 2X
|
||||
as fast as std::sort.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="gil-io">
|
||||
<h2>GIL.IO</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Christian Henning</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Needed</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://gil-contributions.googlecode.com/files/rc2.zip">GIL Google Code Vault</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">I/O extension for <tt class="docutils literal"><span class="pre">boost::gil</span></tt> which allows reading and
|
||||
writing of/in various image formats ( tiff, jpeg, png, etc ). This
|
||||
review will also include the Toolbox extension which adds some common
|
||||
functionality to gil, such as new color spaces, algorithms, etc.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="autobuffer">
|
||||
<h2>AutoBuffer</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Thorsten Ottosen</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body">Robert Stewart</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://www.cs.aau.dk/~nesotto/boost/auto_buffer.zip">Here</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">Boost.AutoBuffer provides a container for efficient dynamic, local buffers.
|
||||
Furthermore, the container may be used as an alternative to std::vector,
|
||||
offering greater flexibility and sometimes better performance.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="string-convert">
|
||||
<h2>String Convert</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Vladimir Batov</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Review Manager:</th><td class="field-body"><p class="first">Needed</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=boost-string-convert.zip">Boost Vault</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">The library takes the approach of boost::lexical_cast in the area of
|
||||
string-to-type and type-to-string conversions, builds on the past
|
||||
boost::lexical_cast experience and advances that conversion
|
||||
functionality further to additionally provide:
|
||||
* throwing and non-throwing conversion-failure behavior;
|
||||
* support for the default value to be returned when conversion fails;
|
||||
* two types of the conversion-failure check -- basic and better/safe;
|
||||
* formatting support based on the standard I/O Streams and the standard
|
||||
(or user-defined) I/O Stream-based manipulators
|
||||
(like std::hex, std::scientific, etc.);
|
||||
* locale support;
|
||||
* support for boost::range-compliant char and wchar_t-based string containers;
|
||||
* no DefaultConstructibility requirement for the Target type;
|
||||
* consistent framework to uniformly incorporate any type-to-type conversions.</p>
|
||||
<p class="last">It is an essential tool with applications making extensive use of
|
||||
configuration files or having to process/prepare considerable amounts
|
||||
of data in, say, XML, etc.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="libraries-under-development">
|
||||
<h1>Libraries under development</h1>
|
||||
<p>Please let us know of any libraries you are currently
|
||||
developing that you intend to submit for review.</p>
|
||||
<div class="section" id="mirror">
|
||||
<h2>Mirror</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Matus Chochlik</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><div class="first line-block">
|
||||
<div class="line"><a class="reference external" href="http://svn.boost.org/svn/boost/sandbox/mirror/doc/index.html">http://svn.boost.org/svn/boost/sandbox/mirror/doc/index.html</a></div>
|
||||
<div class="line"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=mirror.zip">Boost Vault</a></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">The aim of the Mirror library is to provide useful meta-data at both
|
||||
compile-time and run-time about common C++ constructs like namespaces,
|
||||
types, typedef-ined types, classes and their base classes and member
|
||||
attributes, instances, etc. and to provide generic interfaces for
|
||||
their introspection.</p>
|
||||
<p>Mirror is designed with the principle of stratification in mind and
|
||||
tries to be as less intrusive as possible. New or existing classes do
|
||||
not need to be designed to directly support Mirror and no Mirror
|
||||
related code is necessary in the class' definition, as far as some
|
||||
general guidelines are followed</p>
|
||||
<p>Most important features of the Mirror library that are currently
|
||||
implemented include:</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
<li>Namespace-name inspection.</li>
|
||||
<li>Inspection of the whole scope in which a namespace is defined</li>
|
||||
<li>Type-name querying, with the support for typedef-ined typenames
|
||||
and typenames of derived types like pointers, references,
|
||||
cv-qualified types, arrays, functions and template names. Names
|
||||
with or without nested-name-specifiers can be queried.</li>
|
||||
<li>Inspection of the scope in which a type has been defined</li>
|
||||
<li>Uniform and generic inspection of class' base classes. One can
|
||||
inspect traits of the base classes for example their types,
|
||||
whether they are inherited virtually or not and the access
|
||||
specifier (private, protected, public).</li>
|
||||
<li>Uniform and generic inspection of class' member attributes. At
|
||||
compile-time the count of class' attributes and their types,
|
||||
storage class specifiers (static, mutable) and some other traits
|
||||
can be queried. At run-time one can uniformly query the names
|
||||
and/or values (when given an instance of the reflected class) of
|
||||
the member attributes and sequentially execute a custom functor
|
||||
on every attribute of a class.</li>
|
||||
<li>Traversals of a class' (or generally type's) structure with user
|
||||
defined visitors, which are optionally working on an provided
|
||||
instance of the type or just on it's structure without any
|
||||
run-time data. These visitors are guided by Mirror through the
|
||||
structure of the class and optionally provided with contextual
|
||||
information about the current position in the traversal.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<p class="last">I'm hoping to have it review ready in the next few months.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="interval-template-library">
|
||||
<h2>Interval Template Library</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Joachim Faulhaber</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">The Interval Template Library (Itl) provides intervals
|
||||
and two kinds of interval containers: Interval_sets and
|
||||
interval_maps. Interval_sets and maps can be used just
|
||||
as sets or maps of elements. Yet they are much more
|
||||
space and time efficient when the elements occur in
|
||||
contiguous chunks: intervals. This is obviously the case
|
||||
in many problem domains, particularly in fields that deal
|
||||
with problems related to date and time.</p>
|
||||
<p>Interval containers allow for intersection with interval_sets
|
||||
to work with segmentation. For instance you might want
|
||||
to intersect an interval container with a grid of months
|
||||
and then iterate over those months.</p>
|
||||
<p>Finally interval_maps provide aggregation on
|
||||
associated values, if added intervals overlap with
|
||||
intervals that are stored in the interval_map. This
|
||||
feature is called aggregate on overlap. It is shown by
|
||||
example:</p>
|
||||
<pre class="literal-block">
|
||||
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"}
|
||||
</pre>
|
||||
<p class="last">As can be seen from the example an interval_map has both
|
||||
a decompositional behavior (on the time dimension) as well as
|
||||
a accumulative one (on the associated values).</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="stlconstanttimesize">
|
||||
<h2>StlConstantTimeSize</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Vicente J. Botet Escriba</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&filename=constant_time_size.zip&amp;directory=Containers&amp;">Boost Vault</a></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">Boost.StlConstantTimeSize Defines a wrapper to the stl container list
|
||||
giving the user the chioice for the complexity of the size function:
|
||||
linear time, constant time or quasi-constant. In future versions the
|
||||
library could include a similar wrapper to slist.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="interthreads">
|
||||
<h2>InterThreads</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Vicente J. Botet Escriba</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=interthreads.zip&amp;directory=Concurrent%20Programming&amp;">Boost Vault</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Boost.InterThreads extends Boost.Threads adding some features:</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
<li>thread decorator: thread_decorator allows to define
|
||||
setup/cleanup functions which will be called only once by
|
||||
thread: setup before the thread function and cleanup at thread
|
||||
exit.</li>
|
||||
<li>thread specific shared pointer: this is an extension of the
|
||||
thread_specific_ptr providing access to this thread specific
|
||||
context from other threads. As it is shared the stored pointer
|
||||
is a shared_ptr instead of a raw one.</li>
|
||||
<li>thread keep alive mechanism: this mechanism allows to detect
|
||||
threads that do not prove that they are alive by calling to the
|
||||
keep_alive_point regularly. When a thread is declared dead a
|
||||
user provided function is called, which by default will abort
|
||||
the program.</li>
|
||||
<li>thread tuple: defines a thread groupe where the number of
|
||||
threads is know statically and the threads are created at
|
||||
construction time.</li>
|
||||
<li>set_once: a synchonizer that allows to set a variable only once,
|
||||
notifying to the variable value to whatever is waiting for that.</li>
|
||||
<li>thread_tuple_once: an extension of the boost::thread_tuple which
|
||||
allows to join the thread finishing the first, using for that
|
||||
the set_once synchronizer.</li>
|
||||
<li>thread_group_once: an extension of the boost::thread_group which
|
||||
allows to join the thread finishing the first, using for that
|
||||
the set_once synchronizer.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<p>(thread_decorator and thread_specific_shared_ptr) are based on the
|
||||
original implementation of threadalert written by Roland Schwarz.</p>
|
||||
<p class="last">Boost.InterThreads extends Boost.Threads adding thread setup/cleanup
|
||||
decorator, thread specific shared pointer, thread keep alive
|
||||
mechanism and thread tuples.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="channel">
|
||||
<h2>Channel</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body"><p class="first">Yigong Liu</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><p class="first"><a class="reference external" href="http://channel.sourceforge.net">http://channel.sourceforge.net</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Channel is a C++ template library to provide name spaces for distributed
|
||||
message passing and event dispatching. Message senders and receivers bind to
|
||||
names in name space; binding and matching rules decide which senders will
|
||||
bind to which receivers (the binding-set); then message passing could happen
|
||||
among bound senders and receivers.</p>
|
||||
<p>The type of name space is a template parameter of Channel. Various name
|
||||
spaces (linear/hierarchical/associative) can be used for different
|
||||
applications. For example, integer ids can be used to send messages in
|
||||
linear name space, string path name ids (such as "/sports/basketball") can
|
||||
be used to send messages in hierarchical name space and regex patterns or
|
||||
Linda tuple-space style tuples can be used to send messages in associative
|
||||
name space.</p>
|
||||
<p>Dispatcher is another configurable template parameter of Channel; which
|
||||
dispatch messages/events from senders to bounded receivers. The design of
|
||||
dispatchers can vary in several dimensions:
|
||||
how msgs move: push or pull;
|
||||
how callbacks executed: synchronous or asynchronous.
|
||||
Sample dispatchers includes : synchronous broadcast dispatcher, asynchronous
|
||||
dispatchers with choice_arbiter and join_arbiters.</p>
|
||||
<p>Name space and dispatchers are orthogonal; they can mix and match together
|
||||
freely. Name spaces and name-binding create binding-sets for sender and
|
||||
receiver, and dispatchers are algorithms defined over the binding-set.</p>
|
||||
<p class="last">Distributed channels can be connected to allow transparent distributed
|
||||
message passing. Filters and translators are used to control name space
|
||||
changes.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="bitfield">
|
||||
<h2>Bitfield</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Authot:</th><td class="field-body">Vicente Botet</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>I have adapted the Bitfield library from Emile Cormier with its
|
||||
permision and I would like you add it to the libraries under
|
||||
developement list. The library is quite stable but I want to add some
|
||||
test with Boost.Endian before adding it to the formal review schedule
|
||||
list.</p>
|
||||
<dl class="docutils">
|
||||
<dt>Boost.Bitfield consists of:</dt>
|
||||
<dd><ul class="first last">
|
||||
<li><p class="first">a generic bitfield traits class providing generic getter and setter methods.</p>
|
||||
</li>
|
||||
<li><p class="first">a BOOST_BITFIELD_DCL macro making easier the definition of the
|
||||
bitfield traits and the bitfield getter and setter functions:</p>
|
||||
<pre class="literal-block">
|
||||
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);
|
||||
};
|
||||
</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="section" id="synchro">
|
||||
<h2>Synchro</h2>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Vicente Botet</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Download:</th><td class="field-body"><a class="reference external" href="http://www.boostpro.com/vault/index.php?action=downloadfile&filename=synchro.zip&directory=Concurrent%20Programming&">Boost Vault:</a>
|
||||
<a class="reference external" href="https://svn.boost.org/svn/boost/sandbox/synchro">Boost Sandbox:</a>
|
||||
Html doc included only on the Vault</td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Description:</th><td class="field-body">Synchro provides:</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<li><p class="first">A uniform usage of Boost.Thread and Boost.Interprocess
|
||||
synchronization mechanisms based on lockables(mutexes) concepts and
|
||||
locker(guards) concepts.</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
<li>lockables traits and lock generators,</li>
|
||||
<li>generic free functions on lockables as: <cite>lock</cite>, <cite>try_lock</cite>, ...</li>
|
||||
<li>locker adapters of the Boost.Thread and Boost.Interprocess lockers models,</li>
|
||||
<li>complete them with the corresponding models for single-threaded
|
||||
programms: <cite>null_mutex</cite> and <cite>null_condition</cite> classes,</li>
|
||||
<li>locking families,</li>
|
||||
<li><cite>semaphore</cite> and <cite>binary_semaphore</cite>,</li>
|
||||
<li><cite>condition_lockable</cite> lock which put toghether a lock and its
|
||||
associated conditions.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li><p class="first">A coherent exception based timed lock approach for functions and constructors,</p>
|
||||
</li>
|
||||
<li><p class="first">A rich palete of lockers as</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
<li><cite>strict_locker</cite>, <cite>nested_strict_locker</cite>,</li>
|
||||
<li><cite>condition_locker</cite>,</li>
|
||||
<li><cite>reverse_locker</cite>, <cite>nested_reverse_locker</cite>,</li>
|
||||
<li><cite>locking_ptr</cite>, <cite>on_derreference_locking_ptr</cite>,</li>
|
||||
<li><cite>externally_locked</cite>,</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li><p class="first"><cite>array_unique_locker</cite> on multiple lockables.</p>
|
||||
</li>
|
||||
<li><p class="first">Generic free functions on multiple lockables <cite>lock</cite>, <cite>try_lock</cite>,
|
||||
<cite>lock_until</cite>, <cite>lock_for</cite>, <cite>try_lock_until</cite>, <cite>try_lock_for</cite>, <cite>unlock</cite></p>
|
||||
</li>
|
||||
<li><p class="first">lock adapters of the Boost.Thread and Boost.Interprocess lockable models,</p>
|
||||
</li>
|
||||
<li><p class="first"><cite>lock_until</cite>, <cite>lock_for</cite>, <cite>try_lock_until</cite>, <cite>try_lock_for</cite></p>
|
||||
</li>
|
||||
<li><p class="first">A polymorphic lockable hierarchy.</p>
|
||||
</li>
|
||||
<li><p class="first">High-level abstractions for handling more complicated
|
||||
synchronization problems, including</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
<li><cite>monitor</cite> for guaranteeing exclusive access to an object.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li><p class="first">A rendezvous mechanism for handling direct communication between
|
||||
objects <cite>concurrent_components</cite> via <cite>ports</cite> using an
|
||||
accept-synchronize protocol based on the design of the concurrency
|
||||
library in the Beta language.</p>
|
||||
</li>
|
||||
<li><p class="first">Language-like Synchronized Block Macros</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
691
development/report-jun-2009.rst
Normal file
691
development/report-jun-2009.rst
Normal file
@@ -0,0 +1,691 @@
|
||||
==============================================
|
||||
Review Wizard Status Report for June 2009
|
||||
==============================================
|
||||
|
||||
News
|
||||
====
|
||||
|
||||
Futures: Williams variant Accepted; Gaskill variant Rejected
|
||||
|
||||
Boost 1.38 Released
|
||||
New Libraries:
|
||||
Revised Libraries:
|
||||
|
||||
Boost.Range Extension Accepted
|
||||
|
||||
Polynomial Library Rejected
|
||||
|
||||
Boost 1.39 Released
|
||||
|
||||
Constrained Value Review - Review Result Pending
|
||||
|
||||
|
||||
|
||||
Library Issues
|
||||
==============
|
||||
|
||||
The Time Series Library, accepted in August 2007, has not yet been
|
||||
submitted to SVN. Eric Niebler and John Phillips are working on
|
||||
making the changes suggested during the review.
|
||||
|
||||
The Floating Point Utilities Library, has not yet been submitted to
|
||||
SVN. It is slated to be integrated with the Boost.Math library.
|
||||
|
||||
The Switch Library, accepted provisionally in January 2008,
|
||||
has not yet been submitted for mini-review and full acceptance.
|
||||
|
||||
The Phoenix Library, accepted provisionally in September 2008, has not
|
||||
yet been submitted for mini-review and full acceptance. A rewrite of
|
||||
Phoenix, basing it on the Proto metaprogramming library, has just
|
||||
begun.
|
||||
|
||||
Maintenance of The Property Tree Library has been taken over by
|
||||
Sebastian Redl from Marcin Kalicinski. The library has been checked
|
||||
into svn trunk, but Sebastian is doing major maintenance on it in a
|
||||
branch. He is aiming for a 1.41 or 1.40 release.
|
||||
|
||||
|
||||
|
||||
General Announcements
|
||||
=====================
|
||||
|
||||
As always, we need experienced review managers. The review queue has
|
||||
been growing substantially but we have had few volunteers, so manage
|
||||
reviews if possible and if not please make sure to watch the review
|
||||
schedule and participate. Please take a look at the list of libraries
|
||||
in need of managers and check out their descriptions. In general
|
||||
review managers are active boost participants or library
|
||||
contributors. If you can serve as review manager for any of them,
|
||||
email Ron Garcia or John Phillips, "garcia at osl dot iu dot edu"
|
||||
and "phillips at mps dot ohio-state dot edu" respectively.
|
||||
|
||||
We are also suffering from a lack of reviewers. While we all
|
||||
understand time pressures and the need to complete paying work, the
|
||||
strength of Boost is based on the detailed and informed reviews
|
||||
submitted by you. A recent effort is trying to secure at least five
|
||||
people who promise to submit reviews as a precondition to starting
|
||||
the review period. Consider volunteering for this and even taking the
|
||||
time to create the review as early as possible. No rule says you can
|
||||
only work on a review during the review period.
|
||||
|
||||
A link to this report will be posted to www.boost.org. If you would
|
||||
like us to make any modifications or additions to this report before
|
||||
we do that, please email Ron or John.
|
||||
|
||||
If you're a library author and plan on submitting a library for review
|
||||
in the next 3-6 months, send Ron or John a short description of your
|
||||
library and we'll add it to the Libraries Under Construction below. We
|
||||
know that there are many libraries that are near completion, but we
|
||||
have hard time keeping track all of them. Please keep us informed
|
||||
about your progress.
|
||||
|
||||
|
||||
Review Queue
|
||||
============
|
||||
|
||||
* Lexer
|
||||
* Shifted Pointer
|
||||
* Logging
|
||||
* Log
|
||||
* Join
|
||||
* Pimpl
|
||||
* Thread Pool
|
||||
* Endian
|
||||
* Meta State Machine
|
||||
* Conversion
|
||||
* Sorting
|
||||
* GIL.IO
|
||||
* AutoBuffer
|
||||
* String Convert
|
||||
|
||||
--------------------
|
||||
|
||||
|
||||
Lexer
|
||||
-----
|
||||
:Author: Ben Hanson
|
||||
|
||||
:Review Manager: Eric Niebler
|
||||
|
||||
:Download: `Boost Vault <http://boost-consulting.com/vault/index.php?action=downloadfile&filename=boost.lexer.zip&directory=Strings%20-%20Text%20Processing>`__
|
||||
|
||||
:Description:
|
||||
A programmable lexical analyser generator inspired by 'flex'.
|
||||
Like flex, it is programmed by the use of regular expressions
|
||||
and outputs a state machine as a number of DFAs utilising
|
||||
equivalence classes for compression.
|
||||
|
||||
|
||||
Shifted Pointer
|
||||
---------------
|
||||
:Author: Phil Bouchard
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=Memory>`__
|
||||
|
||||
:Description:
|
||||
Smart pointers are in general optimized for a specific resource
|
||||
(memory usage, CPU cycles, user friendliness, ...) depending on
|
||||
what the user need to make the most of. The purpose of this smart
|
||||
pointer is mainly to allocate the reference counter (or owner) and
|
||||
the object itself at the same time so that dynamic memory management
|
||||
is simplified thus accelerated and cheaper on the memory map.
|
||||
|
||||
|
||||
Logging
|
||||
-------
|
||||
:Author: John Torjo
|
||||
|
||||
:Review Manager: Gennadiy Rozental
|
||||
|
||||
:Download: http://torjo.com/log2/
|
||||
|
||||
:Description: Used properly, logging is a very powerful tool. Besides aiding
|
||||
debugging/testing, it can also show you how your application is
|
||||
used. The Boost Logging Library allows just for that, supporting
|
||||
a lot of scenarios, ranging from very simple (dumping all to one
|
||||
destination), to very complex (multiple logs, some enabled/some
|
||||
not, levels, etc). It features a very simple and flexible
|
||||
interface, efficient filtering of messages, thread-safety,
|
||||
formatters and destinations, easy manipulation of logs, finding
|
||||
the best logger/filter classes based on your application's
|
||||
needs, you can define your own macros and much more!
|
||||
|
||||
|
||||
Log
|
||||
---
|
||||
:Author: Andrey Semashev
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://tinyurl.com/cm9lum>`__
|
||||
|
||||
:Description: The library is aimed to help adding logging features to
|
||||
applications. It provides out-of-box support for many widely used
|
||||
capabilities, such as formatting and filtering based on attributes,
|
||||
sending logs to a syslog server or to Windows Event Log, or simply
|
||||
storing logs into files. It also provides basic support for the
|
||||
library initialization from a settings file. The library can also be
|
||||
used for a wider range of tasks and implement gathering and processing
|
||||
statistical information or notifying user about application events.
|
||||
|
||||
|
||||
Join
|
||||
----
|
||||
:Author: Yigong Liu
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: http://channel.sourceforge.net/
|
||||
|
||||
:Description: Join is an asynchronous, message based C++ concurrency
|
||||
library based on join calculus. It is applicable both to
|
||||
multi-threaded applications and to the orchestration of asynchronous,
|
||||
event-based applications. It follows Comega's design and
|
||||
implementation and builds with Boost facilities. It provides a high
|
||||
level concurrency API with asynchronous methods, synchronous methods,
|
||||
and chords which are "join-patterns" defining the synchronization,
|
||||
asynchrony, and concurrency.
|
||||
|
||||
|
||||
Pimpl
|
||||
-----
|
||||
:Author: Vladimir Batov
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: | `Boost Vault <http://www.boost-consulting.com/vault/index.php?action=downloadfile&filename=Pimpl.zip&directory=&>`__
|
||||
| http://www.ddj.com/cpp/205918714 (documentation)
|
||||
|
||||
:Description: The Pimpl idiom is a simple yet robust technique to
|
||||
minimize coupling via the separation of interface and implementation
|
||||
and then implementation hiding. This library provides a convenient
|
||||
yet flexible and generic deployment technique for the Pimpl idiom.
|
||||
It's seemingly complete and broadly applicable, yet minimal, simple
|
||||
and pleasant to use.
|
||||
|
||||
|
||||
Thread Pool
|
||||
-----------
|
||||
|
||||
:Author: Oliver Kowalke
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=boost-threadpool.2.tar.gz&directory=Concurrent%20Programming>`__
|
||||
|
||||
:Description:
|
||||
The library provides:
|
||||
- thread creation policies: determines the management of worker threads:
|
||||
- fixed set of threads in pool
|
||||
- create workerthreads on demand (depending on context)
|
||||
- let worker threads ime out after certain idle time
|
||||
- channel policies: manages access to queued tasks:
|
||||
- bounded channel with high and low watermark for queuing tasks
|
||||
- unbounded channel with unlimited number of queued tasks
|
||||
- rendezvous syncron hand-over between producer and consumer threads
|
||||
- queueing policy: determines how tasks will be removed from channel:
|
||||
- FIFO
|
||||
- LIFO
|
||||
- priority queue (attribute assigned to task)
|
||||
- smart insertions and extractions (for instance remove oldest task with certain attribute by newst one)
|
||||
- tasks can be chained and lazy submit of taks is also supported (thanks to
|
||||
Braddocks future library).
|
||||
- returns a task object from the submit function. The task it self can
|
||||
be interrupted if its is cooperative (means it has some interruption points
|
||||
in its code -> ``this_thread::interruption_point()`` ).
|
||||
|
||||
|
||||
Endian
|
||||
------
|
||||
:Author: Beman Dawes
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: http://mysite.verizon.net/beman/endian-0.10.zip
|
||||
|
||||
:Description:
|
||||
Header boost/integer/endian.hpp provides integer-like byte-holder
|
||||
binary types with explicit control over byte order, value type, size,
|
||||
and alignment. Typedefs provide easy-to-use names for common
|
||||
configurations.
|
||||
|
||||
These types provide portable byte-holders for integer data,
|
||||
independent of particular computer architectures. Use cases almost
|
||||
always involve I/O, either via files or network connections. Although
|
||||
data portability is the primary motivation, these integer byte-holders
|
||||
may also be used to reduce memory use, file size, or network activity
|
||||
since they provide binary integer sizes not otherwise available.
|
||||
|
||||
|
||||
Meta State Machine
|
||||
------------------
|
||||
:Author: Christophe Henry
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?direction=0&order=&directory=Msm>`__
|
||||
|
||||
:Description: Msm is a framework which enables you to build a Finite State Machine
|
||||
in a straightforward, descriptive and easy-to-use manner . It requires
|
||||
minimal effort to generate a working program from an UML state machine
|
||||
diagram. This work was inspired by the state machine described in the
|
||||
book of David Abrahams and Aleksey Gurtovoy "C++ Template
|
||||
Metaprogramming" and adds most of what UML Designers are expecting
|
||||
from an UML State Machine framework:
|
||||
|
||||
* Entry and Exit Methods
|
||||
* Guard Conditions
|
||||
* Sub state machines (also called composite states in UML)
|
||||
* History
|
||||
* Terminate Pseudo-State
|
||||
* Deferred Events
|
||||
* Orthogonal zones
|
||||
* Explicit entry into sub state machine states
|
||||
* Fork
|
||||
* Entry / Exit pseudo states
|
||||
* Conflicting transitions
|
||||
|
||||
|
||||
Conversion
|
||||
----------
|
||||
:Author: Vicente Botet
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=conversion.zip&directory=Utilities&>`__
|
||||
|
||||
:Description:
|
||||
Generic explicit conversion between unrelated types.
|
||||
|
||||
Boost.Conversion provides:
|
||||
* a generic ``convert_to`` function which can be specialized by the user to
|
||||
make explicit conversion between unrelated types.
|
||||
* a generic ``assign_to`` function which can be specialized by the user to
|
||||
make explicit assignation between unrelated types.
|
||||
* conversion between ``std::complex`` of explicitly convertible types.
|
||||
* conversion between ``std::pair`` of explicitly convertible types.
|
||||
* conversion between ``boost::optional`` of explicitly convertible types.
|
||||
* conversion between ``boost::rational`` of explicitly convertible types.
|
||||
* conversion between ``boost::interval`` of explicitly convertible types.
|
||||
* conversion between ``boost::chrono::time_point`` and ``boost::ptime``.
|
||||
* conversion between ``boost::chrono::duration`` and ``boost::time_duration``.
|
||||
|
||||
|
||||
Sorting
|
||||
-------
|
||||
:Author: Steven Ross
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=algorithm_sorting.zip>`__
|
||||
|
||||
:Description:
|
||||
A grouping of 3 templated hybrid radix/comparison-based sorting
|
||||
algorithms that provide superior worst-case and average-case
|
||||
performance to std::sort: integer_sort, which sorts fixed-size data
|
||||
types that support a rightshift (default of >>) and a comparison
|
||||
(default of <) operator. float_sort, which sorts standard
|
||||
floating-point numbers by safely casting them to integers.
|
||||
string_sort, which sorts variable-length data types, and is optimized
|
||||
for 8-bit character strings.
|
||||
|
||||
All 3 algorithms have O(n(k/s + s)) runtime where k is the number of
|
||||
bits in the data type and s is a constant, and limited memory overhead
|
||||
(in the kB for realistic inputs). In testing, integer_sort varies
|
||||
from 35% faster to 8X as fast as std::sort, depending on processor,
|
||||
compiler optimizations, and data distribution. float_sort is roughly
|
||||
7X as fast as std::sort on x86 processors. string_sort is roughly 2X
|
||||
as fast as std::sort.
|
||||
|
||||
|
||||
GIL.IO
|
||||
------
|
||||
:Author: Christian Henning
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `GIL Google Code Vault <http://gil-contributions.googlecode.com/files/rc2.zip>`__
|
||||
|
||||
:Description: I/O extension for ``boost::gil`` which allows reading and
|
||||
writing of/in various image formats ( tiff, jpeg, png, etc ). This
|
||||
review will also include the Toolbox extension which adds some common
|
||||
functionality to gil, such as new color spaces, algorithms, etc.
|
||||
|
||||
|
||||
|
||||
AutoBuffer
|
||||
----------
|
||||
:Author: Thorsten Ottosen
|
||||
|
||||
:Review Manager: Robert Stewart
|
||||
|
||||
:Download: `Here <http://www.cs.aau.dk/~nesotto/boost/auto_buffer.zip>`__
|
||||
|
||||
:Description:
|
||||
Boost.AutoBuffer provides a container for efficient dynamic, local buffers.
|
||||
Furthermore, the container may be used as an alternative to std::vector,
|
||||
offering greater flexibility and sometimes better performance.
|
||||
|
||||
|
||||
|
||||
String Convert
|
||||
--------------
|
||||
:Author: Vladimir Batov
|
||||
|
||||
:Review Manager: Needed
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=boost-string-convert.zip>`__
|
||||
|
||||
:Description:
|
||||
The library takes the approach of boost::lexical_cast in the area of
|
||||
string-to-type and type-to-string conversions, builds on the past
|
||||
boost::lexical_cast experience and advances that conversion
|
||||
functionality further to additionally provide:
|
||||
* throwing and non-throwing conversion-failure behavior;
|
||||
* support for the default value to be returned when conversion fails;
|
||||
* two types of the conversion-failure check -- basic and better/safe;
|
||||
* formatting support based on the standard I/O Streams and the standard
|
||||
(or user-defined) I/O Stream-based manipulators
|
||||
(like std::hex, std::scientific, etc.);
|
||||
* locale support;
|
||||
* support for boost::range-compliant char and wchar_t-based string containers;
|
||||
* no DefaultConstructibility requirement for the Target type;
|
||||
* consistent framework to uniformly incorporate any type-to-type conversions.
|
||||
|
||||
It is an essential tool with applications making extensive use of
|
||||
configuration files or having to process/prepare considerable amounts
|
||||
of data in, say, XML, etc.
|
||||
|
||||
|
||||
Libraries under development
|
||||
===========================
|
||||
|
||||
|
||||
Please let us know of any libraries you are currently
|
||||
developing that you intend to submit for review.
|
||||
|
||||
|
||||
Mirror
|
||||
------
|
||||
:Author: Matus Chochlik
|
||||
|
||||
:Download: | http://svn.boost.org/svn/boost/sandbox/mirror/doc/index.html
|
||||
| `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=mirror.zip>`__
|
||||
|
||||
:Description:
|
||||
|
||||
The aim of the Mirror library is to provide useful meta-data at both
|
||||
compile-time and run-time about common C++ constructs like namespaces,
|
||||
types, typedef-ined types, classes and their base classes and member
|
||||
attributes, instances, etc. and to provide generic interfaces for
|
||||
their introspection.
|
||||
|
||||
Mirror is designed with the principle of stratification in mind and
|
||||
tries to be as less intrusive as possible. New or existing classes do
|
||||
not need to be designed to directly support Mirror and no Mirror
|
||||
related code is necessary in the class' definition, as far as some
|
||||
general guidelines are followed
|
||||
|
||||
Most important features of the Mirror library that are currently
|
||||
implemented include:
|
||||
|
||||
* Namespace-name inspection.
|
||||
|
||||
* Inspection of the whole scope in which a namespace is defined
|
||||
|
||||
* Type-name querying, with the support for typedef-ined typenames
|
||||
and typenames of derived types like pointers, references,
|
||||
cv-qualified types, arrays, functions and template names. Names
|
||||
with or without nested-name-specifiers can be queried.
|
||||
|
||||
* Inspection of the scope in which a type has been defined
|
||||
|
||||
* Uniform and generic inspection of class' base classes. One can
|
||||
inspect traits of the base classes for example their types,
|
||||
whether they are inherited virtually or not and the access
|
||||
specifier (private, protected, public).
|
||||
|
||||
* Uniform and generic inspection of class' member attributes. At
|
||||
compile-time the count of class' attributes and their types,
|
||||
storage class specifiers (static, mutable) and some other traits
|
||||
can be queried. At run-time one can uniformly query the names
|
||||
and/or values (when given an instance of the reflected class) of
|
||||
the member attributes and sequentially execute a custom functor
|
||||
on every attribute of a class.
|
||||
|
||||
* Traversals of a class' (or generally type's) structure with user
|
||||
defined visitors, which are optionally working on an provided
|
||||
instance of the type or just on it's structure without any
|
||||
run-time data. These visitors are guided by Mirror through the
|
||||
structure of the class and optionally provided with contextual
|
||||
information about the current position in the traversal.
|
||||
|
||||
I'm hoping to have it review ready in the next few months.
|
||||
|
||||
|
||||
Interval Template Library
|
||||
-------------------------
|
||||
:Author: Joachim Faulhaber
|
||||
|
||||
:Description:
|
||||
|
||||
The Interval Template Library (Itl) provides intervals
|
||||
and two kinds of interval containers: Interval_sets and
|
||||
interval_maps. Interval_sets and maps can be used just
|
||||
as sets or maps of elements. Yet they are much more
|
||||
space and time efficient when the elements occur in
|
||||
contiguous chunks: intervals. This is obviously the case
|
||||
in many problem domains, particularly in fields that deal
|
||||
with problems related to date and time.
|
||||
|
||||
Interval containers allow for intersection with interval_sets
|
||||
to work with segmentation. For instance you might want
|
||||
to intersect an interval container with a grid of months
|
||||
and then iterate over those months.
|
||||
|
||||
Finally interval_maps provide aggregation on
|
||||
associated values, if added intervals overlap with
|
||||
intervals that are stored in the interval_map. This
|
||||
feature is called aggregate on overlap. It is shown by
|
||||
example:
|
||||
|
||||
::
|
||||
|
||||
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"}
|
||||
|
||||
As can be seen from the example an interval_map has both
|
||||
a decompositional behavior (on the time dimension) as well as
|
||||
a accumulative one (on the associated values).
|
||||
|
||||
StlConstantTimeSize
|
||||
-------------------
|
||||
:Author: Vicente J. Botet Escriba
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=constant_time_size.zip&directory=Containers&>`__
|
||||
|
||||
:Description:
|
||||
|
||||
Boost.StlConstantTimeSize Defines a wrapper to the stl container list
|
||||
giving the user the chioice for the complexity of the size function:
|
||||
linear time, constant time or quasi-constant. In future versions the
|
||||
library could include a similar wrapper to slist.
|
||||
|
||||
|
||||
InterThreads
|
||||
------------
|
||||
:Author: Vicente J. Botet Escriba
|
||||
|
||||
:Download: `Boost Vault <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=interthreads.zip&directory=Concurrent%20Programming&>`__
|
||||
|
||||
:Description:
|
||||
|
||||
Boost.InterThreads extends Boost.Threads adding some features:
|
||||
|
||||
* thread decorator: thread_decorator allows to define
|
||||
setup/cleanup functions which will be called only once by
|
||||
thread: setup before the thread function and cleanup at thread
|
||||
exit.
|
||||
* thread specific shared pointer: this is an extension of the
|
||||
thread_specific_ptr providing access to this thread specific
|
||||
context from other threads. As it is shared the stored pointer
|
||||
is a shared_ptr instead of a raw one.
|
||||
* thread keep alive mechanism: this mechanism allows to detect
|
||||
threads that do not prove that they are alive by calling to the
|
||||
keep_alive_point regularly. When a thread is declared dead a
|
||||
user provided function is called, which by default will abort
|
||||
the program.
|
||||
* thread tuple: defines a thread groupe where the number of
|
||||
threads is know statically and the threads are created at
|
||||
construction time.
|
||||
* set_once: a synchonizer that allows to set a variable only once,
|
||||
notifying to the variable value to whatever is waiting for that.
|
||||
* thread_tuple_once: an extension of the boost::thread_tuple which
|
||||
allows to join the thread finishing the first, using for that
|
||||
the set_once synchronizer.
|
||||
* thread_group_once: an extension of the boost::thread_group which
|
||||
allows to join the thread finishing the first, using for that
|
||||
the set_once synchronizer.
|
||||
|
||||
|
||||
(thread_decorator and thread_specific_shared_ptr) are based on the
|
||||
original implementation of threadalert written by Roland Schwarz.
|
||||
|
||||
Boost.InterThreads extends Boost.Threads adding thread setup/cleanup
|
||||
decorator, thread specific shared pointer, thread keep alive
|
||||
mechanism and thread tuples.
|
||||
|
||||
|
||||
Channel
|
||||
-------
|
||||
:Author: Yigong Liu
|
||||
|
||||
:Download: http://channel.sourceforge.net
|
||||
|
||||
:Description:
|
||||
Channel is a C++ template library to provide name spaces for distributed
|
||||
message passing and event dispatching. Message senders and receivers bind to
|
||||
names in name space; binding and matching rules decide which senders will
|
||||
bind to which receivers (the binding-set); then message passing could happen
|
||||
among bound senders and receivers.
|
||||
|
||||
The type of name space is a template parameter of Channel. Various name
|
||||
spaces (linear/hierarchical/associative) can be used for different
|
||||
applications. For example, integer ids can be used to send messages in
|
||||
linear name space, string path name ids (such as "/sports/basketball") can
|
||||
be used to send messages in hierarchical name space and regex patterns or
|
||||
Linda tuple-space style tuples can be used to send messages in associative
|
||||
name space.
|
||||
|
||||
Dispatcher is another configurable template parameter of Channel; which
|
||||
dispatch messages/events from senders to bounded receivers. The design of
|
||||
dispatchers can vary in several dimensions:
|
||||
how msgs move: push or pull;
|
||||
how callbacks executed: synchronous or asynchronous.
|
||||
Sample dispatchers includes : synchronous broadcast dispatcher, asynchronous
|
||||
dispatchers with choice_arbiter and join_arbiters.
|
||||
|
||||
Name space and dispatchers are orthogonal; they can mix and match together
|
||||
freely. Name spaces and name-binding create binding-sets for sender and
|
||||
receiver, and dispatchers are algorithms defined over the binding-set.
|
||||
|
||||
Distributed channels can be connected to allow transparent distributed
|
||||
message passing. Filters and translators are used to control name space
|
||||
changes.
|
||||
|
||||
|
||||
Bitfield
|
||||
--------
|
||||
:Authot: Vicente Botet
|
||||
|
||||
:Download:
|
||||
|
||||
:Description:
|
||||
|
||||
I have adapted the Bitfield library from Emile Cormier with its
|
||||
permision and I would like you add it to the libraries under
|
||||
developement list. The library is quite stable but I want to add some
|
||||
test with Boost.Endian before adding it to the formal review schedule
|
||||
list.
|
||||
|
||||
Boost.Bitfield consists of:
|
||||
* a generic bitfield traits class providing generic getter and setter methods.
|
||||
* a BOOST_BITFIELD_DCL macro making easier the definition of the
|
||||
bitfield traits and the bitfield getter and setter functions::
|
||||
|
||||
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
|
||||
-------
|
||||
:Author: Vicente Botet
|
||||
|
||||
:Download: `Boost Vault: <http://www.boostpro.com/vault/index.php?action=downloadfile&filename=synchro.zip&directory=Concurrent%20Programming&>`__
|
||||
`Boost Sandbox: <https://svn.boost.org/svn/boost/sandbox/synchro>`__
|
||||
Html doc included only on the Vault
|
||||
|
||||
:Description: Synchro provides:
|
||||
|
||||
* A uniform usage of Boost.Thread and Boost.Interprocess
|
||||
synchronization mechanisms based on lockables(mutexes) concepts and
|
||||
locker(guards) concepts.
|
||||
|
||||
* lockables traits and lock generators,
|
||||
* generic free functions on lockables as: `lock`, `try_lock`, ...
|
||||
* locker adapters of the Boost.Thread and Boost.Interprocess lockers models,
|
||||
* complete them with the corresponding models for single-threaded
|
||||
programms: `null_mutex` and `null_condition` classes,
|
||||
* locking families,
|
||||
* `semaphore` and `binary_semaphore`,
|
||||
* `condition_lockable` lock which put toghether a lock and its
|
||||
associated conditions.
|
||||
|
||||
* A coherent exception based timed lock approach for functions and constructors,
|
||||
|
||||
* A rich palete of lockers as
|
||||
|
||||
* `strict_locker`, `nested_strict_locker`,
|
||||
* `condition_locker`,
|
||||
* `reverse_locker`, `nested_reverse_locker`,
|
||||
* `locking_ptr`, `on_derreference_locking_ptr`,
|
||||
* `externally_locked`,
|
||||
|
||||
* `array_unique_locker` on multiple lockables.
|
||||
|
||||
* Generic free functions on multiple lockables `lock`, `try_lock`,
|
||||
`lock_until`, `lock_for`, `try_lock_until`, `try_lock_for`, `unlock`
|
||||
|
||||
* lock adapters of the Boost.Thread and Boost.Interprocess lockable models,
|
||||
|
||||
* `lock_until`, `lock_for`, `try_lock_until`, `try_lock_for`
|
||||
|
||||
* A polymorphic lockable hierarchy.
|
||||
|
||||
* High-level abstractions for handling more complicated
|
||||
synchronization problems, including
|
||||
|
||||
* `monitor` for guaranteeing exclusive access to an object.
|
||||
|
||||
* A rendezvous mechanism for handling direct communication between
|
||||
objects `concurrent_components` via `ports` using an
|
||||
accept-synchronize protocol based on the design of the concurrency
|
||||
library in the Beta language.
|
||||
|
||||
* Language-like Synchronized Block Macros
|
||||
|
||||
Reference in New Issue
Block a user