Rust Coreutils 0.11 Adds Compiler-Style Error Messages and Passes 95% of GNU Tests

Rust Coreutils 0.11.0 adds caret-style error diagnostics across two dozen utilities, PGO builds up to 31% faster and 653 passing GNU tests with zero errors.
Rust Coreutils 0.11 Adds Compiler-Style Error Messages and Passes 95% of GNU Tests
Rust Coreutils 0.11 Adds Compiler-Style Error Messages and Passes 95% of GNU Tests

The uutils project released Rust Coreutils 0.11.0 on Aug. 31. The release focuses on three things: error messages, performance and GNU compatibility. Against the GNU test suite, the Rust rewrite now passes 653 tests, up eight from 0.10, or 95.33% of the total. It fails 22, down six, and for the first time no test errors out.

Compiler-style error messages

The most visible change is a new diagnostic engine built on the ariadne crate. When stderr is a terminal and an argument fails to parse, the tool echoes the arguments back, puts a caret under the character at fault and adds a help line explaining the syntax, the way a compiler does. That covers a chmod mode, a cut list, a sort key or a tr set, for example. The project’s blog post has before-and-after examples.

The carets already appear in more than two dozen utilities, including chmod, mkdir, install, sort, cut, head, tail, split, dd, stat, ls, df and du. The reports are localized, and they still print the usual Try '... --help' hint. The UUTILS_DIAG environment variable controls the behavior. For size-constrained builds, the caret rendering can be compiled out entirely. Each diagnostic goes out in a single stderr write, so concurrent processes can’t interleave their output.

Faster builds and fewer slow paths

The published Linux, macOS and Windows binaries are now built with profile-guided optimization, which the project says makes them up to 31% faster. Several utilities got targeted work on top of that:

  • cp now opens each file only once, which the project measured as a 32.93% gain.
  • join is 1.37 times faster on paired input, and 2.5 times faster than GNU, because it skips locale comparison when that can’t change the result.
  • od --skip-bytes uses splice(2) on non-seekable input, and dd now page-aligns its read buffer.

The maintainers now treat a utility being significantly slower than GNU as a bug.

Security and robustness

On the security side, mv and cp moved to file-descriptor-based operations to close an xattr time-of-check/time-of-use race. rm no longer follows a symlink swapped in at the -r operand. chmod uses fchmodat for recursive changes, and cp no longer applies chmod through a destination symlink. The release also fixes hangs in split and yes, plus a long list of panics on edge-case input.

There are new GNU-matching options too, including uname -A, cut -F and pr --columns. Windows gains kill and uptime, and the dependency tree shrank as crates such as byteorder, filetime and same-file gave way to std, rustix and windows-sys.

The cycle merged 358 pull requests, including work from 26 first-time contributors, and the project has now passed 1,000 contributors overall. August was its busiest month yet, with 476 commits from 57 authors. For distributions, Ubuntu is the one to watch. It later completed its switch to Rust Coreutils for Ubuntu 26.10.

Subscribe for Updates

SysAdminNews Newsletter

News & updates for IT system administrators.

By signing up for our newsletter you agree to receive content related to ientry.com / webpronews.com and our affiliate partners. For additional information refer to our terms of service.

Notice an error?

Help us improve our content by reporting any issues you find.

Get the WebProNews newsletter delivered to your inbox

Get the free daily newsletter read by decision makers

Subscribe
Advertise with Us

Ready to get started?

Get our media kit

Advertise with Us