uutils Coreutils 0.11 Hits 95% GNU Compatibility With Compiler-Style Errors and PGO Builds

$ cp --version cp 0.11.0 (uutils-coreutils) $ cp large_file.tar /backup/ error: invalid argument 'large_file.tar' --> cp:1:4 | 1 | large_file.tar | ^^^^^^^^^^^^ file not found $ uutils --compat GNU compatibility: 95.33% GNU fn main() { let args = Args::parse(); run(args); } 95.33% +0.89% PGO: +31%

The uutils project shipped Coreutils 0.11 on August 31st, pushing its Rust-based reimplementation of GNU Coreutils past 95% GNU compatibility for the first time. But the headline features of this release aren't really about the compatibility number — they're about two concrete improvements that change the experience of using these tools day-to-day: compiler-quality error messages and faster release builds via Profile Guided Optimization.

What uutils Coreutils Is

The uutils project is a multi-year effort to rewrite the foundational Unix command-line utilities — cp, ls, sort, date, and around 100 others — in Rust instead of C. The goal is a drop-in replacement for GNU Coreutils that brings memory safety, better performance, and cross-platform support (Linux, macOS, and Windows all build from the same codebase). Linuxiac's writeup has a clean overview of the project's scope if you're new to it.

Compiler-Style Error Messages via Ariadne

The most immediately noticeable change in 0.11 is the new diagnostic engine, built on the Ariadne crate. If you've used Rust's own compiler errors, you know what Ariadne-style output looks like: when something goes wrong, you see the supplied argument highlighted, with a caret pointing directly at the problematic character or span — the same visual language modern compilers use.

GNU Coreutils, by contrast, tends toward terse, opaque error messages that tell you something went wrong without telling you precisely where or why. For shell scripting — where you might be debugging a malformed date format at 11pm — the difference between "invalid date" and a message that shows you exactly which character it rejected is not trivial.

This is one of those improvements that sounds minor in a changelog and turns out to be significant in practice.

Up to 31% Faster with PGO Builds

Profile Guided Optimization (PGO) builds are now enabled for Linux, macOS, and Windows release binaries. PGO works by running the program against representative workloads, recording what code paths are hot, and then recompiling with that information — so the resulting binary is optimized for actual usage patterns rather than worst-case assumptions.

The 0.11 release claims up to 31% performance gains in PGO-enabled builds, with cp and join specifically called out as beneficiaries. Web and IT News has some benchmarks if you want specifics.

95.33% GNU Compatibility

The compatibility number is 95.33%, up from 94.44% in the previous release — eight additional tests now passing. That gap matters: the 5% of GNU behavior that uutils doesn't yet replicate is exactly the part that tends to bite you in edge cases, and the project is aware of that. The pass rate tracks against the actual GNU test suite, so these aren't curated success cases.

The release also fixes behavioral differences across pr, numfmt, uniq, truncate, paste, join, id, mkdir, more, fold, sort, stat, od, and date. That's a long list, and most of the fixes are in the category of "subtle differences that only matter in production scripts."

Should You Switch?

For most users on Linux, the honest answer remains "not yet as a full replacement." The 5% compatibility gap is small but real, and production shell scripts often live exactly in the edge cases that gap covers. That said, uutils ships alongside GNU Coreutils on many systems today, and selectively using it — particularly for cp and the other tools that got PGO gains — is entirely reasonable.

On macOS and Windows, where GNU Coreutils is already a third-party install, uutils is increasingly the more natural choice. The project's cross-platform build story is genuinely better than the GNU equivalent, and 0.11 makes the ergonomics noticeably nicer.