📦 Rust Coreutils 0.5.0 Release:
We are excited to announce the release of Rust Coreutils 0.5.0 — a significant milestone featuring comprehensive platform improvements, and robust testing infrastructure with continued progress toward full GNU compatibility!
Highlights:
-
Improved GNU Compatibility
- 566 passing tests (+22 from 0.4.0), achieving 87.75% compatibility
- Reduced failures from 56 to 55 (-1) and skipped tests from 33 to 23 (-10)
- Updated GNU reference from 9.8 to 9.9, adding 11 new tests
- Major improvements to
fold,cksum,install, andnumfmt
-
Unicode & Text Processing Enhancements
fold: Added combining character support for proper Unicode text wrappingptx: Implemented GNU mode with dumb terminal format- Enhanced text processing across multiple utilities
-
Security & Performance Improvements
cksum: Merged with hashsum for unified checksum functionalityinstall: Enhanced mode parsing with comma-separated support and umask handlingseq: Improved large integer handling with dedicated benchmarks- Various memory and performance optimizations across utilities
-
Platform Support Expansion
- Added OpenBSD to CI pipeline with comprehensive testing
- Re-enabled Redox OS support in CI
- Enhanced Cygwin support in uucore
- Improved build processes across platforms
-
Developer Experience Improvements
- New TTY helper for enhanced testing capabilities
- Comprehensive benchmarking additions for multiple utilities
- Reduced dependency bloat through feature splitting
- Enhanced hardware detection module
-
Contributions: This release was made possible by 6 new contributors joining our community
GNU Test Suite Compatibility:
| Result | 0.4.0 | 0.5.0 | Change 0.4.0 to 0.5.0 | % Total 0.4.0 | % Total 0.5.0 | % Change 0.4.0 to 0.5.0 |
|---|---|---|---|---|---|---|
| Pass | 544 | 566 | +22 | 85.80% | 87.75% | +1.95% |
| Skip | 33 | 23 | -10 | 5.21% | 3.57% | -1.64% |
| Fail | 56 | 55 | -1 | 8.83% | 8.53% | -0.30% |
| Error | 1 | 1 | 0 | 0.16% | 0.16% | 0% |
| Total | 634 | 645 | +11 (new tests) |
Call to Action:
🌍 Help us translate - Contribute translations at Weblate
🚀 Sponsor us on GitHub to accelerate development: github.com/sponsors/uutils
🔗 Download the latest release: https://uutils.github.io
What's Changed
basenc
- basenc: Fix basenc.pl GNU-compat tests pass by @karanabe in #9203
- fix(Basenc):fix GNU coreutils test bounded-memory.sh by @mattsu2020 in #9536
- base32, base64, baseenc:Simplifying the base encoding uu_app and adding basic buffer tests by @ChrisDryden in #9409
chmod
cksum
cp
du
env
fold
hashsum
install
- install: ignore umask by @akretz in #9254
- Enhance mode parsing to support comma-separated mode strings in install command by @Vesal-J in #9298
- install: do not call chown when called as root by @Ecordonnier in #9477
ln
ls
mkfifo
- tests/mkfifo: added a test to check mkfifo permission denied error for code coverage by @asder8215 in #9586
nl
nohup
numfmt
od
pr
- pr: fix header formatting for custom date formats starting with '+' by @sylvestre in #9252
ptx
readlink
seq
shuf
sort
- sort: make compression program failures non-fatal, warn and fallback to plain files by @sylvestre in #9266
stdbuf
stty
tail
- tail: batch inotify events to prevent redundant headers after SIGSTOP/SIGCONT by @sylvestre in #9574
- tail: fix intermittent overlay-headers test by batching inotify events by @sylvestre in #9598
tee
- tee: fix poll timeout causing intermittent hangs with -p flag by @sylvestre in #9585
timeout
dd
uucore
uudoc
- uudoc: fix manpage for individual utilities has wrong name (nit) by @shayelkin in #9152
CI & Build
- CICD.yml: split PROFILE= from CARGOFLAGS by @oech3 in #9219
- GNUmakefile: use PROFILE_CMD at make test by @oech3 in #9214
- GNUmakefile: generalize logic for SELINUX_PROGS for many platforms by @oech3 in #9221
- build-gnu.sh: Let SELinux optional to use it locally without libselinux by @oech3 in #9220
- freebsd.yml: remove not working PROFILE= by @oech3 in #9225
- GNUmakefile: Remove check for LIBSELINUX_ENABLED by @oech3 in #9228
- Update redoxer and reenable Redox OS in CI by @jackpot51 in #9233
- GNUmakefile: drop not used use_default:=1 by @oech3 in #9231
- ci: Mark runcon-no-reorder as SELinux required by @oech3 in #9234
- github action: add openbsd in the ci by @sylvestre in #9196
- openbsd.yml: Remove not working PROFILE= by @oech3 in #9238
- OpenBSD CI: increase max open files for test job by @lcheylus in #9242
- build-gnu.sh: Remove || true by @oech3 in #9256
- Enable test test_hostname_ip on OpenBSD by @lcheylus in #9257
- build-gnu.sh: Use system tools by @oech3 in #9251
- ci: remove commented out line from
freebsd.ymlby @cakebaker in #9239 - GnuTests.yml: reduce deps by @oech3 in #9259
- Update CICD.yml: Stop releasing duplicated binary by @oech3 in #9269
- Avoid mixing wget and curl by @oech3 in #9258
- CICD.yml: Remove if for .exe by @oech3 in #9271
- GNUmakefile: Use any profile from make install by @oech3 in #8730
- build-gnu.sh: Freeze SELinux build mode by @oech3 in #9270
- CICD.yml: Avoid no space left by @oech3 in #9277
- GNUmakefile: Add missing PROFILE_CMD by @oech3 in #9293
- Cargo.toml: move panic=abort to release profile for binary size by @oech3 in #9240
- Fix build failure without libselinux by @oech3 in #9290
- Revert a patch for runcon-no-reorder (superseded) by @oech3 in #9291
- build-gnu.sh: fix the error on line 110 by @sylvestre in #9297
- build-gnu.sh: adjust the PATH for each run by @sylvestre in #9319
- build-gnu.sh: Use any profile & cleanup vars by @oech3 in #9321
- GnuTests.yml: Check that build-gnu.sh works without libselinux by @oech3 in #9299
- android.yml: Reduce RAM (#9278) by @oech3 in #9436
- l10n.yml:Don't apt-get build-essential by @oech3 in #9472
- l10n.yml: Use PROFILE=release-small for faster CI by @oech3 in #9473
- l10n.yml: Do not brew make (support Xcode make) by @oech3 in #9474
- Update Dockerfile: Don't apt-get jq (preinstalled) by @oech3 in #9481
- build-gnu.sh: Remove 2 not working sed hacks for tr by @oech3 in #9476
- build-gnu.sh: Reduce time to build GNU coreutils by @oech3 in #9475
- CICD.yml: Stop publishing conflicting artifacts by @oech3 in #9491
- CICD.yml: Removed unused code for i586 by @oech3 in #9497
- build-gnu.sh: Remove hfs dep from hardlink-case.sh by @oech3 in #9482
- CICD.yml: Dedup a mkdir by @oech3 in #9504
- CICD.yml: Drop a workaround for old package by @oech3 in #9505
- Remove wget dep by @oech3 in #9522
- Remove Makefile.toml by @oech3 in #9568
- build-gnu.sh: Remove 2 non-GNU binary by @oech3 in #9583
- validation.rs: Remove non GNU hashsum aliases by @oech3 in #9589
- build-gnu.sh: Enable misc/coreutils.sh by @oech3 in #9572
- GHA-delete-GNU-workflow-logs.sh: Add fallback to jaq by @oech3 in #9581
- benchmarks.yml: Stop unnecessary apt-get by @oech3 in #9608
- Do not apt-get preinstalled tools to avoid delaying CI by @oech3 in #9466
- build-gnu.sh: use GNU sed much more for macOS by @oech3 in #9467
- ci: add locales for GNU tests by @cakebaker in #9052
Documentation
- README.md: profiles for binary size by @oech3 in #9268
- installation.md: Fix wrong reference for AUR by @oech3 in #9447
- README.md: note that separator is needed for PROG_PREFIX by @oech3 in #9444
- installation.md: Ref MSYS2 package by @oech3 in #9456
- installation.md: Add MSYS2 Cygwin package by @oech3 in #9566
- why-skip.md: Remove an OOD doc by @oech3 in #9506
- why-skip.md: Remove a passing test by @oech3 in #9507
- why-skip.md: Remove 4 sparse-* by @oech3 in #9508
- why-skip.md: Remove 3 tests by @oech3 in #9509
- why-error.md: Cleanup by @oech3 in #9510
- why-error.md: Cleanup and documenting by @oech3 in #9512
- why-skip.md: Remove 1 passing root test by @oech3 in #9528
- why-skip.md: Let spell-checker:ignore a comment by @oech3 in #9540
- why-{skip,error}.md: Cleanup by @oech3 in #9602
- why-{skip,error}.md: Remove stty tests and shared strings by @oech3 in #9626
- lib.rs: Remove non GNU hashsum aliases by @oech3 in #9642
- util.rs: Update obsolete comments by @oech3 in #9643
Code Quality & Cleanup
Performance & Benchmarking
- benches: Migrate factor benchmarks from Criterion to Divan by @naoNao89 in #9247
- Add functionality to show when tests were previously skipped and now failing accurately by @ChrisDryden in #9521
Version Management
Dependency Updates
- chore(deps): update rust crate crc-fast to v1.7.1 by @renovate[bot] in #9224
- chore(deps): update rust crate indicatif to v0.18.3 by @renovate[bot] in #9226
- chore(deps): update rust crate crc-fast to v1.8.0 by @renovate[bot] in #9282
- Update vmactions/freebsd-vm action to v1.2.7 by @renovate[bot] in #9304
- chore(deps): update rust crate clap to v4.5.52 by @renovate[bot] in #9316
- chore(deps): update rust crate clap_complete to v4.5.61 by @renovate[bot] in #9343
- chore(deps): update rust crate clap to v4.5.53 by @renovate[bot] in #9340
- GNUmakefile: Use libstdbuf.* instead of libstdbuf* by @oech3 in #9345
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #9416
- chore(deps): update rust crate parse_datetime to v0.13.3 by @renovate[bot] in #9434
- chore(deps): update rust crate hostname to v0.4.2 by @renovate[bot] in #9515
- Bump
iana-time-zoneandwindows-coreby @cakebaker in #9519 - chore(deps): update vmactions/freebsd-vm action to v1.2.8 by @renovate[bot] in #9524
- chore(deps): update rust crate ctor to v0.6.2 by @renovate[bot] in #9544
- chore(deps): update rust crate ctor to v0.6.3 by @renovate[bot] in #9562
- chore(deps): update vmactions/freebsd-vm action to v1.2.9 by @renovate[bot] in #9593
- chore(deps): update davidanson/markdownlint-cli2-action action to v22 by @renovate[bot] in #9610
- chore(deps): update actions/cache action to v5 by @renovate[bot] in #9639
- chore(deps): update rust crate crc-fast to v1.8.1 by @renovate[bot] in #9647
- chore(deps): update github artifact actions (major) by @renovate[bot] in #9645
- Bump
icucrates from2.0.0to2.1.1by @cakebaker in #9073
New Contributors
Full Changelog: 0.4.0...0.5.0