Cross-platform Rust rewrite of the GNU coreutils

Overview

uutils coreutils

Crates.io Discord License LOC dependency status

Build Status (FreeBSD) CodeCov


uutils is an attempt at writing universal (as in cross-platform) CLI utilities in Rust. This repository is intended to aggregate GNU coreutils rewrites.

Why?

Many GNU, Linux and other utilities are useful, and obviously some effort has been spent in the past to port them to Windows. However, those projects are written in platform-specific C, a language considered unsafe compared to Rust, and have other issues.

Rust provides a good, platform-agnostic way of writing systems utilities that are easy to compile anywhere, and this is as good a way as any to try and learn it.

Requirements

  • Rust (cargo, rustc)
  • GNU Make (required to build documentation)
  • Sphinx (for documentation)
  • gzip (for installing documentation)

Rust Version

uutils follows Rust's release channels and is tested against stable, beta and nightly. The current oldest supported version of the Rust compiler is 1.47.

On both Windows and Redox, only the nightly version is tested currently.

Build Instructions

There are currently two methods to build the uutils binaries: either Cargo or GNU Make.

Building the full package, including all documentation, requires both Cargo and Gnu Make on a Unix platform.

For either method, we first need to fetch the repository:

$ git clone https://github.com/uutils/coreutils
$ cd coreutils

Cargo

Building uutils using Cargo is easy because the process is the same as for every other Rust program:

$ cargo build --release

This command builds the most portable common core set of uutils into a multicall (BusyBox-type) binary, named 'coreutils', on most Rust-supported platforms.

Additional platform-specific uutils are often available. Building these expanded sets of uutils for a platform (on that platform) is as simple as specifying it as a feature:

$ cargo build --release --features macos
# or ...
$ cargo build --release --features windows
# or ...
$ cargo build --release --features unix

If you don't want to build every utility available on your platform into the final binary, you can also specify which ones you want to build manually. For example:

$ cargo build --features "base32 cat echo rm" --no-default-features

If you don't want to build the multicall binary and would prefer to build the utilities as individual binaries, that is also possible. Each utility is contained in its own package within the main repository, named "uu_UTILNAME". To build individual utilities, use cargo to build just the specific packages (using the --package [aka -p] option). For example:

$ cargo build -p uu_base32 -p uu_cat -p uu_echo -p uu_rm

GNU Make

Building using make is a simple process as well.

To simply build all available utilities:

$ make

To build all but a few of the available utilities:

$ make SKIP_UTILS='UTILITY_1 UTILITY_2'

To build only a few of the available utilities:

$ make UTILS='UTILITY_1 UTILITY_2'

Installation Instructions

Cargo

Likewise, installing can simply be done using:

$ cargo install --path .

This command will install uutils into Cargo's bin folder (e.g. $HOME/.cargo/bin).

This does not install files necessary for shell completion. For shell completion to work, use GNU Make or see Manually install shell completions.

GNU Make

To install all available utilities:

$ make install

To install using sudo switch -E must be used:

$ sudo -E make install

To install all but a few of the available utilities:

$ make SKIP_UTILS='UTILITY_1 UTILITY_2' install

To install only a few of the available utilities:

$ make UTILS='UTILITY_1 UTILITY_2' install

To install every program with a prefix (e.g. uu-echo uu-cat):

$ make PROG_PREFIX=PREFIX_GOES_HERE install

To install the multicall binary:

$ make MULTICALL=y install

Set install parent directory (default value is /usr/local):

# DESTDIR is also supported
$ make PREFIX=/my/path install

Installing with make installs shell completions for all installed utilities for bash, fish and zsh. Completions for elvish and powershell can also be generated; See Manually install shell completions.

NixOS

The standard package set of NixOS provides this package out of the box since 18.03:

$ nix-env -iA nixos.uutils-coreutils

Manually install shell completions

The coreutils binary can generate completions for the bash, elvish, fish, powershell and zsh shells. It prints the result to stdout.

The syntax is:

cargo run completion <utility> <shell>

So, to install completions for ls on bash to /usr/local/share/bash-completion/completions/ls, run:

cargo run completion ls bash > /usr/local/share/bash-completion/completions/ls

Un-installation Instructions

Un-installation differs depending on how you have installed uutils. If you used Cargo to install, use Cargo to uninstall. If you used GNU Make to install, use Make to uninstall.

Cargo

To uninstall uutils:

$ cargo uninstall uutils

GNU Make

To uninstall all utilities:

$ make uninstall

To uninstall every program with a set prefix:

$ make PROG_PREFIX=PREFIX_GOES_HERE uninstall

To uninstall the multicall binary:

$ make MULTICALL=y uninstall

To uninstall from a custom parent directory:

# DESTDIR is also supported
$ make PREFIX=/my/path uninstall

Test Instructions

Testing can be done using either Cargo or make.

Cargo

Just like with building, we follow the standard procedure for testing using Cargo:

$ cargo test

By default, cargo test only runs the common programs. To run also platform specific tests, run:

$ cargo test --features unix

If you would prefer to test a select few utilities:

$ cargo test --features "chmod mv tail" --no-default-features

If you also want to test the core utilities:

$ cargo test  -p uucore -p coreutils

To debug:

$ gdb --args target/debug/coreutils ls
(gdb) b ls.rs:79
(gdb) run

GNU Make

To simply test all available utilities:

$ make test

To test all but a few of the available utilities:

$ make SKIP_UTILS='UTILITY_1 UTILITY_2' test

To test only a few of the available utilities:

$ make UTILS='UTILITY_1 UTILITY_2' test

To include tests for unimplemented behavior:

$ make UTILS='UTILITY_1 UTILITY_2' SPEC=y test

Run Busybox Tests

This testing functionality is only available on *nix operating systems and requires make.

To run busybox tests for all utilities for which busybox has tests

$ make busytest

To run busybox tests for a few of the available utilities

$ make UTILS='UTILITY_1 UTILITY_2' busytest

To pass an argument like "-v" to the busybox test runtime

$ make UTILS='UTILITY_1 UTILITY_2' RUNTEST_ARGS='-v' busytest

Comparing with GNU

Evolution over time

To run locally:

$ bash util/build-gnu.sh
$ bash util/run-gnu-test.sh
# To run a single test:
$ bash util/run-gnu-test.sh tests/touch/not-owner.sh # for example

Note that it relies on individual utilities (not the multicall binary).

Contribute

To contribute to uutils, please see CONTRIBUTING.

Utilities

Done Semi-Done To Do
arch cp stty
base32 date
base64 dd
basename df
basenc expr
cat install
chcon join
chgrp ls
chmod more
chown numfmt
chroot od (--strings and 128-bit data types missing)
cksum pr
comm printf
csplit sort
cut split
dircolors tac
dirname tail
du test
echo
env
expand
factor
false
fmt
fold
groups
hashsum
head
hostid
hostname
id
kill
link
ln
logname
md5sum (replaced by hashsum)
sha1sum (replaced by hashsum)
sha224sum (replaced by hashsum)
sha256sum (replaced by hashsum)
sha384sum (replaced by hashsum)
sha512sum (replaced by hashsum)
mkdir
mkfifo
mknod
mktemp
mv
nice
nl
nohup
nproc
paste
pathchk
pinky
printenv
ptx
pwd
readlink
realpath
relpath
rm
rmdir
runcon
seq
shred
shuf
sleep
stat
stdbuf
sum
sync
tee
timeout
touch
tr
true
truncate
tsort
tty
uname
unexpand
uniq
unlink
uptime
users
wc
who
whoami
yes

Targets that compile

This is an auto-generated table showing which binaries compile for each target-triple. Note that this does not indicate that they are fully implemented, or that the tests pass.

######OS###### ###ARCH#### arch base32 base64 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date df dircolors dirname du echo env expand expr factor false fmt fold groups hashsum head hostid hostname id install join kill link ln logname ls mkdir mkfifo mknod mktemp more mv nice nl nohup nproc numfmt od paste pathchk pinky printenv printf ptx pwd readlink realpath relpath rm rmdir seq shred shuf sleep sort split stat stdbuf sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink uptime users wc who whoami yes
linux-gnu aarch64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
linux-gnu i686 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
linux-gnu powerpc64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
linux-gnu riscv64gc
linux-gnu x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
windows-msvc aarch64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
windows-gnu i686 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
windows-msvc i686 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
windows-gnu x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
windows-msvc x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
apple MacOS aarch64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
apple MacOS x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
freebsd x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
netbsd x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
android aarch64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
android x86_64 y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
solaris x86_64
wasi wasm32
redox x86_64
fuchsia aarch64
fuchsia x86_64

License

uutils is licensed under the MIT License - see the LICENSE file for details

GNU Coreutils is licensed under the GPL 3.0 or later.

