Highlights
- The minimum supported Rust version is now 1.60.
- Clap has been updated to version 4, bringing some changes in the formatting of help strings.
cp
has been gotten many small improvements that improve compatibility.dd
has been simplified and has better compatibility.env
now reraises signals from the child process.ls -l
now shows more information on Windows.uname
is now available for all supported platforms, instead of Unix-like platforms only.cp
andmv
can display a progress bar. This is an extension over GNU coreutils and inspired byadvcpmv
.- There have been refactors, fixes and performance improvements in many utils, see below for details.
GNU test suite compatibility
Many utils have gotten 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.16 | 0.0.17 | change |
---|---|---|---|
pass | 322 | 338 | +16 |
skip | 49 | 48 | -1 |
fail | 217 | 204 | -13 |
error | 5 | 3 | -2 |
Changes
The PR's listed below are a selection of all the contributions in this release.
General
- Bump MSRV to 1.60 by @tertsdiepraam in #3994
- Clap 4 by @tertsdiepraam in #3991
- Migrate from
winapi
towindows-sys
by @niyaznigmatullin in #4065 - Run the toybox testsuite by @sylvestre in #4222
- Use normal use declarations to import macros by @miles170 in #4151
- Add installation page to docs with package managers by @tertsdiepraam in #4048
- Test utilities
- Add
UChild
, an abstraction forstd::process::Child
by @Joining7943 in #4136 - Add possibility to set timeout for UCommand and UChild. Add
rstest
with timeout macro to dev dependencies by @Joining7943 in #4231 - Put
#[track_caller]
on assertion functions in test utils by @tertsdiepraam in #4252
- Add
uucore
chown
- Fails when
XXXX.
orXXXX:
is provided (when XXXX is numeric value) by @sylvestre in #4081
cp
- Move
copy_directory()
to its own module by @jfinkels in #3901 - Correctly copy ancestor dirs in
--parents
mode by @jfinkels in #4071 cp -i --update source existing
should not do anything and exit 0 by @sylvestre in #4078- Implement
--copy-contents
option for fifos by @jfinkels in #3978 - Remove interactive mode message on 'no' by @sssemil in #4069
- Use sparse copy on
--sparse=always
by @jfinkels in #4030 - Add progress bar by @tertsdiepraam in #3903 and improved by @djedi23 in #4179 and @ctsk in #4221
- Restrict copy through dangling symlink with
-f
by @jfinkels in #4074 - Force copying file to itself with
--backup
by @jfinkels in #3966 - Make
--preserve
use the defaults when empty by @sssemil in #4123 - Fix
cp --force --backup f f
fails on macOS by @miles170 in #4166 - Preserve hard links when target already exists by @jfinkels in #4208
- Fix
--verbose --parents
output for both files and directories by @jfinkels in #4184 - Force link between two files that exist by @jfinkels in #4213
- Remove empty line from version output by @cakebaker in #4283
- Require preserve only certain attributes by @sssemil in #4099
- Restrict permissions when copying FIFO by @jfinkels in #4211
csplit
- Rename var to simplify format strings by @cakebaker in #4266
cut
date
- Catch panic from invalid format string by @jaggededgedjustice in #4240
dd
- Allow B as a suffix for count, seek, and skip by @jfinkels in #4137
- Create Dest enum and simpler Output struct by @jfinkels in #4134
- Don't allocate buffer if count=0 by @jfinkels in #4130
- Correctly set file size when conv=sparse by @jfinkels in #4191
- Fix rendering of SI and IEC byte counts by @jfinkels in #3653
- Fix progress line if 1 byte written by @jfinkels in #4194
env
- Reraise signal from child process by @tertsdiepraam in #4011
expr
factor
- Trim the input to fix some busybox results by @sylvestre in #4215
hashsum
- Warn on file not found rather than fail by @dmatos2012 in #4064
- Enable testing
--no-names
by @tertsdiepraam and @huijeong-kim in #4088
install
ls
- Show more info in long format on Windows by @tertsdiepraam in #4014
- Use
libc::{major, minor}
to calculate device number by @SteveLauC in #4120
mktemp
- Allow default missing value by @dmatos2012 in #4091
mv
mv -i --update source existing
should not do anything and exit 0 by @sylvestre in #4078- Add progress bar by @ctsk in #4220
numfmt
- Handle negative zero values by @cakebaker in #4076
- Allow hyphen values for
--field
option by @cakebaker in #4090 - Round values if precision is 0 by @cakebaker in #4089
- Allow
-
in field list by @cakebaker in #4094 - Allow
- Add test for
--field -
(all fields) by @cakebaker in #4093
pr
- Simplify format strings by @cakebaker in #4264
- Add missing
\
before line breaks by @cakebaker in #4273
printenv
- Weird env variable names should trigger an error. by @sylvestre in #4113
pwd
- Support the env variable
POSIXLY_CORRECT
by @sylvestre in #4085
rm
seq
- Simplify format strings by @cakebaker in #4264
sleep
sort
- Allow a sort mode to appear multiple times by @tertsdiepraam in #4132
split
- Implement round-robin arg to
--number
by @jfinkels in #3281 - Match GNU semantics for missing EOF by @andrewbaptist in #4009
- Fix "backticks are unbalanced" warnings by @cakebaker in #4181
stat
- Show more info in long format on Windows by @tertsdiepraam in #4014
- Refactor by @tertsdiepraam in #4150
sum
- Fix output of about string by @cakebaker in #4274
- Fix output when using BSD sum algo (-r) by @cakebaker in #4278
tail
- Refactor handling of warnings and early exits by @Joining7943 in #4135
touch
uname
- build:
uname
is WinOS-compatible; move to 'Tier1' feature by @rivy in #4245 - change/uname ~ update and revise by @rivy in #4279
New Contributors
@huijeong-kim (#4027), @orhun (#4070), @SteveLauC (#4120), @miles170 (#4151), @djedi23 (#4179), @bruecke (#3950), @ctsk (#4221), @trasua (#4224), @TechHara (#4232)
Full Changelog: 0.0.16...0.0.17