But for new code / drivers, writing them in rust where these types of bugs just can’t happen (or happen much much less) is a win for all of us, why wouldn’t we do this? C++ isn’t going to give us any of that any decade soon, and the C++ language committee issues seem to be pointing out that everyone better be abandoning that language as soon as possible if they wish to have any codebase that can be maintained for any length of time.

Rust also gives us the ability to define our in-kernel apis in ways that make them almost impossible to get wrong when using them. We have way too many difficult/tricky apis that require way too much maintainer review just to “ensure that you got this right” that is a combination of both how our apis have evolved over the years (how many different ways can you use a ‘struct cdev’ in a safe way?) and how C doesn’t allow us to express apis in a way that makes them easier/safer to use. Forcing us maintainers of these apis to rethink them is a GOOD thing, as it is causing us to clean them up for EVERYONE, C users included already, making Linux better overall.

And yes, the Rust bindings look like magic to me in places, someone with very little Rust experience, but I’m willing to learn and work with the developers who have stepped up to help out here. To not want to learn and change based on new evidence (see my point about reading every kernel bug we have.)

Rust isn’t a “silver bullet” that will solve all of our problems, but it sure will help in a huge number of places, so for new stuff going forward, why wouldn’t we want that?

  • HiddenLayer555@lemmy.ml
    link
    fedilink
    English
    arrow-up
    12
    ·
    edit-2
    1 day ago

    Reminder that Linux’s decision to write an entire kernel in C and not a mix of C and assembly was just as controversial back then as Rust vs C is now. The pro-assembly programmers used many similar arguments as the anti-Rust programmers (it’s bloated, it’s too high level for the kernel, it has a complicated compiler, it’s just a pointless abstraction over what’s actually happening at the processor level, it’s not mature enough, if you were competent in assembly you wouldn’t need to use C, if assembly is too difficult for you then you shouldn’t even be developing a kernel, etc). Now Linux is hailed as one of the pioneer software projects that led the switch from assembly to C for kernel level code.

    • lime!@feddit.nu
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      24 hours ago

      was linux ever in majority assembly? was the C thing added on by a separate team?