this post was submitted on 03 Sep 2024
422 points (97.3% liked)

Linux

48330 readers
693 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Linux people doing Linux things, it seems.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 163 points 2 months ago* (last edited 2 months ago) (3 children)

Here's the thing: you're not going to force all of us to learn Rust.

That's precious coming from Linux developers.

I am a heavy Linux user. I run multiple microservices on multiple headless devices all Linux.

This sounds like every fucking Windows user you'll ever encounter.

"Here's the thing: you're not going to force all of us to learn to use Linux."

So, yeah...

[–] [email protected] 57 points 2 months ago

It's just their ego showing through.

It basically now comes down to the current devs depending on new Rust devs for anything that interacts with Rust code.

They could just work together with Rust devs to solve any issues (API for example).

But their ego doesn't allow for it. They want to do everything by themselves because that's how it always was (up until now).

Sure, you could say it's more efficient to work on things alone for some people, and I'd agree here, but realistically that's not going to matter because the most interactivity that exists (at the moment) between Rust and C in Linux is... the API. Something that they touch up on once in a while. Once it's solid enough, they don't have to touch it anymore at all.

This is a completely new challenge that the Linux devs are facing now after a new language has been introduced. It was tried before, but now it's been approved. The only person they should be mad at is Linus, not the Rust devs.

[–] [email protected] 56 points 2 months ago (1 children)

I finally watched the talk today and that wasn't what I thought he meant. What I thought he was getting at was that the rust parts of the kernel interact with lots of other modules written by people who don't know rust. When those C modules change their semantics in ways that break the rust code, they can't go fix it because they don't know rust. In fact, whenever they make a change, they don't even know if they broke some rust module, because they don't understand the rust code well enough. And this is something that everyone is going to have to live with for the foreseeable future, because you can't force all those other kernel hackers to learn rust.

[–] [email protected] 7 points 2 months ago (1 children)

If you are that good in C(pp), I guess understanding rust code of a module is not sooo hard.. I mean, I learned what I know about C from reading stuff in the Kernel that made my embedded Linux project not working.

But I have yet to read rust.

[–] [email protected] 24 points 2 months ago

It's a whole different ballgame. I've written a good amount of C and C++ in my day. I've been learning Rust for a year or so now. Switching between allocating your own memory and managing it, and the concept of "Ownership" https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html is just something many devs set in their ways aren't willing to do.

I understand where they're coming from, I've gone through massive refactors with new tech in my career. I think this approach needs to be more methodical and cautious than it is, but I don't think they are correct in the end result. I think a memory-safe language is the way to go, and it needs to happen.

This to me is a classic software project with no manager and a bunch of devs arguing internally with no clear external goals. There needs to be definitive goals set over a timeline. If someone doesn't agree after a consensus is reached they can leave the project. But as of now I think as others have said this is 80% infighting, 20% actual work that's happening.

[–] [email protected] 7 points 2 months ago (4 children)

Switching everything from C to Rust because it has better memory safety is more akin to changing languages from English to Esperanto because it has gender neutral pronouns and other cool features. Maybe it's a good idea, but it's understandable that some people are reluctant.

[–] [email protected] 69 points 2 months ago* (last edited 2 months ago) (3 children)

Maybe it’s a good idea, but it’s understandable that some people are reluctant.

I understand that position. I also understand how the words and phrases that the C community has used to communicate with the Rust community seems to be completely dismissive, not just reluctant.

I quoted what I did explicitly because of how a statement like that comes off to the person it's aimed at. It doesn't make them feel like they're on an even footing working on the same project with the overall goal of it becoming better.

memory safety is more akin to changing languages from English to Esperanto because it has gender neutral pronouns.

I mean... not at all? Memory safety is huge for cybersecurity, buffer overflows and the like are common attack surfaces. C requires you to have deep knowledge of safe memory management practices and even then you can end up with memory issues. Rust was developed to avoid such issues entirely. I understand the reluctance but it feels to me like arguing "we should just stick with COBOL because it works."

[–] [email protected] 13 points 2 months ago* (last edited 2 months ago) (1 children)

People prefer what's familiar to them. Rust is completely foreign to them, the syntax is very different, the community is different (and often much younger), it still has many issues and is not ubiquitous, and many people are just slow/averse to change in general. So I absolutely understand the hesitation. And some just don't like it for other reasons like the syntax, learning curve or other reasons. There's also still a host of memory-related things Rust doesn't fix like stack overflows, leaks, bitflips, unsafe context code, and just bad coding practices in general.

[–] [email protected] 2 points 2 months ago (1 children)

I blame C++. When these kernel hackers hear about how they should switch to this shiny new language that's going to make their code so much cleanser and more manageable, I don't blame them for thinking it's all bullshit. It was last time.

[–] [email protected] 5 points 2 months ago* (last edited 2 months ago)

