From 83db8905021e3dc36a77b3ab02e2c2633194a4f3 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 30 May 2026 16:45:08 +0200 Subject: [PATCH] release notes for 0.9.0 --- docs/src/release-notes/0.9.0.md | 648 ++++++++++++++++++++++++++++++++ 1 file changed, 648 insertions(+) create mode 100644 docs/src/release-notes/0.9.0.md diff --git a/docs/src/release-notes/0.9.0.md b/docs/src/release-notes/0.9.0.md new file mode 100644 index 000000000..3bfeab562 --- /dev/null +++ b/docs/src/release-notes/0.9.0.md @@ -0,0 +1,648 @@ +### **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: zero-copy I/O** + - `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 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> 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