Releases: uutils/coreutils
0.0.28
📦 Rust Coreutils 0.0.28 Release:
We are thrilled to announce the release of Rust Coreutils 0.0.28! This release brings significant improvements in compatibility and stability, continuing our journey to provide a robust alternative to GNU Coreutils.
Highlights:
- Improved Compatibility:
- Passing GNU tests increased to 476 (+21 compared to 0.0.27).
- Failing tests reduced to 94 (-19 compared to 0.0.27).
- Contributions: This release was made possible by the hard work of 37 contributors, including 16 newcomers.
- Enhanced Performance: Updates and optimizations in utilities like
cksum
,mkdir
, andtr
.
GNU Test Suite Compatibility:
Here’s how version 0.0.28 compares to the previous release:
Result | 0.0.27 | 0.0.28 | Change 0.0.27 to 0.0.28 | % Total 0.0.27 | % Total 0.0.28 | % Change 0.0.27 to 0.0.28 |
---|---|---|---|---|---|---|
Pass | 455 | 476 | +21 | 74.35% | 77.65% | +3.30% |
Skip | 44 | 43 | -1 | 7.19% | 7.01% | -0.18% |
Fail | 113 | 94 | -19 | 18.46% | 15.34% | -3.12% |
Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
Call to Action:
Support our work by sponsoring us on GitHub! Your contributions help maintain our infrastructure and enable faster iterations. Sponsor us here.
For more details and to download the latest release, visit our website: https://uutils.github.io.
What's Changed
GNU Test Suite Compatibility
basenc
- Perform faster, streaming encoding by @andrewliebenow in #6719
cat
- Fix issue #6248 by @OshinoShinobu-Chan in #6763
- Use
write_end_of_line()
to avoid duplicate code by @cakebaker in #6764 - Fix issue #5186 by adding explicit flush by @gim913 in #5256
cksum
/ hashsum
- Add support for
--check
with base64 and other improvements by @sylvestre in #6452 - Accept non-UTF-8 filenames by @BenWiederhake in #6575
- Support commented lines in checksum files by @RenjiSann in #6782
- Fix error handling by @Luv-Ray in #6801
- Implement
-z
/--zero
by @RenjiSann in #6815 - Read the next file when the first is missing or invalid by @sylvestre in #6524
- Support non-UTF-8 input in checksum files by @RenjiSann in #6793
cp
- Fix preserved hardlinks not being reported in
--verbose
mode by @djedi23 in #6496 - Improve GNU test case compatibility for
part-symlink
by @matrixhead in #6588 - Treat an empty file name as a non-existing file by @samueltardieu in #6683
- Show mode if the target does not have
S_IWUSR
by @andrewliebenow in #6700 - Fix possible OOM and partial writes with large files by @neyo8826 in #6694
- Fix symlink-overwrite error priority by @Luv-Ray in #6586
- Normalize path when checking for duplicate source by @matrixhead in #6825
- Add argument count validation for
cp
by @LoricAndre in #6690
date
- Fix timezone error when setting UTC time by @CausingBrick in #6503
- Add test for
date
by @Its-Just-Nans in #6526 - Add tests for issue #6392 by @RenjiSann in #6471
dd
- Fix issue #5905 (different error message from GNU) by @just-an-engineer in #6622
dircolors
- Optimize integer and string operations required by clippy nightly by @BenWiederhake in #6636
echo
- Handle multibyte escape sequences by @andrewliebenow in #6803
- Remove double negation by @cakebaker in #6810
hashsum
- When checksum file is untagged, detect the size by @sylvestre in #6499
- On Windows, check in binary mode by default and allow
--binary
/--text
by @Pistonight in #6808 - Return error when only
--strict
or--quiet
is given by @howjmay in #6584
hostname
join
- Add support for multibyte separators by @jtracey in #6736
- Avoid extra allocations when using
-i
by @jtracey in #6774
ls
- Adjust code for
--dired
after GNU v9.5 changes by @sylvestre in #6144 - Fix GNU test case
color-norm
by @matrixhead in #6481 - Fix error in subdirectory output by @CausingBrick in #6521
- Fix
dired
option (-D
) not outputting datetime and parent directory byte offsets by @pyoky in #6538 - Use tab when
-CF
is passed (closes #5396) by @sylvestre in #6528 - Fix GNU test case
color-clear-to-eol
by @matrixhead in #6507 - Refactor
parse_width
function by @matrixhead in #6510 - Add test for
ls
by @Its-Just-Nans in #6527 - Fix GNU test case
color-ext
by @matrixhead in #6537 - Fix quoting for directory names with a colon (
:
) in recursive mode and patch thequote-align
GNU test by @RenjiSann in #6559 - Change
unwrap_or
andor
to lazy-evaluatedunwrap_or_else
andor_else
by @AnirbanHalder654322 in #6609
ln
- Allow final destination directory when using
-nf
by @jansheikkinen in #5975
mkdir
- Add
acl
permissions inheritance for subdirectories by @AnirbanHalder654322 in #6676 - Prevent mode change of existing directories by @samueltardieu in #6682
- Require arguments for
mkdir
andrmdir
by @sgvictorino in #6790 - Emit error when path is empty by @andrewliebenow in #6802
- Allow
--parent
to be provided more than once by @DaringCuteSeal in #6831
mv
- Fix GNU test case
to-symlink
by @matrixhead in #6578 - Clean up inter-partition copying test code by @matrixhead in #6583
- Adjust error message to pass
tests/mv/mv-exchange.sh
by @sylvestre in #6641 - Fix GNU test case
mv-n
compatibility by @matrixhead in #6599 - Fix GNU test case
dup-src
compatibility by @matrixhead in #6837
od
- Allow trailing characters in address radix by @andrewliebenow in #6674
- Prevent panic on empty address radix by @andrewliebenow in #6675
paste
- Permit the delimiter list to be empty by @andrewliebenow in #6714
printf
- Check precision before writing to stdout (fix #1879) by @Kev1n8 in #6511
- Remove unused argument name from help by @andrewliebenow in #6807
- Fix extra padding by @Kev1n8 in #6548
- Delete unused file by @BenWiederhake in #6758
runcon
- Adjust error message for
runcon
andstdbuf
to passtests/misc/invalid-opt.pl
by @sylvestre in #6657 - Improve help message for
runcon
by @cakebaker in #6680
sort
- Improve error management with
--batch-size
by @sylvestre in [#6535](https://gi...
0.0.27
📦 Rust Coreutils 0.0.27 Release:
We are excited to announce the release of Rust Coreutils 0.0.27! This version continues to improve the compatibility.
This update adds +8 GNU passing tests compared to version 0.0.26 and therefore reduces the failing tests by -8.
This release saw contributions from 21 developers, including 9 newcomers.
We encourage you to support our project by sponsoring us on GitHub. Your sponsorship helps us maintain and enhance our infrastructure, such as GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
For more details and to download the latest release, visit our website at https://uutils.github.io.
What's Changed
GNU Test Suite Compatibility
Here’s how version 0.0.27 fares in comparison to the previous release:
Result | 0.0.26 | 0.0.27 | Change 0.0.26 to 0.0.27 | % Total 0.0.26 | % Total 0.0.27 | % Change 0.0.26 to 0.0.27 |
---|---|---|---|---|---|---|
Pass | 447 | 455 | +8 | 73.04% | 74.35% | +1.31% |
Skip | 44 | 44 | 0 | 7.19% | 7.19% | 0.00% |
Fail | 121 | 113 | -8 | 19.77% | 18.46% | -1.31% |
Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
cksum
- Improve the GNU compat by @sylvestre in #6256
cksum/hashsum
- refactor the common code. by @sylvestre in #6431
- enable
sum
feature forchecksum
feature by @cakebaker in #6450 - Implement check (Closes: #5705) by @sylvestre in #6390
- Improve the blake2 --tag export by @sylvestre in #6412
cp
- Added overwrite detection for existing symlinks by @AnirbanHalder654322 in #6380
- Changed
/sys/kernel/address_bits
to/sys/kernel/profiling
in test_cp by @AnirbanHalder654322 in #6294 - use
#[ignore]
to disable tests by @cakebaker in #6395 - remove
target_os = "macos-12"
by @cakebaker in #6405 - link-deref gnu test fix by @matrixhead in #6378
- parent-perm-race gnu fix by @matrixhead in #6403
- gnu test case preserve-mode fix by @matrixhead in #6432
cp-parents
test case by @matrixhead in #6446- remove panics in tests by @cakebaker in #6293
df
- fix size column padding by @Qelxiros in #6433
- fix incorrect test & add another test by @cakebaker in #6437
env
- adds --ignore-signal by @Walid-Kh in #6377
fmt
- accept repeated arguments by @BenWiederhake in #6355
- value of minlength should not be negative by @ahmadabd in #6359
- fix error priority, make goal-errors more helpful by @BenWiederhake in #6362
- use
get_matches_from()
instead oftry_get_matches_from()
in tests by @cakebaker in #6374
id
- Handle repeated flags, recognize conflict between pretty-print and passwd file-entry by @BenWiederhake in #6288
kill
ls
- fix quoting alignment, add tests for default quoting style in TTY and quoting alignment by @RenjiSann in #6402
- Fix ls: panicking on dangling symlink with
--color=auto -l
by @AnirbanHalder654322 in #6346
od
- use
u64::MAX
instead ofmax_value()
by @cakebaker in #6477 - use TestScenario, avoid spamming /tmp on failure by @BenWiederhake in #6287
pinky
- use UTC if offset can't be determined by @cakebaker in #6414
seq
shuf
sort
tail
- use
#[ignore]
to disable tests by @cakebaker in #6388
tr
- calculate complement set early by @jalil-salame in #6340
- Refuse to translate if set2 contains more than one unique characters and set1 contains a character class by @cvonelm in #6472
- A [:lower:]/[:upper:] in set2 must be matched in set1 by @cvonelm in #6445
- disallow classes besides [:upper:]/[:lower:] in set2 when translating by @cvonelm in #6424
- Refuse to translate if set1 is longer than set2 and set2 ends in a character class by @cvonelm in #6470
uptime
- add
-s
/--since
ofuptime
to extensions by @cakebaker in #6391 - Support files in uptime by @AnirbanHalder654322 in #6400
utmpx
- use UTC if offset can't be resolved by @cakebaker in #6413
Misc
- clippy: fix warnings introduced with Rust 1.78 by @cakebaker in #6330
- Disable clippy::assigning_clones on OpenBSD by @lcheylus in #6356
- clippy: fix warnings introduced by Rust 1.79 by @cakebaker in #6468
- tests: fix some clippy warnings by @sylvestre in #6430
- Disabling compare_xattrs cp and mv related tests on OpenBSD by @jadijadi in #6368
- src/uucore/src/lib/features/fsext.rs: Add magic for bcachefs by @phedders in #6438
- tests: remove all
#[cfg(not(target_pointer_width = "128"))]
by @cakebaker in #6418 - Cargo.toml: enable uucore's
mode
feature by @cakebaker in #6421 - uucore: remove support for Bitrig by @cakebaker in #6383
- everywhere: cleanup unused/unnecessary spellcheck-disabling by @BenWiederhake in #6295
- multicall: add --list to list all utils by @tertsdiepraam in #6251
- config terminal simulation for specific stdios only by @cre4ture in #6125
- fix code coverage windows by @piotrkwiecinski in #6332
CI
- macos-latest is now arm64 by @thesayyn in #6425
- stdbuf: rename
dragonflybsd
todragonfly
by @cakebaker in #6384 - deny.toml: remove hashbrown, update comment by @cakebaker in #6373
- show-utils.sh: fix jq query to get coreutils deps by @lcheylus in #6485
- deny.toml: allow BSL-1.0 as license by @cakebaker in #6427
Documentation
- docs: describe extensions of id by @cakebaker in #6289
Testing
- tests: fix multi-call test precondition by @BenWiederhake in #6279
- Disabling xattrs tests on OpenBSD by @jadijadi in #6349
- util: added umask manipulation by @matrixhead in #6404
- show-utils.sh: fix jq query to get coreutils deps by @lcheylus in #6300
Dependencies
- Bump
itertools
and fix use of deprecated function by @cakebaker in #6455 - Bump
fts-sys
andselinux-sys
by @cakebaker in #6339 - Bump bigdecimal from 0.4.0 to 0.4.2 by @cakebaker in #6285
ls
: upgrade uutils-term-grid to 0.5 by @tertsdiepraam in #5485- Downgrade
libc
to0.2.153
by @cakebaker in #6408 - fix(deps): update rust crate data-encoding to 2.6 by @renovate in #6283
- fix(deps): update rust crate data-encoding-macro to 0.1.15 by @renovate in #6282
- fix(deps): update rust crate cpp to 0.5.9 by @renovate in #6325
- fix(deps): update r...
0.0.26
📦 Rust Coreutils 0.0.26 Release:
We are happy to announce the release of Rust Coreutils 0.0.26! This version comes with several significant advancements, including the initial support for AIX, ensuring broader compatibility and reach. Despite the short period since our last release, we've managed to fix numerous compatibility issues, further aligning our tools with the latest GNU testsuite, now version 9.5.
This update adds +10 GNU passing tests compared to version 0.0.25.
New in this Release:
- Beginning of the AIX Support
- Updated GNU Reference: We've updated our testsuite to GNU Coreutils 9.5.
- Improved Compatibility: Thanks to the community's efforts, we've addressed several compatibility issues, pushing our pass rate even higher.
- Automated Builds: Binaries for the latest release are once again automatically generated.
This release saw contributions from 20 developers, including 12 newcomers.
We encourage you to support our project by sponsoring us on GitHub. Your sponsorship helps us maintain and enhance our infrastructure, such as GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
For more details and to download the latest release, visit our website at https://uutils.github.io.
GNU Test Suite Compatibility
Here’s how version 0.0.26 fares in comparison to the previous release:
Result | 0.0.25 | 0.0.26 | Change 0.0.25 to 0.0.26 | % Total 0.0.25 | % Total 0.0.26 | % Change 0.0.25 to 0.0.26 |
---|---|---|---|---|---|---|
Pass | 437 | 447 | +10 | 72.35% | 73.04% | +0.69% |
Skip | 50 | 44 | -6 | 8.28% | 7.19% | -1.09% |
Fail | 117 | 121 | +4 | 19.37% | 19.77% | +0.40% |
Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
Full Changelog: 0.0.25...0.0.26
What's Changed
cksum
- Adding -b as the short form of --base64 by @jadijadi in #6187
- Fix code formatting by @cakebaker in #6192
comm
- Handle duplicated flags and output-delimiter correctly by @BenWiederhake in #6112
cp
- remove unnecessary calls of
touch()
in tests by @cakebaker in #6263 - gnu "same-file" test case compatibility by @matrixhead in #6190
- handle update prompt with and without interactive mode enabled by @BenWiederhake in #6207
- Swap
cp
’s short-r
and alias-R
recursive options by @LucasLarson in #6231 - Fix the debug results in
cp --debug
by @AnirbanHalder654322 in #6220
csplit
- Handle repeated args, fix remainder after error by @BenWiederhake in #6114
cut
date
- Fix
date -f dates.txt is failing
by @mvo5 in #6148 - Support
-f -
to read from stdin by @mvo5 in #6160 - Remove unimplemented example by @LucasLarson in #6135
dd
- Handle SIGUSR1 directly. not just every 1sec by @cre4ture in #6025
- Fix flaky test_null_stats by @BenWiederhake in #6204
dirname
- Accept repeated flag by @BenWiederhake in #6151
dircolors
- Accept repeated flags by @BenWiederhake in #6150
du
env
- argv0 overwrite possibility (unix only) - fixes new gnu test version by @cre4ture in #6154
- Remove dependency on GNU env in tests by @cakebaker in #6259
- Add missing space to help output by @cakebaker in #6260
hashsum
- Implement the ignore-missing option by @sylvestre in #6230
- Improve the error management to match GNU by @sylvestre in #6252
head
kill
- Support multiple signals for --list by @m-haisham in #6210
- Don't show
EXIT
with--list
by @cakebaker in #6222 - Return 1 and gnu style stderr in case of no pid by @jadijadi in #6225
- Print --table as vertical by @m-haisham in #6216
- Accept all cases for signal names by @m-haisham in #6229
- Print signals vertically when using --list flag by @m-haisham in #6201
ls
- Compute the correct exit code by @BenWiederhake in #6173
mktemp
- Adjust the error message to match 9.5 by @sylvestre in #6146
more
- Use dev tty instead of mio to avoid panics by @apatrushev in #6262
mv
od
- Remove
print_width_block
field ofOutputInfo
by @cakebaker in #6239
seq
- Removed zero-padding of string when parsing with parse_exponent_no_decimal by @maxer137 in #6185
- Add the unit test even if they are failing for now by @sylvestre in #6236
tail
- Allow multiple usage of --pid to match upstream (regression of … by @sylvestre in #6147
tee
- Correctly handle read-only files, avoid unnecessary wrapping by @BenWiederhake in #6157
tr
- Fix "space" class, test "blank" class for order by @BenWiederhake in #6141
uniq
- Print version and help on stdout again by @tertsdiepraam in #6123
wc
- Count ASCII control characters as word characters by @BenWiederhake in #6199
Misc
- Initial AIX support by @ecnelises in #6209
- Fix warning when executing Clippy by @bin-ly in #6246
- tests: fix deprecation warning
timestamp_subsec_nanos()
by @mvo5 in #6149 - tests: test multi-call logic by @BenWiederhake in #6198
- all: Undo custom exit codes by @BenWiederhake in #6162
- Cargo.toml: remove unnecessary caret by @cakebaker in #6128
- Fixing the build issue on NetBSD by @jadijadi in #6268
- Try to release 0.0.26 to see if the artifacts are generated by @sylvestre in #6131
- Fix clippy warning match_bool by @sylvestre in #6184
- Minor nits in the tests by @sylvestre in #6258
### Security
- fuzz: also generate the empty string sometimes by @BenWiederhake in #6176
- add env & tr fuzzers + small improvs by @sylvestre in #6167
- seq: fuzz PreciseNumber::from_str by @sylvestre in #6183
Documentation
- Doc: Explain that it is allowed to look at OpenBSD or Apple sources by @sylvestre in #6140
- Readme: fix links to docs by @cakebaker in #6189
CI
- upgrade to GNU coreutils 9.5 as ref by @sylvestre in #6139
- don't upgrade packages - msys2-runtime upgrade fails in CI by @cre4ture in #6153
- fix macos ci instability on clippy with retry by @cre4ture in #6156
- CI: change publish step condition by @tertsdiepraam in #6181
- CI fix: use features arg for stable and nightly build by @cre4ture in #6224
- feat(github): add CICD job build_programs_individually by @gierens in #6212
- show-utils.sh: fix jq query by @tertsdiepraam in #6120
- ci: use
-pcoreutils
when running clippy by @cakebaker in #6247 - fix/CI ~ re-enable artifact deployment for version t...
0.0.25
📦 Rust Coreutils 0.0.25 Release:
We're thrilled to announce version 0.0.25. We added +15 GNU passing tests since our last update!
More and more programs have a full compatibility with the GNU testsuite.
The current list is: base64, basename, cat, chgrp, chmod, chown, dirname, expand, fold, groups, join, ln, mktemp, nice, nl, nproc, paste, pathchk, printenv, realpath, shuf, sleep, split, sync, unexpand, uniq, wc and yes.
This release saw contributions from 31 developers, including 14 newcomers.
Some of this work has been supported by the Sovereign Tech Fund.
If you want to help us, please consider sponsoring on GitHub. This helps us use better tools like GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
Visit our website at https://uutils.github.io.
GNU test suite compatibility
Here's how version 0.0.25 compares to the previous release - running GNU/Coreutils 9.4:
Result | 0.0.24 | 0.0.25 | Change 0.0.24 to 0.0.25 | % Total 0.0.24 | % Total 0.0.25 | % Change 0.0.24 to 0.0.25 |
---|---|---|---|---|---|---|
Pass | 422 | 437 | +15 | 69.87% | 72.35% | +2.48% |
Skip | 50 | 50 | 0 | 8.28% | 8.28% | 0.00% |
Fail | 132 | 117 | -15 | 21.85% | 19.37% | -2.48% |
Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
What's Changed
base32/base64/basenc
- implement and test proper flag parsing by @BenWiederhake in #6007
basename
- Fix handling of repeated flags/arguments by @BenWiederhake in #6018
cat
- Handle all flags correctly by @BenWiederhake in #6034
chcon
- Handle repeated flags and overrides between --no-XXX and --XXX by @BenWiederhake in #6039
chmod
- Fix chmod -c --reference reporting when no change is made by @mtimaN in #6016
- Fix handling of preserve root flag and error messages by @BenWiederhake in #6042
cksum
- permit repeated flags, handle overrides correctly, implement base64 output by @BenWiederhake in #6041
- enable encoding feature by @cakebaker in #6095
cp
- remove lint exceptions by @kralo in #5891
- improve the support of --attributes-only by @sylvestre in #6051
- Split the copy_file function a bit by @sylvestre in #6056
- fix flaky test test_cp_arg_interactive_update, document adjacent bug by @BenWiederhake in #6020
csplit
- use
printf
functionality fromuucore
by @tertsdiepraam in #5958 - adjust the error message to match GNU's by @sylvestre in #6090
- remove
crate_name
attribute by @cakebaker in #6091
cut
- set exit code to 1 if directory is specified by @cakebaker in #5886
- refactor delimiters OsString handling by @zhitkoff in #6072
- allow non utf8 characters for delimiters by @zhitkoff in #6037
- show error for multiple mode args (
-b
,-c
,-f
) by @wolimst in #5962
dd
- parse big numbers and return u64::MAX by @jfinkels in #5901
- fail on missing number in count, fix #5904 by @sudhackar in #5920
- misc gnu test by @matrixhead in #6084
- fix flaky test_final_stats_unspec by @BenWiederhake in #6001
- treat arg as bytes if it contains a 'B' by @matrixhead in #6050
- fix gnu test
not-rewound.sh
by @cre4ture in #6088
df
du
- adapt error message to match GNU's by @cakebaker in #5916
- adjust one of the GNU error message as ours is better by @sylvestre in #6085
echo
- do not infer long args by @tertsdiepraam in #5911
env
- support string args by "-S", "-vS" or "--split-strings" by @cre4ture in #5801
- Fix/findings for env string args by @cre4ture in #6105
expand
- Continue work when one of given files doesn't exist by @D9nni in #5873
- make tab explicit in test by @cakebaker in #5875
- do not ignore invalid UTF-8 by @tertsdiepraam in #5987
factor
- remove clippy exceptions by reformatting "unreadable literals" by @kralo in #5890
- rename input parameter by @kralo in #5892
- enable a debug_assert! statement by @cakebaker in #5995
fmt
- Make sure the goal is always positive when given a positive width by @sargas in #6094
- fail if goal is bigger than default width by @cakebaker in #6096
hashsum
- also escape/unescape files with checks by @sylvestre in #5868
install
ln
- fix help text by @cakebaker in #5977
ls
- fix "unused variable" warning on Redox by @cakebaker in #5931
- test_ls_allocation_size fails on filesystem
f2fs
(android) by @cre4ture in #6076 - rename
chrono::Duration
tochrono::TimeDelta
by @cakebaker in #5970
more
- Disable raw mode before exiting if a panic occurs by @Ideflop in #5914
- Implement argument pattern by @Ideflop in #5966
- handle errors with multiple files by @Ludmuterol in #4997
- fix two incorrect tests by @cakebaker in #6104
numfmt
- remove clap workaround by @tertsdiepraam in #5986
od
- disable failing test_od::test_f16() for android CI by @cre4ture in #5984
- re-enable f16 test with newer AVD system image by @cre4ture in #6099
printf
- pad unsigned numbers properly by @tertsdiepraam in #5955
- Make operate on bytes instead of strings by @RenjiSann in #6028
- '%0c' and '%0s' should fail by @RenjiSann in #6032
pr
- use chrono instead of time in tests #5972 by @biplab5464 in #5973
- Check the correct timestamp in test_with_pr_core_utils_tests by @BenWiederhake in #6010
- relax some error messages by @sylvestre in #6087
seq
- fix about text not found by @tertsdiepraam in #5949
shuf
- Treat empty file as zero elements instead of one empty string by @BenWiederhake in #5979
- Refuse repeating zero lines by @BenWiederhake in #6011
- include all echo args, not just the last by @BenWiederhake in #5978
- Fix OOM crash for huge number ranges by @BenWiederhake in #5980
- add missing word to BENCHMARKING.md by @cakebaker in #5996
- Fix off-by-one errors in range handling by @BenWiederhake in #6014
- treat -e as a flag, not as a multi-value arg by @BenWiederhake in #5989
- Do not read input when -n0 is given by @BenWiederhake in #5990
sort
- fix incorrectly placed "}" in test by @cakebaker in #6064
split
- fix android memory kill in split by @cre4ture in #5940
- fix error message shown if file doesn't exist by @cakebaker in #5909
stat
- Refactor to remove #[allow(clippy::cognitive_complexity)] #5881 by @biplab5464 in https://github.com/uutils/coreutils/pu...
0.0.24
📦 Rust Coreutils 0.0.24 Release:
We've got +29 more GNU tests passing than in our last release! We are getting closer to version 1.0: each test passed is a step forward in ensuring that our users have a reliable and robust set of utilities that align closely with GNU standards.
49 developers contributed to this release (28 new contributors started with this release).
A key highlight of this release is the expansion of support to new platforms and operating systems. Notably, the software has been ported to sparc64, OpenBSD, and Redox, broadening its usability across different system architectures and environments. This marks a significant step in making Rust Coreutils more versatile and accessible to a wider range of users and developers.
In addition to these expansions, the release has also focused on the integration of more fuzzing techniques, including differential fuzzing and OSS Fuzz integration.
We also contributed to the GNU implementation to improve their test coverage.
We would like to thank to the support the Sovereign Tech Fund for their support (more details later).
Visit our website at https://uutils.github.io.
If you want to help us, please consider sponsoring on GitHub. This helps us use better tools like GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
GNU test suite compatibility
Here's how version 0.0.24 compares to the previous release - running GNU/Coreutils 9.4:
Result | 0.0.23 | 0.0.24 | Change 0.0.23 to 0.0.24 | % Total 0.0.23 | % Total 0.0.24 | % Change |
---|---|---|---|---|---|---|
Pass | 393 | 422 | +29 | 65.07% | 69.87% | +4.80% |
Skip | 49 | 50 | +1 | 8.11% | 8.28% | +0.17% |
Fail | 160 | 132 | -28 | 26.49% | 21.85% | -4.64% |
Error | 2 | 0 | -2 | 0.33% | 0.00% | -0.33% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
What's Changed
cat
cksum
- Stops when one of given files doesn't exist #5809 by @biplab5464 in #5820
- Made return an error if the algorithm blake2b is used on a directory. by @Ato2207 in #5804
- Add --raw argument by @D9nni in #5803
- Made return an error if used on a directory. by @Ato2207 in #5822
- Add --length argument for the blake2b algorithm by @DitherWither in #5749
cp
- Improve error msg if -r is not specified by @cakebaker in #5555
- Debug with --update=none should show 'skipped' by @sylvestre in #5701
- --remove-destination: don't fail if destination is hardlink to source by @cakebaker in #5431
- cp/mv/ln: add support for the "will not overwrite just-created" by @sylvestre in #5699
- --link: don't fail if destination is hardlink to source by @cakebaker in #5484
- Fix backup of destination symlink by @cakebaker in #5731
- Update a GNU test error check - tests/fail-perm.sh by @sylvestre in #5784
- cp/mv: manage with trailing slash in target by @sylvestre in #5780
- Show no "same file" error for
--link a a
by @cakebaker in #5762 - Backup dest symlink linking to source by @cakebaker in #5739
- --preserve should keep xattr by @sylvestre in #5834
- Remove the tests/link-heap.sh workaround by @sylvestre in #5800
- Show error if source and destination are same file by @cakebaker in #5757
- Disable a test failing on freebsd by @sylvestre in #5750
- Adapt warning if source is used more than once by @cakebaker in #5745
- tests, tests/test: Don't attempt to set sticky file bit on FreeBSD by @n1000 in #5602
dd
- Buffer partial blocks in the output writer by @jfinkels in #4545
- Skip two tests without "printf" feature by @cakebaker in #5607
- /chroot: improve the skip message (not root) by @sylvestre in #5734
df
- Fix rounding issue in test by @cakebaker in #5532
dircolors
- Move the static long string into structures. by @sylvestre in #5611
du
- Start printing output immediately by @ceteece in #5552
- Disable test on Android by @cakebaker in #5615
- Cleanup by @tertsdiepraam in #5623
- Fix issue with dereference in test by @cakebaker in #5625
- Test behavior with POSIXLY_CORRECT set by @cakebaker in #5530
- Call unused _du_basics() in test_du_basics() by @cakebaker in #5503
- Implement files0-from by @sylvestre in #5721
- Simplify file creation in tests by @cakebaker in #5727
- Show error for nul names with
--files0-from
by @cakebaker in #5772 - Ignore duplicate names with
--files0-from
by @cakebaker in #5775
echo
- Make
-e
and-E
override each other by @tertsdiepraam in #5635
expand
- Fix duplicate flags by @allaboutevemirolive in #5684
expr
- Check prefix operation by @Luv-Ray in #5566
- Different stderr with
"56" "substr"
by @pawelngei in #5559 - Adapt error messages, revert most of #5559 by @cakebaker in #5578
- Refactor AST and parsing by @tertsdiepraam in #5586
- Fix issue 5576 (regex matching bug) by @cobaweel in #5577
- Optimizing for integer values by @Arp-1 in #5614
- Coerce to string before comparing values by @tertsdiepraam in #5673
fmt
- A collection of small refactors by @tertsdiepraam in #5592
- Rename
pfxind_end
->prefix_indent_end
by @cakebaker in #5593 - Remove crash! macro by @Arp-1 in #5589
hashsum
- Remove usage of crash! macro by @GDYendell in #5581
- When the filename contains some special chars, escape them by @sylvestre in #5865
head
- -c allocate memory as needed by @sylvestre in #5704
- head_backwards for non-seekable files like /proc/* or fifos (named pipes) by @cre4ture in #5732
- Disable some tests on Android by @cakebaker in #5813
- Fix clippy warnings in tests by @cakebaker in #5838
hostname
install
- Fix strip program stdout and destination hyphen handling #5718 by @cre4ture in #5848
- Support when a hyphen is passed by @sylvestre in #5697
- With -t, check if we aren't passed a file by @sylvestre in #5686
- Manages permissions when run as root by @sylvestre in #5735
- Remove / from end of path if it exists so as not to mess with .exists() by @mtimaN in #5730
- Remove a debug artifact by @sylvestre in #5719
join
ls
- Remove "#[allow(unused_variables)]" by @cakebaker in #5617
- Ignore value of
POSIXLY_CORRECT
by @cakebaker in #5609 - Implement --hyperlink by @cakebaker in #5622
- Improve the access to metadata of the files by @sylvestre in #5660
- Set correct block size when -k is provided by @cakebaker in #5700
- Fix padding of size column when using
-l
by @cakebaker in #5604 - Match the gnu behavior for colors by @sylvestre in https://github.c...
0.0.23
📦 Rust Coreutils 0.0.23 Release:
We've got +10 more GNU tests passing than in our last release.
24 developers contributed to this release (9 new contributors started with this release).
Visit our website at https://uutils.github.io.
If you want to help us, please consider sponsoring on GitHub. This helps us use better tools like GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
GNU test suite compatibility
Here's how version 0.0.23 compares to the previous release - running GNU/Coreutils 9.4:
result | 0.0.22 | 0.0.23 | Change 0.0.22 to 0.0.23 | % Total 0.0.23 (Change) |
---|---|---|---|---|
pass | 383 | 393 | +10 | 65.07% (+1.66%) |
skip | 48 | 49 | +1 | 8.11% (+0.17%) |
fail | 171 | 160 | -11 | 26.49% (-1.82%) |
error | 2 | 2 | 0 | 0.33% (0.00%) |
For more details, visit https://github.com/uutils/coreutils-tracking/.
What's Changed
global
- Implement SI prefixes R and Q by @zhitkoff in #5357
This applies to the commands: dd, df, du, head, ls, od, shref, split, tail and truncate
cat
- cat: use error code 62 for ELOOP on FreeBSD by @cakebaker in #5477
- cat: return the same error message as GNU with loop symlink by @sylvestre in #5466
cp
- cp: make test_closes_file_descriptors Linux-only by @cakebaker in #5508
- cp: fix cp -rT dir dir2 leads to different result than with GNU cp by @tommady in #5467
- cp: restrict two test functions to linux/mac/win by @cakebaker in #5471
- cp: remove
crash!
call by @tertsdiepraam in #5486 - cp --remove-destination: don't fail if destination is symlink to source by @cakebaker in #5430
- cp: add test for --attributes-only by @cakebaker in #5458
- cp: fix cp -a --no-preserve=mode doesn't keep fully the mode by @tommady in #5353
- cp,tail: fix warnings in tests on Android by @cakebaker in #5496
dd
df
- freebsd: fix the 'df' command by @kostikbel in #5462
- df: Replace the error message by the one generated by clap by @sylvestre in #5452
du
- du: make -l/--count-links work by @cakebaker in #5493
- du: remove crash! macro by @alexhausen in #5501
- du: add --no-dereference by @cakebaker in #5491
- du: ignore test under Android & FreeBSD by @cakebaker in #5497
- du: use blocks to remove some cfgs by @cakebaker in #5504
- du: add -H (alias for --dereference-args) by @cakebaker in #5506
expand
expr
join
- join: remove a clippy::cognitive_complexity by moving some content in functions by @sylvestre in #5367
ls
- ls --dired -R: fix the positions by @sylvestre in #5341
- ls --dired: document the whole thing by @sylvestre in #5432
- ls: update of the GNU test error output by @sylvestre in #5438
- ls: return exit code 2 for invalid time-style by @cakebaker in #5447
- ls: use try_get_matches_from instead of get_matches_from by @cakebaker in #5446
mktemp
mv
- mv: make UpdateMode public by @dmatos2012 in #5428
- mv: Fix stderr output mv file into dir and dir into file where both are files by @mickvangelderen in #5464
- mv: rename canonized_* -> canonicalized_* by @cakebaker in #5454
- mv: moving directory itself should fail by @dmatos2012 in #5429
pathchk
pr
- pr: skip a test for now for way too long log by @sylvestre in #5440
printf
rm
- rm: In some cases, remove_dir is doing a better job than remove_dir_all by @sylvestre in #5403
- rm: refactor
prompt_file
, issue #5345 by @terade in #5356 - rm: adjust fail-2eperm.sh - gnu test by @sylvestre in #5435
runcon
- runcon: generate the same error as GNUs by @sylvestre in #5439
split
- split: suffix auto length by @zhitkoff in #5433
- split :
--filter
and stdin updates by @zhitkoff in #5418 - split: suffix length refactor by @zhitkoff in #5449
test
### Other OS & arch changes
- Add darwin arm64 builds by @dzbarsky in #5523
- Add support in uucore for illumos and solaris by @bbarker in #5489
### CI
- ci: remove outdated comment by @cakebaker in #5525
- deny.toml: remove two entries from skip list by @cakebaker in #5478
Documentation
- doc: add a missing "a" by @cakebaker in #5413
- Expand CONTRIBUTING.md (WIP) by @tertsdiepraam in #5488
- CONTRIBUTING.md: spell-checker:ignore "rustdoc's" by @cakebaker in #5512
- doc: mention "-v/--verbose" as extension of du by @cakebaker in #5436
- uucore: remove incorrect comment by @cakebaker in #5422
- Remove "last synced with" comments by @cakebaker in #5469
Security
- fuzzing: Refactor the error management by @sylvestre in #5517
- fuzz: Move a duplicate function into fuzz_common by @sylvestre in #5524
- github action: split the run of the fuzzers by @tommady in #5444
- fuzz: use parse_size_u64 by @Luv-Ray in #5470
- fuzz: set LC_COLLATE=C for expr by @cakebaker in #5419
Various improvements
- Prepare version 0.0.23 by @sylvestre in #5529
- Fix clippy::implicit_clone by @Statheres in #5494
Dependencies
- Bump const-random from 0.1.15 to 0.1.16 by @cakebaker in #5445
- fix(deps): update rust crate dns-lookup to 2.0.4 by @renovate in #5412
- chore(deps): update rust crate regex to 1.10.2 by @renovate in #5415
- Bump rustix crates by @cakebaker in #5425
- chore(deps): update rust crate bytecount to 0.6.5 by @renovate in #5442
- chore(deps): update rust crate bytecount to 0.6.7 by @renovate in #5450
- chore(deps): update rust crate tempfile to 3.8.1 by @renovate in #5461
- chore(deps): update actions/github-script action to v7 by @renovate in #5528
- chore(deps): update rust crate libc to 0.2.150 by @renovate in #5498
- chore(deps): update rust crate procfs to 0.16 by @renovate in #5474
- chore(deps): update rust crate bstr to 1.8 by @renovate in #5518
- chore(deps): update rust crate self_cell to 1.0.2 by @renovate in #5520
New Contributors
- @terade made their first contribution in #5356
- @n1000 made their first contribution in #5441
- @mickvangelderen made their first contribution in #5464
- @kostikbel made their first contribu...
0.0.22
📦 Rust Coreutils 0.0.22 Release:
We've got +11 more GNU tests passing than in our last release.
This release also adds support for NetBSD and requires a minimum Rust version of 1.70. 🛠️
We are also collaborating more and more with the nushell team. Future versions of nushell will rely on the Rust Coreutils.
24 developers contributed to this release (11 new contributors started with this release).
Visit our website at https://uutils.github.io.
If you want to help us, please consider sponsoring on GitHub. This helps us use better tools like GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
GNU test suite compatibility
Here's how version 0.0.22 compares to the previous release - running GNU/Coreutils 9.4:
result | 0.0.21 | 0.0.22 | change |
---|---|---|---|
pass | 372 | 383 | +11 |
skip | 49 | 48 | -1 |
fail | 181 | 171 | -10 |
error | 2 | 2 | 0 |
For more details, visit https://github.com/uutils/coreutils-tracking/.
What's Changed
- Bump MSRV to 1.70 by @cakebaker in #5239
chown
- chown: move uid & gid detections into their own functions by @sylvestre in #5359
cp
- cp: Error out if cp only contains source by @dmatos2012 in #5253
- cp: fix the result of inodes are not the same when preserve links is flagged by @tommady in #5064
- cp: fix cp -dR --no-preserve=links d c should have different inodes by @tommady in #5320
- cp: fail when trying to copy to read only file on mac by @PGIII in #5261
- cp: show no "skipped" msg with -vi/-vin by @cakebaker in #5348
cut
- cut-huge-range.sh: make cut fails on usize::MAX by @sylvestre in #4988
dd
df
- df: Fix overflow error on WSL. Default to 0 when the values are non-sense. by @howard0su in #5381
echo
- echo's doc doesn't show correctly by @sylvestre in #5260
- echo: fix wrapping behavior of octal sequences by @tertsdiepraam in #5218
- echo: don't output "\n" if "\c" is encountered by @cakebaker in #5350
expr
- expr: short-circuit evaluation for
|
by @Luv-Ray in #5365 - expr: add some empty lines by @cakebaker in #5376
- expr: short-circuit evaluation for
&
by @Luv-Ray in #5402 - expr: test some invalid syntaxes by @cakebaker in #5405
- expr: interpret numbers != 0 as true for | and & by @cakebaker in #5324
fmt
- fmt: use clap's value parser for goal & width by @cakebaker in #5333
head
- head: remove a clippy::cognitive_complexity by moving some content in a function by @sylvestre in #5366
- head: add some empty lines by @cakebaker in #5373
ls
- ls.rs: changed variable name dfn to display_file_content responding to #5282 by @rojin254 in #5283
- Support ls --dired by @sylvestre in #5280
- ls -R1: add a test to replicate GNU's recursive.sh by @sylvestre in #5342
- ls --dired - some minor cleanup by @sylvestre in #5299
- ls: fix test which fails if /tmp uses tmpfs by @cakebaker in #5301
- ls --dired: replace the previous "total: xx" padding method by @sylvestre in #5305
- ls: move to
uutils-term-grid
by @miles170 in #5391 - ls: use OnceCell from std instead of once_cell by @cakebaker in #5268
- ls: Document a bit tests/ls/stat-dtype.sh by @sylvestre in #5397
- ls -l: show an error when symlink not readable by @sylvestre in #5278
- ls: fix panic when file removed too quickly by @sanpii in #5372
mkdir
- mkdir: make
mkdir
public and document it by @KAAtheWiseGit in #5329
mv
- mv: expose main functionality for nushell by @PThorpe92 in #5335
- ls: fix panic when file removed too quickly by @sanpii in #5372
- mv: show no "skipped" msg with -vi/-vin by @cakebaker in #5347
- mv: fix typo in test function name by @cakebaker in #5351
nl
- nl: make line number and --join-blank-lines work over multiple files by @cakebaker in #5285
- nl: fix output order if stdin and files are mixed by @cakebaker in #5306
- nl: implement -d/--section-delimiter by @cakebaker in #5158
- nl: defer showing "line number overflow" error by @cakebaker in #5340
relpath
- relpath: remove by @boxdot in #5355
- relpath: show error if no argument provided by @cakebaker in #5302
rm
- rm: make the utility public by @KAAtheWiseGit in #5304
seq
- seq: parse "infinity" and "-infinity" by @shinhs0506 in #5124
split
- split: implement remaining -n variants and pass GNU tests/split/fail.sh by @zhitkoff in #5252
- split: catch broken pipe error for round robin strategy by @granquet in #5338
touch
- touch: make main public by @KAAtheWiseGit in #5318
tr
- tr: work with Windows newline (CRLF) by @muhajirdev in #5344
- tr: rename to_u*_str to map_buffer in set1 and set2 by @cakebaker in #5325
- tr: make the utility public by @KAAtheWiseGit in #5322
- tr: support character class [:blank:] by @takanki in #5317
- tr: Add test for character class [:blank:] by @cakebaker in #5328
wc
- wc: add --count-mbs option by @mbuf in #5336
whoami
- whoami: add support for -g/-m options by @muhajirdev in #5352
- whoami: make main public by @KAAtheWiseGit in #5321
yes
- yes: make main public by @KAAtheWiseGit in #5349
Build system & CI
- ci: code-quality workflow doesn't fail on clippy errors by @miles170 in #5399
- build-gnu.sh: fix for /usr/bin/timeout on MacOS by @zhitkoff in #5194
- build-gnu.sh: fix formatting issues by @cakebaker in #5248
- run-gnu-test.sh: show if we can't find the file by @sylvestre in #5318
- run-gnu-test.sh: accept "run-root" as first param by @cakebaker in #5323
- ci: remove committing from CheckScripts.yml by @cakebaker in #5291
- ci: replace deprecated "command" with "fix" by @cakebaker in #5271
- Binary sizes: handle when 0 (relpath removal) by @sylvestre in #5369
- build-gnu.sh: fix formatting by @cakebaker in #5290
- 0.0.21 => 0.0.22 by @sylvestre in #5409
- Add NetBSD support to uucore. by @0323pin in #5289
Documentation
- DEVELOPMENT.md: improve doc on how to run some tests by @sylvestre in #5393
- update of the release doc by @sylvestre in #5410
- Introducing DEVELOPMENT.md by @zhitkoff in #5209
- doc: recommend the rust-gdb helper by @sylvestre in #5404
- Document how to run the pure Rust tests by @sylvestre in #5279
Security
- fuzz: move the common duplicated code into a function by @sylvestre in #5332
- fuzzing: remove some duplicated code + clippy fixes by @sylvestre in #5337
- Fuzz the expr command by @sylvestre in #4642
- fuzz: store the corpus by @tommady in https://github.com/uutils/coreutils/...
0.0.21
📦 Announcing Rust Coreutils version 0.0.21. This release showcases enhanced compatibility with the GNU test suite, particularly following our upgrade to GNU Coreutils 9.4. We've made technical improvements across various utilities, ensuring more robust and efficient operations. As always, we prioritize precision and performance in our updates. Dive into the detailed changelog for a comprehensive overview. 🛠️
We have a fancy new website powered by oranda
! Check it out here: https://uutils.github.io.
Supporting our development is as easy as sponsoring us on GitHub! Your contributions can help us afford a more robust Continuous Integration process through GitHub Actions. To sponsor, please visit https://github.com/sponsors/uutils.
GNU test suite compatibility
The observed changes in the test results for the Rust Coreutils version 0.0.21 are attributed to our upgrade to use GNU Coreutils 9.4 as a reference for comparison. This newer version of GNU Coreutils introduced differences that are reflected in our test outcomes. Additionally, we've actively contributed to the GNU Coreutils by reorganizing tests into a more optimal structure, significantly enhancing the results of the GNU test coverage. More details can be found in our test coverage documentation.
Below is a summary of the progress. See https://github.com/uutils/coreutils-tracking/ for more details
result | 0.0.20 | 0.0.21 | change |
---|---|---|---|
pass | 373 | 372 | -1 |
skip | 49 | 49 | 0 |
fail | 178 | 181 | +3 |
error | 2 | 2 | 0 |
xpass | 0 | 0 | 0 |
What's Changed
cat
- cat: remove --t by @cakebaker in #5089
chown
- chown: remove some duplication in tests by @cakebaker in #5168
cp
cp
: re-exportuucore::{BackupMode, UpdateMode}
by @tertsdiepraam in #5211cp
: finish progress bar to make it always show up by @tertsdiepraam in #5235cp
: make more types public and add more documentation (for nushell) by @tertsdiepraam in #5152
csplit
- csplit: remove explicit "into_iter()" by @cakebaker in #5109
date
dd
- parse_size,dd: turn instance fns to associated fns by @cakebaker in #5207
factor
factor
: short circuit on write error, but not on parse error by @tertsdiepraam in #5225- factor: simplify loop in test by @cakebaker in #5192
fmt
- fmt: fix panic on width argument by @bluelief in #5159
- fmt: implement Default for FmtOptions by @cakebaker in #4747
hashsum
hashsum
: change debug to display format with --tag by @tertsdiepraam in #5219
mktemp
mknod
- mknod: remove unnecessary "not" in test by @cakebaker in #5233
mv
- mv: remove unnecessary OR in condition by @cakebaker in #5143
nl
- nl: allow negative values for --line-increment and --starting-line-number by @cakebaker in #5078
- nl: fix calculation of line number lengths by @cakebaker in #5091
- nl: fix zero padding of negative line numbers by @cakebaker in #5098
- nl: show error if --join-blank-lines is zero by @cakebaker in #5103
- nl: shorten variants of NumberingStyle enum by @cakebaker in #5100
- nl: fix output of numbering styles by @cakebaker in #5131
- nl: re-add handling for -p/--no-renumber by @cakebaker in #5155
- nl: implement TryFrom<&str> for NumberingStyle by @cakebaker in #5156
- nl: handle line number overflow by @cakebaker in #5163
rm
- rm: refactor prompt_file() by @cakebaker in #5147
- Add benchmarking for
rm
by @Benjscho in #5187
seq
- seq: display -0 by @shinhs0506 in #5136
- seq: remove unused param from write_value_float() by @cakebaker in #5137
sum
split
- split: loop over chars and remove char_from_digit function by @shinhs0506 in #5153
- split: better handle numeric and hex suffixes, short and long, with and without values by @zhitkoff in #5198
stat
- stat: Output error when - and -f are used together. by @Skryptonyte in #5144
stty
test
- Fuzz the test command by @sylvestre in #4641
touch
touch
: move fromtime
tochrono
by @tertsdiepraam in #4600
tsort
website & documentation
- docs: fix broken Arch package link by @theoludwig in #5084
- website: fix
path_prefix
in oranda by @tertsdiepraam in #5175 - docs: add missing "not" by @cakebaker in #5178
- Docs platform support page by @tertsdiepraam in #5172
- docs: github repo link related to uutils/coreutils by @theoludwig in #5085
- website: fix changelog config by @tertsdiepraam in #5215
- docs: add conda installer by @tertsdiepraam in #5185
- README: update links to docs by @tertsdiepraam in #5190
- docs(bin,has): add docstrings for macros bin and has by @nouritsu in #5129
- Add the Perl Power Tools impl by @sylvestre in #5105
Build system & CI
- uucore: make deps of "sum" feature optional by @cakebaker in #5227
- uucore: make "dunce" optional by @cakebaker in #5229
- uucore: turn backup_control into a feature by @cakebaker in #5231
- uucore: turn ranges into a feature by @cakebaker in #5238
- uucore: turn update_control into a feature by @cakebaker in #5232
- upgrade to GNU/coreutils 9.4 by @sylvestre in #5221
- make: split the manpage / completions generation into their target by @sylvestre in #5092
- make: uninstall man pages by @miles170 in #5101
- Improve the coreutils manpage by @sylvestre in #5093
- uucore: use "workspace=true" for some dependencies by @cakebaker in #5110
- ci: add default_trait_access lint and fix its warnings by @cakebaker in #5081
- ci: Add a new workflow to check and format shell scripts in
util
dir by @starccy in #5077 - "style(util): fix/format scripts to meet the
shellcheck
/shfmt
rules" by @starccy in #5090 Cargo.toml
: addfeat_require_unix_hostid
tofeat_os_unix
by @tertsdiepraam in #5179- only set SELINUX_ENABLED=1 on Linux by @sylvestre in #5112
- build-gnu.sh: indent comment by @cakebaker in #5118
- 0.0.20 => 0.0.21 by @sylvestre in #5237
Various improvements
- uucore: remove unnecessary heap allocation by @thechampagne in #5228
- Fix clippy warnings with Rust 1.72.0 by @cakebaker in #5204
- Fix some of the recent clippy warnings by @sylvestre in #5182
- uucore: don't show error for ambiguous value by @cakebaker in #5127
- uucore: provide capacity for vectors by @shinhs0506 in #5086
- use is_empty() in mv & rmdir by @shinhs0506 in #5117
- Extract uucore::line_ending::LineEnding by @simon04 in https://github.com/uutils/coreut...
0.0.20
🎉 Get ready for the newest release of Rust Coreutils! Top highlights of this release are substantial improvements in GNU test suite compatibility and refined operations in multiple utilities including cksum, chmod, chroot, comm, cp, cut, among others.
Supporting our development is as easy as sponsoring us on GitHub! Your contributions can help us afford a more robust Continuous Integration process through GitHub Actions. To sponsor, please visit https://github.com/sponsors/uutils.
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.19 | 0.0.20 | change |
---|---|---|---|
pass | 365 | 373 | +8 |
skip | 49 | 49 | 0 |
fail | 186 | 178 | -8 |
error | 2 | 2 | 0 |
xpass | 0 | 0 | 0 |
What's Changed
- Create a FUNDING.yml file by @sylvestre in #4969
cp
- cp: use mkdir_all() instead of mkdir() in test by @cakebaker in #5029
- cp: allow multiple usages of -R - Closes: #5027 by @sylvestre in #5028
- cp,du: fix warnings in tests on Windows by @cakebaker in #5014
- cp: fix "unused variable" warning on Windows by @cakebaker in #5016
date
- date: use custom value parser by @cakebaker in #4977
- Remove time dependency from date by @wanderinglethe in #4952
- date: switch to parse_datetime by @cakebaker in #4968
dd
- dd: fix typos by @crapStone in #5022
- dd: use an alarm thread instead of elapsed() calls by @Freaky in #4447
df
- df: disable failing tests on Windows by @cakebaker in #5017
- Find MountInfo properly when symlink is used by @kropacf in #4929
du
- docs: add "du" to extensions by @cakebaker in #5050
- du: directories have apparent size of 0 by @shinhs0506 in #4991
hashsum
install
ls
- ls: Implement new sort option --sort=width by @Skryptonyte in #4954
- docs: add "ls --long" to extensions by @cakebaker in #5024
- ls: force fetching metadata when called with -L -Z by @granquet in #4960
- ls: Limit value of --width to maximum value if overflowing by @Skryptonyte in #5074
- ls: --l should output the same as --literal by @yt2b in #5055
- ls: fix version cmp by @shinhs0506 in #5038
mkdir
- mkdir: remove TEST_DIR consts in tests by @cakebaker in #4957
more
mv
- mv: fix into-self-2.sh test by @Skryptonyte in #4966
- mv: Fix for tests/mv/symlink-onto-hardlink-to-self.sh by @Skryptonyte in #4976
- mv: add the check with --b=simple and when the source is a backup by @sylvestre in #4999
nl
- nl: change value name to match help text by @cakebaker in #5062
- nl: add "after help" by @cakebaker in #5070
- nl: use value parser for "--number-format" by @cakebaker in #5063
- nl: show error if --number-width is zero by @cakebaker in #5065
- nl: add test for "--number-separator" by @cakebaker in #5073
- nl: fix typo in nl.md by @cakebaker in #4994
- nl: implement Default for Settings by @cakebaker in #4995
- nl: make -p/--no-renumber a flag by @cakebaker in #5036
numfmt
- numfmt: add --invalid option by @sbentmar in #4249
- numfmt: remove duplicate info from help output by @cakebaker in #5034
od
- od: fix parsing of hex input ending with
E
by @TheDcoder in #4983
pr
seq
- seq: rename "--widths" to "--equal-width" by @cakebaker in #5012
- seq: remove two chars in seq.md by @cakebaker in #5000
- fix: seq panic on no arguments #4749 by @NikolaiSch in #4750
- docs: add seq to extensions; add some backticks by @cakebaker in #5007
shred
- fixed shred -u for windows by @Statheres in #4986
### sort - leading zeros are ignored in version compare by @shinhs0506 in #5013
- sort: migrate from ouroboros to self_cell by @cakebaker in #4972
split
- split: reject some invalid values by @sylvestre in #5032
stty
- stty: Finish '--save' support by @dezgeg in #5054
- stty: Support setting baud rate by @dezgeg in #5053
sync
- sync: fix error msg by @shinhs0506 in #4984
tail
tail
: Refactorpaths::Input::from
andSettings::inputs
by @Joining7943 in #4756
tsort
touch
- touch: accept "modify" & "mtime" for --time arg by @cakebaker in #5058
- touch: rename CURRENT to TIMESTAMP by @cakebaker in #4989
- touch: use parse_datetime instead of humantime_to_duration by @cakebaker in #5030
yes
Code quality
- Reformat toml and add it to the CI by @sylvestre in #4958
- clippy: fix warnings introduced by Rust 1.71.0 by @cakebaker in #5079
Documentation
- Initial oranda setup by @tertsdiepraam in #5044
- cspell: ignore oranda.json by @cakebaker in #5056
CI
- fix: fixpr.yml unrecognized named-value: 'steps' by @piotrkwiecinski in #5057
- deny.toml: add comments by @cakebaker in #4959
- deny.toml: add hashbrown to skip list by @cakebaker in #4985
- deny.toml: remove MPL license from allow list by @cakebaker in #5076
misc
- Make tests/help/help-version-getopt.sh pass by @sylvestre in #4987
- util/build-gnu.sh: Improve error message when missing GNU Coreutils repository by @sargas in #5019
- try to fix ignore intermittent by @sylvestre in #4992
- Remove the auto capitalization of error message by @sylvestre in #5004
- Update the version to 0.0.20 by @sylvestre in #5082
Dependencies
- Remove users crate by @cakebaker in #4943
- chore(deps): update rust crate once_cell to 1.18.0 by @renovate in #4944
- chore(deps): update rust crate regex to 1.8.4 by @renovate in #4951
- fix(deps): update rust crate libc to 0.2.146 by @renovate in #4945
- chore(deps): update rust crate tempfile to 3.6.0 by @renovate in #4955
- fix(deps): update rust crate memmap2 to 0.7 by @renovate in #4961
- chore(deps): update rust crate blake3 to 1.4.0 by @renovate in #4962
- Bump getrandom from 0.2.8 to 0.2.9 by @cakebaker in #4947
- Bump fundu to 1.0.0 and fix compile errors by @cakebaker in #4927
- chore(deps): update rust crate phf_codegen to 0.11.2 by @renovate in #5002
- chore(deps): update rust crate phf to 0.11.2 by @renovate in #5001
- chore(deps): update vmactions/freebsd-vm action to v0.3.1 by @renovate in https://github.com...
0.0.19
🎊 Delighted to unveil the fresh release of Rust coreutils! This iteration offers an array of enhancements and novel functionalities. Key updates include enhancements to the GNU test suite compatibility, and finessed operations in a variety of utilities such as cksum, chmod, chroot, comm, cp, cut, and a multitude of others.
We're making strides towards a production-ready toolset.
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.18 | 0.0.19 | change |
---|---|---|---|
pass | 340 | 365 | +25 |
skip | 50 | 49 | -1 |
fail | 210 | 186 | -24 |
error | 2 | 2 | 0 |
Detailed changes
global
- GNU/coreutils: update reference to 9.3 by @cakebaker in #4754
- New release by @sylvestre in #4926
- be more consistent in the help. use follow for deference options by @sylvestre in #4739
- Remove some unnecessary "extern crate" statements by @cakebaker in #4721
- tests: remove all "extern crate" statements by @cakebaker in #4722
- coreutils: fixed panic when multi-call binary has funny name by @BartMassey in #4366
b2sum
basenc
- basenc: add help texts for options by @cakebaker in #4850
chgrp
chown
- fix #4767:
chown -v 0 nf
isn't showing a message by @djedi23 in #4768 - fix #4615: chown isnt showing a message by @djedi23 in #4758
cksum
- cksum: remove "-a="s from markdown file by @cakebaker in #4814
- cksum: split test function into two by @cakebaker in #4854
- cksum: fix output of --algorithm by @cakebaker in #4856
- cksum: implement --untagged by @cakebaker in #4860
cp
- cp: add support POSIXLY_CORRECT=1 when dealing with dangling links by @sylvestre in #4812
- cp: fix cp -f f loop when loop is a symlink loop by @sylvestre in #4820
- cp: fix "after help" output by @cakebaker in #4828
- cp: preserve permission on -p --parents by @shinhs0506 in #4853
- cp: preserve permissions on -r -p --parents by @shinhs0506 in #4859
- cp: Accept --preserve=link by @sylvestre in #4910
- cp: -i prompts in the right place and other improv by @sylvestre in #4925
- cp: replace assert!(false) with panic!() by @cakebaker in #4930
- cp: makes --preserve requires = by @granquet in #4928
- Add support for
cp --debug
by @sylvestre in #4909
date
- date -d supports - 1 year ago, 2 second, etc by @sylvestre in #4790
- Improve the date md page by @sylvestre in #4789
- date: fix error message when opening file by @leon3s in #4544
- date: bring back the test by @sylvestre in #4889
- date: Catch format string that is not supported by chrono by @jaggededgedjustice in #4244
dd
- dd: fix some clippy warnings 'variable does not need to be mutable' by @sylvestre in #4842
- dd: fix "unused imports" warning in tests by @cakebaker in #4843
- dd: support the [io]flag=nocache option by @jfinkels in #4432
dircolors
- dircolors: trigger an error when used on / by @sylvestre in #4672
du
- du: add support of --dereference-args & minor changes by @sylvestre in #4723
- du: fix clippy warning in test by @cakebaker in #4765
factor
- factor: fix unused import in test by @cakebaker in #4711
- factor: remove unnecessary "extern crate" in test by @cakebaker in #4712
- Add flush after calculating factor by @vikiminki in #4776
- factor: add -h/--exponents option by @Ideflop in #4710
fmt
- fmt: cleanup tests by @cakebaker in #4753
hashsum
- fix: Correctly detect format when using md5sum with check flag by @kamilogorek in #4645
head
head
: useOsStringExt::from_vec
instead ofstd::from_utf8_unchecked
by @tertsdiepraam in #4923
ls
- Improve the readibility of ls code by @sylvestre in #4733
- Use
expected_result
in test_ls to avoid spurious failures by @sunfishcode in #4784 - ls: device number for BSDs and solarishOS by @SteveLauC in #4841
- ls: when facing an invalid utf-8, don't panic by @sylvestre in #4861
- [tests/ls] Support user names containing dots by @niyaznigmatullin in #4798
mkdir
- mkdir: set correct permissions on dirs created by -p by @shinhs0506 in #4876
- Mkdir: explicit umask and sequential tests by @shinhs0506 in #4896
mktemp
- mktemp: fix PrefixContainsDirSeparator verification by @ZauJulio in #4379
- mktemp -t foo.XXXX should create in TMPDIR by @sylvestre in #4832
- mktemp: two small test refactorings by @cakebaker in #4877
- mktemp: prioritize TMPDIR over -p when using -t by @cakebaker in #4878
more
- more: support PageDown/PageUp keys by @cakebaker in #4873
- more: add arguments print over and clean print by @Ideflop in #4872
- more: remove empty "else"-branches in tests by @cakebaker in #4880
- fix(#4886) more: panics if file is not readable by @Ludmuterol in #4888
- more: implement argument -s / --squeeze by @Ideflop in #4903
- more: implement arguments -n/--lines and --number by @Ideflop in #4914
mv
- mv: adapt -n behavior to GNU mv 9.3 by @cakebaker in #4782
- mv: show no error if overwriting is declined in interactive mode by @cakebaker in #4773
- mv: add 'renamed " in the beginning of the message when verbose flag is set by @shinhs0506 in #4787
- mv: check if --target is a directory by @shinhs0506 in #4794
- mv: validate --target arg by @cakebaker in #4802
- mv, cp: add support for --update=none,all,older by @shinhs0506 in #4796
- fix tests/mv/i-5.sh by @shinhs0506 in #4823
- mv: if more than one of -i, -f, -n is specified, only the final one takes effect by @cakebaker in #4826
- mv: 'mv source hardlink' should fail by @sylvestre in #4831
- mv: add missing semicolons to tests by @cakebaker in #4891
- mv: Show 'skipped' when a file isn't overwriten by @sylvestre in #4905
nice
- Avoid spurious failures in the presence of non-zero default nice by @sunfishcode in #4783
paste
- paste: handle list ending with unescaped backslash by @cakebaker in #3661
pwd
rm
- gnu: adjust tests/rm/inaccessible.sh error message by @sylvestre in #4809
- rm: support non-UTF-8 paths by @jeddenlea in #4871
- fix rm/interactive-always.sh by @shinhs0506 in #4890
shred
- shred: add support for octal and hex size by @shinhs0506 in #4918
tail
- tail/args: Fix parsing when -F is used together with --retry or --follow by @Joining7943 in #4734
- 'tail': ...