Boost logo

Boost Users :

From: Joel de Guzman (joel_at_[hidden])
Date: 2007-01-17 19:36:49


Sohail Somani wrote:
> -----Original Message-----
> From: boost-users-bounces_at_[hidden] on behalf of Gottlob Frege
>
> Someone (Joel?) want to explain the differences between
> fusion/phoenix/mpl/etc/whatever-else-seems-overlapping?
>
> -----
>
> Good question. Do phoenix tuples have an interface appropriate to use
> with the fusion/mpl algorithms?

Ok... long story.

First some history. Fusion was based on the original phoenix tuples.
Jaakko helped out in the original fusion (we call it now fusion1).
It was meant to replace boost.tuples. Fusion2 (the one that was
reviewed and is now part of Boost) is a rewrite which, among other
things, opened up the possibility of having multiple sequence types
(e.g. vector, list, etc.). It also opened up the option to adopt
other pre-written sequences (e.g. the original boost.tuples). So,
instead of replacing boost.tuples, I decided to just adopt it
so you don't have to rewrite your old code that uses boost.tuples.
boost.tuples will stay as is. It is now a full fledged fusion citizen,
meaning, you can use fusion facilities (e.g. algorithms and interope-
rability with other sequence types) with your boost.tuples.

Phoenix (the original, we now call phoenix1), was developed before
lambda became part of boost. It was (and still is) a side library
of spirit. It had some capabilities that lambda did not have, and
lambda actually borrowed some of its features in the course of time.
Anyway, to cut the long story short, Jaakko and I decided to have
a merger (lambda/phoenix). Phoenix2, which I should be releasing
soon, is the biggest step towards that. It took a long time and
necessitated the development of Fusion1 (and then Fusion2 --
the latest Phoenix2 uses the latest Fusion2).

It's an evolution, and we're getting there towards the original
goals. Fusion is a prime enabler. It took a long time to
develop, but it was all worth it. Soon, you'll be seeing more
Fusion based libraries. Proto is one example. Proto is an
expression template library written by Eric Niebler. Spirit2,
now in development, is also based on Fusion (and Proto). This
very thread, shows why a library such as fusion is an important
infrastucture in these types of libraries, and in library
development in general.

I hope that clarifies things.

Regards,

-- 
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net