Hi Olaf, Hallo Dresden,
2011/5/12 Olaf Krzikalla
Hi @boost,
recently I've given some lectures about some selected boost libraries.
Thank you for teaching boost! (boo to the community for not answering for so long ;)
After that the audience expressed the wish to get an overview over all current boost libraries. Thus for my next lecture I sat down and digged through the complete 1.46 for several day. I found a lot of useful stuff, but I also found a lot of obsolete, superseded, replaced or will-be-superseded stuff. Some libraries seems to be sub-libs of other libs. Is there an overview of inner lib relations and the actual lib state wrt. to the overall development?
There is an overview on the boost web-site www.boost.org of course in an synoptic quality with short descriptions of each library. As far as I know there is no single documentation on inter library relationships that is maintained, correct me if I'm wrong. Generated dependency graphs were provided by Chrisoph Heindl in December 2008. http://lists.boost.org/Archives/boost/2008/12/146290.php http://picasaweb.google.com/christoph.heindl/BoostDependencies1370 for boost-1.37 but not updated later.
The issues I've found so far:
- Compatibility: very narrow. Is it still needed as a public lib? - Functional, MemFun: superseded by Bind - Call Traits, Functional/Forward, Lambda: will be superseded by C++0x
- Interval: can this become a sub-lib of ICL?
boost::numeric::interval is closed interval on numeric types with a focus on interval arithmetic. It is also suitable handle numeric precision problems AFAIK, but I'm not an expert for that. In contrast ICL has a focus on the set character of intervals and their composition in interval containers. Non numeric intervals are possible as long as there is an ordering on the domain_type. I think it is unfortunate that ICL and numeric::interval do not interplay well. One of the main obstacle are the fixed closed borders of numeric::intervals, that lead to problems when adding or subtracting intervals to and from interval containers. There were discussions on this on the list but the authors of numeric::interval seemed not to be active at the time. Since numeric::intervals serve numeric purposes and icl::interval serve more general pusposes I think they can coexist happiely. As long a numeric::interval is not actively maintained, I don't think there is a chanche for change.
- Meta State Machine / Statechart: whats the actual difference? I.e.
Meta State Machine is a library that generates finite state machines completely at compile-time from meta code. MSN is more expensive at compile time but may generate even faster code than a "traditional" FSM. Maybe Christophe can comment on this.
which problem is solved by one lib but not by the other? - Fusion & Tuple: how are these related? Could boost::tuple become a typedef to boost::fusion::vector.
I know that most of these relations are there for historical reasons and won't be changed. However I wish it had been documented somewhere. That would make an in-depth introduction of boost a lot easier.
There is no ready made structure or institution within boost for this. But definitely there are people who have similar thoughts, concerns and intentions. It depends if someone is going to contribute and/or is taking the lead for an effort like this. As mentioned above Chrisoph Heindl provided generated dependency graphs. Boris Schäling wrote an online book http://www.highscore.de/cpp/boost/index.html that has been translated by others. Paul Bristow cares on documentation quality for the math stuff. Robert Ramey, Dean Berris and others had initiatives about redesigning the boost web-site, just to mention a few things. So your effort on creating an overview and document on inter library relationships could be an own contribution and other could join in. Thanks again, Joachim -- Interval Container Library [Boost.Icl] http://www.joachim-faulhaber.de