Re: Using C++11
- From: Murray Cumming <murrayc murrayc com>
- To: Kalev Lember <kalevlember gmail com>
- Cc: gtkmm-list gnome org
- Subject: Re: Using C++11
- Date: Mon, 29 Jun 2015 17:10:43 +0200
On Mon, 2015-06-29 at 17:00 +0200, Murray Cumming wrote:
On Mon, 2015-06-29 at 15:13 +0200, Kalev Lember wrote:
http://developerblog.redhat.com/2015/02/10/gcc-5-in-fedora/ has
all the
details - this is probably the most up to date page we have right
now.
The short summary is that both Fedora 22 and Fedora 23 ship GCC 5
as the
system compiler, but with different defaults: in Fedora 22 all the
packages are built with the older C++ ABI, whereas all of Fedora
23 is
built with the new C++11 ABI.
This means that any apps must be rebuilt in Fedora 23, right? For
instance, if someone has an app that they have packaged themselves
under
Fedora 21, they can expect that app to not run under Fedora 23
unless
they rebuild it? So it's an ABI break.
(Assuming that the app uses a C++ library such as boost or gtkmm.)
Yes, that's right.
Personally, it feels unwise for Fedora to build everything with --std=c
++11 if their compiler isn't going to use that by default. That's going
to confuse developers who get weird errors when they don't specify
--std=c++11. It's a bit like how Red Hat used to ship weirdly patched
unstable compiler versions back in the gcc 2.* days. But anyway, it
looks like it's happening.
So, if we ignore all non-g++ compilers (not completely unreasonable),
maybe this is one way to look at things:
1.
A glibmm/gtkmm ABI break will happen on most distros anyway, and that's
not our fault and we can't avoid it. It will happen at least when the
distros ship with g++ 6 (where --std=c++11 will be the default) or even
earlier (in Fedora 23 which will use --std=c++11).
2.
This is an opportunity to make a few more minor ABI-breaking changes
seeing as the ABI is breaking anyway. People won't like too many big API
changes, and they'd be right to blame us for them, but people would
forgive us for a few simple API changes.
3.
This opportunity is right now. Maybe gtkmm 3.18 should be the one that
requires C++11. I wish that all distros were using C++11 at once, when
it became standard in g++, but Fedora forces us to jump on board now.
GTK+ 3.18 will be API stable around the middle/end of August:
https://wiki.gnome.org/Schedule
so it seems possible for us to make our API changes by then.
And it looks like the next Ubuntu version (Wily Werewolf) is stuck on
the older GTK+ version 3.16, so us requiring C++11 in 3.18 wouldn't
bother them:
https://launchpad.net/ubuntu/+source/gtk+3.0
--
Murray Cumming
murrayc murrayc com
www.murrayc.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]