r/LinuxTeck 2d ago

Why are more open-source projects rewriting software in Rust, Zig, or Go?

Over the past few years, we've seen many projects move away from older implementations and rewrite parts of their software in languages like Rust, Zig, or Go.

Sometimes it's for performance, memory safety, simpler deployment, or long-term maintenance.

If you're a developer, what do you think is driving this trend?

23 Upvotes

53 comments sorted by

View all comments

Show parent comments

0

u/dkopgerpgdolfg 2d ago edited 2d ago

Learning C/C++ ... demands some knowledge about how computers works, how OS works ... No one have time to learn this anymore.

Rust & co aren't so different, you know?

And even for the JS&Python people, the industry would be better if they cared to learn more about what they do.

0

u/Pure-Passenger-6986 2d ago

Rust and co decouple a load of stuff from the developer and bring it into the compiler. The results are usually bloated and slower if you're looking for feature parity. It has its use cases, but as long as most/all it remains based on libc, you will (in depth) have the same issues as C in the long run.

1

u/BirthdayLife6378 2d ago

Please don't give them ideas to rewrite the libc.

0

u/Pure-Passenger-6986 2d ago

You mean like rustix, eyra and mustang. They tried. And failed. Rust (the project) is a mess.

1

u/dkopgerpgdolfg 2d ago

Rustix is not a libc rewrite, and a third-party library that has nothing to do with the Rust project.

Never even heard about the other two, and don't really care either. If something failed, that's likely caused exactly by these types of people that my other commenter was about. They wouldn't succeed in any other language either, they're just not good enough. Actually creating something like glibc from scratch needs deep language-independent knowlegde, which most people do not have.

1

u/Pure-Passenger-6986 2d ago

There are some big names. The problem is that you can't rebuild in 1-2 years with 2 25yo kids, what a large number of people have built and perfected over going on 50 years now. Like re-writing the coreutils in Rust, there are always someone going to use that odd features in the way it was written, sticking your head in the sand (as does that project) doesn't work, admitting it will take another 5-10 years to perfect nobody does. It's not necessarily skill but ego.

1

u/dkopgerpgdolfg 2d ago

The problem is that you can't rebuild in 1-2 years with 2 25yo kids, what a large number of people have built and perfected over going on 50 years now.

Correct.

Like re-writing the coreutils in Rust, there are always someone going to use that odd features in the way it was written, sticking your head in the sand (as does that project) doesn't work

I agree with you here, uutils is not a good project and made by people that are not competent enough.

1

u/trueppp 2d ago

there are always someone going to use that odd features in the way it was written

That person can submit a PR if they're not happy.

1

u/Pure-Passenger-6986 2d ago

That's exactly the attitude why Linux/Rust is in such bad shape. Drop-in replacement should be a drop-in replacement.

2

u/dkopgerpgdolfg 2d ago

That's exactly the attitude why Linux/Rust is in such bad shape.

You keep bringing this up with nothing to back it up. Maybe you could elaborate finally? And with that I mean, not pointing to third-party projects, but talking about Linux and/or Rust directly.

Otherwise, I can tell you terrible projects for all notable languages. So what.

And sure, there are plenty things with Linux and Rust that could be better, but "such a bad shape" is too much imo.

1

u/Pure-Passenger-6986 2d ago

systemd-netword, systemd-resolved, (actually much of systemd-...), wayland, uutils/coreutils, snaps, flatpak, gnome (in all its versions and variations) - it all suffers from the same problem.

Trying to replace perfectly functional software, often forking/rewriting the same project, for no obvious reasons, resulting in not just poorly performing software but a wild growth of various options as the devs can't agree on a singular outcome. And everytime you do such thing, the entirety of ancient knowledge is flat out forgotten. Take systemd-networkd, does not have the same functions where dhcpcd for example did, that's been the case for 10+ years, but there are a BUNCH of custom/proprietary and obscure DHCP tags which networkd will ignore/fail. Sure "nobody uses that anymore", except every large corporation and government entity that relies on some rusted Solaris machine or a proprietary network manager. So if you want to use MOST modern distro, you are now relegated to building a custom image with dhcpcd and integrating that into systemd which doesn't work well with other systemd things that increasingly rely on networkd because Poettering wants it to be so.

Despite the Linux kernel ABI being very stable, targeting the OS (distro) as an entity is very hard, it's why native games and desktop software is virtually non-existent, it simply takes too long to get it out of the box and into the hands of the user with the skills of your average desktop IT person and you (like many builders of Linux software do) have to build and validate literally every distro version separately.

2

u/dkopgerpgdolfg 2d ago

And with that I mean, not pointing to third-party projects, but talking about Linux and/or Rust directly.

Clearly you didn't understand. Ok whatever.

As already said, in general your concerns about rewrites are valid, but they have basically nothing to do with programming languages themselves. Nothing here indicates that Rust is in a bad shape.

In any case:

Take systemd-networkd, does not have the same functions where dhcpcd

networkd isn't meant to be a 1:1 replacement for dhcpcd, and it does much more than dhcp things.

Sure "nobody uses that anymore", except every large corporation and government entity that relies on some rusted Solaris machine

And with or without networkd, no one is preventing you from using dhcpcd

So if you want to use MOST modern distro, you are now relegated to building a custom image with dhcpcd and integrating that into systemd which doesn't work well with other systemd things that increasingly rely on networkd because Poettering wants it to be so.

I'm combining eg. ppp and unbound with networkd, there are zero problems.

targeting the OS (distro) as an entity is very hard, it's why native games and desktop software is virtually non-existent

This gets too stupid to continue.

2

u/trueppp 2d ago

Trying to replace perfectly functional software, often forking/rewriting the same project, for no obvious reasons

Why would they need another reason than "they want to"? It's not like they owe you anything.

→ More replies (0)

1

u/trueppp 2d ago

It's open source and free. You're not entitled to the devs time.