diff --git a/docs/src/release-notes/0.7.0.md b/docs/src/release-notes/0.7.0.md new file mode 100644 index 000000000..2a8a85834 --- /dev/null +++ b/docs/src/release-notes/0.7.0.md @@ -0,0 +1,518 @@ +### **Rust Coreutils 0.7.0 Release:** + +We are excited to announce the release of **Rust Coreutils 0.7.0** — a performance-focused release with **major optimizations across dozens of utilities**, continued safety improvements replacing unsafe code with safe abstractions, and a comprehensive campaign to eliminate panics on write errors. We also contributed many patches upstream to GNU coreutils, and welcomed their feedbacks and supports, strengthening both projects! + +--- + +### GNU Test Suite Compatibility: + +| Result | 0.6.0 | 0.7.0 | Change 0.6.0 to 0.7.0 | % Total 0.6.0 | % Total 0.7.0 | % Change 0.6.0 to 0.7.0 | +|---------------|-------|-------|------------------------|---------------|---------------|--------------------------| +| Pass | 622 | 629 | +7 | 96.28% | 94.59% | -1.69% | +| Skip | 7 | 13 | +6 | 1.08% | 1.95% | +0.87% | +| Fail | 16 | 23 | +7 | 2.48% | 3.46% | +0.98% | +| Error | 1 | 0 | -1 | 0.15% | 0% | -0.15% | +| Total | 646 | 665 | +19 (new tests) | | | | + +> **Note:** The GNU test reference was updated from 9.9 to 9.10, adding **19 new tests**. While the pass percentage decreased due to these newly added tests, the absolute number of passing tests increased by 7 and errors were eliminated entirely. Work is ongoing to address the new test failures. + +--- + +![GNU testsuite evolution](https://github.com/uutils/coreutils-tracking/blob/main/gnu-results.svg?raw=true) + +--- + +### Highlights: + +- **GNU Compatibility & Upstream Contributions** + - **629 passing tests** (+7 from 0.6.0), with **19 new tests** added from the GNU 9.10 update + - Updated GNU test reference from 9.9 to 9.10 + - Contributed numerous patches upstream to GNU coreutils, benefiting both projects + - New GNU compatibility fixes across `date`, `fmt`, `kill`, `ptx`, `numfmt`, `cksum`, and more + - Took over maintenance of [`num-prime`](https://github.com/uutils/num-prime), the primality testing library used by `factor` + +- **Performance Overhaul** + - Faster hash maps: `rustc-hash` in `ls`, `du`, `tsort`, `shuf`, `mv`; `foldhash` in `sort` + - `unexpand`/`expand`: ASCII fast-path, buffered reads — 14%+ gain in `unexpand` + - `shuf`, `split`, `sort`, `du`: Reduced malloc allocations (+3–6% in `du`, +4% in `shuf`) + - `nl`: Optimized with `itoa` and direct writing + - `true`/`false`: Removed `clap` dependency, smaller binary, faster startup + - `uucore`: Disabled signal setup in simple utilities for binary size and startup speed + +- **Robustness: Eliminated `/dev/full` Panics** + - Fixed panics when stderr is `/dev/full` across **20+ utilities** (`echo`, `date`, `sort`, `expr`, `hostname`, `id`, `comm`, `pr`, `dircolors`, and more) + - Generic fix ensuring unrecognized options with `2>/dev/full` do not abort + +- **Safety & Code Quality** + - Replaced unsafe `libc` calls with safe `nix` crate wrappers in `uucore` (`umask`, `mkdirat`, and more) and `mknod` + - Eliminated TOCTOU races in `ln`, `tac`, and `install -D` + - `rm`: `--preserve-root` now works correctly on symlinks + - MSRV updated to **1.88** + +- **Notable Bug Fixes** + - `date`: Extensive fixes — `-u`/`-s`/`-d` flags, timezone abbreviation lookup and DST, RFC-822 format, `%+`/`%_` modifiers, `--debug`, locale `date_fmt` + - `cp`: Readonly directories, `-a`/`-z` flags, special files, non-UTF-8 directory names + - `mv`: Preserve symlinks during cross-device moves, handle FIFOs in directories + - `ls`: Hyperlink OSC 8 format, dired reports, fd leak on deep recursion, invalid UTF-8 hidden files + - `sort`: Collator panic in worker threads, scientific notation parsing + - `paste`: Multi-byte delimiters, GNU escape sequences, bounded buffering + - `printf`: `%q` shell quoting with control chars and quotes + - `ptx`: `-t`/`--typeset-mode`, multibyte Unicode panic, GNU default behavior + - `numfmt`: `--debug` flag, empty delimiter, null byte handling, error message formatting + - `cksum`: SHAKE algorithms, `--binary`/`--text`/`--tag` errors + - `cut`, `tac`, `tail`, `tr`, `uniq`, `od`, `chroot`, `stat`, `mktemp`, `pr`, `readlink`, `ln`, `kill`, `nproc`, `rm`, `env`, `sync`, `fmt`, `factor`, `wc`: Various GNU compatibility and correctness fixes + +- **Platform Support** + - NetBSD and PowerPC build fixes + - Windows: `tac` stdin piping, `test -r/-w/-x`, publish static `*.exe` binaries + - WebAssembly: Publish `*.wasm` artifacts + - `stdbuf`: Support `libstdbuf` in same directory as binary + - NixOS test compatibility fix; added security audit workflow + +- **Contributions**: This release was made possible by **23 new contributors** joining our community + +--- + +### Call to Action: + +**Help us translate** - Contribute translations at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/) +**Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils) + +## What's Changed + +## cat +* cat: strip errno by @oech3 in https://github.com/uutils/coreutils/pull/10885 + +## cksum +* *sum: Fix locales fetching from `checksum_common` after installation by @RenjiSann in https://github.com/uutils/coreutils/pull/10575 +* *sum: Fix read_byte_lines discarding read errors by @RenjiSann in https://github.com/uutils/coreutils/pull/10671 +* test/cksum: implement `test_signed_checksums` by @0xMillyByte in https://github.com/uutils/coreutils/pull/10714 +* cksum: Accept SHAKE algorithms by @RenjiSann in https://github.com/uutils/coreutils/pull/10772 +* cksum family: Backport new errors for --binary, --text and --tag by @oech3 in https://github.com/uutils/coreutils/pull/10618 +* cksum family: Fix clippy::unnecessary_wraps by @oech3 in https://github.com/uutils/coreutils/pull/11110 + +## chroot +* chroot: fix gid being set by uid with --userspec #10307 by @cerdelen in https://github.com/uutils/coreutils/pull/10465 +* chroot: use var_os by @xtqqczze in https://github.com/uutils/coreutils/pull/11070 + +## comm +* comm /etc/pacman.conf /dev/null 2>/dev/full does not abort by @oech3 in https://github.com/uutils/coreutils/pull/10746 +* date, comm, tty: Fixing handling output to dev/null by @ChrisDryden in https://github.com/uutils/coreutils/pull/10888 + +## coreutils +* tests/misc/coreutils.sh: Fail with invalid binary name by @oech3 in https://github.com/uutils/coreutils/pull/10258 +* coreutils: output expected error for unrecognized options by @ChrisDryden in https://github.com/uutils/coreutils/pull/9869 +* coreutils: Let the name *utils valid by @oech3 in https://github.com/uutils/coreutils/pull/10729 +* coreutils: Fix 2>/dev/full aborts & drop a sed for GnuTests by @oech3 in https://github.com/uutils/coreutils/pull/10740 +* all: --typo 2>/dev/full does not abort by @oech3 in https://github.com/uutils/coreutils/pull/10764 +* Add regression test for coreutils --list by @oech3 in https://github.com/uutils/coreutils/pull/10858 + +## cp +* cp: fix recursive copy of readonly directories by @nikolalukovic in https://github.com/uutils/coreutils/pull/10529 +* cp: improve code clarity and remove redundant filesystem checks by @sylvestre in https://github.com/uutils/coreutils/pull/10790 +* cp: fixing cp -a functionality to match gnu implementation for -z flag handling and for folders by @ChrisDryden in https://github.com/uutils/coreutils/pull/10207 +* cp: Fix panic when recursively copying a directory with a non-UTF8 name by @aweinstock314 in https://github.com/uutils/coreutils/pull/11148 +* cp: handle special files by @victor-prokhorov in https://github.com/uutils/coreutils/pull/11163 + +## csplit +* refactor(csplit): use &str slices for patterns by @xtqqczze in https://github.com/uutils/coreutils/pull/11013 +* csplit: add benchmarks for line number and regex pattern splitting by @sylvestre in https://github.com/uutils/coreutils/pull/10927 + +## cut +* cut: fix -s flag for newline delimiter and optimize memory allocation by @akervald in https://github.com/uutils/coreutils/pull/11143 +* cut: two simple refactorings by @cakebaker in https://github.com/uutils/coreutils/pull/11194 + +## date +* date: fix -u flag to match GNU behavior for input parsing by @ChrisDryden in https://github.com/uutils/coreutils/pull/10715 +* date: Fix format optional argument to capture all following parameters by @cerdelen in https://github.com/uutils/coreutils/pull/10914 +* date: fix -s UTC conversion losing timezone offset by @yachi in https://github.com/uutils/coreutils/pull/10828 +* date: fix RFC-822 format to always use English names by @sylvestre in https://github.com/uutils/coreutils/pull/10932 +* date: bump parse_datetime & add test for leap-1 GNU test by @sylvestre in https://github.com/uutils/coreutils/pull/10933 +* date: add tests to match GNU's by @sylvestre in https://github.com/uutils/coreutils/pull/10939 +* date: fix double periods in Hungarian month abbreviations by @naoNao89 in https://github.com/uutils/coreutils/pull/10945 +* date: fix subfmt-up1, fill-1, pct-pct, and invalid-high-bit-set tests / implement --debug by @sylvestre in https://github.com/uutils/coreutils/pull/10940 +* date: use locale date_fmt instead of D_T_FMT for default format by @ChrisDryden in https://github.com/uutils/coreutils/pull/10935 +* date: Fix Error message missing '+' for format string after valid d flag by @cerdelen in https://github.com/uutils/coreutils/pull/10982 +* date: fix -d with relative dates and timezone abbreviations by @yachi in https://github.com/uutils/coreutils/pull/10956 +* date: fix timezone abbreviations using wrong offset outside their DST season by @aguimaraes in https://github.com/uutils/coreutils/pull/11045 +* date: fix %+ and %_ modifier edge cases by @naoNao89 in https://github.com/uutils/coreutils/pull/10999 +* date: extend tz abbreviation lookup by @cerdelen in https://github.com/uutils/coreutils/pull/11229 +* date: Remove eprintln! to avoid 2>/dev/full abort by @oech3 in https://github.com/uutils/coreutils/pull/11228 +* date, comm, tty: Fixing handling output to dev/null by @ChrisDryden in https://github.com/uutils/coreutils/pull/10888 + +## dd +* dd: simplify signal handling by removing Alarm timer thread by @ChrisDryden in https://github.com/uutils/coreutils/pull/10768 + +## df +* df: fallback when proc masked by @ChrisDryden in https://github.com/uutils/coreutils/pull/10417 + +## dircolors +* dircolors >/dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10948 + +## du +* du: deduplicate Stat::new call by @svlv in https://github.com/uutils/coreutils/pull/10584 +* du: Use rustc-hash for du -a / performance by @oech3 in https://github.com/uutils/coreutils/pull/10663 +* du: Flags 'm', 'k', 'm' should be POSIX style overriden by @cerdelen in https://github.com/uutils/coreutils/pull/10664 +* Du size_format flag override by @cerdelen in https://github.com/uutils/coreutils/pull/10743 +* du: malloc perf +3~6% by @oech3 in https://github.com/uutils/coreutils/pull/11034 + +## echo +* echo --version >/dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10853 + +## env +* env: fix regression of `--ignore-signal=PIPE` by @Ecordonnier in https://github.com/uutils/coreutils/pull/9618 + +## expand +* expand: remove read_until by @cerdelen in https://github.com/uutils/coreutils/pull/10657 +* expand: remove empty after help by @cakebaker in https://github.com/uutils/coreutils/pull/10977 +* expand: Fix performance drop with cgu=1 by ascii fast-path by @oech3 in https://github.com/uutils/coreutils/pull/11104 + +## expr +* expr --version >/dev/full panics & --help > /dev/full should fail by @oech3 in https://github.com/uutils/coreutils/pull/10854 + +## factor +* factor: add a test for a num-prime issue by @sylvestre in https://github.com/uutils/coreutils/pull/11096 +* factor: trim also null-chars by @yotam-medini in https://github.com/uutils/coreutils/pull/11182 + +## false +* false: dedup set_exit_code(1) by @oech3 in https://github.com/uutils/coreutils/pull/10823 +* true, false: Fix broken pipe by @oech3 in https://github.com/uutils/coreutils/pull/11204 +* true, false: drop Vec for binary size and perf by @oech3 in https://github.com/uutils/coreutils/pull/11223 + +## fmt +* fmt: restore GNU compatibility for tests/fmt/width by @karanabe in https://github.com/uutils/coreutils/pull/11073 + +## fold +* fold: refactor compute_col_count and add character mode tests by @ChrisDryden in https://github.com/uutils/coreutils/pull/10533 +* fold: replace truncate(0) with clear() by @xtqqczze in https://github.com/uutils/coreutils/pull/11059 + +## hostname +* hostname: fix panic on hostname > /dev/full by @WhateverAWS in https://github.com/uutils/coreutils/pull/10912 +* feat(hostname): add benchmark with large /etc/hosts by @naoNao89 in https://github.com/uutils/coreutils/pull/10979 + +## id +* Id: don't panic on write error by @FidelSch in https://github.com/uutils/coreutils/pull/10769 + +## install +* Fixed permissions in install for unix by @max-amb in https://github.com/uutils/coreutils/pull/10564 +* fix(install): prevent symlink race condition in install -D (fixes #10013) by @abendrothj in https://github.com/uutils/coreutils/pull/10140 + +## kill +* kill: fix GNU compatibility tests for RTMIN and RTMAX by @karanabe in https://github.com/uutils/coreutils/pull/11224 + +## ln +* fix: eliminate TOCTOU races in ln and tac by deferring is_dir() checks by @abendrothj in https://github.com/uutils/coreutils/pull/10991 +* ln: Interactive and Force override each other instead of defaulting to Force if both are specified by @aweinstock314 in https://github.com/uutils/coreutils/pull/11129 + +## ls +* ls: Replace Fnv with rustc-hash by @oech3 in https://github.com/uutils/coreutils/pull/10686 +* ls: fix hyperlink functionality to use correct OSC 8 format and handle symlink targets by @sylvestre in https://github.com/uutils/coreutils/pull/10824 +* ls: fix ls dired reports by @mattsu2020 in https://github.com/uutils/coreutils/pull/10527 +* ls: release directory fds before recursing to avoid EMFILE by @ChrisDryden in https://github.com/uutils/coreutils/pull/10894 +* ls: Update French translations by @sylvestre in https://github.com/uutils/coreutils/pull/11003 +* ls: Use rustc-hash at colors by @oech3 in https://github.com/uutils/coreutils/pull/10700 +* ls: Treat paths starting with a dot as hidden even if they contain invalid UTF-8. by @aweinstock314 in https://github.com/uutils/coreutils/pull/11135 + +## mktemp +* mktemp: handle invalid UTF-8 in suffix gracefully by @sylvestre in https://github.com/uutils/coreutils/pull/10818 +* mktemp: use env::os_var by @xtqqczze in https://github.com/uutils/coreutils/pull/11113 +* mktemp: Don't panic when getrandom failed by @oech3 in https://github.com/uutils/coreutils/pull/11154 + +## mknod +* mKnod: Refactor to remove unsafe code by @mattsu2020 in https://github.com/uutils/coreutils/pull/10138 + +## mv +* mv: handle FIFOs inside directories during cross-partition move by @ChrisDryden in https://github.com/uutils/coreutils/pull/10857 +* fix(mv): correct selinux cfg gating for non-Linux platforms by @naoNao89 in https://github.com/uutils/coreutils/pull/10989 +* mv: Use rustc-hash by @oech3 in https://github.com/uutils/coreutils/pull/11010 +* mv: preserve symlinks during cross-device moves instead of expanding them by @sylvestre in https://github.com/uutils/coreutils/pull/10546 + +## nl +* perf(nl): optimize line numbering by using itoa and direct writing by @CrazyRoka in https://github.com/uutils/coreutils/pull/10757 + +## nproc +* nproc: process space in OMP_NUM_THREADS by @cuiweixie in https://github.com/uutils/coreutils/pull/10973 +* nproc: Cleanup a const by @oech3 in https://github.com/uutils/coreutils/pull/11191 +* nproc: Minor cleanup by @oech3 in https://github.com/uutils/coreutils/pull/11192 + +## numfmt +* numfmt: add --debug flag to print warnings about invalid input by @ChrisDryden in https://github.com/uutils/coreutils/pull/10110 +* numfmt: numfmt --debug 2>/dev/full does not abort by @tuananh in https://github.com/uutils/coreutils/pull/10668 +* numfmt: fix empty delimiter and whitespace handling by @ChrisDryden in https://github.com/uutils/coreutils/pull/10350 +* numfmt: optimize output handling by using stdout directly by @xtqqczze in https://github.com/uutils/coreutils/pull/11051 +* fix(numfmt): Read lines only up to null byte (as GNU does) by @FidelSch in https://github.com/uutils/coreutils/pull/11146 +* fix(numfmt): format output on error messages by @FidelSch in https://github.com/uutils/coreutils/pull/11179 +* numfmt: stop a clone by @oech3 in https://github.com/uutils/coreutils/pull/11221 + +## od +* od: fix od -v /dev/zero panic by @mattsu2020 in https://github.com/uutils/coreutils/pull/10576 + +## paste +* paste: support multi-byte delimiters and GNU escape sequences by @ChrisDryden in https://github.com/uutils/coreutils/pull/10840 +* paste: avoid unbounded buffering for single input by @mattsu2020 in https://github.com/uutils/coreutils/pull/11060 + +## pr +* pr: fix column behavior for short files by @jfinkels in https://github.com/uutils/coreutils/pull/10379 +* pr missing 2>/dev/full does not abort by @oech3 in https://github.com/uutils/coreutils/pull/10731 +* pr: implement the -e flag by @cerdelen in https://github.com/uutils/coreutils/pull/10167 + +## printf +* printf: fix %q shell quoting with control chars and quotes by @sylvestre in https://github.com/uutils/coreutils/pull/10816 + +## ptx +* ptx: implement -t/--typeset-mode to change default width to 100 by @ChrisDryden in https://github.com/uutils/coreutils/pull/10856 +* ptx: fix panic when truncation string/keyword contain multibyte Unicode by @Xylphy in https://github.com/uutils/coreutils/pull/10836 +* ptx: match GNU default behavior by skipping non-alphabetic index tokens by @Xylphy in https://github.com/uutils/coreutils/pull/10919 + +## readlink +* readlink: Set silent mode as default by @denendaden in https://github.com/uutils/coreutils/pull/10711 + +## rm +* rm --preserve-root should work on symlink too by @sylvestre in https://github.com/uutils/coreutils/pull/9706 +* rm: report permission denied for unreadable subdirectories by @o1x3 in https://github.com/uutils/coreutils/pull/10974 + +## shuf +* shuf: Use rustc-hash for performance by @oech3 in https://github.com/uutils/coreutils/pull/10648 +* shuf: Drop inline after switched to fxhash by @oech3 in https://github.com/uutils/coreutils/pull/10781 +* shuf: Reduce malloc by @oech3 in https://github.com/uutils/coreutils/pull/10998 +* shuf: delete useless cast by @oech3 in https://github.com/uutils/coreutils/pull/11106 +* shuf: try Vec first and fallback to HashMap if it cause OOM by @oech3 in https://github.com/uutils/coreutils/pull/11169 +* shuf: Reduce malloc, perf +4% by @oech3 in https://github.com/uutils/coreutils/pull/11219 + +## sort +* sort: remove redundant if by @oech3 in https://github.com/uutils/coreutils/pull/10716 +* Sort: Use ahash by @oech3 in https://github.com/uutils/coreutils/pull/10783 +* sort: making ClosedCompressedTmpFile::reopen() not panic. by @devnexen in https://github.com/uutils/coreutils/pull/10807 +* sort: fix panic when collator not available in worker threads by @sylvestre in https://github.com/uutils/coreutils/pull/10915 +* fix: scientific notation is incorrectly parsed in general numeric sort by @Kaua-Klassmann in https://github.com/uutils/coreutils/pull/10437 +* sort: use LazyLock by @xtqqczze in https://github.com/uutils/coreutils/pull/10969 +* Sort debug message by @hlsxx in https://github.com/uutils/coreutils/pull/10960 +* sort: Replace malloc and 0 fill with huge reserve & min 0 fill by @oech3 in https://github.com/uutils/coreutils/pull/10975 +* sort: remove reserve which is difficult to understand by @oech3 in https://github.com/uutils/coreutils/pull/11040 +* sort: update DEFAULT_BUF_SIZE to 8 KiB by @xtqqczze in https://github.com/uutils/coreutils/pull/11041 +* sort: failed to set message sort by @hlsxx in https://github.com/uutils/coreutils/pull/11137 +* sort --compress-program missing 2>/dev/full does not abort by @oech3 in https://github.com/uutils/coreutils/pull/10951 +* deps: replace ahash with foldhash by @xtqqczze in https://github.com/uutils/coreutils/pull/11187 + +## split +* perf(split): reuse buffer in chunked splitting loop by @CrazyRoka in https://github.com/uutils/coreutils/pull/10695 +* perf(split): optimize FixedWidthNumber Display implementation by @CrazyRoka in https://github.com/uutils/coreutils/pull/10723 +* split: Reduce malloc by @oech3 in https://github.com/uutils/coreutils/pull/10976 + +## stat +* stat: fix mount table read when /proc is unavailable by @sylvestre in https://github.com/uutils/coreutils/pull/10300 +* print_numeric: print mode in octal when the mode is too large by @Connor-GH in https://github.com/uutils/coreutils/pull/10208 + +## stdbuf +* stdbuf: support libstdbuf in same directory as stdbuf by @Ecordonnier in https://github.com/uutils/coreutils/pull/10352 +* stdbuf: fix warning from `uninlined_format_args` by @cakebaker in https://github.com/uutils/coreutils/pull/10784 + +## stty +* stty: cleanup cfg by @oech3 in https://github.com/uutils/coreutils/pull/10879 +* stty: fix compilation on PowerPC architectures by @sylvestre in https://github.com/uutils/coreutils/pull/11050 + +## sync +* sync: handle fcntl errors with localized warnings by @sylvestre in https://github.com/uutils/coreutils/pull/10330 +* sync: open file with nonblock by @reubenwong97 in https://github.com/uutils/coreutils/pull/10765 +* sync: return after checking all inputs by @reubenwong97 in https://github.com/uutils/coreutils/pull/10742 + +## tac +* tac: fix stdin piping on Windows by skipping empty mmap results by @ChrisDryden in https://github.com/uutils/coreutils/pull/10795 +* tac: support non-UTF-8 separator by @victor-prokhorov in https://github.com/uutils/coreutils/pull/10934 + +## tail +* tail: report PermissionDenied instead of No such file when metadata fails by @RedNhight in https://github.com/uutils/coreutils/pull/11018 +* tests/tail: reduce delays in multiple tests to speed up execution by @domysu in https://github.com/uutils/coreutils/pull/11206 + +## test +* test: make the man-page readable + sync by @matttbe in https://github.com/uutils/coreutils/pull/10737 +* test: implement -r/-w/-x on Windows by @anihal in https://github.com/uutils/coreutils/pull/11120 + +## tr +* tr: fix possible usage in invalid utf8 set sequence. by @devnexen in https://github.com/uutils/coreutils/pull/10791 +* tr: simplify truncate logic by @xtqqczze in https://github.com/uutils/coreutils/pull/11072 + +## true +* true/false: remove large clap call by @my4ng in https://github.com/uutils/coreutils/pull/10673 +* true, false: Improve perf & fix clippy::unnecessary_wraps by @oech3 in https://github.com/uutils/coreutils/pull/11200 +* feat(true/false): add benchmarks for startup performance by @naoNao89 in https://github.com/uutils/coreutils/pull/10996 + +## tsort +* tsort: Use rustc-hash by @oech3 in https://github.com/uutils/coreutils/pull/10680 + +## unexpand +* Unexpand use buffered reads + tests by @cerdelen in https://github.com/uutils/coreutils/pull/10831 +* unexpand: codegen-units=1 by @oech3 in https://github.com/uutils/coreutils/pull/10817 +* unexpand: Refactor functions to use less parameters by @cerdelen in https://github.com/uutils/coreutils/pull/10900 +* unexpand: ascii fast-path by @oech3 in https://github.com/uutils/coreutils/pull/11114 +* unexpand: reuse a smaller buf, perf 14%+ by @oech3 in https://github.com/uutils/coreutils/pull/11178 + +## uniq +* uniq: fix -w to count bytes in C locale by @aguimaraes in https://github.com/uutils/coreutils/pull/11061 + +## uptime +* uptime: fix "unused import" warnings in test file by @cakebaker in https://github.com/uutils/coreutils/pull/10651 +* uptime: Remove wincode and wincode-derive dependencies by @ChrisDryden in https://github.com/uutils/coreutils/pull/10802 +* fix: uptime > /dev/full panic fix by @hlsxx in https://github.com/uutils/coreutils/pull/10827 + +## vdir +* vdir: make vdir an alias of ls to resolve missing ftl by @NatsuCamellia in https://github.com/uutils/coreutils/pull/10434 + +## wc +* wc: stop processing --files0-from input after stdout write failure by @mattsu2020 in https://github.com/uutils/coreutils/pull/11023 + +## whoami +* whoami: fix usage line for unexpected arguments by @YuF-9468 in https://github.com/uutils/coreutils/pull/11159 + +## uucore +* uucore: refactor digest_reader to use ReadingMode enum by @0xMillyByte in https://github.com/uutils/coreutils/pull/10720 +* uucore: Use `nix::sys::stat::umask` in `uucore::mode::get_umask` by @mattsu2020 in https://github.com/uutils/coreutils/pull/11102 +* uucore: fix correct mkdirat implementation to use nix crate's mkdirat function by @mattsu2020 in https://github.com/uutils/coreutils/pull/11126 +* uucore: replace unsafe libc calls with safe nix crate wrappers by @mattsu2020 in https://github.com/uutils/coreutils/pull/11156 +* uucore: use transmute instead of raw pointers by @xtqqczze in https://github.com/uutils/coreutils/pull/11077 +* uucore: Disallow slashes in determine_backup_suffix by @aweinstock314 in https://github.com/uutils/coreutils/pull/11149 +* uucore: disable signals at simple utils for binary size and fast startup by @oech3 in https://github.com/uutils/coreutils/pull/11186 +* dedup high-cost localization setup by @oech3 in https://github.com/uutils/coreutils/pull/11147 + +## CI & Build +* Catch regressions at early stage by @oech3 in https://github.com/uutils/coreutils/pull/10627 +* ci: enable memory profiling again by @not-matthias in https://github.com/uutils/coreutils/pull/10659 +* Revert "CICD.yml: upload binaries without version string" by @sylvestre in https://github.com/uutils/coreutils/pull/10676 +* Fix tag/latest-commit & comment naming policy by @oech3 in https://github.com/uutils/coreutils/pull/10684 +* fuzzing.yml: Use prebuilt for faster setup by @oech3 in https://github.com/uutils/coreutils/pull/10498 +* chore: run pre-commit on all files by @aaron-ang in https://github.com/uutils/coreutils/pull/10119 +* MSRV 1.88 by @oech3 in https://github.com/uutils/coreutils/pull/10771 +* Drop release-fast profile for simplicity by @oech3 in https://github.com/uutils/coreutils/pull/10476 +* actions: add security audit workflow by @xtqqczze in https://github.com/uutils/coreutils/pull/10767 +* Publish *.wasm by @oech3 in https://github.com/uutils/coreutils/pull/10656 +* Add rust-version field to all Cargo.toml files by @xtqqczze in https://github.com/uutils/coreutils/pull/10778 +* GnuTests: 9.10, remove a bunch of backported tests by @oech3 in https://github.com/uutils/coreutils/pull/10721 +* build: sort coreutils entries at build time by @Xylphy in https://github.com/uutils/coreutils/pull/10820 +* GNUmakefile: Allow cross-build for Windows by @oech3 in https://github.com/uutils/coreutils/pull/10897 +* CICD: Publish static individual *.exe by @oech3 in https://github.com/uutils/coreutils/pull/10903 +* benchmarks.yml: Use prebuilt tools for reproducible benches by @oech3 in https://github.com/uutils/coreutils/pull/10497 +* ci: remove GNU build caching from GnuTests workflow by @ChrisDryden in https://github.com/uutils/coreutils/pull/10961 +* CICD: Introduce check-only for Redox CI by @oech3 in https://github.com/uutils/coreutils/pull/10950 +* rust: use const_locks feature by @xtqqczze in https://github.com/uutils/coreutils/pull/10968 +* uutests: preserve PATH in UCommand to fix NixOS test failures by @0xMillyByte in https://github.com/uutils/coreutils/pull/10959 +* build-gnu: fix factor tests being re-added by automake during make check by @ChrisDryden in https://github.com/uutils/coreutils/pull/10907 +* Prevent make check from rebuilding GNU binaries over uutils ones by @ChrisDryden in https://github.com/uutils/coreutils/pull/11049 +* Disable strip related tests on Android by @oech3 in https://github.com/uutils/coreutils/pull/11047 +* test_env: Make argv0 tests compatible with Ubuntu patch by @oech3 in https://github.com/uutils/coreutils/pull/10834 +* GnuTests: Use our libstdbuf.so by @oech3 in https://github.com/uutils/coreutils/pull/10793 +* Avoid non reproducible cache generation at codcov by @oech3 in https://github.com/uutils/coreutils/pull/10926 +* Use MULTICALL=y at toybox test for faster CI by @oech3 in https://github.com/uutils/coreutils/pull/10370 +* CICD: Drop a duplicated test producing huge caches by @oech3 in https://github.com/uutils/coreutils/pull/10513 +* Don't fail when sccache caused network error & mark 2 tests flakey by @oech3 in https://github.com/uutils/coreutils/pull/11098 +* Don't wrap rustc when sccache action caused network err by @oech3 in https://github.com/uutils/coreutils/pull/11141 +* Cargo.toml: Avoid huge diff generation at version bump by @oech3 in https://github.com/uutils/coreutils/pull/11131 +* Cargo.toml: Define feat_wasm by @oech3 in https://github.com/uutils/coreutils/pull/11074 +* Mark pr/bounded-memory flakey & drop 2 useless setup by @oech3 in https://github.com/uutils/coreutils/pull/10887 +* Mark date-locale-hour flakey & drop a useless cache action by @oech3 in https://github.com/uutils/coreutils/pull/11093 +* Updating intermittent gnu test failures to reflect recent changes by @ChrisDryden in https://github.com/uutils/coreutils/pull/10804 + +## Documentation +* README.md: Don't recommend latest-commit for everyone by @oech3 in https://github.com/uutils/coreutils/pull/10678 +* add 0.5.0 & 0.6.0 release notes by @sylvestre in https://github.com/uutils/coreutils/pull/10709 +* Remove the word: hashsums by @oech3 in https://github.com/uutils/coreutils/pull/10674 +* fix docs hashsumS and test by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/7936 +* head: improve help grammar by @memark in https://github.com/uutils/coreutils/pull/10848 +* Fix for potential typos by @lanceXwq in https://github.com/uutils/coreutils/pull/10822 +* chore: use consistent copyright header in `.rs` files by @xtqqczze in https://github.com/uutils/coreutils/pull/11020 + +## Code Quality & Cleanup +* clippy: fix nightly map_unwrap_or lint by @xtqqczze in https://github.com/uutils/coreutils/pull/10625 +* Re-enable unused_qualifications lint by @Xylphy in https://github.com/uutils/coreutils/pull/10571 +* chore: a few more Clippy fixes by @nyurik in https://github.com/uutils/coreutils/pull/10697 +* chore: minor optimizations by @nyurik in https://github.com/uutils/coreutils/pull/10707 +* chore: fix `clippy::single_match_else` by @nyurik in https://github.com/uutils/coreutils/pull/10699 +* chore: `clippy::unreadable_literal` by @nyurik in https://github.com/uutils/coreutils/pull/10717 +* refactor: removing unnecessary references in fn signatures by @nyurik in https://github.com/uutils/coreutils/pull/10703 +* chore: `clippy::wildcard_imports` by @nyurik in https://github.com/uutils/coreutils/pull/10719 +* chore: `clippy::unnecessary_wraps` by @nyurik in https://github.com/uutils/coreutils/pull/10722 +* chore: a few minor lints by @nyurik in https://github.com/uutils/coreutils/pull/10754 +* chore: `clippy::redundant_closure_for_method_calls` by @nyurik in https://github.com/uutils/coreutils/pull/10704 +* refactor: inline format! args in a few places by @nyurik in https://github.com/uutils/coreutils/pull/10730 +* clippy: fix manual_is_multiple_of lint by @xtqqczze in https://github.com/uutils/coreutils/pull/10775 +* clippy: fix struct_field_names lint by @xtqqczze in https://github.com/uutils/coreutils/pull/10902 +* clippy: fix nightly lints by @xtqqczze in https://github.com/uutils/coreutils/pull/10970 +* clippy: fix lints by @xtqqczze in https://github.com/uutils/coreutils/pull/11000 +* clippy: fix nightly lints by @xtqqczze in https://github.com/uutils/coreutils/pull/11232 +* clippy: enable `struct_field_names` lint by @cakebaker in https://github.com/uutils/coreutils/pull/11214 +* chore: Enable workspace lints in uutest crate by @Xylphy in https://github.com/uutils/coreutils/pull/10727 +* deps: remove unused rust deps by @xtqqczze in https://github.com/uutils/coreutils/pull/10688 +* use zip for cleaner iteration with 1-based index by @xtqqczze in https://github.com/uutils/coreutils/pull/10963 +* refactor: simplify UError construction by @xtqqczze in https://github.com/uutils/coreutils/pull/11171 +* refactor: use slice::get for clarity by @xtqqczze in https://github.com/uutils/coreutils/pull/11108 +* tail: disallow clippy::wrong_self_convention by @oech3 in https://github.com/uutils/coreutils/pull/11145 +* Remove hashsum test files by @oech3 in https://github.com/uutils/coreutils/pull/11086 + +## Dependency Updates +* Bump wincode crates to `0.3.1` by @cakebaker in https://github.com/uutils/coreutils/pull/10650 +* chore(deps): update rust crate regex to v1.12.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10683 +* chore(deps): update rust crate clap to v4.5.57 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10685 +* chore(deps): update rust crate zip to v7.3.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10713 +* chore(deps): update vmactions/freebsd-vm action to v1.3.9 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9605 +* chore(deps): update rust crate jiff to v0.2.19 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10760 +* chore(deps): update rust crate memchr to v2.8.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10774 +* chore(deps): update rust crate libc to v0.2.181 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10844 +* Revert "chore(deps): update rust crate libc to v0.2.181" by @xtqqczze in https://github.com/uutils/coreutils/pull/10875 +* chore(deps): update rust crate clap to v4.5.58 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10876 +* chore(deps): update rust crate clap_complete to v4.5.66 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10877 +* Bump `jiff` & fix clippy warning by @cakebaker in https://github.com/uutils/coreutils/pull/10881 +* chore(deps): update rust crate tempfile to v3.25.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10843 +* chore(deps): update rust crate libfuzzer-sys to v0.4.12 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10864 +* chore(deps): update rust crate z85 to v3.0.7 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10913 +* chore(deps): update rust crate zip to v8 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10944 +* chore(deps): update rust crate indicatif to v0.18.4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10936 +* chore(deps): update rust crate memmap2 to v0.9.10 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10953 +* chore(deps): update rust crate clap to v4.5.59 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10985 +* chore(deps): update rust crate zip to v8.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10990 +* fix(deps): update rust crate keccak to v0.1.6 by @xtqqczze in https://github.com/uutils/coreutils/pull/10988 +* chore(deps): update dawidd6/action-download-artifact action to v15 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11012 +* chore(deps): update rust crate clap to v4.5.60 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11030 +* Bump fuzzer's libc to 0.2.182 by @oech3 in https://github.com/uutils/coreutils/pull/11037 +* fuzz: bump `keccak` from `0.1.5` to `0.1.6` by @cakebaker in https://github.com/uutils/coreutils/pull/11035 +* chore(deps): update rust crate rustix to 1.1.4 by @xtqqczze in https://github.com/uutils/coreutils/pull/11055 +* chore(deps): update rust crate jiff to v0.2.21 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11058 +* chore(deps): update rust crate tempfile to v3.26.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11087 +* Bump `num-prime` from `0.4.4` to `0.5.0` by @cakebaker in https://github.com/uutils/coreutils/pull/11069 +* deps: update rust crate futures-util to v0.3.32 by @xtqqczze in https://github.com/uutils/coreutils/pull/11094 +* chore(deps): update dawidd6/action-download-artifact action to v16 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11121 +* chore(deps): update rust crate jiff to v0.2.22 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11164 +* chore(deps): update rust crate zip to v8.2.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11184 +* chore(deps): update rust crate quote to v1.0.45 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11188 +* chore(deps): update rust crate jiff to v0.2.23 by @renovate[bot] in https://github.com/uutils/coreutils/pull/11189 +* chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/uutils/coreutils/pull/11132 +* deps: replace ahash with foldhash by @xtqqczze in https://github.com/uutils/coreutils/pull/11187 +* deny.toml: remove `signal-hook` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/10785 + +## Version Management +* prepare release 0.7.0 by @sylvestre in https://github.com/uutils/coreutils/pull/11128 + +## New Contributors +* @my4ng made their first contribution in https://github.com/uutils/coreutils/pull/10673 +* @tuananh made their first contribution in https://github.com/uutils/coreutils/pull/10668 +* @0xMillyByte made their first contribution in https://github.com/uutils/coreutils/pull/10714 +* @NatsuCamellia made their first contribution in https://github.com/uutils/coreutils/pull/10434 +* @nikolalukovic made their first contribution in https://github.com/uutils/coreutils/pull/10529 +* @memark made their first contribution in https://github.com/uutils/coreutils/pull/10848 +* @lanceXwq made their first contribution in https://github.com/uutils/coreutils/pull/10822 +* @denendaden made their first contribution in https://github.com/uutils/coreutils/pull/10711 +* @hlsxx made their first contribution in https://github.com/uutils/coreutils/pull/10827 +* @WhateverAWS made their first contribution in https://github.com/uutils/coreutils/pull/10912 +* @vjardin made their first contribution in https://github.com/uutils/coreutils/pull/10901 +* @yachi made their first contribution in https://github.com/uutils/coreutils/pull/10828 +* @cuiweixie made their first contribution in https://github.com/uutils/coreutils/pull/10973 +* @o1x3 made their first contribution in https://github.com/uutils/coreutils/pull/10974 +* @aguimaraes made their first contribution in https://github.com/uutils/coreutils/pull/11045 +* @victor-prokhorov made their first contribution in https://github.com/uutils/coreutils/pull/10934 +* @RedNhight made their first contribution in https://github.com/uutils/coreutils/pull/11018 +* @anihal made their first contribution in https://github.com/uutils/coreutils/pull/11112 +* @aweinstock314 made their first contribution in https://github.com/uutils/coreutils/pull/11129 +* @YuF-9468 made their first contribution in https://github.com/uutils/coreutils/pull/11159 +* @yotam-medini made their first contribution in https://github.com/uutils/coreutils/pull/11182 +* @akervald made their first contribution in https://github.com/uutils/coreutils/pull/11143 +* @domysu made their first contribution in https://github.com/uutils/coreutils/pull/11206 + +**Full Changelog**: https://github.com/uutils/coreutils/compare/0.6.0...0.7.0