Comments
  • cut: refactor

    cut: refactor

    This PR refactors cut field logic to reduce code duplication by factoring out the common Searcer, which is templatized on a specific Matcher -- ExactMatcher for an explicit delimiter and WhitespaceMatcher for white-space delimiter.

    before

    • code duplication in Searcher and WhitespaceSearcher
    • code duplication in cut_fields and cut_fields_whitespace

    after

    • two versions of Matchers
    • one Searcher
    • simplify cut_fields by delegating actual work to specific functions
    opened by TechHara 2
  • New year, new argument parser!

    New year, new argument parser!

    I talked about this a bit on Discord, but I think it's time to actually start talking about a new library I've been working on. So here goes: introducing the very creatively named uutils-args, a derive-based argument parsing library.

    Why a custom argument parser

    For a while now, we've been using clap as our argument parser, but over time I've been become increasingly frustrated with it. Not because it's a bad library, but because it doesn't fit the very specific needs of the coreutils and we constantly have to work around clap with a lot of verbose code. I looked into basically every Rust argument parser out there and none really fit our needs. So about a month ago, I started working on a parser based on lexopt specifically for uutils.

    The whole design is too complex to explain here, so I wrote some documents in the repo. It has three subpages:

    The library also integrates very nicely with some of the plans I had earlier for the --help pages (https://github.com/uutils/coreutils/issues/3181, https://github.com/uutils/coreutils/issues/2816), because the help text is read as markdown from a file in this library.

    Current Status

    The library supports many utils already, but a few important features are still missing. Some low-hanging fruit:

    • The deprecated arguments for head, tail and uniq,
    • Hidden arguments,
    • Setting exit codes.

    And more complicated:

    • better and more complete markdown rendering,
    • argument completion.

    There are also rough edges that can be smoothed out like improving the error messages and the output of --help.

    It is also very much a product of me working on it alone, which means that most of the naming conventions make sense to me but maybe not to others. I would very much welcome feedback on any part of the API.

    If you want to see the library in action, I suggest to take a look at some of the coreutils for which I have created tests (more to come in the future):

    A full list is here: https://github.com/tertsdiepraam/uutils-args/tree/main/tests/coreutils. I found that most are relatively easy to port.

    Downsides

    Porting to this new library will have a few downsides.

    1. New contributors won't be familiar with this library.
    2. We won't have argument completion (until we implement ourselves in this library)
    3. We'll have to update uudoc.
    4. We don't get all the features and years of iterative improvement that clap has.

    Proposed roadmap

    Of course, I'm aware that this is gonna be a huge effort to port and we should carefully how (and even if) we want to do that. For now, I've come up with the following steps:

    • [ ] Figure out whether the migration is going to be worth it.
    • [ ] Collect feedback and accept PRs to get the library ready for use in uutils. This includes
      • Reevaluating the names for crates, traits and functions.
      • Implementing missing features.
      • Adding more documentation.
      • Stabilize the API.
      • Add more coreutils APIs as tests to prove the feasibility of the library.
    • [ ] Fix up administration
      • [ ] Move the repo to the uutils organisation
      • [ ] Publish the crates in the repo
    • [ ] Port utils one by one[^1]
    • [ ] Change uudoc to use the info from the new library.

    How to help out

    For now, I need lots of feedback on this library, so I can get it ready, feel free to open an issue with whatever feedback you have or comment below. You can also help by picking up any of the open issues.

    I'd be happy to answer any questions about this library :)

    cc @sylvestre, @rivy, @jfinkels

    [^1]: I think this is possible by having clap and this new library coexist in the repo for a while, though it will break completion and the online docs.

    opened by tertsdiepraam 0
  • `touch`: Intermittent error `'Error The system's UTC offset could not be determined retrieving the OffsetDateTime::now_local'`

    `touch`: Intermittent error `'Error The system's UTC offset could not be determined retrieving the OffsetDateTime::now_local'`

    Can be seen in https://github.com/uutils/coreutils/actions/runs/3817216997/jobs/6493335664

    ---- test_touch::test_touch_leap_second stdout ----
    current_directory_resolved: 
    run: /home/runner/work/coreutils/coreutils/target/debug/coreutils touch -t 197001010000.60 test_touch_leap_sec
    ---- test_touch::test_touch_leap_second stderr ----
    thread 'main' panicked at 'Error The system's UTC offset could not be determined retrieving the OffsetDateTime::now_local', tests/by-util/test_touch.rs:55:13
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:575:5
       1: core::panicking::panic_fmt
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/panicking.rs:64:14
       2: tests::test_touch::str_to_filetime
                 at ./tests/by-util/test_touch.rs:55:13
       3: tests::test_touch::test_touch_leap_second
                 at ./tests/by-util/test_touch.rs:796:17
       4: tests::test_touch::test_touch_leap_second::{{closure}}
                 at ./tests/by-util/test_touch.rs:786:29
       5: core::ops::function::FnOnce::call_once
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/ops/function.rs:250:5
       6: core::ops::function::FnOnce::call_once
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/ops/function.rs:250:5
       7: core::ops::function::FnOnce::call_once{{vtable.shim}}
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/ops/function.rs:250:5
       8: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/alloc/src/boxed.rs:1988:9
       9: test::run_test_in_spawned_subprocess
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/test/src/lib.rs:793:27
      10: test::test_main_static_abort
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/test/src/lib.rs:186:9
      11: tests::main
                 at ./tests/tests.rs:1:1
      12: core::ops::function::FnOnce::call_once
                 at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/ops/function.rs:250:5
    
    U - touch 
    opened by Joining7943 0
  • Put `#[track_caller]` on assertion functions in test utils

    Put `#[track_caller]` on assertion functions in test utils

    This gets us better error messages that show the location of where the function was called in the assertions. I also found that status_code and code_is are basically the same function, so I removed status_code.

    Related to (but does not close) https://github.com/uutils/coreutils/issues/4250

    opened by tertsdiepraam 2
  • `ci/tests`: Run cargo test with RUST_BACKTRACE

    `ci/tests`: Run cargo test with RUST_BACKTRACE

    Is there any drawback running the tests with backtrace in the CI? I think, the backtrace would be helpful information, especially because we run most of the assertions in tests/common/util.rs and in case of intermittent failures.

    opened by Joining7943 6
Releases(0.0.16)
  • 0.0.16(Oct 12, 2022)

    Highlights

    • The minimum supported Rust version is now 1.59.
    • Many utils now return exit code 1 on usage errors instead of 2 to match GNU.
    • tail has had another significant refactor with slight improvements.
    • chroot returns better exit codes and supports commands with flags.
    • cp supports the -H flag and handles more cases correctly.
    • test supports -N, -ef, -nt & -ot and supports 128 bit integers.
    • dd's argument parsing has been overhauled and is more compatible with GNU.
    • There have been refactors, fixes and performance improvements in many utils, see below for details.

    GNU test suite compatibility

    Many utils have seen minor changes to improve GNU compatibility. Below is a summary of the progress. See https://github.com/uutils/coreutils-tracking/ for more details

    | result | 0.0.15 | 0.0.16 | change | |--------|-------:|-------:|-------:| | pass | 293 | 322 | +29 | | skip | 73 | 49 | -24 | | fail | 222 | 217 | -5 | | error | 5 | 5 | 0 |

    Changes

    The PR's listed below are a selection of all the contributions in this release.

    General

    • Change remaining usage codes of 2 to 1 for GNU compat by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3922
    • Create new adaptive svg logo by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3892

    cat

    • Remove deprecated unix_socket dependency by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3854

    chcon

    • Fix GNU tests/misc/chcon-fail.sh test by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3857

    chroot

    • Improve support of --skip-chdir by @sylvestre in https://github.com/uutils/coreutils/pull/4004
    • Set exit codes to 125, 126 or 127 for errors from chroot itself by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3908
    • Set trailing var arg by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3907
    • Various improvements to chroot by @sylvestre in https://github.com/uutils/coreutils/pull/3960

    cp

    • Fix cp-i GNU test by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3949
    • Add -H option by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3971
    • Assume --reflink=always on no value by @sssemil in https://github.com/uutils/coreutils/pull/3992
    • Correct error message on copying dir to itself by @jfinkels in https://github.com/uutils/coreutils/pull/3981
    • Allow removing symbolic link loop destination by @jfinkels in https://github.com/uutils/coreutils/pull/3972
    • Preserve permissions when copying directory and don't terminate early on inaccessible file by @jfinkels in https://github.com/uutils/coreutils/pull/3973

    dd

    • Handle stdout redirected to seekable file by @jfinkels in https://github.com/uutils/coreutils/pull/3880
    • Parse operands manually via positional args by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3938

    df

    • Remove trailing spaces in rightmost column by @jfinkels in https://github.com/uutils/coreutils/pull/3882

    factor

    • Enable union feature for smallvec by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3928

    ls

    • Exit code 2 when IOError happened for argument by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3921
    • Add support for +FORMAT in timestyle by @dmatos2012 in https://github.com/uutils/coreutils/pull/3988
    • Align --ignore behavior with that of GNU ls by @ackerleytng in https://github.com/uutils/coreutils/pull/3803

    mktemp

    • Respect TMPDIR environment variable by @jfinkels in https://github.com/uutils/coreutils/pull/3552
    • Match GNU error message on too many args by @jfinkels in https://github.com/uutils/coreutils/pull/3951
    • Add message for directory not found by @jfinkels in https://github.com/uutils/coreutils/pull/3940

    pr

    • Migrate from chrono to time by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3918
    • Use clap to handle help & version by @cakebaker in https://github.com/uutils/coreutils/pull/3904

    rm

    • Added write-protected check for files by @stefins in https://github.com/uutils/coreutils/pull/3853
    • Added descend messages for interactive mode Fixes #3817 by @palaster in https://github.com/uutils/coreutils/pull/3931

    split

    • Add support for starting suffix numbers by @andrewbaptist in https://github.com/uutils/coreutils/pull/3976

    sync

    • Various compatibility improvement by @sylvestre in https://github.com/uutils/coreutils/pull/4003

    tail

    • Fix stdin redirect (#3842) by @jhscheer in https://github.com/uutils/coreutils/pull/3845
    • Fix tail panicking when seeking backwards by @kilpkonn in https://github.com/uutils/coreutils/pull/3873
    • Refactor tail by @Joining7943 in https://github.com/uutils/coreutils/pull/3905
    • Fix random errors for piped input on macos by @Joining7943 in https://github.com/uutils/coreutils/pull/3953

    test

    • Add a bunch of operations by @sylvestre in https://github.com/uutils/coreutils/pull/4002

    New Contributors

    @sssemil (https://github.com/uutils/coreutils/pull/3852), @kilpkonn (https://github.com/uutils/coreutils/pull/3873), @stefins (https://github.com/uutils/coreutils/pull/3853), @snapdgn (https://github.com/uutils/coreutils/pull/3923), @sashashura (https://github.com/uutils/coreutils/pull/3980), @dmatos2012 (https://github.com/uutils/coreutils/pull/3988)

    Full Changelog: https://github.com/uutils/coreutils/compare/0.0.15...0.0.16

    Source code(tar.gz)
    Source code(zip)
    coreutils-0.0.16-aarch64-unknown-linux-gnu.tar.gz(3.15 MB)
    coreutils-0.0.16-arm-unknown-linux-gnueabihf.tar.gz(3.24 MB)
    coreutils-0.0.16-i686-pc-windows-msvc.zip(2.52 MB)
    coreutils-0.0.16-i686-unknown-linux-gnu.tar.gz(4.74 MB)
    coreutils-0.0.16-i686-unknown-linux-musl.tar.gz(3.58 MB)
    coreutils-0.0.16-x86_64-apple-darwin.tar.gz(3.32 MB)
    coreutils-0.0.16-x86_64-pc-windows-gnu.zip(3.72 MB)
    coreutils-0.0.16-x86_64-pc-windows-msvc.zip(2.65 MB)
    coreutils-0.0.16-x86_64-unknown-linux-gnu.tar.gz(4.40 MB)
    coreutils-0.0.16-x86_64-unknown-linux-musl.tar.gz(3.37 MB)
    coreutils-musl_0.0.16_amd64.deb(2.23 MB)
    coreutils-musl_0.0.16_i686.deb(2.41 MB)
    coreutils_0.0.16_amd64.deb(2.89 MB)
    coreutils_0.0.16_arm64.deb(1.93 MB)
    coreutils_0.0.16_armhf.deb(1.94 MB)
    coreutils_0.0.16_i686.deb(3.21 MB)
  • 0.0.15(Aug 20, 2022)

    Highlights

    • stty is now partially implemented (https://github.com/uutils/coreutils/pull/3672). We now finally have implementations for all the coreutils!
    • tail now implements --follow and has seen many more improvements thanks to the giant refactor by @jhscheer.
    • wc and sum have gotten performance improvements by @resistor.
    • There have been refactors, fixes and performance improvements in many utils.

    GNU test suite compatibility

    Many utils have seen minor changes to improve GNU compatibility. This marks the first release where we pass more tests than we fail. See https://github.com/uutils/coreutils-tracking/ for more details

    | result | 0.0.14 | 0.0.15 | change | |--------|-------:|------:|-------:| | pass | 242 | 293 | +51 | | skip | 73 | 73 | 0 | | fail | 270 | 222 | -48 | | error | 8 | 5 | -3 |

    Changes

    The PR's listed below are a selection of all the contributions in this release.

    basename

    • Simple format arguments by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3736

    basenc

    • Fix error code on wrong usage by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3743

    comm

    • Use NUL if delimiter is empty by @cakebaker in https://github.com/uutils/coreutils/pull/3701

    cp

    • Correctly copy attributes of a dangling symbolic link by @jfinkels in https://github.com/uutils/coreutils/pull/3692
    • Implement --sparse flag by @pimzero in https://github.com/uutils/coreutils/pull/3766
    • Make --b=simple protective of source by @philgebhardt in https://github.com/uutils/coreutils/pull/3647
    • Truncate destination when --reflink is set by @pimzero in https://github.com/uutils/coreutils/pull/3759
    • Fix test_copy_through_dangling_symlink_no_dereference_permissions by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3789

    cut

    • Fix argument parsing for the delimiter by @jhscheer in https://github.com/uutils/coreutils/pull/3607

    dd

    • Error message of invalid args is matched with GNU by @Fuchczyk in https://github.com/uutils/coreutils/pull/3831
    • Fix output issues by @patricksjackson in https://github.com/uutils/coreutils/pull/3610
    • Only print concise byte counts if count is sufficiently large by @jfinkels in https://github.com/uutils/coreutils/pull/3617
    • Reuse buffer for the most common cases by @patricksjackson in https://github.com/uutils/coreutils/pull/3600
    • Fix broken pipe in test_bytes_oseek_bytes_trunc_oflag by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3797

    df

    • Better error message when executed in a chroot without /proc by @lendandgit in https://github.com/uutils/coreutils/pull/3602
    • Fix output if input path is device name by @cakebaker in https://github.com/uutils/coreutils/pull/3682
    • Fix rounding behavior in humanreadable mode by @cakebaker in https://github.com/uutils/coreutils/pull/3554
    • Read block size from env vars by @cakebaker in https://github.com/uutils/coreutils/pull/3504
    • Show "total" label in correct column by @jfinkels in https://github.com/uutils/coreutils/pull/3579
    • Trim size header in tests by @cakebaker in https://github.com/uutils/coreutils/pull/3582
    • Implement the --sync flag for df by @anastygnome in https://github.com/uutils/coreutils/pull/3592

    dircolors

    • Add support for stdin by @jhscheer in https://github.com/uutils/coreutils/pull/3591
    • Escape ' and : by @cakebaker in https://github.com/uutils/coreutils/pull/3639
    • Implement --print-ls-colors by @cakebaker in https://github.com/uutils/coreutils/pull/3566
    • Make -b & -c args overridable by @cakebaker in https://github.com/uutils/coreutils/pull/3569
    • Update error message by @cakebaker in https://github.com/uutils/coreutils/pull/3596

    dirname

    • Add missing "\n\" to usage message by @cakebaker in https://github.com/uutils/coreutils/pull/3570

    du

    • Remove unnecessary spaces from help by @cakebaker in https://github.com/uutils/coreutils/pull/3622
    • Add parse_glob module and update du to use parse_glob by @ackerleytng in https://github.com/uutils/coreutils/pull/3754

    expand

    • Add support for --tabs shortcuts by @cakebaker in https://github.com/uutils/coreutils/pull/3612
    • Allow multiple tabs args by @cakebaker in https://github.com/uutils/coreutils/pull/3585
    • Show error if --tabs arg has invalid chars by @cakebaker in https://github.com/uutils/coreutils/pull/3583
    • Allow specifier only with last value by @cakebaker in https://github.com/uutils/coreutils/pull/3595
    • Handle too large tab size by @cakebaker in https://github.com/uutils/coreutils/pull/3594
    • Remove empty line from error message by @cakebaker in https://github.com/uutils/coreutils/pull/3577
    • Simplify signature of expand_shortcuts() by @cakebaker in https://github.com/uutils/coreutils/pull/3644

    hashsum

    • Isolate non-"GNU Coreutils" options by @str4d in https://github.com/uutils/coreutils/pull/3593
    • Fix the -c usage by @sylvestre in https://github.com/uutils/coreutils/pull/3816

    install

    • Verbose messages shows ginstall as command by @sylvestre in https://github.com/uutils/coreutils/pull/3651
    • Fix install -C test by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3663
    • Make install -V show the filename by @ElijahSink in https://github.com/uutils/coreutils/pull/3657

    ln

    • Improve error messages compatibility by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3730
    • Implement -L -P to make tests/ln/hard-to-sym.sh work by @sylvestre in https://github.com/uutils/coreutils/pull/3563
    • Symlink --force, src and dst are same file by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3724

    ls, dir & vdir

    • Add already listed message by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3707
    • Fix double quoting when color is enabled by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3590
    • Implement --zero by @pimzero in https://github.com/uutils/coreutils/pull/3746
    • Remove trailing space when using the comma format (-m) by @anastygnome in https://github.com/uutils/coreutils/pull/3615
    • Silently ignore -T option by @Stonks3141 in https://github.com/uutils/coreutils/pull/3718
    • Forbid octal numbers for width parameter by @Ganneff in https://github.com/uutils/coreutils/pull/3613

    mktemp

    • Change directory permission after creation by @353fc443 in https://github.com/uutils/coreutils/pull/3471
    • Combine --tmpdir and subdirectory info by @jfinkels in https://github.com/uutils/coreutils/pull/3568
    • Error on empty --suffix in some situations by @jfinkels in https://github.com/uutils/coreutils/pull/3599
    • Exit with status 1 on usage errors by @jfinkels in https://github.com/uutils/coreutils/pull/3578
    • Include suffix in error message by @jfinkels in https://github.com/uutils/coreutils/pull/3551
    • Only replace last contiguous block of Xs by @jfinkels in https://github.com/uutils/coreutils/pull/3586
    • Respect POSIXLY_CORRECT env var when parsing args by @weijunji in https://github.com/uutils/coreutils/pull/3604
    • Simplify file path parameter logic by @jfinkels in https://github.com/uutils/coreutils/pull/3573

    mv

    • Fix error when moving directory to itself by @Fuchczyk in https://github.com/uutils/coreutils/pull/3809

    numfmt

    • Implement --format by @cakebaker in https://github.com/uutils/coreutils/pull/3751
    • Implement --to-unit & --from-unit by @cakebaker in https://github.com/uutils/coreutils/pull/3705
    • Preserve trailing zeros by @cakebaker in https://github.com/uutils/coreutils/pull/3764
    • Don't round floats if --from is none by @cakebaker in https://github.com/uutils/coreutils/pull/3742
    • Reject suffix if unit is none by @cakebaker in https://github.com/uutils/coreutils/pull/3716
    • Remove duplicate default hints from help by @cakebaker in https://github.com/uutils/coreutils/pull/3696
    • Show invalid suffix error for i suffix by @cakebaker in https://github.com/uutils/coreutils/pull/3732
    • Show error if --padding is zero by @cakebaker in https://github.com/uutils/coreutils/pull/3686
    • Show error if i suffix is missing by @cakebaker in https://github.com/uutils/coreutils/pull/3713

    paste

    • Implement -z flag by @cakebaker in https://github.com/uutils/coreutils/pull/3659

    readlink

    • Improve GNU compatibility by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3826
    • Symlink loop handling by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3717

    realpath

    • Relative options by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3710
    • Improve symlink handling by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3703
    • Add --no-symlinks alias by @cakebaker in https://github.com/uutils/coreutils/pull/3681

    rm

    • Fix help text mistakenly being used as the long option by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3670

    shuf

    • Add missing spaces to about text by @cakebaker in https://github.com/uutils/coreutils/pull/3677
    • Improve performance by @Garfield96 in https://github.com/uutils/coreutils/pull/3642

    sort

    • Wait when SIGINT was raised for the program to finish properly by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3801

    sum

    • Speed up sum by using reasonable read buffer sizes. by @resistor in https://github.com/uutils/coreutils/pull/3741

    split

    • Don't overwrite files by @andrewbaptist in https://github.com/uutils/coreutils/pull/3719
    • Set names for arg values by @cakebaker in https://github.com/uutils/coreutils/pull/3541
    • Don't skip chucking when the chunk size is a divisor of the buffer size by @resistor in https://github.com/uutils/coreutils/pull/3800

    stty

    • Initial implementation by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3672

    tail

    • Implement --follow and much more by @jhscheer in https://github.com/uutils/coreutils/pull/2695
    • Rework platform module by @anastygnome in https://github.com/uutils/coreutils/pull/3706
    • Fix race condition by @jhscheer in https://github.com/uutils/coreutils/pull/3798
    • Reduce CPU load for polling by @jhscheer in https://github.com/uutils/coreutils/pull/3618
    • Reuse opened file --follow=descriptor by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3830

    tee

    • Implement -p by @eds-collabora in https://github.com/uutils/coreutils/pull/3656

    touch

    • Fix trailing slashes handling by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3788

    true & false

    • Use clap::ArgAction for --help and --version by @jarkonik in https://github.com/uutils/coreutils/pull/3784

    tty

    • Move from libc to nix by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3838

    unexpand

    • Handle too large tabs arguments by @cakebaker in https://github.com/uutils/coreutils/pull/3655
    • Implement tabs shortcuts by @cakebaker in https://github.com/uutils/coreutils/pull/3646
    • Set value name of arg by @cakebaker in https://github.com/uutils/coreutils/pull/3605

    uniq

    • Set default missing value for group and all-repeated args by @cakebaker in https://github.com/uutils/coreutils/pull/3667

    wc

    • Specialize scanning loop on settings. by @resistor in https://github.com/uutils/coreutils/pull/3708
    • Implement a fast path for character counting in wc. by @resistor in https://github.com/uutils/coreutils/pull/3735
    • Implement wc fast paths that skip Unicode decoding. by @resistor in https://github.com/uutils/coreutils/pull/3740
    • Fix wc gnu test suite compatibility by @anastygnome in https://github.com/uutils/coreutils/pull/3688

    uucore

    • Create help_section macro by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3180
    • Refactor, document and test ranges module by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3844
    • Remove show_error_custom_description macros show_usage_error by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3837
    • Add backport for Path::is_symlink() by @jfinkels in https://github.com/uutils/coreutils/pull/3697
    • Fix invalid enum variant in docstring by @cakebaker in https://github.com/uutils/coreutils/pull/3643
    • Simplify invalid encoding handling by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3832
    • canonicalize: Loop looking in windows by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3714

    General

    • Netbsd / OpenBSD build fix by @devnexen in https://github.com/uutils/coreutils/pull/3807
    • Add more consistency in the --help output and declarations by @sylvestre in https://github.com/uutils/coreutils/pull/3774
    • dependencies: make winapi dependency only for Windows by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3846
    • tests: fix Freebsd test failures by @jhscheer in https://github.com/uutils/coreutils/pull/3777
    • tests: ignore failing tests for FreeBSD by @jhscheer in https://github.com/uutils/coreutils/pull/3806
    • Replace lazy_static with once_cell by @Sciencentistguy in https://github.com/uutils/coreutils/pull/3704
    • README: add badge for MSRV by @jhscheer in https://github.com/uutils/coreutils/pull/3799
    • Remove use of mem::uninitialized by @5225225 in https://github.com/uutils/coreutils/pull/3808
    • Remove deprecated clap functions by @cakebaker in https://github.com/uutils/coreutils/pull/3768, https://github.com/uutils/coreutils/pull/3850, https://github.com/uutils/coreutils/pull/3848, https://github.com/uutils/coreutils/pull/3804 & https://github.com/uutils/coreutils/pull/3771

    New Contributors

    @weijunji (https://github.com/uutils/coreutils/pull/3604), @str4d (https://github.com/uutils/coreutils/pull/3593), @patricksjackson (https://github.com/uutils/coreutils/pull/3600), @Ganneff (https://github.com/uutils/coreutils/pull/3613), @Garfield96 (https://github.com/uutils/coreutils/pull/3642), @philgebhardt (https://github.com/uutils/coreutils/pull/3647), @ElijahSink (https://github.com/uutils/coreutils/pull/3657), @niyaznigmatullin (https://github.com/uutils/coreutils/pull/3663), @eds-collabora (https://github.com/uutils/coreutils/pull/3656), @lendandgit (https://github.com/uutils/coreutils/pull/3602), @resistor (https://github.com/uutils/coreutils/pull/3708), @andrewbaptist (https://github.com/uutils/coreutils/pull/3720), @Stonks3141 (https://github.com/uutils/coreutils/pull/3718), @pimzero (https://github.com/uutils/coreutils/pull/3746), @Fuchczyk (https://github.com/uutils/coreutils/pull/3809), @5225225 (https://github.com/uutils/coreutils/pull/3808), @jarkonik (https://github.com/uutils/coreutils/pull/3784)

    Full Changelog: https://github.com/uutils/coreutils/compare/0.0.14...0.0.15

    Source code(tar.gz)
    Source code(zip)
    coreutils-0.0.15-aarch64-unknown-linux-gnu.tar.gz(3.26 MB)
    coreutils-0.0.15-arm-unknown-linux-gnueabihf.tar.gz(3.31 MB)
    coreutils-0.0.15-i686-pc-windows-msvc.zip(2.60 MB)
    coreutils-0.0.15-i686-unknown-linux-gnu.tar.gz(4.92 MB)
    coreutils-0.0.15-i686-unknown-linux-musl.tar.gz(3.73 MB)
    coreutils-0.0.15-x86_64-apple-darwin.tar.gz(3.42 MB)
    coreutils-0.0.15-x86_64-pc-windows-gnu.zip(3.84 MB)
    coreutils-0.0.15-x86_64-pc-windows-msvc.zip(2.75 MB)
    coreutils-0.0.15-x86_64-unknown-linux-gnu.tar.gz(4.54 MB)
    coreutils-0.0.15-x86_64-unknown-linux-musl.tar.gz(3.50 MB)
    coreutils-musl_0.0.15_amd64.deb(2.28 MB)
    coreutils-musl_0.0.15_i686.deb(2.48 MB)
    coreutils_0.0.15_amd64.deb(2.96 MB)
    coreutils_0.0.15_arm64.deb(1.96 MB)
    coreutils_0.0.15_armhf.deb(1.97 MB)
    coreutils_0.0.15_i686.deb(3.29 MB)
  • 0.0.14(May 22, 2022)

    Highlights

    • Minimum supported Rust version is now 1.56 and we use the 2021 edition.
    • Android support has been fixed and is now checked in the CI thanks to @jtracey.
    • df has seen major improvements due to incredible work by @cakebaker.
    • Path completions on modern shells (like zsh and fish) now work properly.
    • The dir and vdir utilities where added as aliases for ls and ls -l, respectively.
    • Many utils have seen minor changes to improve GNU compatibility. See https://github.com/uutils/coreutils-tracking/ for more details

    Changes

    The PR's listed below change the user-facing behaviour of the utils. It is a selection of all the contributions in this release.

    General

    • MSRV 1.56 by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3350
    • Rust Edition 2021 by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3368
    • Fix Android support by @jtracey in https://github.com/uutils/coreutils/pull/3396
    • docs: Show supported platforms for each util by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3374, https://github.com/uutils/coreutils/pull/3385
    • docs: Don't download the tldr archive automatically by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3415
    • docs: Require a feature to build by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3444
    • Clap value hints by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3524

    chown

    • Allow setting arbitrary numeric user ID by @jfinkels in https://github.com/uutils/coreutils/pull/3438

    cp

    • Do not dereference symlink even when dangling - fix issue #3364 by @anastygnome in https://github.com/uutils/coreutils/pull/3459

    date

    • Set names for arg values by @cakebaker in https://github.com/uutils/coreutils/pull/3545

    df

    • Show error if same type is included & excluded by @cakebaker in https://github.com/uutils/coreutils/pull/3369
    • Show error when file argument does not exist by @jfinkels in https://github.com/uutils/coreutils/pull/3376
    • Fix too low values in I* columns by @cakebaker in https://github.com/uutils/coreutils/pull/3365
    • Fix calculation of IUse% by @cakebaker in https://github.com/uutils/coreutils/pull/3387
    • Fix incorrect whitespace between columns by @cakebaker in https://github.com/uutils/coreutils/pull/3386
    • -h -H shouldn't cause an error #3366 by @gmnsii in https://github.com/uutils/coreutils/pull/3414
    • Fix broken "test_df_output_overridden" test by @cakebaker in https://github.com/uutils/coreutils/pull/3428
    • Fix File column width for unicode filenames by @cakebaker in https://github.com/uutils/coreutils/pull/3429
    • Show error if all types are excluded by @cakebaker in https://github.com/uutils/coreutils/pull/3418
    • Respect -t arg when specific file is provided by @cakebaker in https://github.com/uutils/coreutils/pull/3408
    • Allow sizes with a suffix for --block-size by @cakebaker in https://github.com/uutils/coreutils/pull/3441
    • Show "block-size argument too large" error by @cakebaker in https://github.com/uutils/coreutils/pull/3458
    • Fix Size column header by @cakebaker in https://github.com/uutils/coreutils/pull/3456
    • Set min width of Used column to 5 by @cakebaker in https://github.com/uutils/coreutils/pull/3480
    • Set names for arg values & add missing space by @cakebaker in https://github.com/uutils/coreutils/pull/3490
    • Fix Size header for multiples of 1000 & 1024 by @cakebaker in https://github.com/uutils/coreutils/pull/3499
    • Use blocksize of 512 if POSIXLY_CORRECT is set by @cakebaker in https://github.com/uutils/coreutils/pull/3482
    • Show error if provided block size is zero by @cakebaker in https://github.com/uutils/coreutils/pull/3514
    • Test default blocksize in POSIX mode by @cakebaker in https://github.com/uutils/coreutils/pull/3522
    • Round up values if block size is specified by @cakebaker in https://github.com/uutils/coreutils/pull/3526
    • Fix incorrect rounding of size header by @cakebaker in https://github.com/uutils/coreutils/pull/3530

    du

    • Return non zero error code when dealing with permissions errors by @sylvestre in https://github.com/uutils/coreutils/pull/3382
    • Add support for --exclude and --exclude-from by @sylvestre in https://github.com/uutils/coreutils/pull/3381

    env

    • Add program signal messages by @ndd7xv in https://github.com/uutils/coreutils/pull/3290

    hashsum

    • Add --no-names option from official b3sum tool by @pothos in https://github.com/uutils/coreutils/pull/3361

    install

    • Support of -d dir/. to match GNU's by @sylvestre in https://github.com/uutils/coreutils/pull/3353
    • When install --strip-program=foor fails, remove the target file by @sylvestre in https://github.com/uutils/coreutils/pull/3419
    • Verbose - list all created directories by @sylvestre in https://github.com/uutils/coreutils/pull/3420

    kill

    • Accept process group with negative id by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3501

    ls, dir & vdir

    • Implement --group-directories-first by @thomasqueirozb in https://github.com/uutils/coreutils/pull/3550
    • Add dir and vdir utils by @gmnsii in https://github.com/uutils/coreutils/pull/3405

    mkdir

    • Fix a clippy warning on clippy::ptr-arg by @sylvestre in https://github.com/uutils/coreutils/pull/3393
    • Fixed not respecting set umask by @pyoky in https://github.com/uutils/coreutils/pull/3150

    mktemp

    • Respect path given in template argument by @jfinkels in https://github.com/uutils/coreutils/pull/3465
    • Error on path separator in template prefix by @jfinkels in https://github.com/uutils/coreutils/pull/3512
    • Fix error msg when suffix has path sep. by @jfinkels in https://github.com/uutils/coreutils/pull/3543
    • Correct error message on absolute path by @jfinkels in https://github.com/uutils/coreutils/pull/3521

    mv

    • Add OverwriteMode match in specific case by @sudosmile in https://github.com/uutils/coreutils/pull/3383
    • Move the tests in a separate function by @sylvestre in https://github.com/uutils/coreutils/pull/3390
    • Trigger an error when doing mv dir1 dir2 dir2 by @sylvestre in https://github.com/uutils/coreutils/pull/3392
    • Allow a single source with --target-directory by @ilkecan in https://github.com/uutils/coreutils/pull/3529

    printf

    • Default left-justify integer conversion to 1 width by @hbina in https://github.com/uutils/coreutils/pull/3061

    ptx

    • Implement breakfile option by @mike-kfed in https://github.com/uutils/coreutils/pull/3455

    rm

    • Rename none by --interactive=never to fix ../gnu/tests/rm/i-never.sh by @sylvestre in https://github.com/uutils/coreutils/pull/3356

    seq

    • Use usage error where appropriate by @jfinkels in https://github.com/uutils/coreutils/pull/3539

    stat

    • Add support to read a filename redirected to stdin by @crazystylus in https://github.com/uutils/coreutils/pull/3280
    • Improve handling of stdin/fifo (fix #3485) by @jhscheer in https://github.com/uutils/coreutils/pull/3498

    tty

    • Should not return 2 when --help is used by @sylvestre in https://github.com/uutils/coreutils/pull/3367

    uname

    • Hide processor and hwplatform options by @LevitatingBusinessMan in https://github.com/uutils/coreutils/pull/3537

    uniq

    • Fix almost all GNU tests by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3417

    New Contributors

    @pothos (https://github.com/uutils/coreutils/pull/3361), @marv (https://github.com/uutils/coreutils/pull/3384), @sudosmile (https://github.com/uutils/coreutils/pull/3383), @pyoky (https://github.com/uutils/coreutils/pull/3150), @gmnsii (https://github.com/uutils/coreutils/pull/3405), @rtzoeller (https://github.com/uutils/coreutils/pull/3443), @anastygnome (https://github.com/uutils/coreutils/pull/3459), @naveensrinivasan (https://github.com/uutils/coreutils/pull/3453), @ilkecan (https://github.com/uutils/coreutils/pull/3529)

    Full Changelog: https://github.com/uutils/coreutils/compare/0.0.13...0.0.14

    Source code(tar.gz)
    Source code(zip)
    coreutils-0.0.14-aarch64-unknown-linux-gnu.tar.gz(2.96 MB)
    coreutils-0.0.14-arm-unknown-linux-gnueabihf.tar.gz(3.01 MB)
    coreutils-0.0.14-i686-pc-windows-msvc.zip(2.38 MB)
    coreutils-0.0.14-i686-unknown-linux-gnu.tar.gz(4.55 MB)
    coreutils-0.0.14-i686-unknown-linux-musl.tar.gz(3.38 MB)
    coreutils-0.0.14-x86_64-pc-windows-gnu.zip(3.49 MB)
    coreutils-0.0.14-x86_64-pc-windows-msvc.zip(2.51 MB)
    coreutils-0.0.14-x86_64-unknown-linux-gnu.tar.gz(4.21 MB)
    coreutils-0.0.14-x86_64-unknown-linux-musl.tar.gz(3.17 MB)
    coreutils-musl_0.0.14_amd64.deb(2.10 MB)
    coreutils-musl_0.0.14_i686.deb(2.28 MB)
    coreutils_0.0.14_amd64.deb(2.76 MB)
    coreutils_0.0.14_arm64.deb(1.80 MB)
    coreutils_0.0.14_armhf.deb(1.81 MB)
    coreutils_0.0.14_i686.deb(3.08 MB)
  • 0.0.13(Apr 2, 2022)

    This is a big release with 276 new PR's merged!

    The highlights of this release are:

    • Mininum supported Rust version is now 1.54.
    • Many improvements and fixes in many utils. In particular, cp, dd, df, split and tr have gotten very large improvements and are much more compatible with GNU.
    • Online user documentation featuring installation instructions, descriptions, flags, options and examples.
    • We now use clap 3, which gives the --help output a new look and enables abbreviations of long arguments. For example:
    ls --color    # already worked pre 0.0.13
    ls --col      # any unambiguous shorthand now also works
    

    Changes

    The PR's listed below change the user-facing behaviour of the utils. It is just a small selection of all the contributions in this release.

    General

    • Clap 3 by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2863
    • Infer unambiguous long arguments in clap by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2936
    • User documentation by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2897, https://github.com/uutils/coreutils/pull/3152, https://github.com/uutils/coreutils/pull/3134
    • Include license text in all published crates by @davide125 in https://github.com/uutils/coreutils/pull/3131

    uucore

    • Allow backup suffix with hyphen value by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2997
    • Error on negative interval in parse_time::from_str() by @jfinkels in https://github.com/uutils/coreutils/pull/3292
    • No uppercase suffixes in parse_time by @jfinkels in https://github.com/uutils/coreutils/pull/3315
    • Don't panic when canonicalizing a nonexistent path by @water-ghosts in https://github.com/uutils/coreutils/pull/3103
    • Fix parse_size to use u64 rather than usize for better 32-bit support by @omertuc in https://github.com/uutils/coreutils/pull/3084

    cp

    • Override args instead of having them conflict by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2998
    • Avoid following a destination symlink with -P by @refi64 in https://github.com/uutils/coreutils/pull/3101
    • Create backup before hardlink by @water-ghosts in https://github.com/uutils/coreutils/pull/3033
    • Fail when copying a directory to a file by @water-ghosts in https://github.com/uutils/coreutils/pull/3044
    • Only allow directory for -t by @shoriminimoe in https://github.com/uutils/coreutils/pull/3027
    • Support copying FIFOs with -r by @water-ghosts in https://github.com/uutils/coreutils/pull/3032
    • Don't panic when calling cp -a with a nonexistent file by @water-ghosts in https://github.com/uutils/coreutils/pull/2960
    • Avoid infinite recursion when source and destinations are same while using cp -R by @Narasimha1997 in https://github.com/uutils/coreutils/pull/3018

    dd

    • block/unblock on ebcdic/ascii conversions by @jfinkels in https://github.com/uutils/coreutils/pull/2909
    • Correct behavior when status=noxfer by @jfinkels in https://github.com/uutils/coreutils/pull/2915
    • Support seek=N when destination is stdout by @jfinkels in https://github.com/uutils/coreutils/pull/2911
    • Add support for 'b' and 'x' multipliers in numeric arguments by @jfinkels in https://github.com/uutils/coreutils/pull/3028
    • Allow multiple instances of arguments by @iovanom in https://github.com/uutils/coreutils/pull/3021
    • Correct order and phrasing of truncated record by @jfinkels in https://github.com/uutils/coreutils/pull/3154
    • Correctly account for partial record written by @jfinkels in https://github.com/uutils/coreutils/pull/3129
    • Create ConversionMode to simplify conversion, blocking, and unblocking by @jfinkels in https://github.com/uutils/coreutils/pull/3293
    • Don't error when outfile is /dev/null by @jfinkels in https://github.com/uutils/coreutils/pull/3148
    • Implement iseek + oseek flags by @chordtoll in https://github.com/uutils/coreutils/pull/3256
    • Make status=progress rewrite once/sec by @ndd7xv in https://github.com/uutils/coreutils/pull/3078
    • Pad partial record with spaces in some cases by @jfinkels in https://github.com/uutils/coreutils/pull/3156
    • Remove spurious zero multiplier warning by @jfinkels in https://github.com/uutils/coreutils/pull/3128
    • Show warning if skipping past end of input by @jfinkels in https://github.com/uutils/coreutils/pull/3066
    • Show warning when using 0x size multiplier by @jfinkels in https://github.com/uutils/coreutils/pull/3085
    • Truncate to specified seek length by @jfinkels in https://github.com/uutils/coreutils/pull/3076

    df

    • Adds support for mount path prefix matching and input path by @crazystylus in https://github.com/uutils/coreutils/pull/3161
    • --output w/o "=" doesn't expect further args by @cakebaker in https://github.com/uutils/coreutils/pull/3327
    • Add support for --total option by @jfinkels in https://github.com/uutils/coreutils/pull/3197
    • Always produce the same order in output table by @jfinkels in https://github.com/uutils/coreutils/pull/3126
    • Always round up usage percentage (#3208) by @cakebaker in https://github.com/uutils/coreutils/pull/3230
    • Correctly scale bytes by block size by @jfinkels in https://github.com/uutils/coreutils/pull/3182
    • Fix block size header for multiples of 1024 by @jfinkels in https://github.com/uutils/coreutils/pull/3191
    • Fix calculation of Use% column by @cakebaker in https://github.com/uutils/coreutils/pull/3309
    • Fix calculation of Use% in "total" row by @cakebaker in https://github.com/uutils/coreutils/pull/3347
    • Fix panic when using -x argument (#3257) by @cakebaker in https://github.com/uutils/coreutils/pull/3258
    • Implement the --output command-line argument by @jfinkels in https://github.com/uutils/coreutils/pull/3176, https://github.com/uutils/coreutils/pull/3322, https://github.com/uutils/coreutils/pull/3323
    • Implement the File column by @jfinkels in https://github.com/uutils/coreutils/pull/3294
    • Omit reserved filesystem blocks in "Available" by @cakebaker in https://github.com/uutils/coreutils/pull/3270
    • Remove unused "--direct" option by @cakebaker in https://github.com/uutils/coreutils/pull/3263
    • Some option changes by @xxyzz in https://github.com/uutils/coreutils/pull/3127

    echo

    • Allow echo with escapes to work with \0 by @Dr-Emann in https://github.com/uutils/coreutils/pull/2977

    hashsum

    • Added b2sum and b3sum utilities by @palaster in https://github.com/uutils/coreutils/pull/3164
    • Add BLAKE3 to Hashing Algorithms by @DestroyerXyz in https://github.com/uutils/coreutils/pull/3108

    head

    • Add ---presume-input-pipe parameter by @DevSabb in https://github.com/uutils/coreutils/pull/3345
    • Don't add trailing newline to end of file that didn't originally have one by @jfinkels in https://github.com/uutils/coreutils/pull/2957

    install

    • Better error messages when handling invalid arguments by @ndd7xv in https://github.com/uutils/coreutils/pull/3187

    join

    • Print unsorted line in error message by @cohosh in https://github.com/uutils/coreutils/pull/2899
    • Fix default check order behaviour by @cohosh in https://github.com/uutils/coreutils/pull/2908
    • Add support for -t '\0' by @jtracey in https://github.com/uutils/coreutils/pull/2881
    • "Support" field numbers larger than usize::MAX by @jtracey in https://github.com/uutils/coreutils/pull/2882
    • Add support for non-unicode field separators by @jtracey in https://github.com/uutils/coreutils/pull/2902
    • Improve performance by @jtracey in https://github.com/uutils/coreutils/pull/3092

    ln

    • Make the tests/ln/hard-backup.sh test work by @sylvestre in https://github.com/uutils/coreutils/pull/3340
    • Pass tests/ln/backup-1.sh & improvement in the error messages by @sylvestre in https://github.com/uutils/coreutils/pull/3346

    ls

    • Add new optional arguments to --classify flag by @abhishekc-sharma in https://github.com/uutils/coreutils/pull/3041
    • Add proper quotes on symlink with --quoting-style=shell-escape by @sylvestre in https://github.com/uutils/coreutils/pull/3317
    • Fix display of bad file descriptor errors by @kimono-koans in https://github.com/uutils/coreutils/pull/2875
    • Fix display of inodes and add allocation size feature by @kimono-koans in https://github.com/uutils/coreutils/pull/3052
    • When -aA are provided, the order matters by @sylvestre in https://github.com/uutils/coreutils/pull/3285

    mkdir

    • Add support of mkdir -p foo/. by @sylvestre in https://github.com/uutils/coreutils/pull/3311
    • Recursive reporting of created directories in verbose mode by @353fc443 in https://github.com/uutils/coreutils/pull/3217

    nproc

    • Add the full support of OMP_THREAD_LIMIT by @sylvestre in https://github.com/uutils/coreutils/pull/3286
    • Improve the GNU compat by @sylvestre in https://github.com/uutils/coreutils/pull/3248
    • Make tests/misc/nproc-override.sh pass by implementing OMP_NUM_THREADS=X,Y,Z by @sylvestre in https://github.com/uutils/coreutils/pull/3296

    paste

    • Fixes and cleanup by @Dr-Emann in https://github.com/uutils/coreutils/pull/2982

    pinky

    • Fix off-by-one in GECOS parsing by @jtracey in https://github.com/uutils/coreutils/pull/3155

    pr

    • Move from getopts to clap and fix heuristic for -n by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3185

    printf

    • Update %g formatting to match GNU by @water-ghosts in https://github.com/uutils/coreutils/pull/3087
    • Fix printf sci notation round up by @nickd0 in https://github.com/uutils/coreutils/pull/3116
    • Support leading zeroes with %0n formatting by @water-ghosts in https://github.com/uutils/coreutils/pull/3070
    • Use clap default help and version by @ndd7xv in https://github.com/uutils/coreutils/pull/3067

    realpath

    • Error when resolved symlink is absolute and ENOENT by @hbina in https://github.com/uutils/coreutils/pull/3037

    seq

    • Add -f FORMAT option by @jfinkels in https://github.com/uutils/coreutils/pull/2918
    • Correct error message for zero increment by @jfinkels in https://github.com/uutils/coreutils/pull/2923
    • Better argument parsing by @HeroicKatora in https://github.com/uutils/coreutils/pull/3081

    shuf

    • accept multiple occurances of head-count argument by @DevSabb in https://github.com/uutils/coreutils/pull/3329

    sleep

    • Give usage error on invalid time interval by @jfinkels in https://github.com/uutils/coreutils/pull/3284

    sort

    • Add two missing spaces in help texts by @cakebaker in https://github.com/uutils/coreutils/pull/3287

    split

    • Add support for -e argument by @jfinkels in https://github.com/uutils/coreutils/pull/3107
    • Add support for -x option (hex suffixes) by @jfinkels in https://github.com/uutils/coreutils/pull/2981
    • Add support for -n l/NUM option to split by @jfinkels in https://github.com/uutils/coreutils/pull/2980
    • Avoid writing final empty chunk with -C by @jfinkels in https://github.com/uutils/coreutils/pull/3278
    • Catch and handle broken pipe errors by @jfinkels in https://github.com/uutils/coreutils/pull/3275
    • Correct error message on invalid arg. to -a by @jfinkels in https://github.com/uutils/coreutils/pull/3006
    • Elide all chunks when input file is empty by @jfinkels in https://github.com/uutils/coreutils/pull/3274
    • Error when --additional-suffix contains / by @jfinkels in https://github.com/uutils/coreutils/pull/3111
    • Error when num. of chunks is greater than num. of possible filenames by @ndd7xv in https://github.com/uutils/coreutils/pull/3146
    • Handle no final newline with --line-bytes by @jfinkels in https://github.com/uutils/coreutils/pull/3277
    • Add --line-bytes option by @jfinkels in https://github.com/uutils/coreutils/pull/3204
    • Add -n option by @jfinkels in https://github.com/uutils/coreutils/pull/2866
    • Implement outputting kth chunk of file by @jfinkels in https://github.com/uutils/coreutils/pull/3207
    • Add ---io-blksize parameter by @DevSabb in https://github.com/uutils/coreutils/pull/3064

    stat

    • Allow formatting of negative numbers by @snobee in https://github.com/uutils/coreutils/pull/3053

    tail

    • Fix a bug in tail [ -n | -c ] +NUM <file> by @jfinkels in https://github.com/uutils/coreutils/pull/2904
    • Don't error when following non-UTF-8 data by @jfinkels in https://github.com/uutils/coreutils/pull/2916
    • Add ---presume-input-pipe parameter by @DevSabb in https://github.com/uutils/coreutils/pull/3345
    • Support zero-terminated lines in streams by @jfinkels in https://github.com/uutils/coreutils/pull/2898

    test

    • test: fix wsl executable permission by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2965

    timeout

    • Avoid panicking for empty string by @353fc443 in https://github.com/uutils/coreutils/pull/3206
    • Fix bug in --preserve-status mode by @jfinkels in https://github.com/uutils/coreutils/pull/3249
    • Give usage error on invalid time interval by @jfinkels in https://github.com/uutils/coreutils/pull/3283
    • Produce usage error on invalid signal by @jfinkels in https://github.com/uutils/coreutils/pull/3297
    • Return 125 on invalid time interval args by @jfinkels in https://github.com/uutils/coreutils/pull/3314
    • Support long form of --kill-after arg by @jfinkels in https://github.com/uutils/coreutils/pull/3313

    touch

    • Better error messages when no args is provided by @hbina in https://github.com/uutils/coreutils/pull/3047
    • Implement - by @dgunay in https://github.com/uutils/coreutils/pull/3158
    • Show error on -h with nonexistent file by @jfinkels in https://github.com/uutils/coreutils/pull/3117

    tr

    • Expanding expansion module (added support for character classes and many more patterns) by @hbina in https://github.com/uutils/coreutils/pull/2502
    • Fix octal interpretation of repeat count string by @DevSabb in https://github.com/uutils/coreutils/pull/3178

    true

    • Make true return false less frequently by @HeroicKatora in https://github.com/uutils/coreutils/pull/3014

    truncate

    • Create non-existent file by default by @jfinkels in https://github.com/uutils/coreutils/pull/2912
    • Add a division by zero error by @jfinkels in https://github.com/uutils/coreutils/pull/2934
    • Prevent underflow when reducing size by @jfinkels in https://github.com/uutils/coreutils/pull/2945
    • Better error msg when dir does not exist by @jfinkels in https://github.com/uutils/coreutils/pull/2943
    • Change cli error return code by @shoriminimoe in https://github.com/uutils/coreutils/pull/3012
    • Error when trying to truncate a fifo by @jfinkels in https://github.com/uutils/coreutils/pull/2944

    wc

    • Fix counting files from pseudo-filesystem by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2935
    • Compute number widths using total file sizes by @ackerleytng in https://github.com/uutils/coreutils/pull/3304
    • Implement --files0-from option by @allan-silva in https://github.com/uutils/coreutils/pull/2966

    New Contributors

    @cohosh (https://github.com/uutils/coreutils/pull/2899, @g-k (https://github.com/uutils/coreutils/pull/2893), @water-ghosts (https://github.com/uutils/coreutils/pull/2956), @biomunky (https://github.com/uutils/coreutils/pull/2964), @danieleades (https://github.com/uutils/coreutils/pull/2963), @douglaz (https://github.com/uutils/coreutils/pull/2975), @Narasimha1997 (https://github.com/uutils/coreutils/pull/2947), @Toxaris (https://github.com/uutils/coreutils/pull/3020), @rahulkadukar (https://github.com/uutils/coreutils/pull/3030), @DevSabb (https://github.com/uutils/coreutils/pull/3038), @HeroicKatora (https://github.com/uutils/coreutils/pull/3014), @shoriminimoe (https://github.com/uutils/coreutils/pull/3012), @lguist (https://github.com/uutils/coreutils/pull/3011), @ndd7xv (https://github.com/uutils/coreutils/pull/3024), @slycordinator (https://github.com/uutils/coreutils/pull/3013), @RishiKumarRay (https://github.com/uutils/coreutils/pull/3023), @daissi (https://github.com/uutils/coreutils/pull/3100), @snobee (https://github.com/uutils/coreutils/pull/3053), @abhishekc-sharma (https://github.com/uutils/coreutils/pull/3041), @DestroyerXyz (https://github.com/uutils/coreutils/pull/3108), @alextibbles (https://github.com/uutils/coreutils/pull/3110), @serhansekman (https://github.com/uutils/coreutils/pull/3121), @allan-silva (https://github.com/uutils/coreutils/pull/2966), @davide125 (https://github.com/uutils/coreutils/pull/3130), @crazystylus (https://github.com/uutils/coreutils/pull/3074), @miallo (https://github.com/uutils/coreutils/pull/3145), @iovanom (https://github.com/uutils/coreutils/pull/3021), @palaster (https://github.com/uutils/coreutils/pull/3056), @xxyzz (https://github.com/uutils/coreutils/pull/3045), @omertuc (https://github.com/uutils/coreutils/pull/3084), @cakebaker (https://github.com/uutils/coreutils/pull/3202), @dgunay (https://github.com/uutils/coreutils/pull/3158), @nickd0 (https://github.com/uutils/coreutils/pull/3116), @OHNONOTAMOTH (https://github.com/uutils/coreutils/pull/3244), @bnjbvr (https://github.com/uutils/coreutils/pull/3264), @chordtoll (https://github.com/uutils/coreutils/pull/3256), @ackerleytng (https://github.com/uutils/coreutils/pull/3304)

    Full Changelog: https://github.com/uutils/coreutils/compare/0.0.12...0.0.13

    Source code(tar.gz)
    Source code(zip)
    coreutils-0.0.13-aarch64-unknown-linux-gnu.tar.gz(2.93 MB)
    coreutils-0.0.13-arm-unknown-linux-gnueabihf.tar.gz(2.95 MB)
    coreutils-0.0.13-i686-pc-windows-msvc.zip(2.35 MB)
    coreutils-0.0.13-i686-unknown-linux-gnu.tar.gz(4.44 MB)
    coreutils-0.0.13-i686-unknown-linux-musl.tar.gz(3.36 MB)
    coreutils-0.0.13-x86_64-apple-darwin.tar.gz(3.13 MB)
    coreutils-0.0.13-x86_64-pc-windows-gnu.zip(3.46 MB)
    coreutils-0.0.13-x86_64-pc-windows-msvc.zip(2.47 MB)
    coreutils-0.0.13-x86_64-unknown-linux-gnu.tar.gz(4.09 MB)
    coreutils-0.0.13-x86_64-unknown-linux-musl.tar.gz(3.15 MB)
    coreutils-musl_0.0.13_amd64.deb(2.08 MB)
    coreutils-musl_0.0.13_i686.deb(2.27 MB)
    coreutils_0.0.13_amd64.deb(2.68 MB)
    coreutils_0.0.13_arm64.deb(1.78 MB)
    coreutils_0.0.13_armhf.deb(1.79 MB)
    coreutils_0.0.13_i686.deb(3.00 MB)
  • 0.0.12(Jan 19, 2022)

    Due to problems with stdbuf, the previous release (0.0.9) required a patch to work and no binary artifacts were generated. This release fixes that issue.

    Changes

    These are selected user-facing changes since 0.0.8.

    • The minimum supported Rust version is now 1.54.
    • The version numbers of the utils, the coreutils binary, uucore and uucore_procs are now synced. Hence the jump from 0.0.9 to 0.012.
    • All utils now use UResult due to incredible work by @jfinkels, who contributed over 50 PRs for this to happen, with additional contributions by @thomasqueirozb, @Smicry and @E3uka. This change is mostly invisible to users, but does lead to more consistent error messages now and in the future.

    cp

    • Fix pre-write permission change by @kimono-koans in https://github.com/uutils/coreutils/pull/2769
    • Handle edge cases when dest is a symlink by @miDeb in https://github.com/uutils/coreutils/pull/2610

    env

    • Don't panic when name is empty by @thomasqueirozb in https://github.com/uutils/coreutils/pull/2731

    join

    • Add -z option by @jtracey in https://github.com/uutils/coreutils/pull/2880
    • Operate on bytes instead of Strings by @jtracey in https://github.com/uutils/coreutils/pull/2851

    ls

    • Add possible value for --color= by @equal-l2 in https://github.com/uutils/coreutils/pull/2738
    • Reduce binary size by removing regex crate by @kimono-koans in https://github.com/uutils/coreutils/pull/2781
    • Fix newline when only dirs in base directory by @kimono-koans in https://github.com/uutils/coreutils/pull/2853
    • Fix padding for dangling links in non-Long formats by @kimono-koans in https://github.com/uutils/coreutils/pull/2856
    • Fix device display by @kimono-koans in https://github.com/uutils/coreutils/pull/2855

    more

    • Add next-line and prev-line command by @E3uka in https://github.com/uutils/coreutils/pull/2771

    mv

    • Fix bug: Should be able to stat files, but not able to mv if source and target are the same by @kimono-koans in https://github.com/uutils/coreutils/pull/2763

    numfmt

    • Implement --suffix option by @sbentmar in https://github.com/uutils/coreutils/pull/2841

    rm

    • Allow -r flag to be specified multiple times by @kevinburke in https://github.com/uutils/coreutils/pull/2732
    • Silently accepts ---presume-input-tty by @hbina in https://github.com/uutils/coreutils/pull/2532

    seq

    • Use BigDecimal to represent floats by @jfinkels in https://github.com/uutils/coreutils/pull/2698
    • Correct fixed-width spacing for inf sequences by @jfinkels in https://github.com/uutils/coreutils/pull/2740

    split

    • Add --verbose option by @jfinkels in https://github.com/uutils/coreutils/pull/2872
    • Correct filename creation algorithm by @jfinkels in https://github.com/uutils/coreutils/pull/2859

    tail

    • Improve error handling when file not found by @jfinkels in https://github.com/uutils/coreutils/pull/2886
    • Implement -<number> flag by @Smicry in https://github.com/uutils/coreutils/pull/2747

    New Contributors

    • @kevinburke made their first contribution in https://github.com/uutils/coreutils/pull/2732
    • @palfrey made their first contribution in https://github.com/uutils/coreutils/pull/2734
    • @ybc37 made their first contribution in https://github.com/uutils/coreutils/pull/2766
    • @E3uka made their first contribution in https://github.com/uutils/coreutils/pull/2771
    • @refi64 made their first contribution in https://github.com/uutils/coreutils/pull/2778
    • @sbentmar made their first contribution in https://github.com/uutils/coreutils/pull/2841
    • @moko256 made their first contribution in https://github.com/uutils/coreutils/pull/2858

    Full Changelog: https://github.com/uutils/coreutils/compare/0.0.8...0.0.12

    Source code(tar.gz)
    Source code(zip)
    coreutils-0.0.12-aarch64-unknown-linux-gnu.tar.gz(2.77 MB)
    coreutils-0.0.12-arm-unknown-linux-gnueabihf.tar.gz(2.82 MB)
    coreutils-0.0.12-i686-pc-windows-gnu.zip(3.41 MB)
    coreutils-0.0.12-i686-pc-windows-msvc.zip(2.19 MB)
    coreutils-0.0.12-i686-unknown-linux-gnu.tar.gz(4.36 MB)
    coreutils-0.0.12-i686-unknown-linux-musl.tar.gz(3.21 MB)
    coreutils-0.0.12-x86_64-apple-darwin.tar.gz(3.00 MB)
    coreutils-0.0.12-x86_64-pc-windows-gnu.zip(3.30 MB)
    coreutils-0.0.12-x86_64-pc-windows-msvc.zip(2.32 MB)
    coreutils-0.0.12-x86_64-unknown-linux-gnu.tar.gz(4.10 MB)
    coreutils-0.0.12-x86_64-unknown-linux-musl.tar.gz(3.07 MB)
    coreutils-musl_0.0.12_amd64.deb(2.01 MB)
    coreutils-musl_0.0.12_i686.deb(2.15 MB)
    coreutils_0.0.12_amd64.deb(2.67 MB)
    coreutils_0.0.12_arm64.deb(1.70 MB)
    coreutils_0.0.12_armhf.deb(1.70 MB)
    coreutils_0.0.12_i686.deb(2.94 MB)
Owner
null
A collection of semi-useful tools made for GNU/Linux

DECTOOLS A collection of semi-useful tools made for GNU/Linux. Some may work on macOS, though functionality isn't a priority. Depenencies: python, bas

Decator 3 Jun 8, 2022
Apple dynamic HEIF wallpapers on GNU/Linux.

timewall Apple dynamic HEIF wallpapers on GNU/Linux. Features: Support for original HEIF/HEIC dynamic wallpaper files used in MacOS. Support for all s

Bazyli Cyran 15 Dec 15, 2022
An implementation of a Windows Event Collector server running on GNU/Linux.

OpenWEC OpenWEC is a free and open source (GPLv3) implementation of a Windows Event Collector server running on GNU/Linux and written in Rust. OpenWEC

CEA IT Security 15 Jun 15, 2023
Pure-Rust rewrite of the Linux fontconfig library (no system dependencies) - using ttf-parser and allsorts

rust-fontconfig Pure-Rust rewrite of the Linux fontconfig library (no system dependencies) - using allsorts as a font parser in order to parse .woff,

Felix Schütt 28 Oct 29, 2022
rewrite of hosts-creator in rust

hc-rs -> hosts-creator-rust fetch and merge multiple hosts files this is a WIP whats done fetching hosts files merging hosts files removing duplicate

null 2 Nov 20, 2022
🦀 Temporary repository for the rewrite of Smoothie in Rust

Warning As with a lot of projects, this one is also a WIP, expect broken code ?? smoothie-rs Temporary repository hosting the code for Smoothie's futu

Couleur Tweak Tips 6 Jan 22, 2023
XP rust rewrite "v8" with serenity, focused on maintainability, stability and performance.

XP v8 The official XP v8 rewrite built with Rust and serenity-rs. Contributions We're always looking for contributors! If you want to contribute, plea

XP Discord Bot 3 Aug 28, 2023
Cold Clear 2 is a modern Tetris versus bot and a complete rewrite and evolution of Cold Clear.

Cold Clear 2 Cold Clear 2 is a modern Tetris versus bot and a complete rewrite and evolution of Cold Clear. It implements the Tetris Bot Protocol for

Mark Carlson 27 Dec 28, 2022
Rust-battery - Rust crate providing cross-platform information about the notebook batteries.

battery Rust crate providing cross-platform information about the notebook batteries. Table of contents Overview Supported platforms Install Examples

svartalf 326 Dec 21, 2022
Cross-platform Rust library for coloring and formatting terminal output

Coloring terminal output Documentation term-painter is a cross-platform (i.e. also non-ANSI terminals) Rust library for coloring and formatting termin

Lukas Kalbertodt 75 Jul 28, 2022
Cross platform terminal library rust

Cross-platform Terminal Manipulation Library Crossterm is a pure-rust, terminal manipulation library that makes it possible to write cross-platform te

crossterm-rs 2.1k Jan 2, 2023
A cross platform, rust implementation for the Tegra X1 bootROM exploit

Switcheroo A CLI and GUI for the RCM BootRom exploit (Fusée Gelée exploit for Nintendo Switch) Only works on unpatched Switches: https://ismyswitchpat

Ethan Budd 35 Nov 5, 2022
Cross-platform WebView library in Rust for Tauri.

Cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux. Overview Wry connects the w

Tauri 2.2k Jan 9, 2023
Write Cross-platform application with React-like decralative UI framework and scalable ECS architecture all in Rust.

bevy_dioxus Dioxus Plugin for Bevy Write Cross-platform application with React-like decralative UI framework and scalable ECS architecture all in Rust

Junichi Sugiura 269 Dec 29, 2022
Rust-based language and runtime for cross-platform app development

Pax Pax is a cross-platform rendering engine & Rust framework for interactive graphics, animations, and GUIs. Pax extends the Rust programming languag

Pax 75 Dec 19, 2022
Safe Unix shell-like parameter expansion/variable substitution via cross-platform CLI or Rust API

Safe Unix shell-like parameter expansion/variable substitution for those who need a more powerful alternative to envsubst but don't want to resort to

Isak Wertwein 4 Oct 4, 2022
A pure Rust, cross-platform soundboard app

afx This thing is my attempt at a soundboard program. afx.mp4 Why? I tried some prior art and decided that none of the existing options fit my needs.

Andrew Kvapil 11 Dec 15, 2022
An experimental cross-platform UI framework in rust.

Cross-platform UI framework in Rust with Easy functional composasbles Flexible state management Desktop and mobile support Accessibility Native skia r

null 76 Feb 6, 2023
A cross-platform implementation of Dirman in Rust.

A Directory Manager for Neorg The neorg-dirman crate is a core module which provides a basic interface for workspaces. Workspaces are the backbone of

Neorg 9 Mar 17, 2023