To be fair, there's nothing wrong with only using the parts of C++ you want. If you avoid things like templates, exceptions, RTTI etc. then e.g. your compile times will not suffer like people always complain about, your error messages will not be cryptic, plus you'll have stronger typing, easier/safer lifetime management with ctor/dtors and easier to read code from class usage.

Personally I think Swift has great potential if it can get past the speed and cross-platform issues, as it was designed by (among others) some C++ committee folks, and so it feels a lot more familiar than say, Rust, plus it fixes a lot of long-standing issues.

There is also an Indian kernel fork that allows C++ drivers.

[–] [email protected] 12 points 2 months ago (4 children)

Gender neutral pronouns are pretty huge too. Sure you can do them in English without too many problems usually, just as it's also possible to code safely in C. It requires everyone to change their old habits, but it's much less of a change than is involved in adopting a whole new language.

Anyway, I do like Rust better personally.

[–] [email protected] 24 points 2 months ago

I would still say that getting people to the point where they can write safe C code every time is harder than learning Rust, as it’s equivalent to being able to write rust code that compiles without any safety issues (compiler errors) every single time, which is very difficult to do.

[–] [email protected] 12 points 2 months ago* (last edited 2 months ago)

Ok, that made your analogy make more sense to me. I can agree with that. Thanks.

[–] [email protected] 10 points 2 months ago* (last edited 2 months ago)

Gender neutral pronouns might be pretty huge too, but nobody's private data is getting hacked because of gendered pronoun use.

[–] [email protected] 1 points 2 months ago

Don't thinknits possible by on write safe c code. Otherwise we would not have these issues time and time again. But yes its only the idiots begin don't know how to code. Projects are big and complicated itsneasy to make mistakes.

[–] [email protected] 3 points 2 months ago (2 children)

I understand the reluctance but it feels to me like arguing “we should just stick with COBOL because it works.”

For those depending on COBOL code that does the job and has been doing it just well for a few decades, there are approximately zero good reasons to not stick with it.

[–] [email protected] 13 points 2 months ago (1 children)
  1. Eventually all the people who know and are good at cobol will die.
  2. A while before that happens, the people who know it will continually demand more money for their rare skills.
  3. Eventually, the cobol systems out there will need to interface new systems in some way it wasn't designed to and it'll be more expensive to shoehorn the remote system than to let the ancient beast retire.
[–] [email protected] 1 points 2 months ago (1 children)

Even if, we are talking about the Linux kernel. Our entire ecosystem builds upon C. People choosing C for new projects because it is the common denominator.

If Rust should be adopted in the kernel faster, patches should be send which comment how each line addresses issues of memory management solved and elaborations for rust specific patterns unfamiliar to a C dev.

Lurkers will pick up Rust that way as well.

Each Rust dev had to pick it up and therefore should be able to enable other - probably more experienced - Linux kernel hacker to provide reviewable patches.

It shouldn't be the other way around, else you are just stepping on the efforts the other human provided to that project.

[–] [email protected] 1 points 2 months ago (1 children)

I'm not against Rust. I'd like to see something less dangerous with memory than C, but I don't think it's time yet for the kernel to leave C.

It's pretty clean, stable, it's working well at the moment and the C language (or variants of it) is/are still actively used everywhere. I think the kernel universally going Rust will be a long road of everything under the sun going there first before it's ported in earnest.

[–] [email protected] 2 points 2 months ago (1 children)

The goal ATM is simply to allow people to write new drivers in rust, not convert the whole kernel to rust. It will be a very long time, before more core parts would be allowed to be written in rust let alone rewriting any existing core kernel code. Which is all fine as new drivers are a large part where bugs are added - older parts have had a long time for bugs to be found and fixed and so it is far less important to need to rewrite them.

[–] [email protected] 1 points 2 months ago

Yes there is never old code with bugs that have been sitting there for decades.

[–] ayyy 3 points 2 months ago

Does it count as “doing it well” when every release has fixes for previous releases’ memory bugs?

[–] [email protected] 15 points 2 months ago (3 children)

Vast majority of the cybersecurity community: "an absolute ton of exploits come from memory safety issues with C/C++, we should move to memory safe languages like Rust to greatly reduce security risk and make everyone safer"

You: "Ehh Rust has a couple features, but it's totally not worth switching from my precious precious C"

[–] [email protected] 4 points 2 months ago

Yes people are also like you can code c safely yet it doesn't seem to be that way. With the amount of bugs found over and over again.

[–] [email protected] 1 points 2 months ago (1 children)

like Rust

But no one is talking about that that is doesn’t need to be Rust. There are alternatives that can do as much if not more with the type system & safety while being as low-level as C without some of Rust’s restrictions.

[–] [email protected] 10 points 2 months ago

rust was literally written as a systems programming language to take a similar place as C. i’m not sure of the restrictions you mean

[–] [email protected] 4 points 2 months ago (1 children)

Esperanto has grammatical gender.

[–] [email protected] -2 points 2 months ago

😂i wish my country switched from german to English because of how difficult it is to talk genderless in that language. Like, every fucking word seems to be gendered here.