coreutils_core

A crate with abstractions to implement UNIX core utilities


Keywords
coreutils, unix, hacktoberfest, rust, rust-lang
License
MPL-2.0-no-copyleft-exception

Documentation

Coreutils in Rust

Hits-of-Code Build Status FOSSA Status

An in-progress safe implementation of coreutils aiming for a minimal and yet complete set of utilities. This project aims at the POSIX specification basic requirements, plus common and useful features present in other implementations of the utility.

This project has no intent to be 100% compatible with GNU's coreutils, like Uutils' coreutils, but if it happens to be, it's okay too.

Minimum Rust Version Policy

This project's minimum supported rustc version (MSRV) is 1.58.0.

This will not be conservative until we get to a 1.0 version. So it can be changed at any point in time.

Compilation tests guarantees

The compilation is tested for Rust Tier 1 and Tier 2 x86_64 Unix/Unix-like platforms (except Redox), with CI.

All platforms are tested on MSRV and stable Rust, and Tier 1 platforms are also tested on beta and nightly Rust (Tier 2 and 3 only guarantee stable full capacity).

Also, note that Tier 3 Rust tests can fail before it hits the compilation check, since my only option is to use a Linux system, add the target, and do cargo check --target, and they often are not available as a target for any Tier 1 platforms. If you use one of these platforms and have the right MSRV requirements and it build successfully, let me know, if it fails, open an issue with the compilation error.

Platform Tier CI Status Manual Status
Linux Tier 1 Linux Passing (Manjaro Linux 5.3.2 - 2019-10-28) (8695863)
MacOS Tier 1 MacOS -
FreeBSD Tier 2 FreeBSD Passing (FreeBSD 12.0 - 2019-10-28) (8695863)
NetBSD Tier 2 NetBSD - (system without minimal version)
Illumos Tier 2 Illumos - (system without minimal version)
Solaris Tier 2 Solaris - (system without minimal version)
Fuchsia Tier 2 Fuchsia -
OpenBSD Tier 3 OpenBSD Passing (OpenBSD 6.6 Current - 2019-10-28) (8695863)
DragonflyBSD Tier 3 DragonflyBSD Passing (DragonflyBSD 5.6.2 - 2019-10-28) (8695863)
Haiku Tier 3 Haiku -

Compilation

Since not all targets provide full Unix API coverage (they aren't Unix or lack libc crate support), some can provide a Cargo.toml that have all utilities that should work on the target.

Compilation example for

cp <PLATFORM>.toml Cargo.toml
cargo build --release

Tools

Name Not Started Started Done
basename X
cat X
chgrp X
chmod X
chown X
chroot X
clear X
comm X
cp X
csplit X
cut X
date X
dd X
df X
diff X
dirname X
du X
echo X
env X
expand X
expr X
false X
groups X
hash X
head X
id X
install X
join X
link X
ln X
logname X
ls X
mkdir X
mktemp X
mkfifo X
mv X
nice X
nl X
nohup X
od X
paste X
patch X
printf X
pwd X
rm x
rmdir X
sed X
seq X
sort X
sleep X
split X
stat X
stty X
tail X
tee X
test X
time X
touch X
tr X
true X
tsort X
tty X
uname X
unexpand X
uniq X
unlink X
uptime X
users X
wc X
who X
whoami X
yes X

Licensing

This software is licensed under the Mozilla Public License, v. 2.0 (MPL). If a copy of the MPL was not distributed with this file, you can obtain one at http://mozilla.org/MPL/2.0/.

Contributing

We appreciate contributions, please check CONTRIBUTING.md for guidelines on how to contribute to the project with issue reports, git commits messages, etc.

The document also gives orientation on where to start if you wanna implement a pending tool from scratch.

Contributors

Without them, this project would not be what it is today.