The effort to write a Rust-based replacement for GNU Coreutils is starting to bear fruit, as it was recently announced that the project is on track to make significant improvements over the previous C implementation. Rust Coreutils also continues to increase its level of compatibility with GNU Coreutils.
The project uutils, also known as Rust Coreutils, aims to rewrite in Rust all the individual utilities included in the GNU Coreutils project. Originally created by Jordi Boggiano in 2013, the project aims to provide drop-in replacements for Coreutils programs, adding the concurrency protection and memory safety provided by Rust.
Rust Coreutils includes basic file, process and text manipulation programs which are supposed to exist in all GNU-based operating systems.
The Coreutils project was created to consolidate three toolsets that were previously offered separately, Fileutils, Textutils, and Shellutils, along with a variety of other utilities. Many of the programs included in the project, such as rm, du, ls, and cat, have been around for decades, and although other implementations exist, these utilities are not available for platforms such as Windows in their original form.
Collectively, the Coreutils programs are seen as ripe fruit for which a working Rust-based version could be produced in a reasonable time. The requirements for each utility are clear and many of them are conceptually simple., which does not mean that the work is easy.
According to the authors, using Rust in this project will help speed up this process, as many out of memory errors and other undefined behavior are completely eliminated. It also opens the door to efficient, concurrency-free multithreading.
Esto might speed up some programs under certain conditions. Rust Coreutils also provides an opportunity to not only re-implement Coreutils, but also improve the functionality of some utilities to provide a better user experience while maintaining compatibility with GNU versions.
For example, feature requests that have long been rejected in the Coreutils project, such as adding a progress bar option for utilities like mv and cp, are currently being addressed in this Rust language rewrite.
Currently, there are dozens of contributors who contribute more than 400 fixes to this effort each month and who also continue with the challenge of closing the compatibility gap of these utilities with the upstream GNU commands.
The only remaining binary to implement is "stty", that in addition to their optimization and compatibility work, the developers will also work to allow Debian and Ubuntu to easily switch to Rust Coreutils by default without any special tweaking or configuration.
Although much progress has been made in bringing uutils to a usable state, it will take some time to reach the stability and maturity of GNU Coreutils. Also, an important aspect of the uutils project to consider is its license. All utilities in the project are licensed under the permissive MIT license, rather than the GNU Coreutils GPLv3 license.
The decision to use the MIT license is not without criticism; some of those who commented on this choice would have preferred to see a copyleft license applied to such a project.
The main criticism echoes arguments about free software licenses in the past:
"A non-copyleft license is detrimental to the freedoms of end users, as it allows a person or organization to embed any part of the project in one device or in the distribution of others." software without providing the source code, so it is impossible to study, modify or improve it.
There is also concern that the choice of license is made to maximize the use of Rust without considering other effects; Replacing GPL-licensed tools with more permissive licensed alternatives is considered by some to be a step backwards.
Finally if you are interested in knowing more about it, you can check the details in the following link.