4 ms·
This will be worst over time until "more planned obsolescence than anything else" code is committed into the linux kernel. Many parts of the linux kernel are "d
by sylware 5y ago
This will be worst over time until "more planned obsolescence than anything else" code is committed into the linux kernel.
Many parts of the linux kernel are "done", but you will have always some ppl which will manage to commit stuff in order to force people to upgrade. This is very accute with "backdoor injectors for current and futur CPUs", aka compilers: you should be able to compile git linux git with gcc 4.7.4 (the last C gcc which has beyond than enough extensions to write a kernel), and if someting needs to be done in linux code closely related to compiler support, it should be _removing_ stuff without breaking such compiler support, _NOT_ adding stuff which makes linux code compile only with a very recent gcc/clang.
For instance, in the network stack, tons of switch/case and initializer statements don't use constant expressions. Fixing this in the network stack was refused, I tried.
Lately, you can see some linux devs pouring code using the toxic "_Generic" c11 keyword, instead of using type explicit code, or new _mandadory_ builtins did pop up (I did detect them is 5.16 while upgrading from 5.13) which are available only in recent gcc/clang.
When you look at the pertinence of those changes, those are more "planned obsolescence 101" than anything else.
It is really disappointing.
- charcircuit 5y ago>you should be able to compile git linux git with gcc 4.7.4 (the last C gcc which has beyond than enough extensions to write a kernel) By this logic why not write the entire kernel in assembly? Tools evolve and improve over time and it makes sense to migrate to better tools over time. We shouldn't have to live in the past because you refuse to update your compiler.
- gmfawcett 5y agoThat's obviously not their logic at all. Trying to diminish this to "OP refuses to update compiler" is frankly disrespectful of them & their actual point.
- pjc50 5y agoTheir claim is "you should be able to compile git linux git with gcc 4.7.4" which is a completely arbitrary requirement.
- mwcampbell 5y agoIt's not completely arbitrary. Notice that they said "the last C GCC". After that version, GCC started using C++ in the compiler itself. I can see why some people would see that as a complexity line that must not be crossed, as it makes bootstrapping harder.
- arghwhat 5y agoWhat GCC is written in only matters if you intent to write your own compiler to compile it - which as you have no compiler yet would likely have to be written in assembly. Otherwise you need to download a prebuilt compiler anyway, and whether that is C11 or C++11 is rather unimportant.
- charcircuit 5y agoTo me their logic is that their old tool works just fine so they shouldn't have to upgrade it. He essentially said that having a plan to upgrade to a newer version of the language or to a more up to date toolchain is planned obsolescence. He seems to want to be able to use his specific version of his compiler to the end of time. To me I don't quite get the justifications of this perspective as GCC is free software and it is simple to upgrade.
- gmfawcett 5y agoThank you, that's a great reply to his comment. My first impression of his comment was that the kernel project shouldn't chase the latest-and-best compiler releases -- or similarly the most recent C language changes; rather, a boring-technology approach is sensible for such a foundational project as Linux. I see your point, though, that GCC is simple to upgrade. (If I were making the tech decision here, I'd want to ensure that newer GCC's didn't introduce features that I thought were too risky for my project, or at least that I could disable/restrict those features with flags.)
- pm215 5y agoGCC 5.1 (released in 2015) is hardly latest-and-best, though: moving the version bar up only very slowly and with an eye to what distros are using as their compiler version is a pretty solid boring-technology approach, in my view.
- arghwhat 5y agoThis kind of argument is hypocritical: You want to use newer versions of the Linux kernel yourself (otherwise you could just stick to whatever builds with your toolchain!), but say that the Linux kernel must not use newer versions of things. The GCC version requirement is 5.1 (which is 7 years old). Before that, it was 4.9, 4.8, 4.6 and 3.2. It has never been 4.7. Use of newer versions of C than C89 which provides solutions to actual issues is perfectly fine. C11 was picked because it does not require an increase in minimum GCC version to use it, making your entire argument pointless. The Linux kernel is already pretty lenient, as many alternatives have their a compiler on the tree and target only that.