Rust Coreutils 0.6 reaches 96 percent GNU compatibility
The Rust reimplementation of classic Unix tools reaches 96 percent GNU compatibility in version 0.6 – and reduces unsafe code.
(Image: heise medien)
The developers of Rust Coreutils have released version 0.6. The Rust reimplementation of classic Unix tools now achieves 96.28 percent compatibility with the GNU test suite, passing 622 out of 646 tests. Compared to version 0.5, released in December, which had 87.75 percent compatibility, this represents a jump of over eight percentage points.
Particularly noteworthy: the number of failed tests dropped from 55 to just 16, while the number of skipped tests decreased from 23 to 7. The developers tested against GNU Coreutils 9.9 as a reference.
Less unsafe code
A focus of the new version is the reduction of unsafe code. The developers removed unsafe passages in the utilities date, sort, and locale.rs. Instead of direct libc calls, the software now uses the nix crate, which provides safe Rust wrappers around POSIX system calls.
For the tools rm, du, chmod, and chgrp, developers are using the openat and unlinkat system calls via the nix crate for secure directory traversal starting from version 0.6. These changes eliminate entire classes of security vulnerabilities such as buffer overflows or use-after-free errors that can occur with direct libc calls.
Performance optimizations
Version 0.6 brings performance improvements for several tools. The base encoding utilities base32, base64, and basenc work faster due to reduced memset operations. The shuf tool received optimized numeric output and a new --random-seed option. For date, a BufWriter speeds up batch processing, while uniq optimizes memory usage for case-insensitive comparisons.
The tsort tool now avoids reading the entire input into memory, which brings significant advantages for large amounts of data. df also benefits from improved file system handling.
Better internationalization
The new version significantly expands localization support. The date tool now uses ICU support for locale-aware date and month names, as well as hour formatting and calendar support. In sort, numeric sorting now works with thousand separators, while join supports locale-aware collation. The developers are also integrating Weblate for community translations.
Videos by heise
Extended platform support
Rust Coreutils 0.6 officially supports RISC-V 64-bit with the musl target in the CI pipeline. Cygwin support for Windows users has also been expanded. Support for the SMACK Security Module has been added to the tools ls, id, mkdir, mkfifo, and mknod.
The tail tool received a --debug flag, improved symlink following with the -F option, and FIFO timeout handling for --pid. For timeout, the developers implemented comprehensive signal handling and a --verbose option.
The sorting tool sort now supports legacy syntax with +POS/-POS, offers debug key annotations, and better locale-aware sorting. For pr, the developers corrected errors with headers, form feeds, and pagination. The tools chmod and rm handle recursive operations and symlinks better than before.
Ubuntu and Fedora rely on Rust Coreutils
The development of Rust Coreutils is gaining increasing importance in the Linux world. Ubuntu 25.10 already uses Rust Coreutils 0.2.2 as the default as part of Canonical's Oxidising Ubuntu initiative. Fedora plans to offer version 0.5 in Fedora 44 as an option for early adopters – but not as the default variant like Ubuntu.
At FOSDEM 2026 on February 1st, Sylvestre Ledru from the uutils core team reported on practical experiences with Rust Coreutils in Ubuntu. The talk “Rust Coreutils in Ubuntu: Yes, we rewrote /bin/true in Rust – Here's what really happened” provided insights into packaging complexity, undocumented behaviors, and handling critical system tools.
The developer community is constantly growing: 41 new contributors participated in version 0.6. Those who want to test Rust Coreutils can find them in the project's GitHub repository.
(fo)