Update of the GNU Coreutils rewritten in Rust

The release of the uutils coreutils 0.0.12 toolkit is presented, within which an analogue of the GNU Coreutils package, rewritten in the Rust language, is being developed. Coreutils comes with over a hundred utilities, including sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, and ls. At the same time, the uutils findutils 0.3.0 package was released with a Rust implementation of the utilities from the GNU Findutils suite (find, locate, updatedb, and xargs).

The reason for creating the project and using the Rust language is the desire to create a cross-platform alternative implementation of Coreutils and Findutils, which can also work on Windows, Redox and Fuchsia platforms. Another important difference with uutils is that it is distributed under the MIT permissive license instead of the GPL copyleft license.

Currently, the implementation of 88 utilities is fully brought to parity with GNU Coreutils. Individual flaws are noted in 18 utilities, including cp, dd, date, df, install, ls, more, sort, split, tail and test. Only the stty utility remains unimplemented. When passing the test suite from the GNU Coreutils project, 214 tests are successfully completed, but the Rust analog does not pass 313 tests yet. At the same time, the intensity of project development has increased markedly - 400-470 patches are added per month from 20-50 developers instead of 30-60 from 3-8 developers a year ago.

Update of the GNU Coreutils rewritten in Rust

Of the recent achievements, performance optimization is noted - in the current state, many utilities, such as head and cut, significantly outperform the options from GNU Coreutils in performance. Test suite coverage increased from 55% to 75% of all code (80% is a sufficient target). The code was refactored to simplify maintenance, for example, error handling in different programs was unified, and code for working with access rights was combined in chgrp and chown. Numerous changes have been added to improve compatibility with GNU Coreutils.

Plans for the future include the implementation of the stty utility, continued work to improve compatibility with GNU Coreutils, adding optimizations to reduce the size of executable files, and continuing to experiment with using the uutils utilities in Debian and Ubuntu instead of GNU Coreutils and GNU Findutils (one of the main developers of uutils previously worked on a project to provide a Debian GNU/Linux build using the Clang compiler). Additionally, the preparation of the uutils-coreutils package for macOS, the experimentation with replacing GNU Coreutils with uutils coreutils on NixOS, the intention to use uutils coreutils by default in the Apertis distribution, and the adaptation of the uutils set for Redox OS are noted.

Source: opennet.ru

Add a comment