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.* >> > >> > >
