Rust-Based uutils Coreutils 0.10 Reaches 93.5% GNU Compatibility

The Rust-based core utilities project reaches a 93.48% GNU test pass rate while improving compatibility, security, and reliability.

The developers of the uutils project have just released Coreutils 0.10, one of its most significant compatibility improvements to date for this Rust-based command-line toolkit, which continues its aim of becoming a drop-in replacement for GNU Coreutils.

The most recent test results from the project show that uutils Coreutils has now passed 645 out of the 690 tests in the GNU test suite, which increases its pass rate from 90.58 percent in version 0.9 to 93.48 percent. Moreover, the number of failed tests has decreased from 56 to 29.

This update includes numerous changes to the behavior of widely used utilities, including date, du, head, tail, install, ls, nproc, numfmt, od, pr, stat, sum, and truncate. Improvements have also been made to error reporting in many instances, with messages now more consistently including the name of the affected file along with the original operating system error, rather than providing a general description.

In version 0.10, the developers also continued their work to eliminate time-of-check-to-time-of-use (TOCTOU) race conditions. The changes affect utilities such as touch, mkfifo, head, split, and chcon, and the recursive operations performed by chmod and chown have also been made more resistant to symlink cycles and to attempts to bypass --preserve-root.

Moreover, the cp utility will no longer descend into a destination subdirectory indicated by a symbolic link, and mv will implement additional safeguards when performing operations between file systems and during backup procedures. Plus, the SELinux labels created by mkdir, mkfifo, and mknod are assigned when the filesystem object is created, rather than in a subsequent step.

Another set of corrections addresses issues including output failures that occur when writing to devices such as /dev/full, integer overflows resulting from extreme arguments, invalid character boundaries in multibyte input, and excessive memory allocations; the expr parser has also been altered to use an iterative approach in order to avoid stack overflows caused by deeply nested expressions.

One of the new features available to users is mv --exchange, which enables the atomic swapping of two filesystem paths. The installation utility now includes --reflink, so that copy-on-write clones can be created on compatible filesystems, and install -C can be used together with --preserve-timestamps.

This update also includes rm --one-file-system, which prevents recursive deletion from crossing file systems, and -O has been added as shorthand for cut --output-delimiter. Moreover, checksum utilities can make use of an OpenSSL backend to achieve better performance.

Performance improvements apply to a number of well-known tools: tee now has a fast zero-copy option, cat has been given throughput optimizations, and copies that are not reflinked by cp should be quicker as well. Copies between devices can also make use of the improved copying path.

Support for multiple platforms is still being extended. The uutils Coreutils 0.10 version now includes support for the wasm32-wasip2 target, and on Windows users get a functional timeout command as well as working file-following capabilities via tail -f and tail -F. Support for sparse copies in cp has also been added for Windows, along with a checksum fix related to the conversion of CRLF line endings.

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 *