This has now been submitted.
On Thu, Aug 28, 2014 at 5:16 PM, Dominic Hamon <[email protected]> wrote: > Tomorrow, I'm planning to land changes that complete the deprecation cycle > for the with-cxx11 configure flag. From this point on, the compiler you use > will need to support the subset of C++11 language features checked by our > configure script. These are: > > - static_assert > - right angle brackets > - decltype > - rvalue references > - auto > > This change has been tested on g++-4.4, g++-4.6, g++-4.8, and clang 3.4. > g++-4.7 is no longer supported due to MESOS-1095 > <https://issues.apache.org/jira/browse/MESOS-1095>. > > This means that these language features can be used in mesos with > impunity. See MESOS-750 <https://issues.apache.org/jira/browse/MESOS-750> for > more discussion. > > The future plan is to extend the configure script check and add to the C++ > language whitelist. > > Thanks > - dominic > > > On Wed, Feb 26, 2014 at 2:05 PM, Dominic Hamon <[email protected]> > wrote: > >> Thank you for the breakdown, that's really helpful. >> >> It looks like with 4.8.1 as the minimum supported version, we're looking >> very good for all features: http://gcc.gnu.org/gcc-4.8/cxx0x_status.html >> >> We may need to consider distributing the runtime library or statically >> linking it to allow users to run the binary from the rpm. >> >> >> On Wed, Feb 26, 2014 at 1:59 PM, Benjamin Mahler < >> [email protected]> wrote: >> >>> Being explicit about compiler version requirements sounds great! >>> >>> GCC is still our explicitly supported compiler toolchain and it's how we >>> test releases for production purposes, at least at Twitter. >>> >>> We have been supporting Clang as a best effort so far, but I agree it >>> would >>> be great to document supported versions. Taking a look at some of our >>> CI, I >>> see Clang 3.3. is building Mesos. >>> >>> Looking at CI for gcc, I see the following building with C++11: >>> >>> *Mesos builds with C++11:* >>> CentOS 5 - with devtoolset-2 gcc 4.8.1 >>> CentOS 6 - with devtoolset-2 gcc 4.8.1 >>> Fedora 19 - gcc 4.8.2 >>> Fedora 20 - gcc 4.8.2 >>> Ubuntu 13.10 - gcc 4.8.x >>> >>> *Mesos does not build with C++11:* >>> CentOS 5 - gcc 4.1.2 >>> CentOS 6 - gcc 4.4.7 >>> Ubuntu 12.10 - gcc 4.7.x >>> Ubuntu 12.04 - gcc 4.6.x >>> >>> So we already do not support gcc 4.7 for C++11. >>> >>> It's important here to make the distinction that this is for development, >>> ideally those are running from RPMs are agnostic to the gcc version used. >>> But, I suppose the c++11 shared library will not present on the machine. >>> >>> On Wed, Feb 26, 2014 at 12:08 PM, Dominic Hamon <[email protected] >>> >wrote: >>> >>> > Forwarding from the right account to avoid Spam filters ... >>> > >>> > ---------- Forwarded message ---------- >>> > From: Dominic Hamon <[email protected]> >>> > Date: Wed, Feb 26, 2014 at 11:46 AM >>> > Subject: Re: Path forward to C++11. >>> > To: [email protected] >>> > >>> > >>> > What do you mean by 'C++11 support' in the compiler? g++4.7 supports >>> some >>> > features, not all. >>> > >>> > I think we need to define the set of C++11 features we want to support >>> > first before making any decisions regarding timeline. Then we can look >>> at >>> > the state of the nation in regards to C++11 feature support in >>> different >>> > compilers on different OSs, and which are available out of the box. We >>> > don't want to limit our community involvement by shutting out certain >>> > platforms for development. >>> > >>> > Ideally, we'd be able to say something like "0.19.0 builds on g++4.7 >>> and >>> > clang 3.3 or greater" and "0.20.0 builds on g++4.8 and clang 3.4 or >>> > greater" instead of blanket C++11 support. >>> > >>> > >>> > >>> > >>> > On Wed, Feb 26, 2014 at 10:20 AM, Benjamin Mahler < >>> > [email protected] >>> > > wrote: >>> > >>> > > Update on MESOS-750: >>> > > >>> > > 0.17.0 is being released with the --with-cxx11 capability at >>> configure >>> > > time. >>> > > >>> > > I chatted with some of the committers and we'd like to move forward >>> with >>> > > the final two phases of MESOS-750 as follows: >>> > > >>> > > 0.18.0: --with-cxx11 will become the _default_. --without-cxx11 will >>> be >>> > > available for those who wish to use older compilers. >>> > > >>> > > 0.19.0: c++11 required; Mesos will not build with a compiler that >>> does >>> > not >>> > > have c++11 support. >>> > > >>> > > If there are any objections please speak now. If not, I'll update the >>> > > ticket to reflect the current path towards C++11. >>> > > >>> > > >>> > > On Mon, Oct 28, 2013 at 8:09 PM, Benjamin Mahler >>> > > <[email protected]>wrote: >>> > > >>> > > > Thanks for the heads up, we're likely to upgrade to 3.3.6, but >>> I've yet >>> > > to >>> > > > confirm that it builds with c++11. >>> > > > >>> > > > >>> > > > On Thu, Oct 24, 2013 at 8:10 AM, Tim St Clair <[email protected] >>> > >>> > > wrote: >>> > > > >>> > > >> +1 to the approach. >>> > > >> >>> > > >> FWIW made a quick update to the zookeeper.spec ( >>> > > >> http://koji.fedoraproject.org/koji/buildinfo?buildID=465529) and >>> > > updated: >>> > > >> >>> > > >> export CC='gcc -std=c11' >>> > > >> export CXX='g++ -std=c++11' >>> > > >> >>> > > >> prior to 'configure', and it failed compilation pretty quickly. >>> > > >> It may make sense to track integration issues and >>> > versions...somewhere. >>> > > >> >>> > > >> So when --with-cpp11 is enabled, it can hard check on version >= >>> > > >> fixed_version. >>> > > >> >>> > > >> Cheers, >>> > > >> Tim >>> > > >> >>> > > >> ----- Original Message ----- >>> > > >> > From: "Benjamin Mahler" <[email protected]> >>> > > >> > To: [email protected] >>> > > >> > Sent: Wednesday, October 23, 2013 4:46:49 PM >>> > > >> > Subject: Path forward to C++11. >>> > > >> > >>> > > >> > As discussed in MESOS-750 < >>> > > >> https://issues.apache.org/jira/browse/MESOS-750>, >>> > > >> > we would like to move to C++11. >>> > > >> > >>> > > >> > The proposed plan is to do this in phases to allow everyone >>> time to >>> > > >> adjust >>> > > >> > to this change: >>> > > >> > >>> > > >> > >>> > > >> > Phase 1: Send an email to the dev@ list soliciting objections / >>> > > >> feedback. >>> > > >> > We're currently here. :) >>> > > >> > >>> > > >> > Phase 2: Add an option --with-cpp11 that defaults to false. >>> > > >> > >>> > > >> > Phase 3: At this point, developers can and should begin using >>> > > >> --with-cpp11. >>> > > >> > In this phase, we'll need to make sure the project and >>> dependencies >>> > > can >>> > > >> > compile with c++11. >>> > > >> > >>> > > >> > Phase 4: Default to --with-cpp11 but still leave the option in >>> order >>> > > to >>> > > >> > allow folks to turn this off if needed. At this point, we still >>> > cannot >>> > > >> rely >>> > > >> > on C++11. >>> > > >> > >>> > > >> > Phase 5: Remove --with-cpp11 leaving no ability to turn it off. >>> From >>> > > >> this >>> > > >> > point forward, we can begin to use C++11 features >>> unconditionally. >>> > > >> > >>> > > >> > >>> > > >> > Please reply to this thread with any objections, comments, or >>> > advice! >>> > > To >>> > > >> > get a better sense of how others feel about this (I currently >>> only >>> > > know >>> > > >> > that some of the other core contributors are on board), please >>> feel >>> > > >> free to >>> > > >> > reply with something as simple as a +1 as well. >>> > > >> > >>> > > >> > Thanks! >>> > > >> > Ben >>> > > >> > >>> > > >> >>> > > >> -- >>> > > >> Cheers, >>> > > >> Tim >>> > > >> >>> > > > >>> > > > >>> > > >>> > >>> > >>> > >>> > -- >>> > Dominic Hamon | @mrdo | Twitter >>> > *There are no bad ideas; only good ideas that go horribly wrong.* >>> > >>> >> >> >
