Boost logo

Boost :

Subject: Re: [boost] [MPL] A Proposal
From: Bruno Dutra (brunocodutra_at_[hidden])
Date: 2016-02-29 05:55:00


On Feb 29, 2016 00:45, "Edward Diener" <eldiener_at_[hidden]> wrote:
>
> On 2/28/2016 6:17 PM, Bruno Dutra wrote:
>>
>> Dear Community,
>>
>> [snip]
>>
>> My proposal is to make Metal officially into a new revision of
Boost.MPL's
>> API, essentially MPL2 as the original proposal by Robert Ramey put it,
>> merging both into one single TMP library. The idea would be to provide a
>> thin proxy for the current Boost.MPL API which would have two backends
>> configurable by preprocessor switches: the original implementation and a
>> another one based on Metal. This way older code using Boost.MPL could see
>> immediate gains on performance by selecting the newer backend on
supported
>> compilers, while at the same time legacy code maintained on older
compilers
>> could still rely on Boost.MPL's impressive ability to run virtually
>> anywhere. On the other hand, newer projects interested on pure type
>> computations would have the newer API entirely available to them.
>>
>> This proposal also overcomes the problem of dealing with the
>> maintainability of Boost.MPL, since it provides a way for smooth
transition
>> from legacy hacks required by ancient compilers into a cleaner and easier
>> to maintain C++11 codebase, besides avoiding any breaking changes within
>> existing code in the process. Furthermore, should this proposal make it
>> into Boost, I would be naturally willing to take responsibility for the
>> maintenance of Boost.MPL, which AFAIK has been maintained by the CMT for
>> quite some time now, often with limited resources.
>
>
> I would very much welcome your proposal, especially if you take on the
maintenance of Boost.MPL for which I believe you are easily qualified to do.

I appreciate it.

> I would suggest in the beginning that the current Boost.MPL be the
default and the Metal changes you make to it be controlled by a particular
preprocessor switch and, of course, the need to compile using C++11 on up.
Eventually you can make Metal the default whenever C++11 on up is used, and
the current Boost.MPL the default whenever C++11 on up is not being used or
a particular preprocessor switch is specified.

Yes, that's precisely what I propose.

Regards,
Bruno


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk