Changes between Initial Version and Version 1 of LibrariesUnderConstruction


Ignore:
Timestamp:
Dec 3, 2008, 3:44:51 PM (14 years ago)
Author:
viboes
Comment:

Libraries Under Construction creation

Legend:

Unmodified
Added
Removed
Modified
  • LibrariesUnderConstruction

    v1 v1  
     1[[PageOutline]]
     2
     3WARNING: The contents of this page could be incomplete and outdated. Please help us to improve this page by modifying it directly or posting on the Boost mailing list [mailto:boost-AT-lists.boost.org] and [mailto:boost-users-AT-lists.boost.org].
     4
     5See [http://www.boost.org/doc/ Boost Releases documentation]  for the list of libraries Boost by release.
     6See [http://www.boost.org/more/formal_review_schedule.html Boost Review Schedule]  for Boost ongoing details.
     7
     8Most of the ongoing libraries are stored on the [https://svn.boost.org/svn/boost/sandbox SVN Sandbox], the [http://www.boost-consulting.com/vault/ Boost Vault] or on specific sites.
     9
     10---------------------------------------------------------------------------------------------------
     11= Libraries Under Construction =
     12
     13This page is an index page for libraries under construction.
     14
     15---------------------------------------------------------------------------------------------------
     16== Boost.!AllocPlus ==
     17 * '''Author(s):''' Ion Gaztañaga [mailto:igaztanaga-AT-gmail.com> 
     18 * '''Version:'''
     19 * '''State:'''
     20 * '''Last upload:'''
     21 * '''Links:''' [http://www.drivehq.com/web/igaztanaga/allocplus/ Documentation] [http://www.drivehq.com/web/igaztanaga/allocplus.zip Download]
     22 * '''Description:'''Allocators optimizations
     23 
     24---------------------------------------------------------------------------------------------------
     25== Boost.Chono ==
     26 * '''Author(s):''' Beman Dawes
     27 * '''Version:'''
     28 * '''State:'''
     29 * '''Last upload:'''2008 Nov 26
     30 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/chrono Boost Sandbox]
     31 * '''Description:''' The Boost Chrono library provides:
     32
     33    *  The C++0x Standard Library's time utilities, including:
     34          * Class template duration
     35          * Class template time_point
     36          * Clocks:
     37                * system_clock
     38                * monotonic_clock
     39                * high_resolution_clock
     40                   
     41    * Class template timer, with typedefs:
     42          * system_timer
     43          * monotonic_timer
     44          * high_resolution_timer
     45             
     46    * Process clocks and timers:
     47          * process_clock, capturing real, user-CPU, and system-CPU times.
     48          * process_timer, capturing elapsed real, user-CPU, and system-CPU times.
     49          * run_timer, convenient reporting of process_timer results.
     50             
     51    *  The C++0x Standard Library's compile-time rational arithmetic.
     52
     53---------------------------------------------------------------------------------------------------
     54== Boost.!ConstantTimeSize ==
     55 * '''Author(s):''' Vicente J. Botet Escriba
     56 * '''Version:''' 0.1
     57 * '''State:''' Stable
     58 * '''Last upload:'''2008 Oct 14
     59 * '''Links:''' [http://www.boostpro.com/vault/index.php?action=downloadfile&filename=constant_time_size.zip&directory=Containers& Boost Vault] [https://svn.boost.org/svn/boost/sandbox/constant_time_size Boost Sandbox]
     60 * '''Description:''' Boost.ConstantTimeSize 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.
     61
     62In future versions the library could include a similar wrapper to slist.
     63
     64
     65
     66---------------------------------------------------------------------------------------------------
     67== Boost.!Dataflow ==
     68 * '''Author(s):'''  Stjepan Rajko
     69 * '''State:''' Rewriting ongoing
     70 * '''Version:'''
     71 * '''Last upload:'''
     72 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/dataflow-rewrite Boost Sandbox]
     73 * '''Description:'''
     74
     75---------------------------------------------------------------------------------------------------
     76== Boost.Endian ==
     77 * '''Author(s):''' Beman Dawes
     78 * '''Version:'''
     79 * '''State:'''
     80 * '''Last upload:'''2008 Nov 26
     81 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/endian Boost Sandbox]
     82 * '''Description:''' 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.
     83
     84These 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 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.
     85
     86---------------------------------------------------------------------------------------------------
     87== Boost.Extension ==
     88 * '''Author(s):''' Jeremy Pack
     89 * '''Version:'''
     90 * '''State:'''
     91 * '''Last upload:'''2008 Nov 26
     92 * '''Links:''' [http://boost-extension.blogspot.com Blog] [http://redshoelace.googlepages.com/extension_reflection.zip Download] [http://svn.boost.org/svn/boost/sandbox/boost/extension Headers Boost Sandbox] [http://svn.boost.org/svn/boost/sandbox/libs/extension Libs Boost Sandbox]
     93 * '''Description:''' The Boost.Extension library has been developed to ease the development of plugins and similar extensions to software using shared libraries. Classes, functions and data can be made available from shared libraries and loaded by the application.
     94
     95---------------------------------------------------------------------------------------------------
     96== Boost.!InterThreads ==
     97 * '''Author(s):''' Vicente J. Botet Escriba
     98 * '''Version:''' 0.1
     99 * '''State:''' Not stable
     100 * '''Last upload:''' 2008 Nov 26
     101 * '''Links:''' [http://www.boostpro.com/vault/index.php?action=downloadfile&filename=interthreads.zip&directory=Concurrent%20Programming& Boost Vault]
     102[https://svn.boost.org/svn/boost/sandbox/interthreads Boost Sandbox]
     103 * '''Description:'''  Boost.!InterThreads extends Boost.Threads adding some features:
     104 
     105    * 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.
     106    * 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.
     107    * 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.
     108    * thread tuple: defines a thread group where the number of threads is know statically and the threads are created at construction time.
     109    * set_once: a synchronizer that allows to set a variable only once, notifying to the variable value to whatever is waiting for that.
     110    * 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.
     111    * 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.
     112 
     113(thread_decorator and thread_specific_shared_ptr) are based on the original implementation of threadalert written by Roland Schwarz.
     114
     115
     116
     117---------------------------------------------------------------------------------------------------
     118== Boost.!ITL ==
     119 * '''Author(s):'''  Joachim Faulhaber
     120 * '''Version:'''
     121 * '''State:'''
     122 * '''Last upload:''' 2008 Nov 26
     123 * '''Links:''' [http://www.sourceforge.net/projects/itl Home Page] [http://www.herold-faulhaber.de/itl Online Documentation] [https://svn.boost.org/svn/boost/sandbox/itl Boost Sandbox]
     124 * '''Description:''' The Interval Template Library (ITL) offers '''intervals''' and two kinds of interval containers: '''interval_sets''' and '''interval_maps'''.
     125
     126---------------------------------------------------------------------------------------------------
     127== Boost.Log ==
     128 * '''Author(s):''' Andrey Semashev `[mailto:andrey.semashev__AT__gmail.com] 
     129 * '''Version:'''
     130 * '''State:'''
     131 * '''Last upload:''' 2008 Nov 28
     132 * '''Links:''' [http://boost-log.sourceforge.net Home Page]
     133 * '''Description:'''  This library aims to make logging significantly easier for the application developer. It provides a wide range of out-of-box tools, along with public interfaces ready to be used to extend the library. The main goals of the library are:
     134
     135    * Simplicity. A small example code snippet should be enough to get the feel of the library and be ready to use its basic features.
     136    * Extensibility. A user should be able to extend functionality of the library with regard to collecting and storing information into logs.
     137    * Performance. The library should make as least performance impact on the user's application as possible.
     138
     139
     140---------------------------------------------------------------------------------------------------
     141== Boost.Mirror ==
     142 * '''Author(s):'''  Matus Chochlik
     143 * '''Version:'''
     144 * '''Last upload:'''
     145 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/mirror Boost Sandbox]
     146 * '''Description:''' The aim of the <libraryname>Mirror</libraryname> library is to provide useful meta-data at both compile-time and run-time about common C++ constructs like namespaces, types (and as an important special case <code>typedef</code>-ined types), classes and their base classes and member attributes, instances, etc. and to provide uniform and generic interfaces for their introspection.
     147
     148
     149---------------------------------------------------------------------------------------------------
     150== Boost.Move ==
     151 * '''Author(s):'''  Adobe
     152 * '''Version:'''
     153 * '''State:''' stable
     154 * '''Last upload:'''
     155 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/move Boost Sandbox]
     156 * '''Description:''' User defined types often have remote parts either because they are implemented using a pointer-to-implementation or are variable sized. Such objects can be expensive to copy and are often copied unnecessarily when they are returned from functions or stored in other objects or containers. Boost.Move is a collection of utilities to implement types which can be moved to elide copying in such situations as well as utilities to assist in moving value.
     157
     158---------------------------------------------------------------------------------------------------
     159== Boost.Process ==
     160 * '''Author(s):'''  Julio M. Merino Vidal
     161 * '''Version:''' v0.1
     162 * '''State:'''
     163 * '''Last upload:'''
     164 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/SOC/2006/process Boost Sandbox]
     165 * '''Description:''' Provides a flexible framework for the C++ programming language to manage running programs, also known as ''processes''.  Among other functionality, this includes the ability to manage the execution context of the currently running process, the ability to spawn new child processes, and a way to communicate with them them using standard C++ streams.
     166
     167
     168---------------------------------------------------------------------------------------------------
     169== Boost.Reflection ==
     170 * '''Author(s):''' Jeremy Pack
     171 * '''Version:'''
     172 * '''State:'''
     173 * '''Last upload:'''2008 Aug 08
     174 * '''Links:''' [http://boost-extension.blogspot.com Blog] [http://redshoelace.googlepages.com/extension_reflection.zip Download] [http://svn.boost.org/svn/boost/sandbox/boost/reflection  Boost Sandbox Headers] [http://svn.boost.org/svn/boost/sandbox/libs/reflection  Boost Sandbox]
     175 * '''Description:''' The goal of this library is to provide runtime reflection for C++ classes, and to allow the same across shared library boundaries. It is an offshoot of the Extension library, which provides dynamic class loading across shared libraries.
     176
     177Boost.Reflection does not provide automatic reflection of classes. Instead, the class data must be manually reflected. This does offer some benefits however:
     178
     179    * This can result in better performance, since only the necessary functions are reflected.
     180    * Arbitrary classes can be reflected without modification.
     181    * It is possible to make a reflected interface that is quite different from the original interface.
     182   
     183---------------------------------------------------------------------------------------------------
     184== Boost.Tree ==
     185 * '''Author(s):'''  Bernhard Reiter
     186 * '''Version:'''
     187 * '''State:'''
     188 * '''Last upload:''' 2008 Nov 30
     189 * '''Links:''' [https://svn.boost.org/svn/boost/sandbox/SOC/2006/tree Boost Sandbox]
     190 * '''Description:''' TR2 Proposal text: [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2101.html Tree Structures and Related Concepts for the C++ Standard Library (TR2)]
     191
     192
     193
     194---------------------------------------------------------------------------------------------------
     195= Other Open Source libraries =
     196 This page contains other libraries that work well with Boost.
     197
     198---------------------------------------------------------------------------------------------------
     199== ASL ==
     200 * '''Author(s):'''  Sean Parent and Mat Marcus - Adobe
     201 * '''Version:''' 1.0.39
     202 * '''State:''' Released
     203 * '''Last upload:''' November 6, 2008
     204 * '''Links:''' [http://stlab.adobe.com/ Home page]
     205 * '''Description:''' Adobe Source Libraries (ASL) provides peer-reviewed and portable C++ source libraries. The libraries are intended to be widely useful, leveraging and extending both the C++ Standard Library and the Boost Libraries.
     206
     207---------------------------------------------------------------------------------------------------
     208== TBB ==
     209 * '''Author(s):'''  Intel
     210 * '''Version:''' 2.1
     211 * '''State:''' stable release
     212 * '''Last upload:''' June 7, 2008
     213 * '''Links:''' [http://www.threadingbuildingblocks.org/ Home page]
     214 * '''Description:''' Intel® Threading Building Blocks (TBB) offers a rich and complete approach to expressing parallelism in a C++ program. It is a library that helps you take advantage of multi-core processor performance without having to be a threading expert. Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that abstracts platform details and threading mechanism for performance and scalability and performance.
     215
     216
     217
     218---------------------------------------------------------------------------------------------------
     219= Libraries Under Discussion =
     220This page is an index page for discussion of possible libraries as people get their ideas together.
     221
     222---------------------------------------------------------------------------------------------------
     223== Geometry ==
     224 * '''Description:'''
     225 * '''Discussion:'''
     226 * '''Participants:''' 
     227
     228---------------------------------------------------------------------------------------------------
     229= Libraries Wish list =
     230
     231This page contains libraries that people have requested of Boost (mostly on the developer's mailing list). If you're looking for a project, this is a good place to start.
     232
     233---------------------------------------------------------------------------------------------------
     234== !AccummulatorsExt ==
     235 * '''Suggested by:''' Vicente J. Botet Escriba 
     236 * '''Description:''' Adding sliding, dependable and cyclic accumulators to Boost.Accumulators.
     237The accumulator library allows to determine dependency between accumulator, but not between accumulator_sets.
     238
     239I would like to define an accumulator_set c so when we cumulate in two others c1 and c2 accumulator_set we cumulate also in c, some thing like:
     240
     241{{{
     242#!cpp
     243typedef dependable_accumulator_set <double, ...> dependable_acc_type;
     244
     245dependable_acc_type c1, c2;
     246dependable_acc_type c=c1+c2
     247
     248dependable_acc_type c3;
     249
     250c+=c3;
     251
     252c1(1);
     253c2(1);
     254c3(2);
     255assert(count(c)==3);
     256assert(sum(c)==4);
     257}}}
     258
     259How dependable_accumulator_set  can be defined? Here follows the interfaces of such a class and the pseudo code, I've named the class dependable_accumulator_set, sorry but I have not found a shorter and better name (may be observed/listened?)
     260
     261{{{
     262#!cpp
     263template <typename T, typename F, typename W>
     264class dependable_accumulator_set : public acumulator_set<T,F,W>
     265{
     266public:
     267    dependable_accumulator_set();
     268    void add_dependent(dependable_acumulator_set&);
     269    void remove_dependent(dependable_acumulator_set&);
     270
     271    template<typename A1>
     272    void operator ()(A1 const &a1) {
     273        for (acc in dependents) {
     274            acc(a1);
     275        }
     276        this->accumulator_set_type::operator()(a1);
     277    }
     278    dependable_accumulator_set<T,F,W>& operator+=(dependable_accumulator_set<T,F,W>);
     279    dependable_accumulator_set<T,F,W>& operator-=(dependable_accumulator_set<T,F,W>);
     280};
     281
     282template <typename T, typename F, typename W>
     283dependable_accumulator_set<T,F,W>
     284operator+()(dependable_accumulator_set<T,F,W>,dependable_accumulator_set<T,F,W>);
     285}}}
     286
     287In addition another variant could allow to cumulate on a sliding window, e.g. on the last N cumulated values. There is already a tail accumulator, but I don't know how to define a min_tail accumulator with the current framework. This class could behaves like:
     288
     289{{{
     290#!cpp
     291typedef sliding_accumulator_set <double, ...> sliding_acc_type;
     292sliding_acc_type c(window=2);
     293c(1);
     294c(5);
     295c(2);
     296assert(count(c)==3);
     297assert(sum(c)==7);
     298assert(min(c)==2);
     299}}}
     300
     301We can state the sliding window at compile (template parameter) or run time
     302(constructor parameter).
     303
     304{{{
     305#!cpp
     306template <std::size Window, typename T, typename F, typename W>
     307class static_sliding_accumulator_set;
     308
     309template <typename T, typename F, typename W>
     310class sliding_accumulator_set;
     311}}}
     312
     313Of course the complexity of the sliding accumulators operations is increased.
     314
     315Another variant could be also to have a temporary accumulator that cyclically push its current value on another accumulator.
     316
     317It will also interesting to have a sliding, dependable and cyclic accumulator set. It would be great to integrate these features on a unique class (accumulator_set?) in a clean way.
     318
     319{{{
     320#!cpp
     321template <typename T, typename F, typename W, typename DependablePolicy, typename SlicingPolicy, typename CyclicPolicy>
     322class accumulator_set;
     323}}}
     324
     325
     326---------------------------------------------------------------------------------------------------
     327== !DenseSet ==
     328 * '''Suggested by:''' Vicente J. Botet Escriba 
     329 * '''Description:''' Implementation of dense set of integers using intervals.
     330
     331---------------------------------------------------------------------------------------------------
     332== Frames  ==
     333 * '''Suggested by:''' Vicente J. Botet Escriba 
     334 * '''Description:''' in a frame library which will be based on an extension of the archive concept. The saving archive concept allows to save serializable data at the end of the archive, and the loading archive concept allows to read serializable data from the beginning of the archive. The saving frame concept will allows to save serializable data either at the end or the '''begin''' of the frame, and the loading frame concept allows to read serializable data from the beginning or the '''end''' of the archive.
     335
     336---------------------------------------------------------------------------------------------------
     337== !StableVector ==
     338 * '''Suggested by:'''  Joaquín M López Muñoz
     339 * '''Links:''' [http://bannalia.blogspot.com/2008/08/stable-vectors.html Stable Vectors]
     340 * '''Description:''' a container mimicking the interface of std::vector except that it provides iterator and reference stability at the expense of losing memory contiguity.
     341
     342---------------------------------------------------------------------------------------------------
     343== !ThreaderJoiner  ==
     344 * '''Suggested by:''' Vicente J. Botet Escriba 
     345 * '''Description:''' Threader/Joiner as proposed by Kevlin Henney `[http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf Preliminary Threading Library Proposal for TR2]
     346
     347
     348---------------------------------------------------------------------------------------------------
     349= Abandoned =
     350