On Fri, 2020-06-05 at 12:27 +0000, devel-request(a)lists.fedoraproject.org wrote:
Date: Fri, 5 Jun 2020 08:26:04 -0400
From: Neal Gompa <ngompa13(a)gmail.com>
Subject: Re: Fedora 33 System-Wide Change proposal: CompilerPolicy
Change
To: Development discussions related to Fedora
<devel(a)lists.fedoraproject.org>
Cc: Vitaly Zaitsev <vitaly(a)easycoding.org>
Message-ID:
<CAEg-Je8gcbnxZb-=TSUu+PoxFLfJUGcKk-OnRJAKaBOwN895rA(a)mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
On Fri, Jun 5, 2020 at 6:47 AM Vitaly Zaitsev via devel
<devel(a)lists.fedoraproject.org> wrote:
> On 05.06.2020 09:52, Kevin Kofler wrote:
> > I am opposed to this change. Chromium and Firefox build fine with GCC. I
> > think that a distribution should be built with a consistent toolchain
> > wherever possible.
>
> Clang is much better than GCC nowadays. It has better architecture,
> support lots of optimizations and analyzers.
>
> GCC is a legacy compiler. It should be completely replaced by Clang in
> the nearest future.
>
Having worked in a distribution that uses Clang by default
(OpenMandriva), I can say that this is *not true*. Switching from GCC
to Clang cost OpenMandriva a lot of performance. It also cost them a lot of
security hardening at the compiler level. GCC-built binaries are still
better, and remain better as long as people are continually using and
developing for it.
I'm not suggesting switching the default. I'm
suggesting the compiler choice be
made by the upstream projects. Some prefer LLVM, others prefer GCC. Fedora
should get out of the way and use the same tools that the upstream projects are
using.
This change appears to largely be driven by the maintainers of web
browser packages that upstream have no GCC validation and it has to be
done in Fedora downstream. I know Chromium is a lost cause (Google
couldn't possibly care any less than they do now, especially since
they don't even care about Python 2 being EOL), but has anyone talked
to Mozilla about introducing GCC-based CI for Firefox code? I assume
they have a CI infrastructure that's relatively pluggable.
There's been a
ton of discussions with the upstream Firefox and Chromium
communitities. While we were able to get Firefox to continue to support GCC, it
was exceedingly painful and ultimately the Firefox developers are primarily using
Clang/LLVM.
And note I've called out Chromium and Firefox simply because they're the ones
I'm
familiar with. There well could be other packages now and in the future that are
jumping through hoops because of current Fedora policy.
Note that having stuff mix compilers is also a bad idea because LTO is
compatible across the two compilers. If you want to use LTO, you need
to use the same compiler across the chain, or stuff will break.
Simply not true.
See my earlier message. The LTO streams live for the duration
of a package build and are then discarded because they are not considered stable
release-to-release by the compiler.
I would rather see us still *strongly prefer* GCC rather than allowing
this to be freely changeable at a whim.
I disagree. I strongly believe toolchain
decisions need to be made at the
upstream project level. I say this as someone who has been a GCC developer for
30 years, who is an active GCC steering committee member and who has led GCC
development in the past. It's time to remove the anti Clang/LLVM bias in Fedora.
Jeff