
David Abrahams:
on Wed Aug 27 2008, "Robert Ramey" <ramey-AT-rrsd.com> wrote:
David Abrahams wrote:
on Tue Aug 26 2008, "Robert Ramey" <ramey-AT-rrsd.com> wrote:
If you know of cases where people broke backward compatibility in ways that were irresponsible, it would be good to hear about those. And it wouldn't hurt for Boost to have a guidelines page on how to manage interface evolution. I might just write one.
I'm referring specificly to the episode regarding boost exception where by the purpose of boost::throw exception was changed from a limited, lightweight piece of code crafted to address the simple problem that some compilers don't implement "throw" to a heavy weight (includes a bunch of new headers) module whose purpose is totally inpenetrable and adds RTTI requirement to any library which used boost::throw exception.
This does look like a problem to me.
Hmm, I can't find any discussion on the list in which Peter Dimov, who was the author of throw_exception, participated. Did Emil get Peter's approval for this change?
Yes, I did approve this change. Do note that the problem with throw_exception now requiring RTTI was not pointed out by anyone prior to release, and it was some of our users who discovered it, after 1.36 has been finalized. As a response to this issue, I requested a new macro, BOOST_NO_RTTI, be added to Boost.Config, and John has kindly done that. I expect Emil to modify Boost.Exception to honor BOOST_NO_RTTI as soon as possible. Since we are now officially not doing point releases, the earlier this can be fixed is in 1.37, so it is not fair to accuse Emil of being unresponsive about it. (Hotfixes notwithstanding.)
Well, I really hope I'm missing something, but from the evidence I see before me, this was at least not handled well. We have a Boost-wide convention that libraries wanting to report errors on compilers with no exceptions support use boost::throw_exception. The change of boost::throw_exception essentially made a Boost-wide policy decision that such libraries, when they *do* throw, will integrate the Boost.Exception machinery. That shouldn't have happened without a broader discussion.
So why didn't people discuss it then? http://lists.boost.org/Archives/boost/2008/02/133425.php "Let's discuss this issue before I submit the Boost Exception source code to SVN." http://lists.boost.org/Archives/boost/2008/04/136828.php