Is there some tipping point where gcc has too few significant end users to stay relevant? I'd hate to lose the diversity.
Is there some tipping point where gcc has too few significant end users to stay relevant? I'd hate to lose the diversity.
It is primarily non-GPL platforms/systems/companies that are switching to clang for it's much friendlier license.
Edit: "~now" rather than "now"
"With support for asm goto, the mainline Linux kernel for x86_64 is now buildable (and bootable) with Clang 9. Other architectures that don’t require CONFIG_JUMP_LABEL=y such as arm, aarch64, ppc32, ppc64le, (and possibly mips) have been supported with older releases of Clang (Clang 4 was first used with aarch64).
The Android and ChromeOS Linux distributions have moved to building their Linux kernels with Clang, and Google is currently testing Clang built kernels for their production Linux kernels."
That was in September 2019
Yes. There will be a tipping point, as with any economic theory of sustainability. No, we wont reach that tipping point in the foreseeable future. It is still extremely widely used, and continue to be actively developed.
LLVM and GCC will likely enjoy duopoly in the Open Source Space for a very long time.
On a per-kernel basis, absolutely not, even before we consider Androids.
https://en.wikipedia.org/wiki/List_of_products_based_on_Free...
You have no idea how many places FreeBSD actually runs in.
To quote:
> > Gcc is still the default on GNU/Linux systems which are orders of magnitude more mainstream than FreeBSD.
> So what? Clang under OSX compiling both OSX and iOS projects is far more widespread.
I'm asserting that there are more Linux kernels compiled under GCC than there are OSX kernels running Clang (so macOS) compiling OSX and iOS projects.
I think that's on pretty solid ground.
All I'm saying is that, because of servers, there are more GCC'ed Linux kernels than there are Clang'ed macOS kernels, and this will probably remain true indefinitely.
If AWS starts Clangin' on their Linux kernels, then maybe not. The trend toward Clang is pretty clear at this point; could happen.
As clang implements more and more of GCC's extensions, though, I could see things reaching that tipping point.
Sony, Apple, IBM, and plenty of other embedded vendors don't contribute 100% their improvements back to LLVM.
Personally I don't care, as I am mostly a commercial software user nowadays.
Just making the point that LLVM victory over GCC, might not turn out as FOSS supporters expect.
IIRC powerpc32 is currently using clang with old bfd ld, but lld in llvm 10 may be quickly reaching the point where it's suitable for powerpc32 as well.
Care to elaborate?
We're maintaining sparc64 in Debian Ports and we have smashed quite a number of bugs in the SPARC backend in LLVM.
Are there any issues you are seeing?
What's missing for sparc64 in Clang? We have Clang on sparc64 in Debian Ports.
My memory here is fuzzy because I'm very much not interested in Sparc, but, as far as technical shortcomings: there are integrated-assembler (ias) pieces missing; ld.lld support is extremely incomplete; it's missing a working stack unwinder. If you look for Sparc work in Clang upstream, it becomes obvious that it's not active.
The biggest thing missing was interest (and associated time and resources). People have had 6-12 months to step up if they wanted to work on moving platforms off of GCC4.2.1, and unlike for every other tier 2-3 arch formerly on GCC, no one showed up to work on Sparc.
> We have Clang on sparc64 in Debian Ports.
As in you can compile Clang on sparc (using GCC / binutils as the system compiler), or as in you can actually build Debian for sparc64 using Clang?
Here's some more context around missing pieces:
https://svnweb.freebsd.org/base?view=revision&revision=35446...
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233405
Initially, we were building Clang only. But we're also now building Clang using itself, i.e. a stage2 compiler.
There are issues though when building Clang with Clang with Gold as the linker. It works fine with BFD though.
We are not building the whole archive with Clang though. But all Rust packages are built on sparc64 as well which uses the LLVM backend.
Thanks for the links. I'll look into them. Maybe we find some more bugs than can be fixed on SPARC in LLVM/Clang.
Edit: From your first link:
> "Contemporary GCC does not build and there is currently no indication that anyone is going to address these issues."
That's odd. We're building all GCC versions on Debian/sparc64. It's still a maintained backend in GCC, after all.
This is mostly just an observation, I'm not sure how I feel about it. Compiler diversity doesn't seem more important than OS diversity to me, and none of these feel particularly important. As a user I was happy to switch to clang for the better error messages.
I think GCC will remain relevant for as long as there are people who care about free software.
- just like chrome becoming the only browser, one compiler isn't good either. The implementation starts to define the language instead of the standard
- separate projects can use different methodologies and tradeoffs.
- if there is a bug or exploit that only applies to that complier and not all programs
I don't think we should have 20 major C++ compilers but we shouldn't have one.
Apparently not in practice, because LLVM's copyleft license hasn't stopped large amounts of free software from being created (for example, rustc).
Companies like Apple prefer BSD specifically because they want the option of taking someone to court if they want to.
GPL tries to make the world better, by increasing the free software commons. BSD tries to be neutral, but one should not be neutral in a war of good vs. evil: (cf. Ireland, Spain, Sweden & Switzerland in the Second World War or Sweden during the Cold War).
Like gcc has built on mac for longer than Apple (then next step) was using gcc.
I think under those conditions, the FSF's boycott was fair.
The earliest snapshot[1] of opensource.apple.com on the Internet Archive suggests that the compiler sources were available (under "cc") as of October 12, 2000.
Although that snapshot suggests the first release was version cc-792, I can't find older than cc-798 on the site today. But the NOTES file[2] is interesting, detailing NeXT's/Apple's earlier changes including release codenames. (3/19/97: "This is the first fully functional compiler for the PowerPC.")
I would guess that the earliest Apple shipped gcc was with ProjectBuilder in the Mac OS X Developer Preview which was in 1999. Maybe things start to get blurry with NeXT, WebObjects, etc. but it doesn't _seem_ like Apple was shirking it's responsibilities under the GPL.
0: https://apple.slashdot.org/story/00/03/17/1656240/apple-plan...
1: https://web.archive.org/web/20001012121451/http://www.openso...
2: https://opensource.apple.com/source/cc/cc-798/NOTES.auto.htm...
Its was NextStep. They tried for a long time to ship a proprietary GCC, then a proprietary frontend with the rest of gcc, then finally backed down and released the frontend. This was all in the early nineties.
NextStep was trying to link a new frontend at the same level as C, C++, or Fortran, and just give the middle finger to the terms of the GPL.
The truth is that free licences gave us the iPhone, the PlayStation, etc.
Also, a monoculture isn't great for security/exploits.