The uutils project reimplements ubiquitous command line utilities in Rust. Our goal is to modernize the utils, while retaining full compatibility with the existing utilities.
We are planning to replace all essential Linux tools.
Why?
C has served us well for decades, but it is time to move on. For new generations of developers, Rust is more appealing — and it brings real, substantive benefits:
- Memory safety — eliminates entire categories of bugs without sacrificing performance
- Cross-platform portability — the same code runs on Linux, macOS, Windows, Android, FreeBSD, NetBSD, OpenBSD, Solaris, Illumos, Fuchsia, Redox and even WebAssembly
- Modern tooling — Cargo, crates.io and a rich ecosystem mean we don't have to reinvent the wheel
- Easy parallelism — fearless concurrency built into the language
- Terrific performance — on par with or better than C implementations
This is not about fighting the GNU project. It is not primarily about security (GNU coreutils only had 17 CVEs since 2003) or about license debates. It is about modernizing foundational software so it can be maintained and improved by the next generation of contributors.
Ubuntu is already carefully but purposefully adopting uutils coreutils, and Debian is following the same path.
Projects
coreutils
The commands you use everyday: ls, cp, etc. Production ready!
findutils
Finding what you need: find, locate, updatedb & xargs.
diffutils
Comparing text and files: diff, cmp, diff3, sdiff.
util-linux
Essential system utilities: mount, fdisk, lsblk, dmesg and more.
procps
Process monitoring utilities: ps, top, free, vmstat and more.
sed
Stream editor for filtering and transforming text.
tar
Archiving utility for creating and extracting tar archives.
acl
Access control list utilities: getfacl, setfacl, chacl.
hostname
Show or set the system hostname.
login
Login and user management utilities: login, su, passwd and more.
bsdutils
BSD utility programs: cal, logger, script, wall and more.
Crates
We maintain a variety of public crates to support our projects, which are published on crates.io.
Contributing
You can help us out by:
- Contributing code
- Contributing documentation
- Reporting bugs (e.g. incompatibilities with GNU utilities)
- Triaging bugs
- Sponsoring uutils on GitHub
You can join our Discord server to discuss or ask anything concerning uutils. We're happy to help you get started with contributing!
Talks & Media
We did a few talks about this project, see our talks & media page.
Friends of uutils
We collaborate with and build upon many other projects in the Rust community, either by using or providing crates. We highly recommend giving these projects a look!