Rust-Based uutils Coreutils 0.11 Brings Faster Performance, Better Error Messages

The latest uutils Coreutils release speeds up cp and join, introduces modern diagnostics, and pushes GNU compatibility past 95%.

uutils Coreutils 0.11 has been released, delivering a substantial update to the cross-platform Rust-based reimplementation of GNU Coreutils.

One of the most visible changes is a new diagnostic engine based on Ariadne. Instead of returning only a traditional command-line error, affected utilities can now display the supplied argument and place a caret directly under the problematic character, similar to diagnostics produced by modern compilers.

The improved diagnostics have already been added to a long list of utilities, including chmod, mkdir, install, tr, sort, cut, head, tail, split, dd, stat, join, ls, df, and du. The messages can also provide short hints explaining the expected syntax, while remaining compatible with localized output.

Regarding performance, official Linux, macOS, and Windows builds now use Profile-Guided Optimization, which developers say can improve performance by up to 31%.

Several utilities received additional optimizations beyond PGO. Most notably, cp now opens files only once during certain operations, achieving a 32.93% performance improvement. It can also reuse an already-open destination file descriptor when a reflink operation falls back to a regular copy.

The join utility also received a significant speed boost. According to the project’s benchmarks, it is now 1.37 times faster when processing paired input and can be around 2.5 times faster than GNU join in that particular workload.

Other performance work landed in dd, tac, od, ptx, nl, tail, expand, unexpand, numfmt, and sort, reducing unnecessary memory allocations, system calls, and data copying. Interestingly, the uutils developers have adopted a new policy: if one of their utilities is significantly slower than its GNU counterpart, they consider it a bug worth reporting.

Importantly, compatibility with GNU Coreutils continues to improve. uutils Coreutils 0.11 now passes 653 tests from the GNU test suite, up from 645 in version 0.10. Failing tests dropped from 28 to 22, and test-suite errors fell from one to zero for the first time. Overall, the project’s measured GNU compatibility increased from 94.44% to 95.33%.

Several GNU-compatible command-line options have also been added. These include uname -A/--all-labeled, cut -F and --whitespace-delimited, plus additional pr options and aliases.

Beyond new options, numerous behavioral differences have been corrected across commands such as pr, numfmt, uniq, truncate, paste, join, id, mkdir, more, fold, sort, stat, od, and date. Error reporting in several utilities now uses actual operating-system error messages where appropriate instead of custom or shortened alternatives.

Security and filesystem handling also received attention. cp and mv now use file-descriptor-based operations to address TOCTOU issues involving extended attributes, while rm no longer follows a symlink swapped into the operand during recursive removal.

Moreover, the chmod command has been hardened around recursive operations and symbolic links, while cp avoids changing permissions through a destination symlink.

Finally, internationalization support has also improved. ls now sorts filenames using locale-aware collation, comm uses locale rules when comparing lines, and cut handles multibyte fields, bytes, and delimiters more correctly.

For additional details, see the changelog.

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Leave a Reply

Your email address will not be published. Required fields are marked *