Linux
Welcome to c/linux!
Welcome to our thriving Linux community! Whether you're a seasoned Linux enthusiast or just starting your journey, we're excited to have you here. Explore, learn, and collaborate with like-minded individuals who share a passion for open-source software and the endless possibilities it offers. Together, let's dive into the world of Linux and embrace the power of freedom, customization, and innovation. Enjoy your stay and feel free to join the vibrant discussions that await you!
Rules:
-
Stay on topic: Posts and discussions should be related to Linux, open source software, and related technologies.
-
Be respectful: Treat fellow community members with respect and courtesy.
-
Quality over quantity: Share informative and thought-provoking content.
-
No spam or self-promotion: Avoid excessive self-promotion or spamming.
-
No NSFW adult content
-
Follow general lemmy guidelines.
view the rest of the comments
For those who failed to read TA, Linus appears to finally have read the PR and decided that what was indeed submitted was client code. No, he's not forcing subsystem maintainers to adopt Rust; he's saying they can't object to clients using Rust.
I didn't read the patches, but what I see is that Linus believes that the original objection to the PR was wrong. He's asserting that subsystem maintainers who choose to not interact with client code get no say in whether the code is merged or not.
What he's not saying is that subsystem maintainers have to start including Rust in the subsystems; this isn't Linus forcing people to adopt Rust.
What I find most interesting about this is the whole premise of allowing Rust into the main tree. I'm sure there was a process, but does that mean now the wedge is in the door and people can start arguing about including Haskell? It would seem to me that once you make an exception, your argument for rejecting other languages becomes weaker. Why not Ada? It's at least as memory safe - if not more - than Rust. Haskell programs can be provably correct, and there are tools for these proofs. This is an even more powerful argument for Haskell over Rust - it's as memory safe, but also provide Curry-Howard correspondence, which Rust doesn't. Is it a popularity contest? What about Zig, which is in the Rust ballpark for safety, but vastly superior compile times (and, arguably a more simple mental model)? Odin? These are all type-safe, compiled languages without a runtime (hence, no Go).
Most of the languages you've mentioned aren't systems languages, so don't make being a good language to write an OS in a high priority. More languages might be accepted in the future, but if they are, it'll be ones that are a natural fit for the problems they're solving.
I don't know about Ada, except in jokes about how hard it is to write code that satisfies the compiler, which gives it something in common with Rust. Haskell is a horrible systems language. OCaml might be better. But I don't think it's justified to claim Zig isn't suitably for systems programming, or for writing OSes. Maybe even Odin, but I'm only peripherally aware of it, and don't know its strengths. Both are young and immature compared to Rust.
What will be hilarious is when, a little down the road, something like Zig will be mature; I'd bet money the loudest gate-keepers objecting to letting it in will be Rustaceans saying some shit like, "Rust already satisfies the safety needs of the kernel; there's no need to add another language."
I'm very firmly in the Rust for Linux camp because I am in the "make Linux better" camp, and I don't see why eventually getting Zig in the kernel would be a problem. If Zig solves problems that C and Rust don't, by all means, it should be brought in.
However, one of the primary reasons Rust was chosen is that it is memory-safe by default. Zig, on the other hand, has opt-in safety. So unsafe Zig should probably only go in very specific places where C and Rust can't do the job. And ideally, there would be some rules that require the usage of safe Zig everywhere else.
Ignoring Zig, the language, Zig's compiler toolchain is hands-down, the best I've ever seen, and I think introducing Zig to the kernel by making "Zig-built Linux" a thing, would be a really natural way to get that process going.
I don't believe, Zig provides much in terms of safety? To my knowledge, it uses manual memory management à la C, just being less horrid in some aspects, like using an option type instead of null pointers.