Boost logo

Boost :

Subject: Re: [boost] [release][1.52.0] Release Notes
From: Eric Niebler (eric_at_[hidden])
Date: 2012-11-05 19:58:49


Sorry, Daniel, I didn't see this the first time around...

On 10/1/2012 3:33 AM, Daniel James wrote:
> On 1 October 2012 01:59, Eric Niebler <eric_at_[hidden]> wrote:
>>
>> For 1.52, we'll need a big, prominent note about decltype result_of. I
>> don't think putting it in a release note is enough. Not sure where it
>> should go, though. Thoughts?
>
> Something could be added to the summary, which is displayed on the
> home page.

I was thinking that on boost.org, where it says:

Downloads
Current Release
* Version 1.52.0
    Details | Download | Documentation
    November 5th, 2012 16:05 GMT

A small link in red could be added that simply says, "IMPORTANT: See
here for a special note about this release."

Then on a separate page, a note to this effect:

A Special Note for Boost 1.52.0 and Higher
==========================================

Starting in Boost 1.52.0, the boost::result_of component defaults to an
implementation that uses the C++11 decltype keyword to deduce the return
type of callables on compilers with strong decltype support. As
boost::result_of is a key piece of library infrastructure, we at Boost
have found this change to be moderately disruptive. You should be aware
of the issue when making the decision to upgrade from an older version
of Boost.

Why the Change Was Made
-----------------------

In C++11, std::result_of is required to use decltype. Boost has decided
to change its implementation to minimize the differences between
boost::result_of and std::result_of. Also, the use of decltype should
help to improve compile times and increase the accuracy of the type
computation.

Who is Effected?
----------------

If you use a compiler with sufficiently bug-free decltype support
(including N3276
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf>),
then you will get the new behavior. At the time of writing (Nov 4,
2012), the only compiler in that category is clang built from trunk, but
as other compilers improve, this will change.

What Problems Can the Change Cause?
-----------------------------------

The use of decltype in result_of can result in a different type being
computed than if the now-obsolete TR1 result_of protocol. This will
often be the case for incorrectly written TR1-style function objects
that misreport their result types. This is unfortunately too common. But
it can even happen for some correctly written function objects.

Where Can I Learn More?
-----------------------

Please see the documentation for boost::result_of <link> to understand
the differences between TR1 result_of and decltype result_of, and to
find out how you can write your code to accommodate both.

> A news story could be created, which would be a surprise to
> anyone who follows that feed and thinks it only consists of release
> details.

Yes, please. With a link to the above notice.

> Could add something to the top of the left hand column of the
> home page (just have to edit index.html - I'd use some inline css to
> make it stand out, as I don't think the stylesheets contain
> appropriate styles).

Just the red link I suggest above, near the download link. Would there
also be a way to put a notice here:

http://sourceforge.net/projects/boost/files/boost/1.52.0/

? After all, people might go straight there and skip the Boost homepage.

(Aside: why does it say this at sourceforge: "Looking for the latest
version? Download boost_1_47_pdf.zip (31.4 MB)"? That's misleading and
makes it sound like 1.47 is the latest version.)

> In the distribution, a note could be added to index.html in the root
> directory, although I don't know if anyone actually reads that. If you
> want to be unreasonably intrusive, a warning could be added to the
> header.

I guess it's too late for that. :-/

Thanks Daniel!

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com

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