On 3/20/2014 6:00 AM, Daniel James wrote:
On 19 March 2014 22:55, Edward Diener
wrote: I would like to merge the mpl 'develop' changes to mpl 'master'. The develop changes have cycled long enough IMO for the merge to take place, without any problems showing up in the changes. There are two changes of my own and a number of Stephen Kelly eliminating support for very old compiler versions. The changes will clean up many obsolete workarounds for older versions of compilers that no one doing template metaprogramming should seriously use anymore. My own two changes fix some minor problems I ran into when testing clang with VC++ RTL on Windows. The changes make the MPL easier to understand. If there are no objections to the merge I will be glad to carefully do it myself, or Dave Abrahams/Alex Gurtovoy or others who have write access to MPL can do it. But I think it is important to get these changes into 'master', and tested in the 'master' regression tests, before the next Boost release.
I'm in the middle of cleaning up MPL's history, so please don't anything at the moment. You can see what I'm doing at:
https://github.com/boostorg/mpl/pull/2 https://github.com/boostorg/mpl/pull/3
But also I object because I don't think that we can safely make significant changes to MPL. I recently discovered that a change to type traits had broken several libraries, and no one noticed; changes to MPL have similar problems. Our test results are a mess, and no one is monitoring a lot of them, so updating libraries with lots of dependants is tricky.
In this case we can't put out a Boost release if no one is monitoring test results for their library. I have been monitoring test results for MPL on 'develop' and none of the changes is causing any problems with the MPL tests.
Especially since there are a lot of outstanding changes in those dependants' develop branches. On top of that mpl is complicated and weird, so it's hard to review any major changes. And there are people who rely on MPL on compilers that we don't test.
I also don't see much gain from making the code simpler when no one is implementing anything new. The gains have to be significant to justify the risk.
Maybe no one is implementing anything new because the code is complicated ( supporting old compilers which no one uses anymore ).
Right now, I think the best approach to MPL is to only allow bug fixes. People doing metaprogramming are moving on to using C++11 features, which MPL doesn't serve particularly well, so I think we should be in the process of managing its decline, and be more concerned with old code that relies on it.
The changes made by Stephen Kelly got rid of support for VC6, VC7 ( VS2002 ) and old versions of gcc ( prior to gcc-4 I believe ). I do want to update MPL at least with my fixes, so please tell me when you are finished cleaning up MPL's history.