From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id A91F1138247 for ; Thu, 19 Dec 2013 09:19:52 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 88A74E0B89; Thu, 19 Dec 2013 09:19:15 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 1782AE0B53 for ; Thu, 19 Dec 2013 09:19:14 +0000 (UTC) Received: from localhost (77-254-167-184.adsl.inetia.pl [77.254.167.184]) (using SSLv3 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: mgorny) by smtp.gentoo.org (Postfix) with ESMTPSA id 42D4233F607; Thu, 19 Dec 2013 09:19:12 +0000 (UTC) Date: Thu, 19 Dec 2013 10:18:55 +0100 From: =?UTF-8?B?TWljaGHFgiBHw7Nybnk=?= To: gentoo-dev@lists.gentoo.org Cc: jkt@gentoo.org Subject: Re: [gentoo-dev] How to support C++11 in libraries? Message-ID: <20131219101855.5a34fd03@gentoo.org> In-Reply-To: References: <20131218085447.56d1e133@gentoo.org> <86sitqtg5s.fsf@moguhome00.in.awa.tohoku.ac.jp> <04adfe90-a18b-45d5-9f81-90070c5090c0@gentoo.org> <52B1CF64.8020407@pathscale.com> <52B1D5EA.7020106@pathscale.com> <613ecc5f-13f1-4fba-b0f1-9257908fff50@gentoo.org> <86mwjxty58.fsf@moguhome00.in.awa.tohoku.ac.jp> Organization: Gentoo X-Mailer: Claws Mail 3.9.2-dirty (GTK+ 2.24.22; x86_64-pc-linux-gnu) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA512; boundary="Sig_/FS=YaQuPujnfMIHAsq/L4VR"; protocol="application/pgp-signature" X-Archives-Salt: 0e6157fc-1b91-44a8-9e8c-cf190f40c28d X-Archives-Hash: d2821b1b8ce0bee3cebecf35435b9ec1 --Sig_/FS=YaQuPujnfMIHAsq/L4VR Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Dnia 2013-12-19, o godz. 09:43:40 Jan Kundr=C3=A1t napisa=C5=82(a): > On Thursday, 19 December 2013 02:41:55 CEST, heroxbd@gentoo.org wrote: > > I'd like to make an analogy to the version bump of gcc[1]. We (gentoo) > > decide to support c++11 officially or not. If so, open a tracker bug to > > push it globally. If not, patch lldb to support non-c++11, or leave it > > up to the user to fiddle with the CXXFLAGS, where we only point the user > > by to proper docs. >=20 > To be honest, I do not really see a link between the "let's bring in a ne= w=20 > version of compiler, it is a bit stricter in some situations, but these=20 > were bugs anyway, like missing headers or unfounded assumptions about=20 > memcpy()" with "let's support a new version of language which produces=20 > object files with different ABI". Perhaps a Python 2.6 vs. Python 3.3 is = a=20 > better analogy? Well, it's even worse than that. I think the main difference is that usual gcc/whatever bumps may have resulted in *one* different libstdc++ ABI. People rebuilt all their packages, world went back to normal. The issue here is that gcc is providing two ABIs in parallel, with a -std=3D switch. And this sucks pretty much... > Anyway, GCC 4.8 is pretty clear that the C++11's support is still=20 > experimental [1] and subject to change [2]. The upstream developers have= =20 > announced that they plan to break the ABI of the code using C++11 feature= s=20 > in 4.9 [3]. Would it be possible to have a consistent ABI for both C++03 and C++11? The simpler changes like adding new fields can be backported quite easily (even if it would mean having dummy fields in C++03), I have no idea about the more complex changes. > Right now, it seems that we shall wait at least for GCC 4.9 to come and f= or=20 > upstream to decide how to solve this properly. Well, if they considered the C++11 ABI in gcc-4.9 stable, we could consider changing the default to C++11. Then, we could do our bump/switch thing as a matter of gcc-4.9 upgrade problem. And that brings another issue in Gentoo -- gcc-config. AFAIR this tool is completely insane and switches libstdc++ along with gcc version. As a result, after switching to a gcc version with different C++ ABI, installed software gets broken. And you can't really fix it without going through the broken-system state or some hackery. It would be much better if the switching was done by some ebuild. We could then use subslots to force rebuilds of stuff using libstdc++. Well, more than that, preserved-libs would prevent disappearing old libstdc++ from breaking stuff. But well, that's just my wishes... --=20 Best regards, Micha=C5=82 G=C3=B3rny --Sig_/FS=YaQuPujnfMIHAsq/L4VR Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQJ8BAEBCgBmBQJSsroAXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2REJCMDdDQzRGMERBRDA2RUEwQUZFNDFC MDdBMUFFQUVGQjQ0NjRFAAoJELB6GurvtEZODCAQAIi7SPUGYXcBtx46eY12buH0 N0FPVnLRS7muEMVWpONFIncuByXYlyfzwm6nZ+YcuPHZf8vXrDqCH/J5BhJlK2us FQLpejqU/wt1RM2w8C8eX8oeRQOy990WSbfC1FMo2bFQA8A1+xYNS7GlBZzwMKoI U+o7Bb6kwBrCFZvrve/2LSKYcQu3UZbbfekOsjsk07f3DUG+qdISevcZplWdCQmk LoG6iwHryjTSAEwzAAILatIe3fl8LditfqeP7srS7tgzRRljuZ2lyXuUA5vHcKX7 tZU6M2G70Ej06OG3DzAElHv/6+rGQG7lJFTgtVDfNYjo3EymWgc9et8c2TjY7tcW B/XLc/lCKbUGw2B1v1RYJRVk+jrfyBf0XBjvHEwoPChwfL5LswMnS1nCBQyxvw7q ps/ircTmjkPo0rJch7tmqlWja3LNHJwMrbMtuW4/v9N8iOjzTpkMEuqD3zmmyv9s n5H1c4KcVjGNV1jaxOXOPY6necFUK8n1E4F3cmPlsPflz7bmm34wJo1HGi7ovHGt QNHtjLfshssF/zJ9cMsxyNjslGp0lo6dZNRwxUEL7+/QA3MtB/FEiq6RLd02yXot 9z9wDPKUSDAes4rlYmapzpIAsdDOPvM0QHShqaVZSKa2RgFij7sqOOABCs+hNU2P u1PeSE7MFrmV8jKykz6U =EF8x -----END PGP SIGNATURE----- --Sig_/FS=YaQuPujnfMIHAsq/L4VR--