Highlights
stty
is now partially implemented (#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
andsum
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 #3736
basenc
- Fix error code on wrong usage by @niyaznigmatullin in #3743
comm
- Use
NUL
if delimiter is empty by @cakebaker in #3701
cp
- Correctly copy attributes of a dangling symbolic link by @jfinkels in #3692
- Implement
--sparse
flag by @pimzero in #3766 - Make
--b=simple
protective of source by @philgebhardt in #3647 - Truncate destination when
--reflink
is set by @pimzero in #3759 - Fix
test_copy_through_dangling_symlink_no_dereference_permissions
by @niyaznigmatullin in #3789
cut
dd
- Error message of invalid args is matched with GNU by @Fuchczyk in #3831
- Fix output issues by @patricksjackson in #3610
- Only print concise byte counts if count is sufficiently large by @jfinkels in #3617
- Reuse buffer for the most common cases by @patricksjackson in #3600
- Fix broken pipe in
test_bytes_oseek_bytes_trunc_oflag
by @niyaznigmatullin in #3797
df
- Better error message when executed in a chroot without
/proc
by @lendandgit in #3602 - Fix output if input path is device name by @cakebaker in #3682
- Fix rounding behavior in humanreadable mode by @cakebaker in #3554
- Read block size from env vars by @cakebaker in #3504
- Show "total" label in correct column by @jfinkels in #3579
- Trim size header in tests by @cakebaker in #3582
- Implement the
--sync
flag for df by @anastygnome in #3592
dircolors
- Add support for stdin by @jhscheer in #3591
- Escape
'
and:
by @cakebaker in #3639 - Implement
--print-ls-colors
by @cakebaker in #3566 - Make
-b
&-c
args overridable by @cakebaker in #3569 - Update error message by @cakebaker in #3596
dirname
- Add missing
"\n\"
to usage message by @cakebaker in #3570
du
- Remove unnecessary spaces from help by @cakebaker in #3622
- Add
parse_glob
module and updatedu
to useparse_glob
by @ackerleytng in #3754
expand
- Add support for
--tabs
shortcuts by @cakebaker in #3612 - Allow multiple
tabs
args by @cakebaker in #3585 - Show error if
--tabs
arg has invalid chars by @cakebaker in #3583 - Allow specifier only with last value by @cakebaker in #3595
- Handle too large tab size by @cakebaker in #3594
- Remove empty line from error message by @cakebaker in #3577
- Simplify signature of
expand_shortcuts()
by @cakebaker in #3644
hashsum
- Isolate non-"GNU Coreutils" options by @str4d in #3593
- Fix the
-c
usage by @sylvestre in #3816
install
- Verbose messages shows ginstall as command by @sylvestre in #3651
- Fix install
-C
test by @niyaznigmatullin in #3663 - Make
install -V
show the filename by @ElijahSink in #3657
ln
- Improve error messages compatibility by @niyaznigmatullin in #3730
- Implement
-L
-P
to make tests/ln/hard-to-sym.sh work by @sylvestre in #3563 - Symlink --force, src and dst are same file by @niyaznigmatullin in #3724
ls
, dir
& vdir
- Add already listed message by @niyaznigmatullin in #3707
- Fix double quoting when color is enabled by @tertsdiepraam in #3590
- Implement
--zero
by @pimzero in #3746 - Remove trailing space when using the comma format (
-m
) by @anastygnome in #3615 - Silently ignore
-T
option by @Stonks3141 in #3718 - Forbid octal numbers for width parameter by @Ganneff in #3613
mktemp
- Change directory permission after creation by @353fc443 in #3471
- Combine
--tmpdir
and subdirectory info by @jfinkels in #3568 - Error on empty
--suffix
in some situations by @jfinkels in #3599 - Exit with status
1
on usage errors by @jfinkels in #3578 - Include suffix in error message by @jfinkels in #3551
- Only replace last contiguous block of Xs by @jfinkels in #3586
- Respect
POSIXLY_CORRECT
env var when parsing args by @weijunji in #3604 - Simplify file path parameter logic by @jfinkels in #3573
mv
numfmt
- Implement
--format
by @cakebaker in #3751 - Implement
--to-unit
&--from-unit
by @cakebaker in #3705 - Preserve trailing zeros by @cakebaker in #3764
- Don't round floats if
--from
isnone
by @cakebaker in #3742 - Reject suffix if unit is
none
by @cakebaker in #3716 - Remove duplicate default hints from help by @cakebaker in #3696
- Show
invalid suffix
error fori
suffix by @cakebaker in #3732 - Show error if
--padding
is zero by @cakebaker in #3686 - Show error if
i
suffix is missing by @cakebaker in #3713
paste
- Implement
-z
flag by @cakebaker in #3659
readlink
- Improve GNU compatibility by @niyaznigmatullin in #3826
- Symlink loop handling by @niyaznigmatullin in #3717
realpath
- Relative options by @niyaznigmatullin in #3710
- Improve symlink handling by @niyaznigmatullin in #3703
- Add
--no-symlinks
alias by @cakebaker in #3681
rm
- Fix help text mistakenly being used as the long option by @tertsdiepraam in #3670
shuf
- Add missing spaces to about text by @cakebaker in #3677
- Improve performance by @Garfield96 in #3642
sort
- Wait when SIGINT was raised for the program to finish properly by @niyaznigmatullin in #3801
sum
split
- Don't overwrite files by @andrewbaptist in #3719
- Set names for arg values by @cakebaker in #3541
- Don't skip chucking when the chunk size is a divisor of the buffer size by @resistor in #3800
stty
- Initial implementation by @tertsdiepraam in #3672
tail
- Implement
--follow
and much more by @jhscheer in #2695 - Rework platform module by @anastygnome in #3706
- Fix race condition by @jhscheer in #3798
- Reduce CPU load for polling by @jhscheer in #3618
- Reuse opened file
--follow=descriptor
by @niyaznigmatullin in #3830
tee
- Implement
-p
by @eds-collabora in #3656
touch
- Fix trailing slashes handling by @niyaznigmatullin in #3788
true
& false
tty
- Move from
libc
tonix
by @tertsdiepraam in #3838
unexpand
- Handle too large
tabs
arguments by @cakebaker in #3655 - Implement
tabs
shortcuts by @cakebaker in #3646 - Set value name of arg by @cakebaker in #3605
uniq
- Set default missing value for
group
andall-repeated
args by @cakebaker in #3667
wc
- Specialize scanning loop on settings. by @resistor in #3708
- Implement a fast path for character counting in wc. by @resistor in #3735
- Implement wc fast paths that skip Unicode decoding. by @resistor in #3740
- Fix wc gnu test suite compatibility by @anastygnome in #3688
uucore
- Create
help_section
macro by @tertsdiepraam in #3180 - Refactor, document and test
ranges
module by @tertsdiepraam in #3844 - Remove
show_error_custom_description
macrosshow_usage_error
by @tertsdiepraam in #3837 - Add backport for
Path::is_symlink()
by @jfinkels in #3697 - Fix invalid enum variant in docstring by @cakebaker in #3643
- Simplify invalid encoding handling by @tertsdiepraam in #3832
- canonicalize: Loop looking in windows by @niyaznigmatullin in #3714
General
- Netbsd / OpenBSD build fix by @devnexen in #3807
- Add more consistency in the
--help
output and declarations by @sylvestre in #3774 - dependencies: make
winapi
dependency only for Windows by @niyaznigmatullin in #3846 - tests: fix Freebsd test failures by @jhscheer in #3777
- tests: ignore failing tests for FreeBSD by @jhscheer in #3806
- Replace lazy_static with once_cell by @Sciencentistguy in #3704
- README: add badge for MSRV by @jhscheer in #3799
- Remove use of
mem::uninitialized
by @5225225 in #3808 - Remove deprecated
clap
functions by @cakebaker in #3768, #3850, #3848, #3804 & #3771
New Contributors
@weijunji (#3604), @str4d (#3593), @patricksjackson (#3600), @Ganneff (#3613), @Garfield96 (#3642), @philgebhardt (#3647), @ElijahSink (#3657), @niyaznigmatullin (#3663), @eds-collabora (#3656), @lendandgit (#3602), @resistor (#3708), @andrewbaptist (#3720), @Stonks3141 (#3718), @pimzero (#3746), @Fuchczyk (#3809), @5225225 (#3808), @jarkonik (#3784)
Full Changelog: 0.0.14...0.0.15