Eric Niebler wrote: > (cross-posting to the proto list) > > On 7/23/2010 10:25 AM, Thomas Heller wrote: >> On Friday 23 July 2010 15:59:46 Robert Jones wrote: >>> On Fri, Jul 23, 2010 at 2:18 PM, Thomas Heller >>> >>> <thom.heller-gM/ye1e23mwn+bqq9rb...@public.gmane.org>wrote: >>>> Ladies and Gentlemen, >>>> I proudly announce that the port of phoenix3 is completed! All >>>> testcases pass! (some with minor modifications) >>> >>> Great news! >>> >>> Speaking as someone who's become a little lost in the maze of >>> phoenix/lambda/proto/bind etc., I'm aware that this port is important >>> for the general roadmap in this area, but am unsure exactly what this >>> port buys us. >>> >>> Could you write a few paragraphs on what issues this solves, and what >>> new capabilities are supported by this port. > <snip> > > Let me expand a bit on Thomas' post with my own perspective. Currently, > the expressions created by Boost.Bind, Boost.Lambda and Boost.Phoenix2 > are black boxes. You can pass them to std algorithms for evaluation, but > that's about it. > > In contrast, the expressions created by Boost.Phoenix3 will the Proto > expressions. If Phoenix3 is the compiler of a C++-in-C++ domain specific > language, then the Proto expression is the intermediate form. It will be > documented and part of the Phoenix3 API. The grammar for valid Phoenix3 > expressions will also be documented and extensible. For the first time, > we will have a way to generate C++-like expression trees, just like the > C++ compiler itself does. We have a standard way (Proto) to traverse and > manipulate them. Sure, you can just evaluate them as you could before, > but now you can do much more. For instance, you can define your own > Proto transforms to: > > - Do various optimizations, just like a real compiler > - Add your own custom evaluation strategies for operations on your types > - Rewrite Phoenix3 expressions for parallel execution, or whatever > - ???!!!
Let me add some more things I have in mind: - JIT compiler - debugger I want to get started with the latter soon, so people can actually debug their stuff (it is a pain to do it with for example gdb). > Essentially, it means Phoenix3 is a white box, an open platform. Third > parties can use just the Phoenix3 front end and intermediate form, > substituting their own back ends to make the expressions mean and do > completely different and domain-specific things. > > Expect to see Phoenix3 expressions showing up in other DSEL contexts. > It's hard to predict how people will use this. The possibilities are > really limitless. _______________________________________________ proto mailing list firstname.lastname@example.org http://lists.boost.org/mailman/listinfo.cgi/proto