Ubuntu includes "coreutils" rewritten in Rust
Just noticed at Distrowatch. Ubuntu is now using "coreutils" package that has been rewritten in Rust. Interesting that it's not Golang.
On Fri, 10 Oct 2025 at 01:01, William Park via Talk <talk@lists.gtalug.org> wrote:
Just noticed at Distrowatch. Ubuntu is now using "coreutils" package that has been rewritten in Rust. Interesting that it's not Golang.
That is really interesting. I'm not overly surprised that Rust was chosen: it seems we're headed for Rust as the second language of choice for the Linux kernel, and there's probably both overlap and communication between the kernel devs and the coreutils devs. Rust is also known (per Wikipedia) "for its emphasis on performance, type safety, concurrency, and memory safety." Whereas Wikipedia's entry about Go says "It was designed at Google" (not something to win the hearts of most Linux programmers - not anymore) and "It is syntactically similar to C, but also has garbage collection, structural typing, and CSP-style concurrency." So an improvement on C, but not as much as Rust? But I think the biggest factor is the shift to making Rust a first-class language in the Linux kernel. I think that says a lot. Thanks for mentioning this: that's a big and interesting shift. -- Giles https://www.gilesorr.com/ gilesorr@gmail.com
From: William Park via Talk <talk@lists.gtalug.org>
Just noticed at Distrowatch. Ubuntu is now using "coreutils" package that has been rewritten in Rust. Interesting that it's not Golang.
Rust has a goal of safety at the speed of C. Go does not. If you are replacing C code, it is natural to take C efficiency as a goal. This might be a mistake (I don't think so). I personally don't like that Rust and Go are normally statically linked (unlike C). That's also a reason that I am not a fan of SNAPs or Flatpaks.
Many years ago, I needed a new language, and Drew suggested I try rust and go. Rust was super-early in its life, but even then I would have preferred it for systems programming. Either can be coerced into producing output for a dynamic linker, with -buildmode=c-shared (go) or --crate-type=dylib (Rust). Hmmn, moving away from dynamic libraries deserves an ACM article about the tradeoffs... --dave On 10/11/25 02:40, D. Hugh Redelmeier via Talk wrote:
From: William Park via Talk <talk@lists.gtalug.org> Just noticed at Distrowatch. Ubuntu is now using "coreutils" package that has been rewritten in Rust. Interesting that it's not Golang. Rust has a goal of safety at the speed of C. Go does not.
If you are replacing C code, it is natural to take C efficiency as a goal. This might be a mistake (I don't think so).
I personally don't like that Rust and Go are normally statically linked (unlike C). That's also a reason that I am not a fan of SNAPs or Flatpaks.
------------------------------------ Description: GTALUG Talk Unsubscribe via Talk-unsubscribe@lists.gtalug.org Start a new thread: talk@lists.gtalug.org This message archived at https://lists.gtalug.org/archives/list/talk@lists.gtalug.org/message/TUIUIXT...
-- David Collier-Brown, | Always do right. This will gratify System Programmer and Author | some people and astonish the rest davecb@spamcop.net | -- Mark Twain
On 2025-10-10 01:00, William Park via Talk wrote:
Just noticed at Distrowatch. Ubuntu is now using "coreutils" package that has been rewritten in Rust.
A typical way of handling things is "if it ain't broke...". I wonder how much effort has gone in to testing the rewritten programs to ensure they are felt to be bug free. Rewriting the programs in a language that is supposed to avoid memory and garbage collection issues of C/C++ doesn't mean the might not be free of logic errors. -- Cheers! Kevin. https://www.patreon.com/KevinCozens | "Nerds make the shiny things that | distract the mouth-breathers, and Owner of Elecraft K2 #2172 | that's why we're powerful" #include <disclaimer/favourite> | --Chris Hardwick
Kevin Cozens via Talk said on Tue, 14 Oct 2025 15:14:22 -0400
On 2025-10-10 01:00, William Park via Talk wrote:
Just noticed at Distrowatch. Ubuntu is now using "coreutils" package that has been rewritten in Rust.
A typical way of handling things is "if it ain't broke...". I wonder how much effort has gone in to testing the rewritten programs to ensure they are felt to be bug free. Rewriting the programs in a language that is supposed to avoid memory and garbage collection issues of C/C++ doesn't mean the might not be free of logic errors.
Your preceding sentence is absolutely correct. Logic errors can occur in any language. If the developer writes 9.14159 instead of 3.14159, no compiler or interpreter can detect that. However, Rust catches a lot of logic errors at compile time. I love C. I've used it since 1985. But that also means I've met its disadvantages up close and personal. Languages like Ada and Rust make it much, much more difficult to have a silly error compile. Long term, I think most future stuff written in C, and even more stuff written in C++, which I dislike intensely after using it professionally, would be improved by writing in Rust. Coreutils is an excellent starting place, because writing ls, cat, etc would be trivially easy in Rust, Ada, or any other language. Coreutils is the ideal starting point for a Rust-based future. SteveT Steve Litt http://444domains.com
participants (6)
-
D. Hugh Redelmeier -
David Collier-Brown -
Giles Orr -
Kevin Cozens -
Steve Litt -
William Park