### 📦 **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`, and `numfmt`

- **Unicode & Text Processing Enhancements**
  - `fold`: Added combining character support for proper Unicode text wrapping
  - `ptx`: Implemented GNU mode with dumb terminal format
  - Enhanced text processing across multiple utilities

- **Security & Performance Improvements**
  - `cksum`: Merged with hashsum for unified checksum functionality
  - `install`: Enhanced mode parsing with comma-separated support and umask handling
  - `seq`: 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)        |               |               |                          |

---

![GNU testsuite evolution](https://github.com/uutils/coreutils-tracking/blob/main/gnu-results.svg?raw=true)

---

### Call to Action:

🌍 **Help us translate** - Contribute translations at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/)
🚀 **Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils)
🔗 Download the latest release: [https://uutils.github.io](https://uutils.github.io)

## What's Changed

## basenc
* basenc: Fix basenc.pl GNU-compat tests pass by @karanabe in https://github.com/uutils/coreutils/pull/9203
* fix(Basenc):fix GNU coreutils test  bounded-memory.sh by @mattsu2020 in https://github.com/uutils/coreutils/pull/9536
* base32, base64, baseenc:Simplifying the base encoding uu_app and adding basic buffer tests by @ChrisDryden in https://github.com/uutils/coreutils/pull/9409

## chmod
* chmod:fix safe traversal/access by @mattsu2020 in https://github.com/uutils/coreutils/pull/9554

## cksum
* cksum/hashsum: merge digest computation & various improvements by @RenjiSann in https://github.com/uutils/coreutils/pull/9135
* cksum: Fix GNU test cksum-base64-untagged by @RenjiSann in https://github.com/uutils/coreutils/pull/9344
* Add --debug flag to cksum by @naoNao89 in https://github.com/uutils/coreutils/pull/9088
* cksum: Fix GNU test `cksum-c.sh` after bump to 9.9 by @RenjiSann in https://github.com/uutils/coreutils/pull/9511
* cksum: small improvements, l10n by @RenjiSann in https://github.com/uutils/coreutils/pull/9532
* Fix hardware capabilities detection; cksum --debug by @RenjiSann in https://github.com/uutils/coreutils/pull/9603

## cp
* cp: allow directory merging when destination was just created by @vikram-kangotra in https://github.com/uutils/coreutils/pull/9325
* cp: Adding test to cover no dereference when copying symlinks by @ChrisDryden in https://github.com/uutils/coreutils/pull/9623
* cp: Enabling cp force flag to run on windows by @ChrisDryden in https://github.com/uutils/coreutils/pull/9624
* Add comprehensive readonly file regression tests for cp by @naoNao89 in https://github.com/uutils/coreutils/pull/9045

## du
* du: Alias -A --apparent-size by @oech3 in https://github.com/uutils/coreutils/pull/9555
* du: handle `--files0-from=-` with piped in `-` by @cakebaker in https://github.com/uutils/coreutils/pull/8985

## env
* Adding integration tests for the braced variable parsing in env by @ChrisDryden in https://github.com/uutils/coreutils/pull/9459
* env: remove outdated comment by @cakebaker in https://github.com/uutils/coreutils/pull/9496
* env: use Command::exec() instead of libc::execvp() by @Ecordonnier in https://github.com/uutils/coreutils/pull/9614

## fold
* fold:Improve fold bench data generation by @mattsu2020 in https://github.com/uutils/coreutils/pull/9210
* fix(fold): GNU fold-characters.sh test by @mattsu2020 in https://github.com/uutils/coreutils/pull/9126
* Fold: Adding combining character support by @ChrisDryden in https://github.com/uutils/coreutils/pull/9328

## hashsum
* hashsum: Fix length processing to fix last GNU test by @RenjiSann in https://github.com/uutils/coreutils/pull/9569

## install
* install: ignore umask by @akretz in https://github.com/uutils/coreutils/pull/9254
* Enhance mode parsing to support comma-separated mode strings in install command by @Vesal-J in https://github.com/uutils/coreutils/pull/9298
* install: do not call chown when called as root by @Ecordonnier in https://github.com/uutils/coreutils/pull/9477

## ln
* ln: add error handling for hard link creation on directories by @FidelSch in https://github.com/uutils/coreutils/pull/9342

## ls
* ls: prevent ReadDir from closing before entries are processed by @vikram-kangotra in https://github.com/uutils/coreutils/pull/9410

## mkfifo
* tests/mkfifo: added a test to check mkfifo permission denied error for code coverage by @asder8215 in https://github.com/uutils/coreutils/pull/9586

## nl
* fix(nl): allow repeated flags to match GNU nl behavior (fixes #9132) by @naoNao89 in https://github.com/uutils/coreutils/pull/9140

## nohup
* nohup: use Command::exec() instead of libc::execvp() by @Ecordonnier in https://github.com/uutils/coreutils/pull/9613

## numfmt
* numfmt: support quetta/ronna suffixes and fix error messages by @naoNao89 in https://github.com/uutils/coreutils/pull/9280

## od
* od: fix GNU od.pl by @mattsu2020 in https://github.com/uutils/coreutils/pull/9334
* fix(od):fix GNU coreutils test od float.sh by @mattsu2020 in https://github.com/uutils/coreutils/pull/9534

## pr
* pr: fix header formatting for custom date formats starting with '+' by @sylvestre in https://github.com/uutils/coreutils/pull/9252

## ptx
* ptx: implement GNU mode with dumb terminal format by @sylvestre in https://github.com/uutils/coreutils/pull/9573

## readlink
* readlink: test calling without args by @cakebaker in https://github.com/uutils/coreutils/pull/9230
* readlink:Correction to Symbolic Link Handling by @mattsu2020 in https://github.com/uutils/coreutils/pull/9633

## seq
* fix(seq): handle BrokenPipe like GNU by @mattsu2020 in https://github.com/uutils/coreutils/pull/9471
* seq:fix test_broken_pipe_still_exits_success by @mattsu2020 in https://github.com/uutils/coreutils/pull/9520
* seq: adding large integers benchmarks by @ChrisDryden in https://github.com/uutils/coreutils/pull/9561

## shuf
* shuf: add benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/9320

## sort
* sort: make compression program failures non-fatal, warn and fallback to plain files by @sylvestre in https://github.com/uutils/coreutils/pull/9266

## stdbuf
* Remove unsafe unwrap() calls in stdbuf error handling by @naoNao89 in https://github.com/uutils/coreutils/pull/9429

## stty
* Adding TTY helper for unix to be able to create tests for stty and more by @ChrisDryden in https://github.com/uutils/coreutils/pull/9348
* Using the pty helper function for the more bin testing by @ChrisDryden in https://github.com/uutils/coreutils/pull/9441
* stty: baud parsing integration tests and validation by @ChrisDryden in https://github.com/uutils/coreutils/pull/9454
* stty: Implemented saved state parser for stty by @ChrisDryden in https://github.com/uutils/coreutils/pull/9480
* stty: Changing shell command to add recognizing a TTY for stty tests by @ChrisDryden in https://github.com/uutils/coreutils/pull/9336

## tail
* tail: batch inotify events to prevent redundant headers after SIGSTOP/SIGCONT by @sylvestre in https://github.com/uutils/coreutils/pull/9574
* tail: fix intermittent overlay-headers test by batching inotify events by @sylvestre in https://github.com/uutils/coreutils/pull/9598

## tee
* tee: fix poll timeout causing intermittent hangs with -p flag by @sylvestre in https://github.com/uutils/coreutils/pull/9585

## timeout
* Reducing sleep times and timeout times in test_timeout by @ChrisDryden in https://github.com/uutils/coreutils/pull/9448
* timeout: cleanup return values by @Ecordonnier in https://github.com/uutils/coreutils/pull/9576
* timeout: remove FIXME in test by @Ecordonnier in https://github.com/uutils/coreutils/pull/9580

## dd
* dd: Handle slow transfer rates in progress display by @martinkunkel2 in https://github.com/uutils/coreutils/pull/9529

## uucore
* uucore: embed system locale on cargo install by @WaterWhisperer in https://github.com/uutils/coreutils/pull/8604
* feat(uucore): add shared hardware detection module by @naoNao89 in https://github.com/uutils/coreutils/pull/9279
* uucore: support cygwin by @ognevny in https://github.com/uutils/coreutils/pull/9535
* uucore: mode parsing: support comma-separated modes by @martinkunkel2 in https://github.com/uutils/coreutils/pull/9578

## uudoc
* uudoc: fix manpage for individual utilities has wrong name (nit) by @shayelkin in https://github.com/uutils/coreutils/pull/9152

## CI & Build
* CICD.yml: split PROFILE= from CARGOFLAGS by @oech3 in https://github.com/uutils/coreutils/pull/9219
* GNUmakefile: use PROFILE_CMD at make test by @oech3 in https://github.com/uutils/coreutils/pull/9214
* GNUmakefile: generalize logic for SELINUX_PROGS for many platforms by @oech3 in https://github.com/uutils/coreutils/pull/9221
* build-gnu.sh: Let SELinux optional to use it locally without libselinux by @oech3 in https://github.com/uutils/coreutils/pull/9220
* freebsd.yml: remove not working PROFILE= by @oech3 in https://github.com/uutils/coreutils/pull/9225
* GNUmakefile: Remove check for LIBSELINUX_ENABLED by @oech3 in https://github.com/uutils/coreutils/pull/9228
* Update redoxer and reenable Redox OS in CI by @jackpot51 in https://github.com/uutils/coreutils/pull/9233
* GNUmakefile: drop not used use_default:=1 by @oech3 in https://github.com/uutils/coreutils/pull/9231
* ci: Mark runcon-no-reorder as SELinux required by @oech3 in https://github.com/uutils/coreutils/pull/9234
* github action: add openbsd in the ci by @sylvestre in https://github.com/uutils/coreutils/pull/9196
* openbsd.yml: Remove not working PROFILE= by @oech3 in https://github.com/uutils/coreutils/pull/9238
* OpenBSD CI: increase max open files for test job by @lcheylus in https://github.com/uutils/coreutils/pull/9242
* build-gnu.sh: Remove || true by @oech3 in https://github.com/uutils/coreutils/pull/9256
* Enable test test_hostname_ip on OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9257
* build-gnu.sh: Use system tools by @oech3 in https://github.com/uutils/coreutils/pull/9251
* ci: remove commented out line from `freebsd.yml` by @cakebaker in https://github.com/uutils/coreutils/pull/9239
* GnuTests.yml: reduce deps by @oech3 in https://github.com/uutils/coreutils/pull/9259
* Update CICD.yml: Stop releasing duplicated binary by @oech3 in https://github.com/uutils/coreutils/pull/9269
* Avoid mixing wget and curl by @oech3 in https://github.com/uutils/coreutils/pull/9258
* CICD.yml: Remove if for .exe by @oech3 in https://github.com/uutils/coreutils/pull/9271
* GNUmakefile: Use any profile from make install by @oech3 in https://github.com/uutils/coreutils/pull/8730
* build-gnu.sh: Freeze SELinux build mode by @oech3 in https://github.com/uutils/coreutils/pull/9270
* CICD.yml: Avoid no space left by @oech3 in https://github.com/uutils/coreutils/pull/9277
* GNUmakefile: Add missing PROFILE_CMD by @oech3 in https://github.com/uutils/coreutils/pull/9293
* Cargo.toml: move panic=abort to release profile for binary size by @oech3 in https://github.com/uutils/coreutils/pull/9240
* Fix build failure without libselinux by @oech3 in https://github.com/uutils/coreutils/pull/9290
* Revert a patch for runcon-no-reorder (superseded) by @oech3 in https://github.com/uutils/coreutils/pull/9291
* build-gnu.sh: fix the error on line 110 by @sylvestre in https://github.com/uutils/coreutils/pull/9297
* build-gnu.sh: adjust the PATH for each run by @sylvestre in https://github.com/uutils/coreutils/pull/9319
* build-gnu.sh: Use any profile & cleanup vars by @oech3 in https://github.com/uutils/coreutils/pull/9321
* GnuTests.yml: Check that build-gnu.sh works without libselinux by @oech3 in https://github.com/uutils/coreutils/pull/9299
* android.yml: Reduce RAM (#9278) by @oech3 in https://github.com/uutils/coreutils/pull/9436
* l10n.yml:Don't apt-get build-essential by @oech3 in https://github.com/uutils/coreutils/pull/9472
* l10n.yml: Use PROFILE=release-small for faster CI by @oech3 in https://github.com/uutils/coreutils/pull/9473
* l10n.yml: Do not brew make (support Xcode make) by @oech3 in https://github.com/uutils/coreutils/pull/9474
* Update Dockerfile: Don't apt-get jq (preinstalled) by @oech3 in https://github.com/uutils/coreutils/pull/9481
* build-gnu.sh: Remove 2 not working sed hacks for tr by @oech3 in https://github.com/uutils/coreutils/pull/9476
* build-gnu.sh: Reduce time to build GNU coreutils by @oech3 in https://github.com/uutils/coreutils/pull/9475
* CICD.yml: Stop publishing conflicting artifacts by @oech3 in https://github.com/uutils/coreutils/pull/9491
* CICD.yml: Removed unused code for i586 by @oech3 in https://github.com/uutils/coreutils/pull/9497
* build-gnu.sh: Remove hfs dep from hardlink-case.sh by @oech3 in https://github.com/uutils/coreutils/pull/9482
* CICD.yml: Dedup a mkdir by @oech3 in https://github.com/uutils/coreutils/pull/9504
* CICD.yml: Drop a workaround for old package by @oech3 in https://github.com/uutils/coreutils/pull/9505
* Remove wget dep by @oech3 in https://github.com/uutils/coreutils/pull/9522
* Remove Makefile.toml by @oech3 in https://github.com/uutils/coreutils/pull/9568
* build-gnu.sh: Remove 2 non-GNU binary by @oech3 in https://github.com/uutils/coreutils/pull/9583
* validation.rs: Remove non GNU hashsum aliases by @oech3 in https://github.com/uutils/coreutils/pull/9589
* build-gnu.sh: Enable misc/coreutils.sh by @oech3 in https://github.com/uutils/coreutils/pull/9572
* GHA-delete-GNU-workflow-logs.sh: Add fallback to jaq by @oech3 in https://github.com/uutils/coreutils/pull/9581
* benchmarks.yml: Stop unnecessary apt-get by @oech3 in https://github.com/uutils/coreutils/pull/9608
* Do not apt-get preinstalled tools to avoid delaying CI by @oech3 in https://github.com/uutils/coreutils/pull/9466
* build-gnu.sh: use GNU sed much more for macOS by @oech3 in https://github.com/uutils/coreutils/pull/9467
* ci: add locales for GNU tests by @cakebaker in https://github.com/uutils/coreutils/pull/9052

## Documentation
* README.md: profiles for binary size by @oech3 in https://github.com/uutils/coreutils/pull/9268
* installation.md: Fix wrong reference for AUR by @oech3 in https://github.com/uutils/coreutils/pull/9447
* README.md: note that separator is needed for PROG_PREFIX by @oech3 in https://github.com/uutils/coreutils/pull/9444
* installation.md: Ref MSYS2 package by @oech3 in https://github.com/uutils/coreutils/pull/9456
* installation.md: Add MSYS2 Cygwin package by @oech3 in https://github.com/uutils/coreutils/pull/9566
* why-skip.md: Remove an OOD doc by @oech3 in https://github.com/uutils/coreutils/pull/9506
* why-skip.md: Remove a passing test by @oech3 in https://github.com/uutils/coreutils/pull/9507
* why-skip.md: Remove 4 sparse-* by @oech3 in https://github.com/uutils/coreutils/pull/9508
* why-skip.md: Remove 3 tests by @oech3 in https://github.com/uutils/coreutils/pull/9509
* why-error.md: Cleanup by @oech3 in https://github.com/uutils/coreutils/pull/9510
* why-error.md: Cleanup and documenting by @oech3 in https://github.com/uutils/coreutils/pull/9512
* why-skip.md: Remove 1 passing root test by @oech3 in https://github.com/uutils/coreutils/pull/9528
* why-skip.md: Let spell-checker:ignore a comment by @oech3 in https://github.com/uutils/coreutils/pull/9540
* why-{skip,error}.md: Cleanup by @oech3 in https://github.com/uutils/coreutils/pull/9602
* why-{skip,error}.md: Remove stty tests and shared strings by @oech3 in https://github.com/uutils/coreutils/pull/9626
* lib.rs: Remove non GNU hashsum aliases by @oech3 in https://github.com/uutils/coreutils/pull/9642
* util.rs: Update obsolete comments by @oech3 in https://github.com/uutils/coreutils/pull/9643

## Code Quality & Cleanup
* test: existing file is newer than non-existing file by @cakebaker in https://github.com/uutils/coreutils/pull/9245
* move the factor divan bench into the actual directory by @sylvestre in https://github.com/uutils/coreutils/pull/9296
* Remove high variance benchmark functions by @sylvestre in https://github.com/uutils/coreutils/pull/9311
* Bump `markdownlint_cli2_action` & fix warnings by @cakebaker in https://github.com/uutils/coreutils/pull/9309
* replace number_prefix by unit-prefix by @sylvestre in https://github.com/uutils/coreutils/pull/9322
* coreutils: Print utility not found to stderr by @oech3 in https://github.com/uutils/coreutils/pull/9588
* use github URLs for fetching tldr.zip by @dgilman in https://github.com/uutils/coreutils/pull/9584
* unit test coverage: fix missing coverage by @martinkunkel2 in https://github.com/uutils/coreutils/pull/9606
* Removing the per process file flag to reduce the llvm filemerge time by @ChrisDryden in https://github.com/uutils/coreutils/pull/9449
* Making wild a windows only dependency and gating unit-prefix by @ChrisDryden in https://github.com/uutils/coreutils/pull/9548
* Splitting parser feature into multiple subfeatures to reduce dependency bloat by @ChrisDryden in https://github.com/uutils/coreutils/pull/9546

## Performance & Benchmarking
* benches: Migrate factor benchmarks from Criterion to Divan by @naoNao89 in https://github.com/uutils/coreutils/pull/9247
* Add functionality to show when tests were previously skipped and now failing accurately by @ChrisDryden in https://github.com/uutils/coreutils/pull/9521

## Version Management
* update gnu ref to 9.9 + improve the script by @sylvestre in https://github.com/uutils/coreutils/pull/9216
* prepare version 0.5.0 by @sylvestre in https://github.com/uutils/coreutils/pull/9596

## Dependency Updates
* chore(deps): update rust crate crc-fast to v1.7.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9224
* chore(deps): update rust crate indicatif to v0.18.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9226
* chore(deps): update rust crate crc-fast to v1.8.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9282
* Update vmactions/freebsd-vm action to v1.2.7 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9304
* chore(deps): update rust crate clap to v4.5.52 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9316
* chore(deps): update rust crate clap_complete to v4.5.61 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9343
* chore(deps): update rust crate clap to v4.5.53 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9340
* GNUmakefile: Use libstdbuf.* instead of libstdbuf* by @oech3 in https://github.com/uutils/coreutils/pull/9345
* chore(deps): update actions/checkout action to v6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9416
* chore(deps): update rust crate parse_datetime to v0.13.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9434
* chore(deps): update rust crate hostname to v0.4.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9515
* Bump `iana-time-zone` and `windows-core` by @cakebaker in https://github.com/uutils/coreutils/pull/9519
* chore(deps): update vmactions/freebsd-vm action to v1.2.8 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9524
* chore(deps): update rust crate ctor to v0.6.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9544
* chore(deps): update rust crate ctor to v0.6.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9562
* chore(deps): update vmactions/freebsd-vm action to v1.2.9 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9593
* chore(deps): update davidanson/markdownlint-cli2-action action to v22 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9610
* chore(deps): update actions/cache action to v5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9639
* chore(deps): update rust crate crc-fast to v1.8.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9647
* chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/uutils/coreutils/pull/9645
* Bump `icu` crates from `2.0.0` to `2.1.1` by @cakebaker in https://github.com/uutils/coreutils/pull/9073

## New Contributors
* @WaterWhisperer made their first contribution in https://github.com/uutils/coreutils/pull/8604
* @ChrisDryden made their first contribution in https://github.com/uutils/coreutils/pull/9328
* @FidelSch made their first contribution in https://github.com/uutils/coreutils/pull/9342
* @ognevny made their first contribution in https://github.com/uutils/coreutils/pull/9535
* @shayelkin made their first contribution in https://github.com/uutils/coreutils/pull/9152
* @dgilman made their first contribution in https://github.com/uutils/coreutils/pull/9584

**Full Changelog**: https://github.com/uutils/coreutils/compare/0.4.0...0.5.0
