### **Rust Coreutils 0.9.0 Release:**

We are excited to announce the release of **Rust Coreutils 0.9.0** - a release focused on **safety and security**. This cycle was shaped by a third-party security audit, driving extensive **TOCTOU hardening** and a sustained, project-wide effort to **shrink the amount of `unsafe` code** by removing it outright and migrating low-level syscalls from `nix`/`libc` to `rustix`. On top of that, we landed major **zero-copy I/O performance** work (`splice`/`tee`/`pipe`), broadened **WebAssembly, Cygwin and Windows** support, and continued contributing tests and bug reports upstream to GNU coreutils.

---

### GNU Test Suite Compatibility:

| Result        | 0.8.0 | 0.9.0 | Change 0.8.0 to 0.9.0 | % Total 0.8.0 | % Total 0.9.0 | % Change 0.8.0 to 0.9.0 |
|---------------|-------|-------|------------------------|---------------|---------------|--------------------------|
| Pass          | 630   | 625   | -5                     | 94.74%        | 90.58%        | -4.16%                   |
| Skip          | 14    | 8     | -6                     | 2.11%         | 1.16%         | -0.95%                   |
| Fail          | 21    | 56    | +35                    | 3.16%         | 8.12%         | +4.96%                   |
| Error         | 0     | 1     | +1                     | 0%            | 0.14%         | +0.14%                   |
| Total         | 665   | 690   | +25 (new tests)        |               |               |                          |

