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
--checkwith 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/--zeroby @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
--verbosemode by @djedi23 in #6496 - Improve GNU test case compatibility for
part-symlinkby @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_IWUSRby @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
cpby @LoricAndre in #6690
date
- Fix timezone error when setting UTC time by @CausingBrick in #6503
- Add test for
dateby @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/--textby @Pistonight in #6808 - Return error when only
--strictor--quietis given by @howjmay in #6584
hostname
join
- Add support for multibyte separators by @jtracey in #6736
- Avoid extra allocations when using
-iby @jtracey in #6774
ls
- Adjust code for
--diredafter GNU v9.5 changes by @sylvestre in #6144 - Fix GNU test case
color-normby @matrixhead in #6481 - Fix error in subdirectory output by @CausingBrick in #6521
- Fix
diredoption (-D) not outputting datetime and parent directory byte offsets by @pyoky in #6538 - Use tab when
-CFis passed (closes #5396) by @sylvestre in #6528 - Fix GNU test case
color-clear-to-eolby @matrixhead in #6507 - Refactor
parse_widthfunction by @matrixhead in #6510 - Add test for
lsby @Its-Just-Nans in #6527 - Fix GNU test case
color-extby @matrixhead in #6537 - Fix quoting for directory names with a colon (
:) in recursive mode and patch thequote-alignGNU test by @RenjiSann in #6559 - Change
unwrap_orandorto lazy-evaluatedunwrap_or_elseandor_elseby @AnirbanHalder654322 in #6609
ln
- Allow final destination directory when using
-nfby @jansheikkinen in #5975
mkdir
- Add
aclpermissions inheritance for subdirectories by @AnirbanHalder654322 in #6676 - Prevent mode change of existing directories by @samueltardieu in #6682
- Require arguments for
mkdirandrmdirby @sgvictorino in #6790 - Emit error when path is empty by @andrewliebenow in #6802
- Allow
--parentto be provided more than once by @DaringCuteSeal in #6831
mv
- Fix GNU test case
to-symlinkby @matrixhead in #6578 - Clean up inter-partition copying test code by @matrixhead in #6583
- Adjust error message to pass
tests/mv/mv-exchange.shby @sylvestre in #6641 - Fix GNU test case
mv-ncompatibility by @matrixhead in #6599 - Fix GNU test case
dup-srccompatibility 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
runconandstdbufto passtests/misc/invalid-opt.plby @sylvestre in #6657 - Improve help message for
runconby @cakebaker in #6680
sort
- Improve error management with
--batch-sizeby @sylvestre in #6535
sync
test
- Ensure
-oargument triggers an error by @sylvestre in #6642 - Avoid eliding named lifetimes in tests by @samueltardieu in #6678
- Fix "unused imports" warning on Redox by @cakebaker in #5930
touch
- Change message when touching a directory by @Its-Just-Nans in #6506
- Expose
touchfor Nushell by @ysthakur in #5946
uptime
- Add support for OpenBSD using
utmpby @lcheylus in #6514 - Relax error message due to differing
errnovalues on macOS by @BenWiederhake in #6571
users
- Support OpenBSD using
utmpby @jadijadi in #6406 - Fix lint error
needless_borrows_for_generic_argson OpenBSD by @lcheylus in #6509 - Use
Optioninstead ofVecfor file argument by @cakebaker in #6761 - Fix lint error
manual_unwrap_or_defaulton OpenBSD by @lcheylus in #6772
tr
- Properly determine trailing backslash by @BenWiederhake in #6731
- Enable ignored test on Unix by @cakebaker in #6737
- Raise error if
set2is too big on complemented class by @RenjiSann in #6564 - Accept non-UTF-8 arguments for sets by @RenjiSann in #6563
- Fix unescaped trailing backslash warning by @andrewliebenow in #6713
- Correctly handle multibyte octal sequences by @andrewliebenow in #6779
- Correctly detect matched
[:upper:]by @cvonelm in #6513 - Enable ignored tests that have already been fixed by @BenWiederhake in #6756
tsort
- Propose refactoring for
tsortby @anastygnome in #5968 - Adjust error message in
tsort.plby @sylvestre in #6785
uucore
- uucore: Split
ttyfromproc_infoby @Krysztal112233 in #6593 - uucore: Fix return value of
ProcessInfomation::ttyby @Krysztal112233 in #6597 - uucore: Add
getsidforprocess.rsby @Krysztal112233 in #6600 - fsext: remove crash! by @Kev1n8 in #6549
- uucore+timeout: accept signals of any casing by @BenWiederhake in #6382
- uucore: Move
pgrep/process.rstouucoreby @Krysztal112233 in #6483 - uucore/proc_info: ignore spelling of some words by @cakebaker in #6561
- uucore: fix "unused import" warning on Redox by @cakebaker in #6695
- uucore/checksum: simplify
determine_regex()by @cakebaker in #6500 - uucore: allow use of deprecated
PanicInfoby @cakebaker in #6792 - uucore: disable default signal-handlers added by Rust by @Ecordonnier in #6806
Misc
- bin/coreutils: add
--listto help output by @cakebaker in #6692 - prepare version 0.0.28 by @sylvestre in #6844
- Use
workspace = truefor some dependencies by @cakebaker in #6601 - sort: enable clippy::suspicious_open_options on OpenBSD by @lcheylus in #6851
- Fix clippy errors by @Its-Just-Nans in #6505
- Fix nightly clippy by @BenWiederhake in #6581
- fuzz: run GNU Core Utilities with LC_ALL=C by @andrewliebenow in #6795
- Disable failed tests on OpenBSD by @lcheylus in #6545
- build.rs: skip "expensive_tests", not a crate by @cakebaker in #6518
- build all features on docs.rs by @Its-Just-Nans in #6502
- Cargo.toml: add "expensive_tests" feature by @cakebaker in #6498
- clippy: fix warnings introduced by Rust 1.80 by @cakebaker in #6592
- Cargo.toml: allow "fuzzing" as
cfgcondition name by @cakebaker in #6497 - Change the git pre-commit actions to actually use stable by @BenWiederhake in #6754
- Try to use linux high perf runners by @sylvestre in #6556
- Revert "Try to use linux high perf runners" by @sylvestre in #6557
- fuzzing: add
Cargo.lockby @cakebaker in #6652 - Fix clippy warnings. by @dcampbell24 in #6716
- move lints from rustflags to Cargo.toml by @jtracey in #6751
- Clippy Pedantic Acceptable Commits Try Again by @dcampbell24 in #6748
- basename,realpath: add words to
spell-checker:ignoreby @cakebaker in #6627 - Do not rebuild the build script unless necessary by @samueltardieu in #6677
- Change the git pre-commit actions to work on stable. by @dcampbell24 in #6715
- add back use_self clippy warning by @jtracey in #6775
- Get rid of redox-specific code by @tea in #6787
CI
- ci: remove temporary code coverage jobs by @cakebaker in #6856
- ci: remove unused var from "Code Coverage" job by @cakebaker in #6605
- Fix Android CI by @jtracey in #6580
- Add windows arm64 to the CI by @sylvestre in #6624
- ci: disable broken code coverage on windows by @BenWiederhake in #6687
- Android CI: enable emulator metrics by @jtracey in #6752
- ci: use ubuntu v24 for GNU tests workflow by @cakebaker in #6765
- GNU tests: install attr by @sylvestre in #6784
- intermittent: timeout changed directory by @sylvestre in #6816
- Use github for gnulib by @sylvestre in #6762
Documentation
- coreutils: Add a default readme for the packages by @lu-zero in #6512
- CONTRIBUTE.md: Update broken link and formatting of link by @vikiminki in #6776
- add docs - fix #5066 by @Its-Just-Nans in #6523
- doc: add and change documentation of uucore by @Its-Just-Nans in #6551
- document uucore::Args #5068 by @Its-Just-Nans in #6515
- documents functions - #5069 by @Its-Just-Nans in #6516
- documentation: fix crate name in README by @andrewliebenow in #6800
Dependencies
- chore(deps): update rust crate num-bigint to v0.4.6 by @renovate in #6501
- chore(deps): update vmactions/freebsd-vm action to v1.0.8 by @renovate in #6525
- chore(deps): update rust crate serde to v1.0.204 by @renovate in #6544
- chore(deps): update rust crate thiserror to v1.0.62 by @renovate in #6562
- chore(deps): update reactivecircus/android-emulator-runner action to v2.32.0 by @renovate in #6553
- chore(deps): update rust crate blake3 to v1.5.2 by @renovate in #6565
- chore(deps): update rust crate blake3 to v1.5.3 by @renovate in #6567
- chore(deps): update rust crate redox_syscall to v0.5.3 by @renovate in #6568
- chore(deps): update rust crate thiserror to v1.0.63 by @renovate in #6579
- chore(deps): update rust crate bstr to v1.10.0 by @renovate in #6594
- chore(deps): update rust crate selinux to v0.4.5 by @renovate in #6596
- chore(deps): update vmactions/freebsd-vm action to v1.0.9 by @renovate in #6679
- chore(deps): update vmactions/freebsd-vm action to v1.1.0 by @renovate in #6685
- chore(deps): update davidanson/markdownlint-cli2-action action to v17 by @renovate in #6691
- chore(deps): update vmactions/freebsd-vm action to v1.1.1 by @renovate in #6698
- chore(deps): update rust crate memmap2 to v0.9.5 by @renovate in #6702
- chore(deps): update rust crate fundu to v2.0.1 by @renovate in #6701
- chore(deps): update rust crate pretty_assertions to v1.4.1 by @renovate in #6703
- chore(deps): update rust crate redox_syscall to v0.5.4 by @renovate in #6704
- chore(deps): update rust crate selinux to v0.4.6 by @renovate in #6706
- chore(deps): update rust crate rlimit to v0.10.2 by @renovate in #6705
- chore(deps): update rust crate serde to v1.0.210 by @renovate in #6707
- chore(deps): update rust crate unicode-segmentation to v1.12.0 by @renovate in #6709
- chore(deps): update rust crate once_cell to v1.20.0 by @renovate in #6708
- chore(deps): update embarkstudios/cargo-deny-action action to v2 by @renovate in #6608
- chore(deps): update rust crate regex to v1.10.6 by @renovate in #6610
- chore(deps): update rust crate winapi-util to v0.1.9 by @renovate in #6611
- chore(deps): update rust crate rust-ini to v0.21.1 by @renovate in #6616
- chore(deps): update rust crate rstest to 0.22.0 by @renovate in #6619
- chore(deps): update rust crate serde to v1.0.205 by @renovate in #6625
- chore(deps): update rust crate serde to v1.0.206 by @renovate in #6634
- chore(deps): update rust crate serde to v1.0.207 by @renovate in #6643
- chore(deps): update rust crate unicode-width to v0.1.13 by @renovate in #6451
- chore(deps): update rust crate serde to v1.0.208 by @renovate in #6650
- chore(deps): update rust crate blake3 to v1.5.4 by @renovate in #6656
- chore(deps): update rust crate filetime to v0.2.24 by @renovate in #6626
- chore(deps): update rust crate serde to v1.0.209 by @renovate in #6666
- chore(deps): update rust crate filetime to v0.2.25 by @renovate in #6670
- chore(deps): update vmactions/freebsd-vm action to v1.1.2 by @renovate in #6723
- chore(deps): update vmactions/freebsd-vm action to v1.1.3 by @renovate in #6724
- chore(deps): update rust crate thiserror to v1.0.64 by @renovate in #6726
- fix(deps): update rust crate libc to v0.2.159 by @renovate in #6733
- chore(deps): update rust crate redox_syscall to v0.5.5 by @renovate in #6734
- chore(deps): update rust crate terminal_size to 0.4.0 by @renovate in #6735
- chore(deps): update rust crate redox_syscall to v0.5.6 by @renovate in #6739
- chore(deps): update mozilla-actions/sccache-action action to v0.0.6 by @renovate in #6743
- chore(deps): update rust crate platform-info to v2.0.4 by @renovate in #6747
- fix(deps): update rust crate tempfile to v3.13.0 by @renovate in #6745
- chore(deps): update rust crate rstest to 0.23.0 by @renovate in #6749
- chore(deps): update rust crate regex to v1.11.0 by @renovate in #6750
- chore(deps): update rust crate redox_syscall to v0.5.7 by @renovate in #6753
- chore(deps): update rust crate lscolors to 0.20.0 by @renovate in #6757
- chore(deps): update rust crate once_cell to v1.20.2 by @renovate in #6768
- chore(deps): update vmactions/freebsd-vm action to v1.1.4 by @renovate in #6769
- chore(deps): update rust crate procfs to 0.17 by @renovate in #6770
- chore(deps): update reactivecircus/android-emulator-runner action to v2.33.0 by @renovate in #6780
- chore(deps): update rust crate serde to v1.0.211 by @renovate in #6809
- chore(deps): update rust crate serde to v1.0.213 by @renovate in #6811
- fix(deps): update rust crate proc-macro2 to v1.0.89 by @renovate in #6814
- chore(deps): update rust crate thiserror to v1.0.65 by @renovate in #6813
- chore(deps): update rust crate regex to v1.11.1 by @renovate in #6818
- chore(deps): update rust crate bigdecimal to v0.4.6 by @renovate in #6829
- chore(deps): update rust crate serde to v1.0.214 by @renovate in #6830
- chore(config): migrate renovate config by @renovate in #6834
- chore(deps): update rust crate thiserror to v1.0.66 by @renovate in #6835
- chore(deps): update vmactions/freebsd-vm action to v1.1.5 by @renovate in #6838
- chore(deps): update rust crate indicatif to v0.17.9 by @renovate in #6849
- fix(deps): update rust crate dunce to v1.0.5 by @renovate in #6617
- Bump
nix&ctrlcand adapt code to API changes innixby @cakebaker in #6648 - fix(deps): update rust crate similar to v2.6.0 by @renovate in #6661
- fix(deps): update rust crate tempfile to v3.12.0 by @renovate in #6647
- fix(deps): update rust crate libc to v0.2.158 by @renovate in #6651
- fix(deps): update rust crate quote to v1.0.37 by @renovate in #6664
- fix(deps): update rust crate proc-macro2 to v1.0.87 by @renovate in #6773
- fix(deps): update rust crate proc-macro2 to v1.0.88 by @renovate in #6783
- fix(deps): update rust crate libc to v0.2.160 by @renovate in #6786
- fix(deps): update rust crate libc to v0.2.161 by @renovate in #6789
- num-prime => '0.4.4' by @sylvestre in #6781
- Bump
selinux-sysandfts-sysby @cakebaker in #6693 - Bump
tempfilefrom3.10.1to3.11.0by @cakebaker in #6613 - Bump windows-targets crates by @cakebaker in #6633
- Bump
parking_lot_coreby @cakebaker in #6663 - Bump
windows-sys& adapttailto API change by @cakebaker in #6681
New Contributors
- @Its-Just-Nans made their first contribution in #6502
- @CausingBrick made their first contribution in #6503
- @lu-zero made their first contribution in #6512
- @Kev1n8 made their first contribution in #6511
- @andrewliebenow made their first contribution in #6674
- @just-an-engineer made their first contribution in #6622
- @LoricAndre made their first contribution in #6690
- @jansheikkinen made their first contribution in #5975
- @dcampbell24 made their first contribution in #6715
- @OshinoShinobu-Chan made their first contribution in #6763
- @gim913 made their first contribution in #5256
- @neyo8826 made their first contribution in #6694
- @tea made their first contribution in #6787
- @sgvictorino made their first contribution in #6790
- @Pistonight made their first contribution in #6808
- @DaringCuteSeal made their first contribution in #6831
Full Changelog: 0.0.27...0.0.28