Shine Get

  • 0 Posts
  • 78 Comments
Joined 1 year ago
cake
Cake day: July 1st, 2023

help-circle

  • I’m not insisting anything; stating C is not a memory-safe language isn’t a subjective opinion.

    Note I’m not even a Rust fan; I still prefer C because it’s what I know. But the kernel isn’t written by a bunch of Lewis Hamiltons; so many patches are from one-time contributors and the kernel continues to get inundated with memory safety bugs that no amount of infrastructure, testing, code review, etc is catching. Linux is written by monkeys with a few Hamiltons doing their best to review everything before merging.

    Linus has talked about this repeatedly over the past few years at numerous conferences and there’s a reason he’s integrating Rust drivers and subsystems (and not asking them to fork as you are suggesting) to stop the kernel stagnating and to begin to address the issues like one-off patches that aren’t maintained by their original author and to start squashing the volume of memory corruption bugs that are causing 2/3rds of the kernel’s vulnerabilities.


  • No idea what you’re being downvoted. Just take a look at all the critical CVSS scored vulnerabilities in the Linux kernel over the past decade. They’re all overwhelmingly due to pitfalls of the C language - they’re rarely architectural issues but instead because some extra fluff wasn’t added to double check the size of an int or a struct etc resulting in memory corruption. Use after frees, out of bounds reads, etc.

    These are pretty much wiped out entirely by Rust and caught at compile time (or at runtime with a panic).

    The cognitive load of writing safe C, and the volume of extra code it requires, is the problem of C.

    You can write safe C, if you know what you’re doing (but as shown by the volume of vulns, even the world’s best C programmers still make slip ups).

    Rust forces safe® code without any of the cognitive load of C and without having to go out of your way to learn it and religiously implement it.