Cross-platform Rust rewrite of the GNU coreutils
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.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 |
The PR's listed below are a selection of all the contributions in this release.
2
to 1
for GNU compat by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3922
cat
unix_socket
dependency by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3854
chcon
tests/misc/chcon-fail.sh
test by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3857
chroot
--skip-chdir
by @sylvestre in https://github.com/uutils/coreutils/pull/4004
125
, 126
or 127
for errors from chroot
itself by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3908
cp
cp-i
GNU test by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3949
-H
option by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3971
--reflink=always
on no value by @sssemil in https://github.com/uutils/coreutils/pull/3992
dd
df
factor
union
feature for smallvec
by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3928
ls
IOError
happened for argument by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3921
+FORMAT
in timestyle by @dmatos2012 in https://github.com/uutils/coreutils/pull/3988
--ignore
behavior with that of GNU ls by @ackerleytng in https://github.com/uutils/coreutils/pull/3803
mktemp
TMPDIR
environment variable by @jfinkels in https://github.com/uutils/coreutils/pull/3552
pr
chrono
to time
by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3918
rm
split
sync
tail
test
@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
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.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 |
The PR's listed below are a selection of all the contributions in this release.
basename
basenc
comm
NUL
if delimiter is empty by @cakebaker in https://github.com/uutils/coreutils/pull/3701
cp
--sparse
flag by @pimzero in https://github.com/uutils/coreutils/pull/3766
--b=simple
protective of source by @philgebhardt in https://github.com/uutils/coreutils/pull/3647
--reflink
is set by @pimzero in https://github.com/uutils/coreutils/pull/3759
test_copy_through_dangling_symlink_no_dereference_permissions
by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3789
cut
dd
test_bytes_oseek_bytes_trunc_oflag
by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3797
df
/proc
by @lendandgit in https://github.com/uutils/coreutils/pull/3602
--sync
flag for df by @anastygnome in https://github.com/uutils/coreutils/pull/3592
dircolors
'
and :
by @cakebaker in https://github.com/uutils/coreutils/pull/3639
--print-ls-colors
by @cakebaker in https://github.com/uutils/coreutils/pull/3566
-b
& -c
args overridable by @cakebaker in https://github.com/uutils/coreutils/pull/3569
dirname
"\n\"
to usage message by @cakebaker in https://github.com/uutils/coreutils/pull/3570
du
parse_glob
module and update du
to use parse_glob
by @ackerleytng in https://github.com/uutils/coreutils/pull/3754
expand
--tabs
shortcuts by @cakebaker in https://github.com/uutils/coreutils/pull/3612
tabs
args by @cakebaker in https://github.com/uutils/coreutils/pull/3585
--tabs
arg has invalid chars by @cakebaker in https://github.com/uutils/coreutils/pull/3583
expand_shortcuts()
by @cakebaker in https://github.com/uutils/coreutils/pull/3644
hashsum
-c
usage by @sylvestre in https://github.com/uutils/coreutils/pull/3816
install
-C
test by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3663
install -V
show the filename by @ElijahSink in https://github.com/uutils/coreutils/pull/3657
ln
-L
-P
to make tests/ln/hard-to-sym.sh work by @sylvestre in https://github.com/uutils/coreutils/pull/3563
ls
, dir
& vdir
--zero
by @pimzero in https://github.com/uutils/coreutils/pull/3746
-m
) by @anastygnome in https://github.com/uutils/coreutils/pull/3615
-T
option by @Stonks3141 in https://github.com/uutils/coreutils/pull/3718
mktemp
--tmpdir
and subdirectory info by @jfinkels in https://github.com/uutils/coreutils/pull/3568
--suffix
in some situations by @jfinkels in https://github.com/uutils/coreutils/pull/3599
1
on usage errors by @jfinkels in https://github.com/uutils/coreutils/pull/3578
POSIXLY_CORRECT
env var when parsing args by @weijunji in https://github.com/uutils/coreutils/pull/3604
mv
numfmt
--format
by @cakebaker in https://github.com/uutils/coreutils/pull/3751
--to-unit
& --from-unit
by @cakebaker in https://github.com/uutils/coreutils/pull/3705
--from
is none
by @cakebaker in https://github.com/uutils/coreutils/pull/3742
none
by @cakebaker in https://github.com/uutils/coreutils/pull/3716
invalid suffix
error for i
suffix by @cakebaker in https://github.com/uutils/coreutils/pull/3732
--padding
is zero by @cakebaker in https://github.com/uutils/coreutils/pull/3686
i
suffix is missing by @cakebaker in https://github.com/uutils/coreutils/pull/3713
paste
-z
flag by @cakebaker in https://github.com/uutils/coreutils/pull/3659
readlink
realpath
--no-symlinks
alias by @cakebaker in https://github.com/uutils/coreutils/pull/3681
rm
shuf
sort
sum
split
stty
tail
--follow
and much more by @jhscheer in https://github.com/uutils/coreutils/pull/2695
--follow=descriptor
by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3830
tee
-p
by @eds-collabora in https://github.com/uutils/coreutils/pull/3656
touch
true
& false
clap::ArgAction
for --help
and --version
by @jarkonik in https://github.com/uutils/coreutils/pull/3784
tty
libc
to nix
by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3838
unexpand
tabs
arguments by @cakebaker in https://github.com/uutils/coreutils/pull/3655
tabs
shortcuts by @cakebaker in https://github.com/uutils/coreutils/pull/3646
uniq
group
and all-repeated
args by @cakebaker in https://github.com/uutils/coreutils/pull/3667
wc
uucore
help_section
macro by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3180
ranges
module by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3844
show_error_custom_description
macros show_usage_error
by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3837
Path::is_symlink()
by @jfinkels in https://github.com/uutils/coreutils/pull/3697
--help
output and declarations by @sylvestre in https://github.com/uutils/coreutils/pull/3774
winapi
dependency only for Windows by @niyaznigmatullin in https://github.com/uutils/coreutils/pull/3846
mem::uninitialized
by @5225225 in https://github.com/uutils/coreutils/pull/3808
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
@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
df
has seen major improvements due to incredible work by @cakebaker.zsh
and fish
) now work properly.dir
and vdir
utilities where added as aliases for ls
and ls -l
, respectively.The PR's listed below change the user-facing behaviour of the utils. It is a selection of all the contributions in this release.
chown
cp
date
df
I*
columns by @cakebaker in https://github.com/uutils/coreutils/pull/3365
IUse%
by @cakebaker in https://github.com/uutils/coreutils/pull/3387
-h -H
shouldn't cause an error #3366 by @gmnsii in https://github.com/uutils/coreutils/pull/3414
File
column width for unicode filenames by @cakebaker in https://github.com/uutils/coreutils/pull/3429
-t
arg when specific file is provided by @cakebaker in https://github.com/uutils/coreutils/pull/3408
--block-size
by @cakebaker in https://github.com/uutils/coreutils/pull/3441
Size
column header by @cakebaker in https://github.com/uutils/coreutils/pull/3456
Used
column to 5 by @cakebaker in https://github.com/uutils/coreutils/pull/3480
Size
header for multiples of 1000 & 1024 by @cakebaker in https://github.com/uutils/coreutils/pull/3499
POSIXLY_CORRECT
is set by @cakebaker in https://github.com/uutils/coreutils/pull/3482
du
--exclude
and --exclude-from
by @sylvestre in https://github.com/uutils/coreutils/pull/3381
env
hashsum
--no-names
option from official b3sum tool by @pothos in https://github.com/uutils/coreutils/pull/3361
install
-d dir/.
to match GNU's by @sylvestre in https://github.com/uutils/coreutils/pull/3353
--strip-program=foor
fails, remove the target file by @sylvestre in https://github.com/uutils/coreutils/pull/3419
kill
ls
, dir
& vdir
--group-directories-first
by @thomasqueirozb in https://github.com/uutils/coreutils/pull/3550
dir
and vdir
utils by @gmnsii in https://github.com/uutils/coreutils/pull/3405
mkdir
mktemp
mv
mv dir1 dir2 dir2
by @sylvestre in https://github.com/uutils/coreutils/pull/3392
--target-directory
by @ilkecan in https://github.com/uutils/coreutils/pull/3529
printf
ptx
breakfile
option by @mike-kfed in https://github.com/uutils/coreutils/pull/3455
rm
none
by --interactive=never
to fix ../gnu/tests/rm/i-never.sh by @sylvestre in https://github.com/uutils/coreutils/pull/3356
seq
stat
tty
--help
is used by @sylvestre in https://github.com/uutils/coreutils/pull/3367
uname
uniq
@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
This is a big release with 276 new PR's merged!
The highlights of this release are:
cp
, dd
, df
, split
and tr
have gotten very large improvements and are much more compatible with GNU.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
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
uucore
parse_time::from_str()
by @jfinkels in https://github.com/uutils/coreutils/pull/3292
parse_time
by @jfinkels in https://github.com/uutils/coreutils/pull/3315
parse_size
to use u64 rather than usize for better 32-bit support by @omertuc in https://github.com/uutils/coreutils/pull/3084
cp
-P
by @refi64 in https://github.com/uutils/coreutils/pull/3101
-t
by @shoriminimoe in https://github.com/uutils/coreutils/pull/3027
-r
by @water-ghosts in https://github.com/uutils/coreutils/pull/3032
cp -a
with a nonexistent file by @water-ghosts in https://github.com/uutils/coreutils/pull/2960
cp -R
by @Narasimha1997 in https://github.com/uutils/coreutils/pull/3018
dd
seek=N
when destination is stdout by @jfinkels in https://github.com/uutils/coreutils/pull/2911
status=progress
rewrite once/sec by @ndd7xv in https://github.com/uutils/coreutils/pull/3078
df
--output w/o "="
doesn't expect further args by @cakebaker in https://github.com/uutils/coreutils/pull/3327
--total
option by @jfinkels in https://github.com/uutils/coreutils/pull/3197
Use%
column by @cakebaker in https://github.com/uutils/coreutils/pull/3309
-x
argument (#3257) by @cakebaker in https://github.com/uutils/coreutils/pull/3258
--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
echo
\0
by @Dr-Emann in https://github.com/uutils/coreutils/pull/2977
hashsum
head
---presume-input-pipe
parameter by @DevSabb in https://github.com/uutils/coreutils/pull/3345
install
join
-t '\0'
by @jtracey in https://github.com/uutils/coreutils/pull/2881
usize::MAX
by @jtracey in https://github.com/uutils/coreutils/pull/2882
ln
ls
--classify
flag by @abhishekc-sharma in https://github.com/uutils/coreutils/pull/3041
--quoting-style=shell-escape
by @sylvestre in https://github.com/uutils/coreutils/pull/3317
-aA
are provided, the order matters by @sylvestre in https://github.com/uutils/coreutils/pull/3285
mkdir
mkdir -p foo/.
by @sylvestre in https://github.com/uutils/coreutils/pull/3311
nproc
OMP_THREAD_LIMIT
by @sylvestre in https://github.com/uutils/coreutils/pull/3286
OMP_NUM_THREADS=X,Y,Z
by @sylvestre in https://github.com/uutils/coreutils/pull/3296
paste
pinky
pr
-n
by @tertsdiepraam in https://github.com/uutils/coreutils/pull/3185
printf
%g
formatting to match GNU by @water-ghosts in https://github.com/uutils/coreutils/pull/3087
%0n
formatting by @water-ghosts in https://github.com/uutils/coreutils/pull/3070
realpath
seq
-f FORMAT
option by @jfinkels in https://github.com/uutils/coreutils/pull/2918
shuf
sleep
sort
split
-e
argument by @jfinkels in https://github.com/uutils/coreutils/pull/3107
-x
option (hex suffixes) by @jfinkels in https://github.com/uutils/coreutils/pull/2981
-n l/NUM
option to split by @jfinkels in https://github.com/uutils/coreutils/pull/2980
-C
by @jfinkels in https://github.com/uutils/coreutils/pull/3278
-a
by @jfinkels in https://github.com/uutils/coreutils/pull/3006
--additional-suffix contains
/
by @jfinkels in https://github.com/uutils/coreutils/pull/3111
--line-bytes
by @jfinkels in https://github.com/uutils/coreutils/pull/3277
--line-bytes
option by @jfinkels in https://github.com/uutils/coreutils/pull/3204
-n
option by @jfinkels in https://github.com/uutils/coreutils/pull/2866
---io-blksize
parameter by @DevSabb in https://github.com/uutils/coreutils/pull/3064
stat
tail
tail [ -n | -c ] +NUM <file>
by @jfinkels in https://github.com/uutils/coreutils/pull/2904
---presume-input-pipe
parameter by @DevSabb in https://github.com/uutils/coreutils/pull/3345
test
test
: fix wsl executable permission by @tertsdiepraam in https://github.com/uutils/coreutils/pull/2965
timeout
--preserve-status
mode by @jfinkels in https://github.com/uutils/coreutils/pull/3249
125
on invalid time interval args by @jfinkels in https://github.com/uutils/coreutils/pull/3314
--kill-after
arg by @jfinkels in https://github.com/uutils/coreutils/pull/3313
touch
-
by @dgunay in https://github.com/uutils/coreutils/pull/3158
-h
with nonexistent file by @jfinkels in https://github.com/uutils/coreutils/pull/3117
tr
true
truncate
wc
--files0-from
option by @allan-silva in https://github.com/uutils/coreutils/pull/2966
@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
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.
These are selected user-facing changes since 0.0.8.
coreutils
binary, uucore
and uucore_procs
are now synced. Hence the jump from 0.0.9 to 0.012.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
env
join
-z
option by @jtracey in https://github.com/uutils/coreutils/pull/2880
ls
--color=
by @equal-l2 in https://github.com/uutils/coreutils/pull/2738
more
mv
numfmt
--suffix
option by @sbentmar in https://github.com/uutils/coreutils/pull/2841
rm
-r
flag to be specified multiple times by @kevinburke in https://github.com/uutils/coreutils/pull/2732
seq
BigDecimal
to represent floats by @jfinkels in https://github.com/uutils/coreutils/pull/2698
split
--verbose
option by @jfinkels in https://github.com/uutils/coreutils/pull/2872
tail
-<number>
flag by @Smicry in https://github.com/uutils/coreutils/pull/2747
Full Changelog: https://github.com/uutils/coreutils/compare/0.0.8...0.0.12