RFC: Move to C++14

Daniel van Vugt daniel.van.vugt at canonical.com
Thu Feb 19 02:12:16 UTC 2015


We do seem to be guilty of having the same conversations in multiple 
different places a lot :)

Just FYI, the nail is in the coffin. C++14 support landed last night. So 
trusty is dropped I guess.


On 18/02/15 12:43, Daniel van Vugt wrote:
> As a compromise why don't we say Mir supports the latest LTS only?
>
> So 14 months from now, we'll be free to jump to C++14 (and it will be
> more mature in implementation by then). But until then, we would stick
> to C++11 for trusty.
>
>
>
> On 18/02/15 09:39, Daniel van Vugt wrote:
>> I think this is a bad idea.
>>
>> Supporting trusty with the latest Mir is presently easy, as demonstrated:
>> https://code.launchpad.net/~vanvugt/mir/revive-trusty/+merge/249789
>>
>> Using newer language specs I think is contrary to engineering maturity.
>> Because it means we knowingly and needlessly reduce the number of
>> distros Mir can support. And we also make the learning curve for people
>> even steeper (fewer C++ developers know the new language features).
>>
>> Overall this will lead to reduced adoption by users and reduced
>> participation by developers. We need to be careful and draw the line
>> somewhere... stop upgrading to the latest C++ every time one comes along.
>>
>> - Daniel
>>
>>
>> On 17/02/15 20:37, Alexandros Frantzis wrote:
>>> Hi all,
>>>
>>> I think it's to time to consider moving from C++11 to C++14 (at least
>>> the C++14 features our compilers support). C++14 offers some useful
>>> improvements over C++11, like:
>>>
>>> * std::make_unique()
>>> * standard literal suffixes for std::chrono (e.g. auto delay = 10ms;)
>>> * std::shared_timed_mutex (aka RW mutex)
>>> * generic lambdas
>>> * lambda capture initializers (which, importantly, allow moving values
>>> into
>>>    lambdas)
>>>
>>> Moving to C++14 means that we will not be able to build Mir on a
>>> pristine Ubuntu LTS 14.04 system. Note that, even now, Mir cannot be
>>> fully built on the LTS because of changes in the Android interfaces. As
>>> things currently stand, I believe that dropping support for 14.04 builds
>>> in order to allow C++14 is a worthy trade-off.
>>>
>>> In addition, not supporting 14.04 builds means that we will be able to
>>> use all the new features of other libraries we depend on, e.g.
>>> gmock/gtest.
>>>
>>> It's also worth noting that our packages depend on g++-4.9 (which
>>> supports the C++14 features we want).
>>>
>>> I have published an MP introducing C++14 into our codebase:
>>>
>>> https://code.launchpad.net/~afrantzis/mir/introduce-c++14/+merge/249988
>>>
>>> Let me know what you think.
>>>
>>> Thanks,
>>> Alexandros
>>>
>>
>



More information about the Mir-devel mailing list