> **Note:** The rise in failing tests is due to the upstream GNU test suite being **extended**, not to regressions on our side. We updated our GNU reference from 9.10 to 9.11 (PR #11922), which added **25 new tests** (665 → 690). Many of these newly-introduced tests are not yet passing, which accounts for the jump from 21 to 56 failures; no previously-passing functionality regressed, and work is ongoing to address the new tests.

---

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

---

### Highlights:

- **Security Hardening (Zellic audit)**
  - A third-party security audit by [Zellic](https://github.com/Zellic/publications/blob/master/uutils%20coreutils%20-%20Zellic%20Audit%20Report.pdf) reviewed the codebase; the findings - widely reported as [44 CVEs](https://www.reddit.com/r/rust/comments/1st3tl0/44cves_found_in_rust_coreutils_audit/) (see also the [Ubuntu update](https://discourse.ubuntu.com/t/an-update-on-rust-coreutils/80773) and the corrode write-up [*Bugs Rust won't catch*](https://corrode.dev/blog/bugs-rust-wont-catch/)) - were concentrated in TOCTOU races and filesystem edge cases that Rust's type system does not prevent
  - It's worth noting that many of these CVEs are not memory-safety issues but **differences in behavior from GNU coreutils** that the audit identified; aligning our semantics with GNU resolves them
  - This release closes many of them: a new TOCTOU-resistant `uucore::safe_copy` module; TOCTOU fixes in `cp`, `mv`, and `chmod` recursive traversal; `rm` dot/dotdot path-parsing protection; `nohup.out` now created with mode `0600`; and `chroot` now resolves all ids before chrooting

- **Reducing `unsafe` & migrating to `rustix`**
  - A sustained, project-wide push to shrink the `unsafe` surface: dozens of `unsafe` removals across utilities, tests, fuzz targets and `uucore` (`get_groups`, `make_fifo`, `build.rs`, and more)
  - Migration from `nix`/`libc` to `rustix` across `id`, `tr`, `timeout`, `sort`, `wc`, `tail`, `cp`, `who`, `factor`, and core process/IO paths

- **Performance**
  - `splice()`/`tee()`/`pipe()` fast paths landed across `cat`, `wc`, `head`, `tail`, `yes`, `cp`, `tee`, and `unexpand` (e.g. `unexpand` +7.5%, faster `cp` from a pipe on Linux, `tee` via raw syscalls, `yes` using the `tee` syscall)
  - Consolidated in a reworked `uucore::pipes` / `buf_copy`

- **GNU Compatibility & Upstream Collaboration**
  - Reference bumped to **GNU 9.11**, which **extended the suite with 25 new tests** (the reason the failure count went up - see the note above; it is not a regression)
  - We continue to **contribute tests and bug reports upstream to GNU coreutils**, and our compatibility work keeps surfacing edge cases on both sides
  - New fixes across `numfmt`, `date`, `tr`, `cksum`, `factor`, `head`, `stat`, and `sort`

- **`numfmt` Overhaul**
  - Precision handling, rejection of scientific notation, `LC_NUMERIC` decimal separator, zero-padding for negative numbers, IEC precision cap, large `%f` values, `--to=auto` exit code, and multi-byte `--suffix` width accounting

- **`ls` Improvements**
  - `ls -lF` symlink target indicators, link-count column no longer inflated per-ACL-file, version-sorting and recursive-mode fixes, independent permissions-column width
  - Refactor letting crate users (e.g. nushell) call `ls` without writing everything to stdout

- **Cross-platform Reach**
  - WASI/wasm support for `ln`, `dd`, `mktemp`, and `tty.wasm`; Cygwin CI and builds (`date`, `stdbuf`); Windows `tty` (incl. msys2 paths); OpenBSD triage improvements

- **Internationalization**
  - `numfmt` and `du` now honor `LC_NUMERIC` for the decimal separator

- **Contributions**: This release was made possible by **30 new contributors** joining our community

---

### Call to Action:

**Try it in your browser** - [Online Playground](https://uutils.github.io/playground/) powered by WebAssembly
**Help us translate** - Contribute to [Rust Coreutils on Weblate](https://hosted.weblate.org/projects/rust-coreutils/)
**Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils)

## What's Changed

## cat
* cat: avoid unnecessary allocation by @oech3 in https://github.com/uutils/coreutils/pull/11675
* cat: do not splice() on FUSE by @oech3 in https://github.com/uutils/coreutils/pull/11723
* cat: replace copy_exact() with write_all by @oech3 in https://github.com/uutils/coreutils/pull/11800
* cat: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11884
* cat: call pipe() once with multiple input by @oech3 in https://github.com/uutils/coreutils/pull/11699
* cat: avoid unnecessary alloc on Linux by @oech3 in https://github.com/uutils/coreutils/pull/11906
* cat: remove unsafe from test code by @oech3 in https://github.com/uutils/coreutils/pull/12027
* cat: simplify match by @oech3 in https://github.com/uutils/coreutils/pull/12178
* cat: remove line buffering by @oech3 in https://github.com/uutils/coreutils/pull/12190
* cat: dedup print_unbuffered by @oech3 in https://github.com/uutils/coreutils/pull/12214
* cat: remove splice.rs by @oech3 in https://github.com/uutils/coreutils/pull/12404

## chroot
* chroot: start removing unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12053

## cksum
* cksum: fix parsing error with tagged cheksum files by @frenchua in https://github.com/uutils/coreutils/pull/11704
* cksum: get rid of `print!` and `println!` to avoid panicking on write errors by @RenjiSann in https://github.com/uutils/coreutils/pull/12099
* cksum: Fix --check filename escaping for 9.11 by @RenjiSann in https://github.com/uutils/coreutils/pull/12156
* cksum: Introduce HashLength newtype to avoid byte/bit misuse by @RenjiSann in https://github.com/uutils/coreutils/pull/12235

## coreutils
* coreutils: --help args is same with --help by @oech3 in https://github.com/uutils/coreutils/pull/11367
* coreutils: fix panic on linux < 6.4 when /proc is not mounted by @oech3 in https://github.com/uutils/coreutils/pull/12104

## cp
* cp: improve throughput with pipe input (Linux only) by @oech3 in https://github.com/uutils/coreutils/pull/11798
* cp: fix fail-perm GNU test adaptation by @karanabe in https://github.com/uutils/coreutils/pull/12119
* chore(cp): : move raw libc calls to rustix by @Alonely0 in https://github.com/uutils/coreutils/pull/12112

## date
* date: replace regex with hand-written format spec parser by @sylvestre in https://github.com/uutils/coreutils/pull/11758
* date: use cfg unix by @oech3 in https://github.com/uutils/coreutils/pull/11952
* date: width prefix in %N format specifier is ignored ( %3N, %6N always output full 9 nanosecond digits) #12001 by @Devel08 in https://github.com/uutils/coreutils/pull/12010
* date: fix build for cygwin by @oech3 in https://github.com/uutils/coreutils/pull/12309
* date: re-zone trailing TZ abbreviation input to local timezone by @0xSoftBoi in https://github.com/uutils/coreutils/pull/12327

## dd
* dd: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11885
* dd: exit when bs/ibs/obs/cbs isn't positive by @iburaky2 in https://github.com/uutils/coreutils/pull/11630
* dd: support wasm32-wasip1 by @pocopepe in https://github.com/uutils/coreutils/pull/12258
* dd: fix OOM panic with skip=1 by @oech3 in https://github.com/uutils/coreutils/pull/12399

## df
* df: get rid of unnecessary clone calls by @fogti in https://github.com/uutils/coreutils/pull/12073

## dirname
* dirname: get rid of needless `Cow` by @ChrisDenton in https://github.com/uutils/coreutils/pull/11960

## du
* du: fix error from `needless_borrow` lint on FreeBSD by @cakebaker in https://github.com/uutils/coreutils/pull/11791
* du: remove unnecessary implementation of `code()` by @cakebaker in https://github.com/uutils/coreutils/pull/11803
* du: make du -a -s error by @oech3 in https://github.com/uutils/coreutils/pull/11917
* du: Allow command-line argument that appears more than once by @ajanicij in https://github.com/uutils/coreutils/pull/11897
* refactor(du): simplify error handling by @xtqqczze in https://github.com/uutils/coreutils/pull/11957
* du: propagate errors from --exclude-from instead of panicking by @rossilor95 in https://github.com/uutils/coreutils/pull/11996
* du: honor LC_NUMERIC for decimal separator by @eyupcanakman in https://github.com/uutils/coreutils/pull/12357

## echo
* echo: add benchmark by @oech3 in https://github.com/uutils/coreutils/pull/12091

## env
* tests(env): increase signal delivery delay to fix flaky macOS CI by @sylvestre in https://github.com/uutils/coreutils/pull/11829

## expr
* expr: avoid panic on regex retry-limit by @eyupcanakman in https://github.com/uutils/coreutils/pull/11833

## factor
* factor: emit GNU 9.11 'is not a valid positive integer' for stdin input by @sylvestre in https://github.com/uutils/coreutils/pull/12137
* factor: remove unsafe str::from_utf8_unchecked by @oech3 in https://github.com/uutils/coreutils/pull/12142

## fmt
* fmt: remove unwrap() by @oech3 in https://github.com/uutils/coreutils/pull/11810

## head
* head: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11883
* refactor(head): rename read functions to print for clarity by @xtqqczze in https://github.com/uutils/coreutils/pull/11988
* head: remove print(ln) macros by @oech3 in https://github.com/uutils/coreutils/pull/11974
* head: catch I/O error with -c 1 by @oech3 in https://github.com/uutils/coreutils/pull/12030
* head: strip os error suffix from stdout write error message by @sylvestre in https://github.com/uutils/coreutils/pull/12121
* head: fix -c0 and -n0 on directories to match GNU behavior by @sylvestre in https://github.com/uutils/coreutils/pull/12217
* head/tail: use OPTION rather than FLAG by @fnadeau in https://github.com/uutils/coreutils/pull/12301

## id
* fix(id): refine feature checks for SELinux and SMACK support by @xtqqczze in https://github.com/uutils/coreutils/pull/12047
* id: replace nix by rustix by @oech3 in https://github.com/uutils/coreutils/pull/12164

## install
* fix(install): follow symlink components in destination path with -D by @abendrothj in https://github.com/uutils/coreutils/pull/11505
* install: update comments and tests after symlink follow behavior change by @Ecordonnier in https://github.com/uutils/coreutils/pull/12475

## join
* join: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11901
* join: use `show_error` instead of `eprintln` by @cakebaker in https://github.com/uutils/coreutils/pull/11932

## ln
* ln: Improve to LnError and make public fns for nushell by @dmatos2012 in https://github.com/uutils/coreutils/pull/12009
* ln: add WASI support via symlink_path by @DePasqualeOrg in https://github.com/uutils/coreutils/pull/11713

## logname
* fix(logname): return error exit code when there is an error by @rodrigost23 in https://github.com/uutils/coreutils/pull/9313

## ls
* ls: drop #[allow(clippy::needless_bool)] by @oech3 in https://github.com/uutils/coreutils/pull/11739
* ls: fix link-count column inflating per ACL file by @sylvestre in https://github.com/uutils/coreutils/pull/11781
* refactor `uu_ls` so that crate users can call the `ls` without having to print everything to stdout by @fdncred in https://github.com/uutils/coreutils/pull/9851
* ls: restore WASI ".." metadata fallback in collect_directory_entries by @sylvestre in https://github.com/uutils/coreutils/pull/11930
* ls: use cfg unix by @oech3 in https://github.com/uutils/coreutils/pull/11953
* ls: fix comparisons in version sorting and recursive mode by @Alonely0 in https://github.com/uutils/coreutils/pull/12108
* ls: hide `paths` argument by @cakebaker in https://github.com/uutils/coreutils/pull/12113
* fix(ls): respect sorting when grouping directories; disambiguate size sorting properly by @Alonely0 in https://github.com/uutils/coreutils/pull/12109
* ls: use `lines()` instead of `split('\n')` in test by @cakebaker in https://github.com/uutils/coreutils/pull/12154
* ls: track permissions column width independently by @sylvestre in https://github.com/uutils/coreutils/pull/12411
* ls: `ls -lF` symlink target indicators by @joknarf in https://github.com/uutils/coreutils/pull/11554
* ls: simplify symlink target indicator logic by @sylvestre in https://github.com/uutils/coreutils/pull/12508

## md5sum
* md5sum: remove some `stderr_is("")` in the tests by @cakebaker in https://github.com/uutils/coreutils/pull/12168

## mkdir
* mkdir: acl and permission inheritance with -p by @j5awry in https://github.com/uutils/coreutils/pull/11931
* mkdir: simplify umask shaping and add regression tests by @sylvestre in https://github.com/uutils/coreutils/pull/12467

## mknod
* mknod: avoid 2>/dev/full SIGABRT by @oech3 in https://github.com/uutils/coreutils/pull/12059

## mktemp
* mktemp: build for wasip1 by @oech3 in https://github.com/uutils/coreutils/pull/12319
* mktemp: fix hidden file creation with dot prefix by @gabrielhnf in https://github.com/uutils/coreutils/pull/12311
* mktemp: ensure that "-q XX" shows error msg by @cakebaker in https://github.com/uutils/coreutils/pull/12492

## more
* refactor(more): avoid Box<dyn Write> by @xtqqczze in https://github.com/uutils/coreutils/pull/12090
* more: replace InputType enum with Input struct; cache file_size by @aaron-ang in https://github.com/uutils/coreutils/pull/12225
* more: gate tty-only writes; extract clear_line/highlight_text by @aaron-ang in https://github.com/uutils/coreutils/pull/12224
* more: replace nix::unistd with std::fs by @xtqqczze in https://github.com/uutils/coreutils/pull/12268

## mv
* mv: preserve ownership (uid/gid) on cross-device moves by @sylvestre in https://github.com/uutils/coreutils/pull/11706
* mv: merge two "unix" blocks by @cakebaker in https://github.com/uutils/coreutils/pull/11820
* mv: dedup libc by @oech3 in https://github.com/uutils/coreutils/pull/12242

## nl
* nl: continue if a file can't be opened by @cakebaker in https://github.com/uutils/coreutils/pull/11983

## nohup
* nohup: simplify cfg & use compile_error! by @oech3 in https://github.com/uutils/coreutils/pull/11912
* nohup: reduce unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12111
* nohup: remove unsafe stub by @oech3 in https://github.com/uutils/coreutils/pull/12125
* nohup: refactor `find_stdout` by @cakebaker in https://github.com/uutils/coreutils/pull/12146

## nproc
* nproc: Reject quota with some schedulers by @oech3 in https://github.com/uutils/coreutils/pull/11173

## numfmt
* numfmt: apply prefix after scaling for --to-unit by @BipulLamsal in https://github.com/uutils/coreutils/pull/11684
* numfmt: fix zero-padding placement for negative numbers by @Sim-hu in https://github.com/uutils/coreutils/pull/11694
* numfmt:fix issue #11653 & correct test cases by @THEMIScale in https://github.com/uutils/coreutils/pull/11695
* fix(numfmt):fix precision loss for large numbers in #11654 by @THEMIScale in https://github.com/uutils/coreutils/pull/11716
* numfmt: precision is ignored #11667 by @Devel08 in https://github.com/uutils/coreutils/pull/11683
* numfmt: fix --to=auto to return with exitcode=1 by @BipulLamsal in https://github.com/uutils/coreutils/pull/11701
* numfmt: honor LC_NUMERIC for decimal separator by @pocopepe in https://github.com/uutils/coreutils/pull/11941
* numfmt: fix #11935 --invalid=warn/ignore/fail ignores mode when rejecting scientific notation by @Devel08 in https://github.com/uutils/coreutils/pull/11945
* numfmt: cap IEC precision at 3 decimals by @pocopepe in https://github.com/uutils/coreutils/pull/11959
* numfmt: --format width accounting diverges from GNU for multi-byte --suffix #11937 fix by @Devel08 in https://github.com/uutils/coreutils/pull/11992
* numfmt: fix rounding for small scaled values by @hayato0909 in https://github.com/uutils/coreutils/pull/12032
* numfmt: reject %f values too large to format exactly by @pocopepe in https://github.com/uutils/coreutils/pull/12012

## od
* od: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11900
* od: hex byte offset case fix by @max-amb in https://github.com/uutils/coreutils/pull/12175
* od: remove unsafe, GNU stdin compat on wasi by @oech3 in https://github.com/uutils/coreutils/pull/12205
* od: generalize RawReader by @oech3 in https://github.com/uutils/coreutils/pull/12220

## paste
* paste: remove unsafe from test code by @oech3 in https://github.com/uutils/coreutils/pull/12028

## pathchk
* pathchk: fix name by @oech3 in https://github.com/uutils/coreutils/pull/11689

## pinky
* refactor(pinky): improve output handling by @xtqqczze in https://github.com/uutils/coreutils/pull/12002

## pr
* pr: exit with code 1 if --column argument is zero by @Devel08 in https://github.com/uutils/coreutils/pull/11750

## realpath
* realpath: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11895

## rm
* rm: fix inaccessible GNU test adaptation by @karanabe in https://github.com/uutils/coreutils/pull/12127

## rmdir
* rmdir: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11896

## shred
* shred: fix --remove=unlink with relative paths by @gabrielhnf in https://github.com/uutils/coreutils/pull/12516

## sort
* fix(sort): always install SIGINT handler to ensure temp dir cleanup by @mattsu2020 in https://github.com/uutils/coreutils/pull/11889
* fix(sort): explicitly clean up temp directory in TmpDirWrapper::Drop by @mattsu2020 in https://github.com/uutils/coreutils/pull/11888
* Add sort_bench_merge benchmark for sort -m (merge) performance by @nonontb in https://github.com/uutils/coreutils/pull/12022
* sort: Fix inconsistent sort orderg under i18n-collator with equal sorting keys. by @ksgk1 in https://github.com/uutils/coreutils/pull/12013
* sort: add benchmark for locale UTF-8 sorting by @sylvestre in https://github.com/uutils/coreutils/pull/12185
* sort: replace nix feature resource with rustix by @xtqqczze in https://github.com/uutils/coreutils/pull/12275
* sort: remove nix from dep by @oech3 in https://github.com/uutils/coreutils/pull/12378
* fix(sort): reject leading '+' in numeric (-n) sort by @leno23 in https://github.com/uutils/coreutils/pull/12350
* sort: fix incorrect sort ordering/output corruption with long line inputs + add a test by @karlicoss in https://github.com/uutils/coreutils/pull/12471

## split
* split: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11891

## stat
* stat: warn once when QUOTING_STYLE env has an unknown value by @sylvestre in https://github.com/uutils/coreutils/pull/12136
* stat: fix %N quoting of filenames containing control characters by @fullwoodenshovel in https://github.com/uutils/coreutils/pull/12330

## stdbuf
* stdbuf: support cross-platform building by @YumeYuka in https://github.com/uutils/coreutils/pull/11609
* stdbuf: build on Windows (depending on cygwin dll) by @oech3 in https://github.com/uutils/coreutils/pull/12329

## stty
* stty: add two missing baud rates by @cakebaker in https://github.com/uutils/coreutils/pull/11865
* stty: add support for tabs/-tabs combination settings by @sylvestre in https://github.com/uutils/coreutils/pull/11735

## sum
* feat(sum): use larger buffer in bsd_sum and sysv_sum by @xtqqczze in https://github.com/uutils/coreutils/pull/12391

## sync
* refactor(sync): DRY do_sync_with function by @hlsxx in https://github.com/uutils/coreutils/pull/12033
* refactor(sync): remove unnecessary files move by @hlsxx in https://github.com/uutils/coreutils/pull/12485

## tail
* tail: replace unsafe libc::kill by rustix by @mattsu2020 in https://github.com/uutils/coreutils/pull/11725
* tail: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11890
* tail: fix panic on write error in bounded_tail by @rossilor95 in https://github.com/uutils/coreutils/pull/11886
* tail: improve throughput for -c +0 by splice() by @oech3 in https://github.com/uutils/coreutils/pull/11962
* tail: remove ?Sized by @oech3 in https://github.com/uutils/coreutils/pull/12014
* test(tail): fix flaky test_follow_name_multiple on macOS by @naoNao89 in https://github.com/uutils/coreutils/pull/9636
* tail: improve throughput for -c N file by @oech3 in https://github.com/uutils/coreutils/pull/11979
* tail: reuse existing pipe when stdout is already a pipe by @dragutreis in https://github.com/uutils/coreutils/pull/12463

## tee
* tee: fix input with sleep by @oech3 in https://github.com/uutils/coreutils/pull/11686
* tee: add short-read regression test by @kevinburke in https://github.com/uutils/coreutils/pull/11784
* tee: remove unused returned usize by @oech3 in https://github.com/uutils/coreutils/pull/11830
* tee: avoid 2 Err(e) at match by @oech3 in https://github.com/uutils/coreutils/pull/11878
* tee: drop cfg for unsupported target by @oech3 in https://github.com/uutils/coreutils/pull/11875
* tee: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11876
* tee: move fn copy to MultiWriter & simplify by @oech3 in https://github.com/uutils/coreutils/pull/11899
* tee: remove duplicated flush() by @oech3 in https://github.com/uutils/coreutils/pull/11909
* tee: reduce line of code by @oech3 in https://github.com/uutils/coreutils/pull/11892
* tee: merge logic of flush into write by @xtqqczze in https://github.com/uutils/coreutils/pull/11893
* tee: remove dummy definition & unused return by @oech3 in https://github.com/uutils/coreutils/pull/11923
* tee: drop unnecessary impl by @oech3 in https://github.com/uutils/coreutils/pull/11933
* tee: restore alloc guard for small input by @oech3 in https://github.com/uutils/coreutils/pull/11942
* tee: remove a var by @oech3 in https://github.com/uutils/coreutils/pull/11947
* tee: remove unsafe from test code by @oech3 in https://github.com/uutils/coreutils/pull/12025
* tee: move aborted to MultiWriter by @oech3 in https://github.com/uutils/coreutils/pull/12078
* tee: add benchmark by @oech3 in https://github.com/uutils/coreutils/pull/12134
* tee: drop libc from Cargo.toml by @oech3 in https://github.com/uutils/coreutils/pull/12232
* tee: improve throughput by raw syscall by @oech3 in https://github.com/uutils/coreutils/pull/12131
* tee: don't print EINTR by @oech3 in https://github.com/uutils/coreutils/pull/12461
* tee: simplify code by @oech3 in https://github.com/uutils/coreutils/pull/12493
* tee: restrict to NamedReader by @oech3 in https://github.com/uutils/coreutils/pull/12510

## timeout
* timeout: replace nix with rustix by @gabrielhnf in https://github.com/uutils/coreutils/pull/12440

## touch
* touch: add regression test for pre-epoch date on 32-bit by @sylvestre in https://github.com/uutils/coreutils/pull/11817

## tr
* tr: fix complemented class truncation ordering by @can1357 in https://github.com/uutils/coreutils/pull/11406
* tr: drop '[:...:]' wrapper from invalid character class error by @sylvestre in https://github.com/uutils/coreutils/pull/12122
* tr: replace nix by rustix by @oech3 in https://github.com/uutils/coreutils/pull/12266

## tty
* tty: Build for Windows by @oech3 in https://github.com/uutils/coreutils/pull/12077
* tty: Build tty.wasm by @oech3 in https://github.com/uutils/coreutils/pull/12079
* tty: support printing msys2 tty path by @ChrisDenton in https://github.com/uutils/coreutils/pull/12083

## unexpand
* unexpand: remove Box dyn - perf +7.5% by @oech3 in https://github.com/uutils/coreutils/pull/11806
* unexpand: rename `uflag` to `utf8` by @cakebaker in https://github.com/uutils/coreutils/pull/11826

## uniq
* uniq: remove a collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11894

## uptime
* clippy(uptime): fix some lints on windows by @xtqqczze in https://github.com/uutils/coreutils/pull/11726

## wc
* wc: replace unsafe sysconf by rustix by @oech3 in https://github.com/uutils/coreutils/pull/11707
* wc: introduce IS_POSIXLY_CORRECT static by @xtqqczze in https://github.com/uutils/coreutils/pull/11853
* wc: avoid pipe() if input is pipe by @oech3 in https://github.com/uutils/coreutils/pull/11636
* wc: Fix fallback when pipe() or splice() failed by @oech3 in https://github.com/uutils/coreutils/pull/11990
* wc: remove else by @oech3 in https://github.com/uutils/coreutils/pull/12165
* wc: reduce some nest by @oech3 in https://github.com/uutils/coreutils/pull/12382
* wc: remove splice_exact by @oech3 in https://github.com/uutils/coreutils/pull/12316
* wc: reduce lines of code by @oech3 in https://github.com/uutils/coreutils/pull/12420
* wc: remove a nest by loop{} by @oech3 in https://github.com/uutils/coreutils/pull/12502

## who
* Fixed panic in who > /dev/full by @AntoxaBarin in https://github.com/uutils/coreutils/pull/11767
* who: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12074

## yes
* yes: simplify logic for buffer creation by @oech3 in https://github.com/uutils/coreutils/pull/11727
* yes: replace match by ok_or_else by @oech3 in https://github.com/uutils/coreutils/pull/11740
* yes: use tee syscall as fast-path by @oech3 in https://github.com/uutils/coreutils/pull/11458
* yes: avoid kernel side length validation by @oech3 in https://github.com/uutils/coreutils/pull/12115
* yes: remove cfg & move ownership of buffer to fn exec by @oech3 in https://github.com/uutils/coreutils/pull/12095
* yes: move import to the other imports by @cakebaker in https://github.com/uutils/coreutils/pull/12153
* yes: remove unnecessary cfg by @oech3 in https://github.com/uutils/coreutils/pull/12159
* yes: fix wrong assumption for stdout by @oech3 in https://github.com/uutils/coreutils/pull/12249
* yes: reduce lines by cfg by @oech3 in https://github.com/uutils/coreutils/pull/12295
* yes: don't mix buffered write and zero-copy by @oech3 in https://github.com/uutils/coreutils/pull/12294
* yes: avoid ambiguous PAGE_SIZE by @oech3 in https://github.com/uutils/coreutils/pull/12370
* yes: fix confusing 1.. and comment by @oech3 in https://github.com/uutils/coreutils/pull/12424
* yes: dedup tee() by @oech3 in https://github.com/uutils/coreutils/pull/12456

## uucore
* fix(uucore): fix build failure by @xtqqczze in https://github.com/uutils/coreutils/pull/11729
* uucore: simplify splice() by @oech3 in https://github.com/uutils/coreutils/pull/11745
* uucore: replace nix of buf_copy by rustix by @oech3 in https://github.com/uutils/coreutils/pull/11765
* uucore: replace nix of FS related parts by rustix by @oech3 in https://github.com/uutils/coreutils/pull/11771
* uucore: enable `process` feature of `rustix` by @cakebaker in https://github.com/uutils/coreutils/pull/11792
* fix(uucore): use is_dir() instead of exists() for locale path resolution by @mattsu2020 in https://github.com/uutils/coreutils/pull/11851
* cp, uucore: remove unused returned u64 by @oech3 in https://github.com/uutils/coreutils/pull/11837
* uucore: remove returned and unused usize by @oech3 in https://github.com/uutils/coreutils/pull/11920
* uucore: simplify fallback when splice failed by @oech3 in https://github.com/uutils/coreutils/pull/11921
* uucore: splice fast-path for head -c & preliminary for dd, tail, split by @oech3 in https://github.com/uutils/coreutils/pull/11844
* uucore: dedup code of unbounded splice with broker by @oech3 in https://github.com/uutils/coreutils/pull/11928
* pipes.rs: add debug_assert! for RAM usage by @oech3 in https://github.com/uutils/coreutils/pull/11994
* uucore, cat: move unbounded splice code by @oech3 in https://github.com/uutils/coreutils/pull/12008
* safe_traversal.rs: remove 1 unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12029
* fix(fs): replace incorrect error handling with last_os_error by @xtqqczze in https://github.com/uutils/coreutils/pull/12057
* refactor(buf_copy): remove unused code by @xtqqczze in https://github.com/uutils/coreutils/pull/12081
* uucore: do not use Linux specific fn at tests by @oech3 in https://github.com/uutils/coreutils/pull/12128
* uucore: fix cfg attributes causing dead code warnings by @xtqqczze in https://github.com/uutils/coreutils/pull/12192
* pipes.rs: don't mix raw write and buffered write by @oech3 in https://github.com/uutils/coreutils/pull/12195
* uucore: remove dead code by @xtqqczze in https://github.com/uutils/coreutils/pull/12223
* uucore/build.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12237
* uucore: remove unsafe get_groups by @oech3 in https://github.com/uutils/coreutils/pull/12270
* uucore/build.rs: small refactoring by @cakebaker in https://github.com/uutils/coreutils/pull/12250
* uucore: remove unsafe make_fifo by @oech3 in https://github.com/uutils/coreutils/pull/12243
* yes, uucore::pipes: merge pipe_with_size to pipe and catch fcntl err by @oech3 in https://github.com/uutils/coreutils/pull/12285
* process: replace getuid with rustix::process::getuid by @Franklin-Qi in https://github.com/uutils/coreutils/pull/12094
* buf_copy.rs: don't test a trivial io::copy wrapper by @oech3 in https://github.com/uutils/coreutils/pull/12344
* od, uucore: Allow reusing RawReader by @oech3 in https://github.com/uutils/coreutils/pull/12385
* uucore: upgrade md-5, sha1, sha2, sha3, digest to latest versions by @gabrielhnf in https://github.com/uutils/coreutils/pull/12367
* pipes.rs: simplify trait and match by @oech3 in https://github.com/uutils/coreutils/pull/12397
* buf_copy/linux.rs: drop unused trait by @oech3 in https://github.com/uutils/coreutils/pull/12345
* pipes.rs: simplify dev_null & remove crate name from comment by @oech3 in https://github.com/uutils/coreutils/pull/12408
* pipes.rs: simplify by io::copy & doc the case it cannot be used by @oech3 in https://github.com/uutils/coreutils/pull/12415
* pipes.rs: remove fcntl overhead from splice_unbounded by @oech3 in https://github.com/uutils/coreutils/pull/12422
* pipes.rs: avoid usage of bool by @oech3 in https://github.com/uutils/coreutils/pull/12444
* pipes.rs: add missing count on fallback by @oech3 in https://github.com/uutils/coreutils/pull/12451
* pipes.rs: deduplicate many cfg's by @oech3 in https://github.com/uutils/coreutils/pull/12436
* pipes.rs: dedup code by including fallback to splice_exact by @oech3 in https://github.com/uutils/coreutils/pull/12472
* pipes.rs: replace bool by Result<(),()> by @oech3 in https://github.com/uutils/coreutils/pull/12454
* buf_copy: remove thin wrapper & useless conversion by @oech3 in https://github.com/uutils/coreutils/pull/12487
* pipes.rs: alias std::io::Result<Result<(), ()>> by @oech3 in https://github.com/uutils/coreutils/pull/12483
* simplify uucore::pipes::send_n_bytes by @oech3 in https://github.com/uutils/coreutils/pull/12491

## Security
* deps: bump rand to 0.10.1 to fix RUSTSEC-2026-0097 by @sylvestre in https://github.com/uutils/coreutils/pull/11756
* tail: fix TOCTOU race in follow retry logic by @sylvestre in https://github.com/uutils/coreutils/pull/11711
* rm: fix path parsing for dot/dotdot protection  by @naoNao89 in https://github.com/uutils/coreutils/pull/11005
* uucore: add safe_copy module with TOCTOU-resistant copy primitives by @sylvestre in https://github.com/uutils/coreutils/pull/12130
* uucore/safe_copy: use rustix Mode flags to avoid mode_t width mismatch by @sylvestre in https://github.com/uutils/coreutils/pull/12140
* chmod: fix TOCTOU race in recursive traversal by @mattsu2020 in https://github.com/uutils/coreutils/pull/11918
* cp: address the remaining toctou issues by @sylvestre in https://github.com/uutils/coreutils/pull/12135
* mv: fix the remaining TOCTOU by @sylvestre in https://github.com/uutils/coreutils/pull/12170
* chroot: resolve all ids before chroot by @victor-prokhorov in https://github.com/uutils/coreutils/pull/11211
* nohup: create nohup.out with mode 0600 by @c-tonneslan in https://github.com/uutils/coreutils/pull/12339

## Code Quality & Cleanup
* Deduplicate block size logic by @sylvestre in https://github.com/uutils/coreutils/pull/11678
* tests: tail: skip test_follow_name_multiple on macOS by @sylvestre in https://github.com/uutils/coreutils/pull/11709
* Add 'tests/tail/tail-n0f' to ignore list by @sylvestre in https://github.com/uutils/coreutils/pull/11710
* forbid scientific notation in numfmt #11655 by @Devel08 in https://github.com/uutils/coreutils/pull/11721
* deny.toml: add `redox_syscall` to skip list by @cakebaker in https://github.com/uutils/coreutils/pull/11749
* fuzz: fix clippy::collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11764
* fuzz: bump `rand` to `0.10.1` by @cakebaker in https://github.com/uutils/coreutils/pull/11313
* remove seekable from local cspell conf and use it by @oech3 in https://github.com/uutils/coreutils/pull/11773
* tests/cut: ignore stdin write error on fast-exit delimiter test by @sylvestre in https://github.com/uutils/coreutils/pull/11782
* chore: run cargo shear by @xtqqczze in https://github.com/uutils/coreutils/pull/11838
* Remove authors from Cargo metadata (per RFC 3052) by @xtqqczze in https://github.com/uutils/coreutils/pull/11832
* chore: remove unused entries from spelling wordlist by @xtqqczze in https://github.com/uutils/coreutils/pull/11850
* clippy: fix rust 1.95 lints by @xtqqczze in https://github.com/uutils/coreutils/pull/11861
* locale.rs: fix a cfg with collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11856
* panic.rs: remove collapsible_if by @oech3 in https://github.com/uutils/coreutils/pull/11857
* tests: timeout: increase delay on macOS for forward_sigint_to_child by @sylvestre in https://github.com/uutils/coreutils/pull/11874
* panic.rs: use var_os by @xtqqczze in https://github.com/uutils/coreutils/pull/11880
* clippy: warn for large_stack_arrays lint by @xtqqczze in https://github.com/uutils/coreutils/pull/11868
* reduce cfg by target_vendor by @oech3 in https://github.com/uutils/coreutils/pull/11910
* tests: timeout: increase delay on macOS for forward_sigint_to_child by @sylvestre in https://github.com/uutils/coreutils/pull/11881
* refactor: avoid unidiomatic use of and_then by @xtqqczze in https://github.com/uutils/coreutils/pull/11919
* refactor: rename write functions to print for consistency by @xtqqczze in https://github.com/uutils/coreutils/pull/11929
* workspace.wordlist.txt: drop unsafe vmsplice by @oech3 in https://github.com/uutils/coreutils/pull/11946
* fix: macro should use snake_case by @xtqqczze in https://github.com/uutils/coreutils/pull/11967
* cat, splice.rs: replace if with match, add comment by @oech3 in https://github.com/uutils/coreutils/pull/12019
* test_nice.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12040
* test_ls.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12044
* test_tail.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12048
* clippy: fix items_after_statements lint by @xtqqczze in https://github.com/uutils/coreutils/pull/12031
* test_nohup.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12052
* test_test.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12055
* fix: refine feature checks for SELinux and SMACK support by @xtqqczze in https://github.com/uutils/coreutils/pull/12056
* refactor: rustix::io::Errno for CatError by @xtqqczze in https://github.com/uutils/coreutils/pull/12082
* refactor: rename print methods to write for consistency by @xtqqczze in https://github.com/uutils/coreutils/pull/12087
* tests: patch GNU numfmt 'neg-arg-not-option' to accept clap-style error by @sylvestre in https://github.com/uutils/coreutils/pull/12123
* Cargo.toml: unpin `notify` by @cakebaker in https://github.com/uutils/coreutils/pull/11978
* test_tail.rs: increase delay by @oech3 in https://github.com/uutils/coreutils/pull/12155
* reduce usage of nix::unistd::geteuid by @oech3 in https://github.com/uutils/coreutils/pull/12163
* ignore-intermittent.txt: add tests/tail/retry by @oech3 in https://github.com/uutils/coreutils/pull/12169
* fuzz: replace unsafe libc::dup by rustix::io::dup by @blixygetir in https://github.com/uutils/coreutils/pull/12148
* cargo: clarify lto setting by @xtqqczze in https://github.com/uutils/coreutils/pull/12199
* toml: avoid defining tables out-of-order by @xtqqczze in https://github.com/uutils/coreutils/pull/12198
* test_chmod.rs: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12213
* fuzz: remove unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12218
* uutests: remove 1 unsafe by @oech3 in https://github.com/uutils/coreutils/pull/12227
* remove unused import by @oech3 in https://github.com/uutils/coreutils/pull/12230
* tests: replace .no_stdout().no_stderr() chains with .no_output() by @sylvestre in https://github.com/uutils/coreutils/pull/12241
* replace nix getgroups by rustix by @oech3 in https://github.com/uutils/coreutils/pull/12269
* deny.toml: remove `redox_syscall` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/12351
* tests_ls.rs: remove nix by @oech3 in https://github.com/uutils/coreutils/pull/12379
* ignore-intermittent.txt: add 3 tests by @oech3 in https://github.com/uutils/coreutils/pull/12368
* tests_sort.rs: remove nix by @oech3 in https://github.com/uutils/coreutils/pull/12380
* tests_tail.rs: remove nix by @oech3 in https://github.com/uutils/coreutils/pull/12381
* fix(tests): refine feature checks for SELinux by @xtqqczze in https://github.com/uutils/coreutils/pull/12372
* refactor: replace rustix::pipe with std::io::pipe by @xtqqczze in https://github.com/uutils/coreutils/pull/12356
* fix(selinux): add missing os checks by @xtqqczze in https://github.com/uutils/coreutils/pull/12406
* deny.toml: remove `cpufeatures` and `block-buffer` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/12390
* chore: remove duplicate words in six comments by @mvanhorn in https://github.com/uutils/coreutils/pull/12477
* GNUmakefile: avoid bootstrap issue with mkdir by @oech3 in https://github.com/uutils/coreutils/pull/12521

## CI & Build
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/uutils/coreutils/pull/11685
* Publish a comment in case of significant size change by @sylvestre in https://github.com/uutils/coreutils/pull/11757
* GnuTests: mask an equivalent df test by @oech3 in https://github.com/uutils/coreutils/pull/11766
* CI/GnuComment: enhance PR commenting logic to update existing comments by @xtqqczze in https://github.com/uutils/coreutils/pull/11763
* CI/GnuComment: add safeguards by @xtqqczze in https://github.com/uutils/coreutils/pull/11793
* fix: replace apt with apt-get in scripts by @xtqqczze in https://github.com/uutils/coreutils/pull/11808
* ci: group openbsd log sections for easier failure triage by @sylvestre in https://github.com/uutils/coreutils/pull/11819
* gitignore: remove .vscode directory from ignored files by @xtqqczze in https://github.com/uutils/coreutils/pull/11839
* Revert "fix: replace apt with apt-get in scripts" by @cakebaker in https://github.com/uutils/coreutils/pull/11835
* CI/SizeComment: enhance PR commenting logic to update existing comments by @xtqqczze in https://github.com/uutils/coreutils/pull/11795
* GnuTests: bump GNU version to 9.11 by @oech3 in https://github.com/uutils/coreutils/pull/11922
* ci: disable credential persistence in checkout steps by @xtqqczze in https://github.com/uutils/coreutils/pull/11951
* fix(ci): correct formatting of comment body by @xtqqczze in https://github.com/uutils/coreutils/pull/11966
* fix(renovate): do not update pinned dependencies by @xtqqczze in https://github.com/uutils/coreutils/pull/11965
* Revert "fix(renovate): do not update pinned dependencies" by @cakebaker in https://github.com/uutils/coreutils/pull/11977
* ci: add timeout for benchmark job by @cakebaker in https://github.com/uutils/coreutils/pull/12219
* vscode: update rust-analyzer check command to use clippy by @xtqqczze in https://github.com/uutils/coreutils/pull/12197
* CI: add tests/misc/io-errors to intermittent by @xtqqczze in https://github.com/uutils/coreutils/pull/12278
* Add CI for cygwin except for date by @oech3 in https://github.com/uutils/coreutils/pull/12304
* build: exclude chcon and runcon from util_map for non-Linux targets by @xtqqczze in https://github.com/uutils/coreutils/pull/12375
* ci: update macOS job features in code quality workflow by @xtqqczze in https://github.com/uutils/coreutils/pull/12386
* ci: specify bash shell for background jobs by @xtqqczze in https://github.com/uutils/coreutils/pull/10491
* make.yml: try to fix Cygwin CI by @oech3 in https://github.com/uutils/coreutils/pull/12496
* ci: add workflow to check TOML files by @xtqqczze in https://github.com/uutils/coreutils/pull/12206

## Documentation
* 0.8.0 release notes by @sylvestre in https://github.com/uutils/coreutils/pull/11691
* wc drop outdated info from BENCHMARKING.md by @oech3 in https://github.com/uutils/coreutils/pull/11720
* docs: remove hashsum from compiles_table.csv by @venoosoo in https://github.com/uutils/coreutils/pull/11732
* yes: add BENCHMARKING.md by @oech3 in https://github.com/uutils/coreutils/pull/12097
* README.md: update compatibility by @oech3 in https://github.com/uutils/coreutils/pull/12302
* docs: remove authors field from book.toml by @xtqqczze in https://github.com/uutils/coreutils/pull/11849
* uucore::pipes::splice_exact: improve document by @oech3 in https://github.com/uutils/coreutils/pull/12414
* docs: update clippy section in DEVELOPMENT.md by @xtqqczze in https://github.com/uutils/coreutils/pull/12369
* Improve documents for splice modules by @oech3 in https://github.com/uutils/coreutils/pull/12455
* docs: add fuzz pointer, AI policy, playground link, and Ubuntu note by @sylvestre in https://github.com/uutils/coreutils/pull/12437
* installation.md: improve AUR docs by @oech3 in https://github.com/uutils/coreutils/pull/12513

## Platform Support
* fix: sort and remove duplicates from feat_wasm feature by @xtqqczze in https://github.com/uutils/coreutils/pull/11737
* tests: add WASI integration test support via wasmtime by @DePasqualeOrg in https://github.com/uutils/coreutils/pull/11717
* cat, windows.rs: simplify bool by @oech3 in https://github.com/uutils/coreutils/pull/12093
* fix: unused import on redox by @xtqqczze in https://github.com/uutils/coreutils/pull/12332

## Dependency Updates
* chore(deps): update rust crate zip to v8.5.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11696
* chore(deps): update rust crate selinux to v0.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11702
* chore(deps): update rust crate ctor to 0.9.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11733
* chore(deps): update actions/github-script action to v9 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11741
* chore(deps): update rust crates by @xtqqczze in https://github.com/uutils/coreutils/pull/11730
* chore(deps): update rust crate clap_complete to v4.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11753
* chore(deps): update vampire/setup-wsl action to v6.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11754
* deps: unpin selinux rust crate by @xtqqczze in https://github.com/uutils/coreutils/pull/11759
* chore(deps): update softprops/action-gh-release action to v3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11769
* chore(deps): update rust crate similar to v3.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11768
* chore(deps): update rust crate ctor to 0.10.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11786
* deps: remove unused rust crate fluent-bundle by @xtqqczze in https://github.com/uutils/coreutils/pull/11776
* chore(deps): update rust crate clap_complete to v4.6.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11797
* chore(deps): update rust crate rayon to v1.12.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11799
* chore(deps): update rust crate clap to v4.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11845
* chore(deps): update rust crate divan to v4.5.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11877
* chore(deps): update astral-sh/ruff-action action to v4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11863
* chore(deps): update mozilla-actions/sccache-action action to v0.0.10 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11954
* chore(deps): update rust crate ctor to v0.10.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11955
* chore(deps): update rust crate jiff to v0.2.24 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11964
* chore(deps): update rust crate data-encoding to v2.11.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11982
* chore(deps): update rust crate data-encoding-macro to v0.1.20 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11981
* chore(deps): update rust crate blake3 to v1.8.5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11989
* chore(deps): update rust crate sha3 to 0.10.9 by @xtqqczze in https://github.com/uutils/coreutils/pull/11999
* chore(deps): update rust crate zip to v8.6.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12000
* chore(deps): update rust crate onig to v6.5.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12017
* chore(deps): update rust crate clap_complete to v4.6.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12039
* chore(deps): update rand crate to v0.8.6 by @xtqqczze in https://github.com/uutils/coreutils/pull/12043
* chore(deps): update dawidd6/action-download-artifact action to v21 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12054
* chore(deps): update rust crate selinux to v0.6.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12066
* chore(deps): update rust crate divan to v4.6.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12070
* chore(deps): update rust crate ctor to 0.11.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12067
* chore(deps): update rust crate string-interner to 0.20.0 by @xtqqczze in https://github.com/uutils/coreutils/pull/12103
* chore(deps): update rust crate ctor to 0.12.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12101
* chore(deps): update rust crate kqueue-sys to v1.1.0 by @xtqqczze in https://github.com/uutils/coreutils/pull/12141
* chore(deps): update rust crate crc-catalog to 2.5.0 by @xtqqczze in https://github.com/uutils/coreutils/pull/12151
* chore(deps): update rust crate exacl to 0.13.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12158
* Bump `ctor` & adapt to change by @cakebaker in https://github.com/uutils/coreutils/pull/12132
* chore(deps): update rust crate ctor to v1.0.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12179
* chore(deps): update rust crate ctor to v1.0.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12187
* chore(deps): update rust crate ctor to v1.0.4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12203
* chore(deps): update rust crate clap_complete to v4.6.4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12216
* bump nix and libc by @oech3 in https://github.com/uutils/coreutils/pull/12233
* chore(deps): update rust crate ctor to v1.0.5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12239
* chore(deps): update rust crate clap_complete to v4.6.5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12245
* chore(deps): update rust crate filetime to v0.2.29 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12201
* chore(deps): update rust crate ctor to v1.0.6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12347
* chore(deps): update rust crate digest to v0.11.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12388
* deps: remove unnecessary `package` fields by @xtqqczze in https://github.com/uutils/coreutils/pull/11968
* chore(deps): update rust crate divan to v4.7.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12441
* chore(deps): update rust crate similar to v3.1.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12457
* chore(deps): update rust crate jiff to v0.2.25 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12473
* chore(deps): update rust crate jiff to v0.2.26 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12476
* chore(deps): update rust crate jiff to v0.2.27 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12482
* chore(deps): update rust crate memchr to v2.8.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12488
* chore(deps): update rust crate ctor to v1.0.7 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12509
* chore(deps): update rust crate jiff to v0.2.28 by @renovate[bot] in https://github.com/uutils/coreutils/pull/12511

## Version Management
* prepare release 0.9.0 by @sylvestre in https://github.com/uutils/coreutils/pull/12494

## New Contributors
* @pre-commit-ci[bot] made their first contribution in https://github.com/uutils/coreutils/pull/11685
* @BipulLamsal made their first contribution in https://github.com/uutils/coreutils/pull/11684
* @Sim-hu made their first contribution in https://github.com/uutils/coreutils/pull/11694
* @THEMIScale made their first contribution in https://github.com/uutils/coreutils/pull/11695
* @Devel08 made their first contribution in https://github.com/uutils/coreutils/pull/11721
* @DePasqualeOrg made their first contribution in https://github.com/uutils/coreutils/pull/11717
* @AntoxaBarin made their first contribution in https://github.com/uutils/coreutils/pull/11767
* @fdncred made their first contribution in https://github.com/uutils/coreutils/pull/9851
* @rossilor95 made their first contribution in https://github.com/uutils/coreutils/pull/11886
* @frenchua made their first contribution in https://github.com/uutils/coreutils/pull/11704
* @pocopepe made their first contribution in https://github.com/uutils/coreutils/pull/11941
* @ChrisDenton made their first contribution in https://github.com/uutils/coreutils/pull/11960
* @nonontb made their first contribution in https://github.com/uutils/coreutils/pull/12022
* @hayato0909 made their first contribution in https://github.com/uutils/coreutils/pull/12032
* @fogti made their first contribution in https://github.com/uutils/coreutils/pull/12073
* @ksgk1 made their first contribution in https://github.com/uutils/coreutils/pull/12013
* @blixygetir made their first contribution in https://github.com/uutils/coreutils/pull/12148
* @fnadeau made their first contribution in https://github.com/uutils/coreutils/pull/12301
* @0xSoftBoi made their first contribution in https://github.com/uutils/coreutils/pull/12327
* @rodrigost23 made their first contribution in https://github.com/uutils/coreutils/pull/9313
* @Franklin-Qi made their first contribution in https://github.com/uutils/coreutils/pull/12094
* @gabrielhnf made their first contribution in https://github.com/uutils/coreutils/pull/12367
* @leno23 made their first contribution in https://github.com/uutils/coreutils/pull/12350
* @c-tonneslan made their first contribution in https://github.com/uutils/coreutils/pull/12339
* @j5awry made their first contribution in https://github.com/uutils/coreutils/pull/11931
* @mvanhorn made their first contribution in https://github.com/uutils/coreutils/pull/12477
* @dragutreis made their first contribution in https://github.com/uutils/coreutils/pull/12463
* @karlicoss made their first contribution in https://github.com/uutils/coreutils/pull/12471
* @joknarf made their first contribution in https://github.com/uutils/coreutils/pull/11554
* @fullwoodenshovel made their first contribution in https://github.com/uutils/coreutils/pull/12330

**Full Changelog**: https://github.com/uutils/coreutils/compare/0.8.0...0.9.0
