News for hackers. Stuff that matters.
Re:Moving the Linux Kernel to Modern C by userbinator on Thursday February 24, 2022 @03:53PM (#30460126)
I'm one of those people who think OS kernels should stay as portable and simple as possible (i.e. C89 or some other easily-bootstrappable language, to avoid Ken Thompson attacks), so this isn't great news to see "the ladder being pulled up another rung". Then again, Linux has already become immensely complex.
Re:Moving the Linux Kernel to Modern C by pm215 on Thursday February 24, 2022 @03:59PM (#30460194)
Linux has always relied heavily on GCC extensions, though -- it makes no attempt to actually be C89-compliant portable code. What it actually has is a minimum supported gcc version, which in turn governs whether particular features can be used. In this case the minimum gcc version has for other reasons finally got big enough that C99 and C11 support is definitely present -- the ladder was already this high.

(You can also build with clang, but only because clang deliberately aims to support most gcc extensions.)

Re:Moving the Linux Kernel to Modern C by pcwalton on Thursday February 24, 2022 @04:19PM (#30460442)
The advantages of using a newer language greatly outweigh the disadvantages of theoretical "reflections on trusting trust" attacks. By mandating C89, you're condemning thousands of kernel developers to use a language that's over 30 years old because of a theoretical attack that has never happened and seems practically implausible. Does anyone really think there's a backdoor in both GCC and Clang (remember, Linux can be compiled on either)?
Re:Moving the Linux Kernel to Modern C by gmadsen on Thursday February 24, 2022 @04:30PM (#30460575)
I am ignorant on nearly all compiler related issues, but there was an article on here not too long ago that was arguing that nearly all os development required old C because choices of the committee would break use cases required under the guise of undefined behavior.

is the benefits of "modern C" worth compile times 2-3x times longer?

Re:Moving the Linux Kernel to Modern C by pcwalton on Thursday February 24, 2022 @04:43PM (#30460725)
Times like these I wish I were allowed to say exactly how much money big companies save by using the newest versions of GCC and Clang. The economic value of modern compiler optimizations is staggering.
Re:Moving the Linux Kernel to Modern C by tomcam on Thursday February 24, 2022 @05:35PM (#30461276)
I hereby give you permission to say exactly how much money big companies save by using the newest versions of GCC and Clang.
Re:Moving the Linux Kernel to Modern C by pcwalton on Thursday February 24, 2022 @07:37PM (#30462352)
Thanks, but it's my employer's permission I'm concerned with. :)
Re:Moving the Linux Kernel to Modern C by bch on Thursday February 24, 2022 @04:55PM (#30460840)
> wish I were allowed to say exactly how much money big companies save[...]

Are you able to give hints that would guide us in thought exercises?

Re:Moving the Linux Kernel to Modern C by bluGill on Thursday February 24, 2022 @05:27PM (#30461201)
Facebook has hinted that they employ smart C++ people because some core optimizations can save on the order of several hundred thousand dollars per year (possibly in the millions). Most of that is off because they don't have to buy as much power to cool the server rooms, some of it is buying less servers as what they have can do more. Facebook doesn't actually say what they save, but they have said they measure it, and we know how much it costs to employ an engineer full time working only on optimization, and we know who some of those engineers are.

You have to be very large to notice it, but the likes of Facebook, amazon, and Google have massive warehouses almost entirely filled with computers. It doesn't take much to see how their power bill can add up.

Re:Moving the Linux Kernel to Modern C by plorkyeran on Thursday February 24, 2022 @06:16PM (#30461667)
Years ago Alexandrescu said that Facebook estimated a .1% speedup to HHVM would save them $100k/year. It's presumably only gone up since then, but he's stopped giving an actual number in talks.
Re:Moving the Linux Kernel to Modern C by ForOldHack on Saturday February 26, 2022 @03:53AM (#30476179)
I would argue that he is bragging, and that the amount of code optimization is minimal. Large companies love to brag about how many servers they have, and optimizing compilation is just a buzz word. Go ahead, buy another servers. $100k is nothing. Its less than 1 engineer year vs 24,000 engineer years.

The Distribution collectors, they brag about speed, and optimization is very important to them. They want to be able to test changes very quickly.

Re:Moving the Linux Kernel to Modern C by steveklabnik on Thursday February 24, 2022 @05:46PM (#30461409)
The parent works at Facebook/Meta leading their Rust team, focusing on compiler and ecosystem improvements. So that in and of itself is a sort of hint into what that info could be like, even if it's not actual details of the order of magnitude or anything.
Re:Moving the Linux Kernel to Modern C by ______-_-______ on Thursday February 24, 2022 @06:02PM (#30461547)
The Google Search optimization team measures changes in terms of millions of CPUs. So if upgrading your compiler saves even 0.1%, well, that's a lot of servers you don't have to buy next year.
Re:Moving the Linux Kernel to Modern C by ForOldHack on Sunday February 27, 2022 @04:52AM (#30486813)
Apple went out and bought a CRAY.

"Jun 30, 1987 — The Cray is part of a $20m installation used by Apple's Advanced Technology group and consists of four CPUs operating at 9.5nS per cycle,"

Now we have distcc, that can both massively parallelize compilation, and optimization.

Googles team probably shows some slight improvement, just to justify their work, but in the long run, its just as sloppy as industry wide coding is.

Microsoft is the absolute worst, along with Apple.

Re:Moving the Linux Kernel to Modern C by pertymcpert on Thursday February 24, 2022 @05:08PM (#30460949)
One avenue is to think about it in terms of datacenter compute. If modern compiler optimizations improve performance by 10%, aggregate the perf improvements across the entire world's compute and you get a huge saving.
Re:Moving the Linux Kernel to Modern C by aw1621107 on Thursday February 24, 2022 @05:10PM (#30460980)
> but there was an article on here not too long ago that was arguing that nearly all os development required old C because choices of the committee would break use cases required under the guise of undefined behavior.

I would guess that you're referring to either "How ISO C became unusable for operating systems development" ([0]) or "How One Word Broke C" ([1]).

[0]: https://arxiv.org/abs/2201.07845 , most recent HN discussion at https://news.ycombinator.com/item?id=30022022

[1]: https://web.archive.org/web/20210307213745/https://news.quel... , HN discussion at https://news.ycombinator.com/item?id=22589657

Re:Moving the Linux Kernel to Modern C by mananaysiempre on Thursday February 24, 2022 @05:15PM (#30461042)
Most of the really annoying UB is technically in C89 though, it’s just that compilers haven’t really treated it with such contempt for the first two decades or so. I can’t even recall any new kinds of (non-library) UB in C99 or C11 (though there have to be some).

So “old C” in such a case would need to mean “an old C implementation” (or possibly a new one, but simple or configured to behave like an old one), something like GCC 2.8 maybe, and nobody’s using that on desktop. So the language standard version should be mostly immaterial, and it’s not like the C89-to-C17 difference is anything like the yawning C++98-to-C++20 chasm. (This is a carefully phrased statement: C99 had complex numbers, which are annoying, and variable-length arrays, which are a significant change, but C11 demoted both to optional features.)

Re:Moving the Linux Kernel to Modern C by neysofu on Thursday February 24, 2022 @05:01PM (#30460895)
> is the benefits of "modern C" worth compile times 2-3x times longer?

I mean, you get more security by default and security is pretty darn important for kernels...

Re:Moving the Linux Kernel to Modern C by dataangel on Thursday February 24, 2022 @10:20PM (#30463375)
I think you're mixing up two different things. Newer standard versus newer compiler. All versions of the C standard have lots of undefined behavior. Newer compilers contain optimizers that are just better at leveraging it.
Re:Moving the Linux Kernel to Modern C by bonzini on Thursday February 24, 2022 @04:45PM (#30460744)
Why would a different standard cause longer compile times?
Re:Moving the Linux Kernel to Modern C by db48x on Friday February 25, 2022 @02:55AM (#30464711)
If the spec requires that the compiler look for a certain error and produce a diagnostic, then the compiler has to spend time doing that. The more complicated the spec is, the more work the compiler has to do to find the errors.

For example, Rust is frequently said to have long compile times. There are a number of interesting reasons why that is often true, but if we ignore the pathological cases then what we find is that borrow checking takes a significant fraction of that compile time. This is a big trade–off between features and complexity that the Rust language made very deliberately: the advantages of the borrowing rules are what makes Rust such a great language. The cpu time spent checking that those rules have been followed are a small price to pay, but not a negligible one.

Re:Moving the Linux Kernel to Modern C by midjji on Friday February 25, 2022 @03:17PM (#30471864)
Is there a single such which you cannot disable by compiler flags?
Re:Moving the Linux Kernel to Modern C by db48x on Saturday February 26, 2022 @12:21AM (#30475381)
You cannot disable the borrow checker in Rust with a compiler flag. You might as well try to turn off the type checker, or ask it to ignore syntax errors.
Re:Moving the Linux Kernel to Modern C by Dylan16807 on Thursday February 24, 2022 @04:01PM (#30460217)
Declaring a variable in the middle of a function takes basically no effort to support. Especially compared to all the ridiculous things the kernel gets up to.

The ladder's being moved a millimeter.

Re:Moving the Linux Kernel to Modern C by neysofu on Thursday February 24, 2022 @04:55PM (#30460842)
Ken Thompson's hack is purely theoretical, especially in the modern computing landscape where the diversification of software supply chains would make such hack much 1. less effective and 2. easier to detect. If we're talking about kernel security, there are other lower hanging exploits, many of which are enabled by outdated language design decisions and unsafe memory models.

As compiler technologies evolve, it becomes not only a necessary evil but rather a better course of action to trust compilers rather than humans tiptoeing around security risks masquerading as language idiosyncrasies.

Re:Moving the Linux Kernel to Modern C by yjftsjthsd-h on Thursday February 24, 2022 @05:35PM (#30461280)
> Ken Thompson's hack is purely theoretical

Erm. I was always under the impression that he had actually done it, and that his presentation was a historical anecdote. Is that not the case?

Re:Moving the Linux Kernel to Modern C by neysofu on Thursday February 24, 2022 @05:44PM (#30461378)
Yes, he did, but that just shows that it's possible to inject self-replicating code in a compiler. It doesn't actually tell us how resistant such code is to compiler source changes, audits, binary analysis, etc. which are all required for a successful exploit.
Re:Moving the Linux Kernel to Modern C by boogies on Thursday February 24, 2022 @06:02PM (#30461550)
But the University of Minnesota experiments prove at least some malicious code is capable of passing at least standard Linux code review, right?
Re:Moving the Linux Kernel to Modern C by gmfawcett on Thursday February 24, 2022 @06:39PM (#30461886)
There's a world of difference between that and Thompson's attack. You don't exploit the kernel code: you exploit the compiler code, such that every program it compiles (a) is compromised, and (b) is incapable of detecting the exploit in programs compiled by the same compiler.
Re:Moving the Linux Kernel to Modern C by IshKebab on Thursday February 24, 2022 @06:37PM (#30461865)
That's a completely separate issue. The trusting trust bug requires you to convince people to use your compiler binaries. The thing you're talking about just requires a patch to pass code review.

It's more work - you have to figure out a sneaky bug and write a legit looking patch - but anyone can do it. You don't have to be in a position of power already (e.g. being the Debian GCC packager) so overall it is much easier.

Re:Moving the Linux Kernel to Modern C by josefx on Friday February 25, 2022 @07:50AM (#30466716)
I think they only got past a single reviewer and counted that as success, none of their harm code made it into the kernel proper. However the University also committed thousands of automated "fixes" for linter warnings that weren't part of the study and the kernel maintainers ended up reverting all of them due to the Universities overblown claims.
Re:Moving the Linux Kernel to Modern C by lonjil on Friday February 25, 2022 @07:07AM (#30466390)
No, no malicious code passed. All malicious code was rejected before making it into the kernel.
Re:Moving the Linux Kernel to Modern C by lupire on Thursday February 24, 2022 @06:43PM (#30461918)
Parent didnt say anything about patch code review.
Re:Moving the Linux Kernel to Modern C by steveklabnik on Thursday February 24, 2022 @05:47PM (#30461419)
On a technical level, the hack has been demonstrated to work, but actually hacking someone via the technique has not, in my understanding.
Re:Moving the Linux Kernel to Modern C by marcan_42 on Friday February 25, 2022 @12:28AM (#30464006)
It's obvious that the hack would work on a technical level, that's fundamental to the whole idea. The question is how complex the logistics of doing it in the real world would be; how you insert the tampered code, how you avoid anyone noticing, etc.

For example, I run Gentoo Linux, and haven't reinstalled my OS since 2004 or so. That means that, modulo a few binary packages, I have a direct source lineage to the state of Linux in 2004. If you want to pull off that attack against my system (and you didn't already back in 2004), you'd have to tamper with source archives. That would both imply changes that are easy to analyze (more than binary patches), and it would involve changing the archive hashes in the Portage tree. That tree is in Git, which means that it would create an immutable public record of what happened (Git is the original blockchain, remember), modulo forced pushes which people would, again, notice all over the place.

In practice, if you want to persistently backdoor a new system (supply chain attack), it's usually easier to do that in hardware or firmware than trying to do a RoTT attack on the distro and its compiler. In fact, it's users of binary distributions (or proprietary OSes) that should be more worried, as it is much easier to do a binary-based RoTT attack that self-updates to handle new versions consistently when all your users run the exact same binaries. Source code users should be more worried about compromise upstream than local persistence. And those attacks are a review / auditing issue, unrelated to RoTT.

In the end, if you are worried about being personally targeted, it's easy enough to make that impractical by re-bootstrapping your computing from an unpredictable source (e.g. walk into a random shop and buy a PC, walk into a net cafe and download your favorite distro and check the hashes there). And if you are worried about large-scale attacks, RoTT style ones aren't practical without someone somewhere noticing; you should be worried about traditional compromise instead.

Re:Moving the Linux Kernel to Modern C by truffdog on Friday February 25, 2022 @03:23PM (#30471932)
Does https://en.m.wikipedia.org/wiki/XcodeGhost count? It's not targeting compiler developers, so it can't worm forever, but it is a malicious compiler that weaponizes its output.
Re:Moving the Linux Kernel to Modern C by dreamcompiler on Thursday February 24, 2022 @06:32PM (#30461813)
As far as we know.

Thompson's hack relies on the Halting Problem, and the space for deviousness within the Halting Problem is infinitely large.

Re:Moving the Linux Kernel to Modern C by rurban on Thursday February 24, 2022 @08:57PM (#30462858)
In this case practical attacks are very likely, due to insecurities added with C11 and the stoneage review model of Linux development.

C11 added insecure Unicode identifiers, and you won't find them in reviewing them manually via email. You need a special linter to detect such Unicode attacks. Or a proper development environment.

Compiler development usually evolves into more bugs, not less. Just now they caught up with the hundreds of bugs they added with gcc-9. Not talking about const, restrict, and strict aliasing, and the still not existing -Oboring for the kernel. Would you dare to use -O3 and -flto and -fstrict-aliasing in the kernel?

Re:Moving the Linux Kernel to Modern C by marcan_42 on Friday February 25, 2022 @12:18AM (#30463959)
Linux has a checkpatch.pl. If it doesn't already test for Unicode identifiers, it would be trivial to add that. This is a non-issue. You don't ban a new version of a language just because it allows some undesirable things; it's trivial to ban those things specifically, either with scripting or specific compiler option overrides.

Heck, Linux already uses GCC plug-ins to implement some fancier security stuff; it is silly to think they can't handle forbidding Unicode identifiers.

Re:Moving the Linux Kernel to Modern C by jcranmer on Thursday February 24, 2022 @05:11PM (#30461001)
Linux is not written in C89. It is written in gnu C89, which is a mixture of C89, C99, and a panoply of often poorly-defined gcc-specific features. The number of compilers that can successfully compile Linux is one; not even clang is able to fully do so yet, I believe.

Actually, as a compiler writer, I'd go a little bit further and point out that Linux itself isn't even written to the gnu C89 very well; it's often written to a "C is portable assembly" view of the language, which results in nasty grams and invective being hurled at compiler writers if they compile the C specification correctly and not according to the "proper" assembly the code author thought they were getting.

One of the benefits of more modern language revisions is that they actually tighten the wording on a lot of the more ambiguous parts of the specification--C11 in particular adds a much more comprehensive memory model that's very shrug in the older revisions of C.

Re:Moving the Linux Kernel to Modern C by electroly on Thursday February 24, 2022 @05:38PM (#30461317)
Clang can do it. Google ships clang-built Linux kernels in Android and ChromeOS.
Re:Moving the Linux Kernel to Modern C by seabrookmx on Thursday February 24, 2022 @07:22PM (#30462236)
Also the Kernel used in the new Valve Steam deck.
Re:Moving the Linux Kernel to Modern C by lupire on Thursday February 24, 2022 @06:44PM (#30461936)
Can clang compile vanilla kernel without Google's forks?
Re:Moving the Linux Kernel to Modern C by elevader on Friday February 25, 2022 @05:50AM (#30465852)
AFAIK it can. They actually spent quite a considerable amount of effort implementing all of the gcc extensions to do so. There is even documentation for that: https://www.kernel.org/doc/html/latest/kbuild/llvm.html
Re:Moving the Linux Kernel to Modern C by electroly on Thursday February 24, 2022 @06:48PM (#30461971)
Apparently OpenMandriva also uses a clang-built kernel, presumably not a Google fork. I have no personal knowledge about OpenMandriva though.
Re:Moving the Linux Kernel to Modern C by karlding on Friday February 25, 2022 @05:16AM (#30465646)
Do you consider the ClangBuiltLinux project [0] a Google fork?

[0] https://clangbuiltlinux.github.io/

Re:Moving the Linux Kernel to Modern C by gsnedders on Friday February 25, 2022 @10:26AM (#30468243)
Clang 9.0+ & Linux 5.3+ work for x86_64; I believe it's been possible to compile arm64 for longer.
Re:Moving the Linux Kernel to Modern C by nikanj on Thursday February 24, 2022 @05:16PM (#30461056)
My understanding is that Linux has often faced issues where ”compiling the specification correctly” means “Ha-ha gotcha, we can actually throw half your code out of the window because you misread the deep aliasing rules on page 8432 of the spec”

Their hesitancy with newer standards is understandable, when viewed against that backdrop

Re:Moving the Linux Kernel to Modern C by jcranmer on Thursday February 24, 2022 @05:29PM (#30461215)
One of these days, I will get around to writing my post as to why that take on undefined behavior is completely wrong.

More to the point, though, the only changes to undefined behavior in the C specification in newer versions (compared to C89) are either clarifying things that were already undefined behavior (e.g., INT_MIN % -1) or actually making some undefined behavior well-defined (e.g., allowing type punning via unions).

Re:Moving the Linux Kernel to Modern C by comex on Thursday February 24, 2022 @07:07PM (#30462131)
C23 will make calling realloc with a size of 0 into undefined behavior. [1]

[1] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2464.pdf

Re:Moving the Linux Kernel to Modern C by bonzini on Friday February 25, 2022 @02:10AM (#30464465)
That falls under things that were already undefined or impossible to use properly before.

Older standards said "it is implementation-defined whether the old object is deallocated". This didn't really work well:

- if realloc(..., 0) returns NULL if it freed the object, then you have confusion with error cases. strtol already has this kind of interface and it's unusable

- if realloc(NULL, 0) returns NULL and does nothing it does something different than malloc(0). Some chose to make it do something different, some chose consistency with malloc.

- if you choose consistency with malloc then realloc(NULL, 0) likely will end end up inconsistent with realloc(ptr, 0) where ptr is not NULL. On BSDs the two are consistent but also different from any other platform, so portable code could not rely on realloc(..., 0) doing something known: either you had possible double-free bugs on some platforms, or you had a memory leak.

Re:Moving the Linux Kernel to Modern C by plorkyeran on Friday February 25, 2022 @11:13AM (#30468818)
I'm very unhappy that they chose to make it UB rather than mandating a behavior, but in portable C89 calling `realloc(ptr, 0)` is always a bug in your code, and it was an insane thing to declare implementation-defined originally.
Re:Moving the Linux Kernel to Modern C by syncsynchalt on Thursday February 24, 2022 @04:45PM (#30460745)
IMO the C standards are conservative enough that even a standard level "only" a decade old is still fine.

With that said, we still have options even when moving to a newer standard. Many new language features can be machine-translated to C89 if needed (similar to how we have protoize / unprotoize, though not always as seamless). If we need to keep a bridge to C89 the kernel authors could hold to a subset of new language features that are amenable to machine translation.

Re:Moving the Linux Kernel to Modern C by mlindner on Thursday February 24, 2022 @08:35PM (#30462717)
You're confusing portability with age. Just because something is old does not make it more portable. It arguably makes it less portable as new platforms will not support old language versions.
Re:Moving the Linux Kernel to Modern C by wolrah on Friday February 25, 2022 @09:12AM (#30467472)
> I'm one of those people who think OS kernels should stay as portable and simple as possible (i.e. C89 or some other easily-bootstrappable language, to avoid Ken Thompson attacks)

Why does the complexity of the OS, or even its ability to be compiled by multiple compilers, matter for "trusting trust" attacks?

As I've always seen it, the problems and solutions all exist at the compiler level. The whole premise relies on starting with a binary compiler that you are expected to trust. The source is also assumed to be safe and un-tampered for purposes of this discussion because that's an entirely different issue.

The solution, of course, is to build the compiler itself with different compilers. If you build the same compiler with two or more different compilers, then use that to compile itself, you should be able to with the right options (see the work that has been done on reproducible builds) get binaries that are equal or close enough to easily compare any differences.

At that point if they are the same then you know either it's good or both of the upstream compilers were also compromised.

If for whatever reason that's not practical at the top level compiler the same concepts apply going further back in history until you get to some early compiler a bored grad student wrote in the '80s in pure ASM.

As a result from a practical sense I don't really see "trusting trust" attacks to be that big of a concern. It's always possible to work your way back down the tree of software until you get to a point where you can actually trust a compiler and then build your way back forward from there.

If a compiler starts depending on its own tricks and gets to a point where it can only be successfully compiled by itself, then there are reasons to be suspicious. Even then you'd just have to have the last version to be able to be built by other packages as one more stop along the way to trust.

Re:Moving the Linux Kernel to Modern C by thestoicattack on Thursday February 24, 2022 @03:56PM (#30460169)
The article does mention at least one advantage, so it's not as if the ladder is being pulled up for no reason.
Re:Moving the Linux Kernel to Modern C by Zababa on Friday February 25, 2022 @03:32AM (#30464934)
> to avoid Ken Thompson attacks

I was always under the impression that the "message" of Reflections on trusting trust was that you have to trust someone at some point.

Re:Moving the Linux Kernel to Modern C by jml7c5 on Sunday February 27, 2022 @08:18PM (#30494955)
Does trusted bootstrapping really become that much more difficult? If you're already doing a trusted bootstrap to an old version of GCC, you can use that to build a modern GCC.
Re:Moving the Linux Kernel to Modern C by tomcam on Thursday February 24, 2022 @05:49PM (#30461444)
> so this isn't great news to see "the ladder being pulled up another rung"

Man I so vibe with that. But the new Cs do have a ton of new features and, more to the point, I trust Linus to make this kind of decision more than just about anyone.

Re:Moving the Linux Kernel to Modern C by mwint on Thursday February 24, 2022 @04:05PM (#30460269)
What's a Ken Thompson attack?
Re:Moving the Linux Kernel to Modern C by nl on Thursday February 24, 2022 @04:20PM (#30460452)
Ken Thompson's "cc hack" - Presented in the journal, Communication of the ACM, Vol. 27, No. 8, August 1984, in a paper entitled "Reflections on Trusting Trust", Ken Thompson, co-author of UNIX, recounted a story of how he created a version of the C compiler that, when presented with the source code for the "login" program, would automatically compile in a backdoor to allow him entry to the system.

https://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html

The paper's a pretty entertaining read:

> First we compile the modified source with the normal C compiler to produce a bugged binary. We install this binary as the official C. We can now remove the bugs from the source of the compiler and the new binary will reinsert the bugs whenever it is compiled. Of course, the login command will remain bugged with no trace in source anywhere.

Re:Moving the Linux Kernel to Modern C by febstar on Thursday February 24, 2022 @04:12PM (#30460351)
Most likely referring to "Reflections on Trusting Trust" [0]; i.e. when the compiler is itself the attack vector.

[0]: https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref...

Re:Moving the Linux Kernel to Modern C by Jtsummers on Thursday February 24, 2022 @04:10PM (#30460326)
https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref...

Ken Thompson, Reflections on Trusting Trust.

EDIT: I don't think I've seen 5 nearly simultaneous replies sharing the same link before.

Re:Moving the Linux Kernel to Modern C by ksec on Thursday February 24, 2022 @04:29PM (#30460549)
>EDIT: I don't think I've seen 5 nearly simultaneous replies sharing the same link before.

LOL I was searching for a non-PDF link and delayed the reply. It would have been 6 simultaneous answer.

Re:Moving the Linux Kernel to Modern C by bombcar on Thursday February 24, 2022 @04:11PM (#30460334)
Re:Moving the Linux Kernel to Modern C by gmfawcett on Thursday February 24, 2022 @06:43PM (#30461925)
Solution: the compiler for the microlanguage at the bottom of the stack is none other than the kindly and incorruptible American film star, Tom Hanks.
Re:Moving the Linux Kernel to Modern C by esarc on Thursday February 24, 2022 @04:13PM (#30460364)
Re:Moving the Linux Kernel to Modern C by ksec on Thursday February 24, 2022 @04:25PM (#30460521)
Reflections on Trusting Trust - Ken Thompson

https://wiki.c2.com/?TheKenThompsonHack

Re:Moving the Linux Kernel to Modern C by mindcrime on Thursday February 24, 2022 @04:11PM (#30460339)
I believe the person you are replying to is using that as an allusion to the issues discussed in the famous "Reflections on Trusting Trust" paper[1] by Ken Thompson.

[1]: https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref...

Re:Moving the Linux Kernel to Modern C by pinephoneguy on Thursday February 24, 2022 @04:10PM (#30460325)
Yes but Linux won't even build with gcc 4 much less weird compilers like tcc or msvcc. That ship has unfortunately already sailed.
Re:Moving the Linux Kernel to Modern C by tiahura on Thursday February 24, 2022 @05:15PM (#30461046)
Sounds like GNU/Linux is probably warranted.
Re:Moving the Linux Kernel to Modern C by yjftsjthsd-h on Thursday February 24, 2022 @05:37PM (#30461302)
Kind of, but you can also use clang. On the other other hand, that's clang with GNU extensions, so /shrug