版本发布 8
### 📦 **Rust Coreutils 0.4.0 Release:** We are pleased to announce the release of **Rust Coreutils 0.4.0** — continuing our journey toward full GNU compatibility with **improved test coverage**, **enhanced functionality**, and **robust implementations**! --- ### Highlights: - **Enhanced GNU Compatibility** - **544 passing tests** (+12 from 0.3.0), achieving **85.80%** compatibility - Reduced failures from 68 to 56 (-12) - Better compatibility with GNU `date` timezone handling - **Algorithm & Performance Improvements** - `factor`: Integrated num_prime crate for faster u64/u128 factorization - `tsort`: Fixed stack overflow issues with iterative DFS implementation - `cksum`: Added comprehensive performance benchmarks - `mkdir`: Fixed stack overflow with deeply nested directories - **Platform Support Enhancements** - OpenBSD support for `stdbuf` and `uptime` - FreeBSD build and test improvements - Better cross-platform compatibility - **hashsum Reorganization** - Removed non-GNU binaries to fix interface divergence - Merged functionality into `cksum` for better GNU compatibility - Marked hashsum as deprecated in favor of cksum - **Contributions**: This release was made possible by the dedication of **17 contributors**, including **4 newcomers**. --- ### GNU Test Suite Compatibility: | Result | 0.3.0 | 0.4.0 | Change 0.3.0 to 0.4.0 | % Total 0.3.0 | % Total 0.4.0 | % Change 0.3.0 to 0.4.0 | |---------------|-------|-------|------------------------|---------------|---------------|--------------------------| | Pass | 532 | 544 | +12 | 83.91% | 85.80% | +1.89% | | Skip | 33 | 33 | 0 | 5.20% | 5.20% | +0.01% | | Fail | 68 | 56 | -12 | 10.73% | 8.83% | -1.90% | | Error | 1 | 1 | 0 | 0.16% | 0.16% | 0% | | Total | 634 | 634 | 0 | | | | ---  --- ### Call to Action: 🌍 **Help us translate** - Contribute translations at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/) 🚀 **Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils) 🔗 Download the latest release: [https://uutils.github.io](https://uutils.github.io) ## What's Changed ## base64 * Align base64 with GNU base64.pl tests by @karanabe in https://github.com/uutils/coreutils/pull/9194 ## cat * Fix EINTR handling in cat by @naoNao89 in https://github.com/uutils/coreutils/pull/8946 * fix(cat): refine unsafe overwrite detection for appending files by @mattsu2020 in https://github.com/uutils/coreutils/pull/9122 ## chown * Fix chown tests for FreeBSD and macOS by @akretz in https://github.com/uutils/coreutils/pull/9058 ## cksum * Refactor cksum for incoming merge with hashsum, Fix behavior for `--text` and `--untagged` by @RenjiSann in https://github.com/uutils/coreutils/pull/9024 * Fix "cksum: --length 0 shouldn't fail for algorithms that don't support --length" by @RenjiSann in https://github.com/uutils/coreutils/pull/9032 * Add support for sha2, sha3 by @RenjiSann in https://github.com/uutils/coreutils/pull/9035 * Fix GNU `cksum-c.sh` and `cksum-sha3.sh` by @RenjiSann in https://github.com/uutils/coreutils/pull/9063 * add cksum performance benchmarks by @naoNao89 in https://github.com/uutils/coreutils/pull/9075 * fix(cksum): correct CRC32B implementation to match GNU cksum by @naoNao89 in https://github.com/uutils/coreutils/pull/9026 ## comm * Fix EINTR handling in comm by @naoNao89 in https://github.com/uutils/coreutils/pull/8946 * hold the stdin lock for the whole duration of the program by @andreacorbellini in https://github.com/uutils/coreutils/pull/9085 ## date * fix(date): support timezone abbreviations in date --set by @naoNao89 in https://github.com/uutils/coreutils/pull/8944 * date, touch: fix parse_datetime 0.13.0 compatibility by @naoNao89 in https://github.com/uutils/coreutils/pull/8843 * improve compat with GNU by @sylvestre in https://github.com/uutils/coreutils/pull/9022 * remove `chrono` by @cakebaker in https://github.com/uutils/coreutils/pull/9048 * add --uct alias and allow multiple option aliases together by @sylvestre in https://github.com/uutils/coreutils/pull/9181 ## dd * fix(dd): handle O_DIRECT partial block writes by @naoNao89 in https://github.com/uutils/coreutils/pull/9016 ## du * fix dead code warnings in test on Android by @cakebaker in https://github.com/uutils/coreutils/pull/9131 * disable some benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/9167 * also disable du_human_balanced_tree as benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/9198 ## factor * base benchmarking for single/multiple u64, u128, and >u128 by @asder8215 in https://github.com/uutils/coreutils/pull/9182 * use num_prime crate's u64 and u128 factorization methods to speed up the performance by @asder8215 in https://github.com/uutils/coreutils/pull/9171 ## hashsum * don't fail on dirs by @Ada-Armstrong in https://github.com/uutils/coreutils/pull/8930 * Remove non-GNU binaries (fix cksum interface divergence) by @oech3 in https://github.com/uutils/coreutils/pull/9153 ## install * fix the error message by @sylvestre in https://github.com/uutils/coreutils/pull/9188 ## ls * use file path for ACL check by @akretz in https://github.com/uutils/coreutils/pull/9055 ## mkdir * Fix stack overflow with deeply nested directories by @naoNao89 in https://github.com/uutils/coreutils/pull/8947 * remove `#[allow(unused_variables)]` by @cakebaker in https://github.com/uutils/coreutils/pull/9109 ## od * Fix EINTR handling in od by @naoNao89 in https://github.com/uutils/coreutils/pull/8946 ## printenv * add more tests by @ya7on in https://github.com/uutils/coreutils/pull/9151 ## printf * handle extremely large format widths gracefully to fix GNU test panic by @sylvestre in https://github.com/uutils/coreutils/pull/9133 ## readlink * fix(readlink): emit GNU-style Invalid argument for non-symlinks by @karanabe in https://github.com/uutils/coreutils/pull/9189 ## stdbuf * add support for OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9185 ## timeout * add missing extra help by @matttbe in https://github.com/uutils/coreutils/pull/9160 ## truncate * feat(truncate): allow negative size values for truncation by @mattsu2020 in https://github.com/uutils/coreutils/pull/9129 ## tsort * use iterative dfs to prevent stack overflows by @Nekrolm in https://github.com/uutils/coreutils/pull/8737 * fix minimal cycle reporting and precise back-edge removal by @naoNao89 in https://github.com/uutils/coreutils/pull/8786 ## uptime * Fix build and tests for uptime on OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9158 * fix clippy warning manual-let-else on OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9193 ## uudoc * respect SKIP_UTILS by @oech3 in https://github.com/uutils/coreutils/pull/8982 * Add example to manpage by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/7841 ## Documentation * release notes: add 0.2.2 by @sylvestre in https://github.com/uutils/coreutils/pull/8998 * README: Fix coverage badge URL by @RenjiSann in https://github.com/uutils/coreutils/pull/9046 * README.md: Fix about manpage generation by @oech3 in https://github.com/uutils/coreutils/pull/8994 * README.md: Show how to build all individual bins by cargo by @oech3 in https://github.com/uutils/coreutils/pull/9069 * extensions.md: mark hashsum as deprecated by @oech3 in https://github.com/uutils/coreutils/pull/9089 * doc: rename file by @sylvestre in https://github.com/uutils/coreutils/pull/9208 ## CI & Build * chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/uutils/coreutils/pull/8997 * publish script: add progress by @sylvestre in https://github.com/uutils/coreutils/pull/9008 * GNUmakefile: Add a value for cross-build by @oech3 in https://github.com/uutils/coreutils/pull/9015 * GNUmakefile: Don't install part of hashsum if we excluded hashsum by @oech3 in https://github.com/uutils/coreutils/pull/9036 * ci: remove `code_format` job from `FixPR` workflow by @cakebaker in https://github.com/uutils/coreutils/pull/9043 * Append .bash to completions by @oech3 in https://github.com/uutils/coreutils/pull/9049 * ci: remove deprecated `lima-actions/ssh` by @cakebaker in https://github.com/uutils/coreutils/pull/9054 * GNUmakefile: Do not use install -v by @oech3 in https://github.com/uutils/coreutils/pull/9051 * GNUmakefile: Reduce deps & minor cleanup by @oech3 in https://github.com/uutils/coreutils/pull/9065 * CICD.yml: stop ci for redox by @oech3 in https://github.com/uutils/coreutils/pull/9112 * ci: adapt template name for Lima v2.0 by @cakebaker in https://github.com/uutils/coreutils/pull/9159 * FreeBSD workflow: disable stats report for sccache action by @lcheylus in https://github.com/uutils/coreutils/pull/9156 * Fix test job in FreeBSD workflow by @lcheylus in https://github.com/uutils/coreutils/pull/9155 * GNUmakefile: Better comment for cross build by @oech3 in https://github.com/uutils/coreutils/pull/9186 * GNUmakefile: fix LOCALES=n by @oech3 in https://github.com/uutils/coreutils/pull/9034 * Fix tests on OpenBSD for unix feature by @lcheylus in https://github.com/uutils/coreutils/pull/9200 ## Code Quality & Cleanup * fix: make visible alias by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/9041 * fix: show ignored args by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/9040 * rustdoc: fix broken intra doc links by @cakebaker in https://github.com/uutils/coreutils/pull/9097 * clippy: re-enable `unnecessary_semicolon` lint by @cakebaker in https://github.com/uutils/coreutils/pull/9143 * Remove `test_keys2` binary by @cakebaker in https://github.com/uutils/coreutils/pull/9183 * Typo by @sylvestre in https://github.com/uutils/coreutils/pull/9197 ## Performance & Benchmarking * bench: remove 'sort_random_strings' by @sylvestre in https://github.com/uutils/coreutils/pull/9030 * bench: tsort_input_parsing_heavy reduce the input side by @sylvestre in https://github.com/uutils/coreutils/pull/9067 * Fix base64 benchmarks by @akretz in https://github.com/uutils/coreutils/pull/9082 * Revert "Fix base64 benchmarks" by @sylvestre in https://github.com/uutils/coreutils/pull/9139 * Disable variance-heavy benchmark tests by @sylvestre in https://github.com/uutils/coreutils/pull/9201 ## Version Management * prepare version 0.4.0 by @sylvestre in https://github.com/uutils/coreutils/pull/9205 ## Dependency Updates * be prescriptive on the codspeed-divan-compat version by @sylvestre in https://github.com/uutils/coreutils/pull/9007 * Bump `linux-raw-sys` from `0.11` to `0.12` by @cakebaker in https://github.com/uutils/coreutils/pull/9019 * chore(deps): update rust crate bstr to v1.12.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9038 * chore(deps): update rust crate indicatif to v0.18.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9053 * chore(deps): update rust crate hex-literal to v1.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9077 * chore(deps): update rust crate clap to v4.5.51 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9079 * chore(deps): update rust crate clap_complete to v4.5.60 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9087 * chore(deps): update rust crate crc-fast to v1.6.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9095 * chore(deps): update vmactions/freebsd-vm action to v1.2.5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9121 * chore(deps): update rust crate ctor to v0.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9130 * chore(deps): update rust crate quote to v1.0.42 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9165 * chore(deps): update reactivecircus/android-emulator-runner action to v2.35.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9169 * chore(deps): update rust crate jiff to v0.2.16 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9175 * chore(deps): update rust crate divan to v4.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9179 * chore(deps): update rust crate crc-fast to v1.7.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9180 * chore(deps): update vmactions/freebsd-vm action to v1.2.6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9192 * chore(deps): update rust crate parse_datetime to v0.13.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9207 ## New Contributors * @akretz made their first contribution in https://github.com/uutils/coreutils/pull/9058 * @andreacorbellini made their first contribution in https://github.com/uutils/coreutils/pull/9085 * @ya7on made their first contribution in https://github.com/uutils/coreutils/pull/9151 * @matttbe made their first contribution in https://github.com/uutils/coreutils/pull/9160 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.3.0...0.4.0
### 📦 **Rust Coreutils 0.3.0 Release:** We are happy to announce the release of **Rust Coreutils 0.3.0** — our latest milestone bringing **significant performance improvements**, **enhanced compatibility**, and **robust testing infrastructure**! --- ### Highlights: - **Performance Improvements** Compared to GNU: - `base64` is **1.20x faster** - `expand` is **1.80x faster** - `unexpand` is **1.50x faster** - `nl` is **1.57x faster** - `sort` is **3.72x faster** for regular sorting and **1.46x faster** for numeric sorting - `fold` is **1.19x faster** through optimization - `uniq -c`: **1.13x faster** - **Comprehensive Benchmarking Infrastructure** - Integrated CodSpeed for continuous performance monitoring - Added benchmarks for 15+ utilities including `sort`, `ls`, `uniq`, `du`, `base64`, and more - Performance regression detection in CI - **Safe Directory Traversal** - Implemented secure traversal using `openat`/`unlinkat` for `rm`, `du`, `chmod`, and `chgrp` - Enhanced security through the `nix` crate instead of unsafe `libc` calls - **Enhanced GNU Compatibility** - **532 passing tests** (83.91% compatibility) with comprehensive test suite expansion - Improved error handling and behavior matching across utilities - Better Unicode and non-UTF8 path support - **Developer Experience Improvements** - Moved documentation and completion generation out of binaries for faster builds - Enhanced CI with parallel benchmark compilation - Improved Makefile support for various build configurations - **Contributions**: This release was made possible by the dedication of **36 contributors**, including **25 newcomers**. --- ### GNU Test Suite Compatibility: *Note: Test result changes are primarily due to upgrading our reference from GNU coreutils 9.7 to 9.8, which introduced 16 new tests and updated existing test expectations.* | Result | 0.2.0 | 0.3.0 | Change 0.2.0 to 0.3.0 | % Total 0.2.0 | % Total 0.3.0 | % Change 0.2.0 to 0.3.0 | |---------------|-------|-------|------------------------|---------------|---------------|--------------------------| | Pass | 538 | 532 | -6 | 87.06% | 83.91% | -3.15% | | Skip | 27 | 33 | +6 | 4.37% | 5.20% | +0.83% | | Fail | 52 | 68 | +16 | 8.42% | 10.73% | +2.31% | | Error | 1 | 1 | 0 | 0.16% | 0.16% | 0% | | Total | 618 | 634 | +16 (new tests) | | | | ---  --- ### Call to Action: 🌍 **Help us translate** - Contribute translations at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/) 🚀 **Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils) 🔗 Download the latest release: [https://uutils.github.io](https://uutils.github.io) ## What's Changed ## base64 * Input reuse on base64 by @ThePseudo in https://github.com/uutils/coreutils/pull/8587 * Add benchmark for base64 by @ThePseudo in https://github.com/uutils/coreutils/pull/8768 ## basenc * basenc: implement --base58 encoding option by @AnarchistHoneybun in https://github.com/uutils/coreutils/pull/8751 * base58: it wasn't working properly with long input by @sylvestre in https://github.com/uutils/coreutils/pull/8818 ## chgrp * safe traversal: adjust chmod & chgrp to use it by @sylvestre in https://github.com/uutils/coreutils/pull/8632 ## chmod * safe traversal: adjust chmod & chgrp to use it by @sylvestre in https://github.com/uutils/coreutils/pull/8632 ## cksum * cksum: improve performance (Closes: #8573) by @RenjiSann in https://github.com/uutils/coreutils/pull/8643 ## cp * cp: fix Ioctl casting for ppc64 (Closes: #8161) by @maxfilov in https://github.com/uutils/coreutils/pull/8637 * Replace casting to Ioctl with a const from libc by @maxfilov in https://github.com/uutils/coreutils/pull/8641 * cp: fix recursive cp fails on files with trailing backslashes by @Anonymous-AAA in https://github.com/uutils/coreutils/pull/8747 * feat(cp): optimize directory copy by caching file checks and refactoring calls by @mattsu2020 in https://github.com/uutils/coreutils/pull/8805 * cp: fix crash on -T/--no-preserve-target by @Alonely0 in https://github.com/uutils/coreutils/pull/8864 * cp: show relative path of source file with -vr by @Ada-Armstrong in https://github.com/uutils/coreutils/pull/8887 * cp: display symlink creation with --verbose by @Ada-Armstrong in https://github.com/uutils/coreutils/pull/8899 * docs: add benchmarking guidelines for cp by @mattsu2020 in https://github.com/uutils/coreutils/pull/8807 ## csplit * csplit: create final empty file with --suppress-matched to match GNU (fixes #7286) by @naoNao89 in https://github.com/uutils/coreutils/pull/8655 ## date * date: use --reference=file to display the file modification time by @yuankunzhang in https://github.com/uutils/coreutils/pull/8630 * date: consolidate date parsing logic by @yuankunzhang in https://github.com/uutils/coreutils/pull/8629 * date: implement `--resolution` flag by @Banzobotic in https://github.com/uutils/coreutils/pull/8686 * date: follow GNU pure-number -d semantics by @naoNao89 in https://github.com/uutils/coreutils/pull/8907 ## df * df: follow symlinks by @bakanovskii in https://github.com/uutils/coreutils/pull/8763 * df: add tracing zero and rounding by @bakanovskii in https://github.com/uutils/coreutils/pull/8685 * df: treat env var with zero block size same as invalid by @Ada-Armstrong in https://github.com/uutils/coreutils/pull/8932 * tests(df): Fix test_total to avoid whitespace parsing issues by @naoNao89 in https://github.com/uutils/coreutils/pull/8799 ## dirname * Fix dirname handling of paths ending in `/.` by @naoNao89 in https://github.com/uutils/coreutils/pull/8911 ## du * Adjust rm & du to use safe traversal (openat, unlinkat, etc) by @sylvestre in https://github.com/uutils/coreutils/pull/8517 * du: some small refactorings by @cakebaker in https://github.com/uutils/coreutils/pull/8631 * du: add benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8774 * du: ignore env zero blocksize by @Ada-Armstrong in https://github.com/uutils/coreutils/pull/8961 ## expand * expand: add a benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8800 * expand: improve the performances - 1.80 faster than GNU by @sylvestre in https://github.com/uutils/coreutils/pull/8803 ## expr * expr: fix some multibyte issues by @sylvestre in https://github.com/uutils/coreutils/pull/8606 ## fold * fold: add a benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8801 * fold: improve the performances - now same as GNU by @sylvestre in https://github.com/uutils/coreutils/pull/8804 ## hashsum * hashsum: fix help text to show actual utility name by @AnarchistHoneybun in https://github.com/uutils/coreutils/pull/8650 * hashsum: remove the usage of the mut by @sylvestre in https://github.com/uutils/coreutils/pull/8692 * Patch to add hashsum symlinks with tests by @tpowa in https://github.com/uutils/coreutils/pull/8647 * hashsum: improve hashsum using 32KiB bufreader by @psvri in https://github.com/uutils/coreutils/pull/8869 ## hostname * hostname: fix -d flag by @bakanovskii in https://github.com/uutils/coreutils/pull/8657 * Build {host,u}name on Windows by @oech3 in https://github.com/uutils/coreutils/pull/8950 ## id * id: added '-a' argument by @erammos in https://github.com/uutils/coreutils/pull/8733 ## install * tests/install/install-Z-selinux: fix selinux for install by @sylvestre in https://github.com/uutils/coreutils/pull/8307 ## ln * Fix ln -f handling when source and destination are the same entry by @mattsu2020 in https://github.com/uutils/coreutils/pull/8838 * Allow to replace ln -fs and hardlink on Windows by default by @oech3 in https://github.com/uutils/coreutils/pull/8810 ## ls * ls: Lazily obtain FileType, eagerly obtain Metadata when Metadata is available by @kimono-koans in https://github.com/uutils/coreutils/pull/8753 * ls: remove unnecessary getgrgid handling for Redox OS by @Connor-GH in https://github.com/uutils/coreutils/pull/8779 * ls: add some benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/8738 * ls: Implement -f flag to disable sorting and enable -a by @naoNao89 in https://github.com/uutils/coreutils/pull/8824 * ls: fix zero block size handling to match GNU ls by @yrakcaz in https://github.com/uutils/coreutils/pull/8928 * tests(ls): Add GNU-compat TIME_STYLE tests (#4627) by @naoNao89 in https://github.com/uutils/coreutils/pull/8796 ## mv * mv: support moving source to a symlink directory by @yuankunzhang in https://github.com/uutils/coreutils/pull/8589 * mv: improve the verbose mode to make tests/mv/mv-special-1.sh pass by @sylvestre in https://github.com/uutils/coreutils/pull/8521 ## nl * nl: add a benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8808 * nl: improve the performances by @sylvestre in https://github.com/uutils/coreutils/pull/8811 ## nohup * test(nohup): improve coverage for fd replacement and error paths by @naoNao89 in https://github.com/uutils/coreutils/pull/8920 ## numfmt * numfmt: add benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8726 ## od * od: fix options after filename issue by @Anonymous-AAA in https://github.com/uutils/coreutils/pull/8624 * od: add support for -S by @sylvestre in https://github.com/uutils/coreutils/pull/8849 * od: fix incomplete test & apply small refactorings to tests by @cakebaker in https://github.com/uutils/coreutils/pull/8941 ## pinky * pinky: fix time format by @bakanovskii in https://github.com/uutils/coreutils/pull/8666 * pinky: add --lookup flag by @bakanovskii in https://github.com/uutils/coreutils/pull/8669 * pinky: move unit test away from the integration tests by @cakebaker in https://github.com/uutils/coreutils/pull/8671 ## ptx * fix(ptx): Remove extra space before truncation marker and add a related test by @Misakait in https://github.com/uutils/coreutils/pull/8784 * fix(ptx): Correct various output formatting bugs by @Misakait in https://github.com/uutils/coreutils/pull/8787 * fix(ptx): Correct reference format for stdin by @Misakait in https://github.com/uutils/coreutils/pull/8806 * fix(ptx): Align text wrapping behavior with GNU in traditional mode by @Misakait in https://github.com/uutils/coreutils/pull/8820 ## realpath * realpath: implement -E by @sylvestre in https://github.com/uutils/coreutils/pull/8757 ## rm * Adjust rm & du to use safe traversal (openat, unlinkat, etc) by @sylvestre in https://github.com/uutils/coreutils/pull/8517 * rm: add the --progress option like with cp & mv by @sylvestre in https://github.com/uutils/coreutils/pull/8567 ## seq * seq: support non-utf8 for `--separator` & `--terminator` by @cakebaker in https://github.com/uutils/coreutils/pull/8681 * clippy: move `unexpected_cfgs` to workspace lints & fix warnings in `seq` by @cakebaker in https://github.com/uutils/coreutils/pull/8859 ## sort * sort: add benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8735 * sort: adapt error message to pass `sort-files0-from` by @cakebaker in https://github.com/uutils/coreutils/pull/8748 * sort: also declare sort_locale_bench as benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8780 * sort: add a bench for long line by @sylvestre in https://github.com/uutils/coreutils/pull/8886 * sort: fix newline handling across large and/or multiple files by @jacob-greenfield in https://github.com/uutils/coreutils/pull/8746 * Reduce variance in sort benchmarks by reusing temp file by @naoNao89 in https://github.com/uutils/coreutils/pull/8939 * feat(sort): auto-tune buffer sizing from available memory by @mattsu2020 in https://github.com/uutils/coreutils/pull/8959 * Improve sort buffer sizing heuristics and honor explicit --buffer-size (#8833) ## stat * stat: fix mount point handling for non-UTF8 paths by @dekuu5 in https://github.com/uutils/coreutils/pull/8538 * stat: fix %N symlink to be single quote instead of double quote by @dekuu5 in https://github.com/uutils/coreutils/pull/8791 * Include subsecond precision in stat atime/ctime by @gaul in https://github.com/uutils/coreutils/pull/8903 ## stdbuf * stdbuf: fix a publish issue by @sylvestre in https://github.com/uutils/coreutils/pull/8566 ## stty * move stty to UNIX_PROGS by @oech3 in https://github.com/uutils/coreutils/pull/8925 ## tail * Add tests/tail/overlay-headers to the intermittent list by @sylvestre in https://github.com/uutils/coreutils/pull/8736 ## tee * tests(tee): Add GNU-compat write-error and broken-pipe tests (#4627) by @naoNao89 in https://github.com/uutils/coreutils/pull/8797 ## timeout * tests/timeout: remove unnecessary stderr check for test_kill_subprocess by @elliotwesoff in https://github.com/uutils/coreutils/pull/8845 ## touch * touch: adapt expected error message in test by @cakebaker in https://github.com/uutils/coreutils/pull/8599 * touch: simplify some tests by using `new_ucmd!()` by @cakebaker in https://github.com/uutils/coreutils/pull/8602 * Remove additional touch when feat_common_core is required by @zdiff in https://github.com/uutils/coreutils/pull/8598 * GNUmakefile: move `du` & `touch` to `PROGS` by @cakebaker in https://github.com/uutils/coreutils/pull/8926 ## tsort * tsort: write a benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8712 * Remove extra lookups and memory allocations from tsort graph construction by @Nekrolm in https://github.com/uutils/coreutils/pull/8694 ## unexpand * unexpand: add a benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/8813 * unexpand: improve performances (1.50 faster than GNU) by @sylvestre in https://github.com/uutils/coreutils/pull/8815 * unexpand: remove unnecessary condition by @cakebaker in https://github.com/uutils/coreutils/pull/8822 * unexpand: add support for non-utf8 filenames by @cakebaker in https://github.com/uutils/coreutils/pull/8836 ## uniq * uniq: add benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/8762 * Refactor uniq field skipping to avoid allocations by @mattsu2020 in https://github.com/uutils/coreutils/pull/8703 * uniq: reduce the size of the benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/8764 ## uname * Build {host,u}name on Windows by @oech3 in https://github.com/uutils/coreutils/pull/8950 ## wc * wc: adapt error message to pass `wc-files0-from` by @cakebaker in https://github.com/uutils/coreutils/pull/8749 ## who * who/pinky: fix systemd local host by @bakanovskii in https://github.com/uutils/coreutils/pull/8672 ## uucore * uucore/safe_traversal: remove unnecessary vars by @cakebaker in https://github.com/uutils/coreutils/pull/8627 * safe traversal: use the nix crate instead of unsafe calls to libc by @sylvestre in https://github.com/uutils/coreutils/pull/8626 * uucore/checksum: use `ChecksumError` variants by @cakebaker in https://github.com/uutils/coreutils/pull/8636 * uucore/selinux: add support for translations by @sylvestre in https://github.com/uutils/coreutils/pull/8628 * uucore/checksum: improve API of `create_sha3()` by @cakebaker in https://github.com/uutils/coreutils/pull/8645 * uucore: parse_time: avoid expensive `with_scale(9)` for huge inputs by @loskutov in https://github.com/uutils/coreutils/pull/8740 * uucore: fix clippy warnings by @bakanovskii in https://github.com/uutils/coreutils/pull/8769 * uucore/fsext: recognize magic number for `cgroup2fs` by @cakebaker in https://github.com/uutils/coreutils/pull/8778 * uucore: handle situation using numberic username by @zhw2101024 in https://github.com/uutils/coreutils/pull/7788 * uucore/parse_time: return 1ns for small numbers by @cakebaker in https://github.com/uutils/coreutils/pull/8821 * uucore: ringbuffer pre-allocates memory based on size given by @asder8215 in https://github.com/uutils/coreutils/pull/8895 * refactor(uucore): integrate procfs for Linux memory parsing by @mattsu2020 in https://github.com/uutils/coreutils/pull/8951 ## Localization & Internationalization * l10n: replace the hash table by a long match per file to faciliate th… by @sylvestre in https://github.com/uutils/coreutils/pull/8734 ## Performance & Benchmarking * evaluate codspeed for perfs by @sylvestre in https://github.com/uutils/coreutils/pull/8680 * github: improve the codspeed configuration by @sylvestre in https://github.com/uutils/coreutils/pull/8689 * fix the divan usage for codspeed by @sylvestre in https://github.com/uutils/coreutils/pull/8710 * bench: call the function directly to improve the profiling + move the common functions in uucore by @sylvestre in https://github.com/uutils/coreutils/pull/8716 * Codspeed: reduce the number of tests and increase some values for long tests by @sylvestre in https://github.com/uutils/coreutils/pull/8758 * bench: remove some duplication by @sylvestre in https://github.com/uutils/coreutils/pull/8781 * fix some benchmark (some of them were failing) by @sylvestre in https://github.com/uutils/coreutils/pull/8773 * More bench by @sylvestre in https://github.com/uutils/coreutils/pull/8870 * Document the bench process by @sylvestre in https://github.com/uutils/coreutils/pull/8809 ## Security * Document the security process by @sylvestre in https://github.com/uutils/coreutils/pull/8633 * add a github check for programs not using traversal by @sylvestre in https://github.com/uutils/coreutils/pull/8698 ## Code Quality & Cleanup * Minor fix by @dev-4hmad in https://github.com/uutils/coreutils/pull/8596 * systemd_logind: replace i8 with libc::c_char by @Ecordonnier in https://github.com/uutils/coreutils/pull/8595 * clippy: add missing `[lints] workspace = true` to `uucore/Cargo.toml` by @cakebaker in https://github.com/uutils/coreutils/pull/8771 * clippy: re-enable `semicolon_if_nothing_returned` by @cakebaker in https://github.com/uutils/coreutils/pull/8775 * clippy: re-enable three more lints by @cakebaker in https://github.com/uutils/coreutils/pull/8777 * clippy: move `use_self` lint to workspace lints by @cakebaker in https://github.com/uutils/coreutils/pull/8839 * clippy: re-enable `manual_let_else` lint by @cakebaker in https://github.com/uutils/coreutils/pull/8894 * Cargo.toml: remove `lints.clippy` section by @cakebaker in https://github.com/uutils/coreutils/pull/8897 * chore: huge clippy pass ahead of 1.92.0 release by @Alonely0 in https://github.com/uutils/coreutils/pull/8900 * Clippy fix by @devnexen in https://github.com/uutils/coreutils/pull/8991 * codegen-units = 1 at release-{fast,small} profile by @oech3 in https://github.com/uutils/coreutils/pull/8794 * Cargo.toml: remove two features by @cakebaker in https://github.com/uutils/coreutils/pull/8954 * Cargo.toml: cleanup release-small profile by inherits by @oech3 in https://github.com/uutils/coreutils/pull/8969 * deny.toml: remove `nix` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/8967 * fix procfs dependencies by @mattsu2020 in https://github.com/uutils/coreutils/pull/8968 ## CI & Build * make install: ressource files should have 644 as permissions. Closes: #8638 by @sylvestre in https://github.com/uutils/coreutils/pull/8640 * ci: fix broken CICD workflow by @cakebaker in https://github.com/uutils/coreutils/pull/8831 * ci: add `apt-get update` to `code-quality` workflow by @cakebaker in https://github.com/uutils/coreutils/pull/8865 * ci: test platform-specific utils separately, too by @cakebaker in https://github.com/uutils/coreutils/pull/8846 * github: compile & run benchmarks in parallel by @sylvestre in https://github.com/uutils/coreutils/pull/8891 * upgrade to GNU coreutils 9.8 as ref by @sylvestre in https://github.com/uutils/coreutils/pull/8720 * build-gnu.sh: improve setup instructions by @cakebaker in https://github.com/uutils/coreutils/pull/8731 * fuzz: enable debug symbols in release builds by @naoNao89 in https://github.com/uutils/coreutils/pull/8935 * 2 makefile fixes by @Ecordonnier in https://github.com/uutils/coreutils/pull/8782 * makefile: fix build with overriden UTILS by @Ecordonnier in https://github.com/uutils/coreutils/pull/8702 * GNUmakefile: Simplify installing mans and completions by @oech3 in https://github.com/uutils/coreutils/pull/8978 * build: Move unlink and arch to PROGS by @oech3 in https://github.com/uutils/coreutils/pull/8958 ## Documentation * docs: minor grammar fix in packaging.md by @dev-4hmad in https://github.com/uutils/coreutils/pull/8620 * Fix the doc generation and remove uuhelp_parser by @sylvestre in https://github.com/uutils/coreutils/pull/8610 * Add missing manpages by @oech3 in https://github.com/uutils/coreutils/pull/8721 * Add missing completions by @oech3 in https://github.com/uutils/coreutils/pull/8723 * Document how to generate prefixed completions by @oech3 in https://github.com/uutils/coreutils/pull/8817 * doc: add `-h` & `-V` to extensions by @cakebaker in https://github.com/uutils/coreutils/pull/8888 * doc: How to build for SELinux by cargo by @oech3 in https://github.com/uutils/coreutils/pull/8964 * uudoc: move manpage and completions generation out of binary by @aaron-ang in https://github.com/uutils/coreutils/pull/8513 ## Platform Support * fix: Add cross-platform stubs and gate SELinux to Linux-only by @naoNao89 in https://github.com/uutils/coreutils/pull/8795 * Drop redundant || exit 1 by @oech3 in https://github.com/uutils/coreutils/pull/8881 ## Version Management * --version should just print the command name, not the path by @sylvestre in https://github.com/uutils/coreutils/pull/8921 * prepare version 0.3.0 by @sylvestre in https://github.com/uutils/coreutils/pull/8890 ## Dependency Updates * fix(deps): update rust crate tempfile to v3.22.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8590 * chore(deps): update rust crate zip to v5.0.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8597 * chore(deps): update rust crate zip to v5.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8609 * Bump `rustix` from `1.0.7` to `1.1.2` by @cakebaker in https://github.com/uutils/coreutils/pull/8613 * Bump `fts-sys` and `selinux-sys` by @cakebaker in https://github.com/uutils/coreutils/pull/8612 * chore(deps): update rust crate zip to v5.1.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8616 * chore(deps): update actions/checkout action to v5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8623 * chore(deps): update rust crate serde to v1.0.221 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8635 * chore(deps): update rust crate serde to v1.0.222 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8639 * chore(deps): update rust crate serde to v1.0.223 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8642 * chore(deps): update rust crate serde to v1.0.224 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8646 * chore(deps): update rust crate serde to v1.0.225 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8649 * chore(deps): update rust crate clap_complete to v4.5.58 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8648 * chore(deps): update rust crate time to v0.3.44 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8668 * chore(deps): update rust crate clap to v4.5.48 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8675 * chore(deps): update rust crate xattr to v1.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8688 * chore(deps): update rust crate serde to v1.0.226 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8687 * chore(deps): update vmactions/freebsd-vm action to v1.2.4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8700 * fix(deps): update rust crate tempfile to v3.23.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8714 * chore(deps): update rust crate memchr to v2.7.6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8851 * chore(deps): update rust crate quote to v1.0.41 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8852 * chore(deps): update rust crate serde to v1.0.228 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8854 * chore(deps): update rust crate regex to v1.11.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8853 * chore(deps): update rust crate unicode-width to v0.2.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8856 * chore(deps): update rust crate windows-sys to v0.61.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8857 * chore(deps): update rust crate thiserror to v2.0.17 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8855 * chore(deps): update rust crate zip to v6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8860 * chore(deps): update rust crate ctor to 0.6.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8850 * Bump `half` & `zerocopy` by @cakebaker in https://github.com/uutils/coreutils/pull/8866 * chore(deps): update rust crate serde to v1.0.228 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8875 * chore(deps): update rust crate thiserror to v2.0.17 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8876 * chore(deps): update rust crate quote to v1.0.41 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8874 * chore(deps): update rust crate memchr to v2.7.6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8873 * chore(deps): update rust crate unicode-width to v0.2.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8877 * chore(deps): update rust crate regex to v1.12.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8879 * chore(deps): update rust crate windows-sys to v0.61.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8878 * Bump `nu-ansi-term` from `0.50.1` to `0.50.3` by @cakebaker in https://github.com/uutils/coreutils/pull/8885 * Bump `half` & `zerocopy` by @cakebaker in https://github.com/uutils/coreutils/pull/8884 * chore(deps): update rust crate regex to v1.12.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8905 * chore(deps): update rust crate clap_complete to v4.5.59 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8902 * chore(deps): update rust crate clap_mangen to v0.2.30 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8904 * chore(deps): update rust crate clap to v4.5.49 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8901 * chore(deps): update rust crate half to v2.7.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8909 * chore(deps): update rust crate lscolors to 0.21.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8957 * chore(deps): update rust crate bigdecimal to v0.4.9 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8956 * chore(deps): update rust crate divan to v4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8858 * chore(deps): update rust crate clap to v4.5.50 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8965 * chore(deps): update rust crate dns-lookup to v3.0.1 - autoclosed by @renovate[bot] in https://github.com/uutils/coreutils/pull/8966 * chore(deps): update rust crate indicatif to v0.18.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8971 * chore(deps): update rust crate memmap2 to v0.9.9 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8972 * chore(deps): update rust crate self_cell to v1.2.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8973 * chore(deps): update rust crate clap_mangen to v0.2.31 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8980 * chore(deps): update rust crate proc-macro2 to v1.0.102 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8981 * chore(deps): update rust crate proc-macro2 to v1.0.103 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8989 ## New Contributors * @dev-4hmad made their first contribution in https://github.com/uutils/coreutils/pull/8596 * @zdiff made their first contribution in https://github.com/uutils/coreutils/pull/8598 * @ThePseudo made their first contribution in https://github.com/uutils/coreutils/pull/8587 * @maxfilov made their first contribution in https://github.com/uutils/coreutils/pull/8637 * @naoNao89 made their first contribution in https://github.com/uutils/coreutils/pull/8655 * @bakanovskii made their first contribution in https://github.com/uutils/coreutils/pull/8666 * @AnarchistHoneybun made their first contribution in https://github.com/uutils/coreutils/pull/8650 * @Banzobotic made their first contribution in https://github.com/uutils/coreutils/pull/8686 * @tpowa made their first contribution in https://github.com/uutils/coreutils/pull/8647 * @dekuu5 made their first contribution in https://github.com/uutils/coreutils/pull/8538 * @erammos made their first contribution in https://github.com/uutils/coreutils/pull/8733 * @loskutov made their first contribution in https://github.com/uutils/coreutils/pull/8740 * @Nekrolm made their first contribution in https://github.com/uutils/coreutils/pull/8694 * @mattsu2020 made their first contribution in https://github.com/uutils/coreutils/pull/8703 * @Connor-GH made their first contribution in https://github.com/uutils/coreutils/pull/8779 * @Misakait made their first contribution in https://github.com/uutils/coreutils/pull/8784 * @elliotwesoff made their first contribution in https://github.com/uutils/coreutils/pull/8845 * @Alonely0 made their first contribution in https://github.com/uutils/coreutils/pull/8864 * @Ada-Armstrong made their first contribution in https://github.com/uutils/coreutils/pull/8887 * @jacob-greenfield made their first contribution in https://github.com/uutils/coreutils/pull/8746 * @asder8215 made their first contribution in https://github.com/uutils/coreutils/pull/8895 * @gaul made their first contribution in https://github.com/uutils/coreutils/pull/8903 * @yrakcaz made their first contribution in https://github.com/uutils/coreutils/pull/8928 * @psvri made their first contribution in https://github.com/uutils/coreutils/pull/8869 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.2.2...0.3.0
### 📦 **Rust Coreutils 0.2.2 Release:** This is a patch release focused on critical infrastructure fixes to ensure reliable distribution and deployment across different platforms. ## What's Changed ## base64 * base64: improve perfs by using the base64-simd crate by @sylvestre in https://github.com/uutils/coreutils/pull/8578 ## cp * cp: fix copying current directory (.) to existing directory by @Vesal-J in https://github.com/uutils/coreutils/pull/8565 ## nl * nl: allow non-UTF8 section delimiter by @cakebaker in https://github.com/uutils/coreutils/pull/8575 ## stty * Avoid panic in stty by @julian-klode in https://github.com/uutils/coreutils/pull/8559 ## uucore * uucore/build.rs: rename function by @cakebaker in https://github.com/uutils/coreutils/pull/8584 ## Distribution & Build * manage the locales when the program is coming from crates.io by @sylvestre in https://github.com/uutils/coreutils/pull/8571 * link musl libc statically by @Ecordonnier in https://github.com/uutils/coreutils/pull/8585 * Prepare version 0.2.2 by @sylvestre in https://github.com/uutils/coreutils/pull/8588 ## Documentation * release notes: store a copy in-tree too by @sylvestre in https://github.com/uutils/coreutils/pull/8564 ## Dependencies * chore(deps): update rust crate winapi-util to v0.1.11 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8570 * fix(deps): update rust crate console to v0.16.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8577 * chore(deps): update rust crate chrono to v0.4.42 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8576 * chore(deps): update rust crate linux-raw-sys to 0.11 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8580 ## New Contributors * @Vesal-J made their first contribution in https://github.com/uutils/coreutils/pull/8565 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.2.0...0.2.2
### 📦 **Rust Coreutils 0.2.0 Release:** We are excited to announce the release of **Rust Coreutils 0.2.0** — our **first fully internationalized release**! This milestone brings **comprehensive localization support**, **major performance improvements**, and **enhanced Unicode handling**. --- ### Highlights: - **Full Internationalization & Localization** Complete translation infrastructure using Mozilla's Fluent framework with French translations included. Support for complex plural forms (Arabic, Hebrew, etc.) and locale-aware formatting. Even error messages from clap are fully localizable! - **Community Translation Platform** Join our translation efforts at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/) or contribute directly via our [l10n repository](https://github.com/uutils/coreutils-l10n) - **Unicode & Non-UTF8 Path Support** All programs now handle non-UTF8 paths seamlessly while supporting full Unicode features. Example: `echo "🍔🍟🥤" | cut -d"🍟" -f1` works perfectly with emoji delimiters! - **Massive Performance Gains** Notable example: `tr` went from **9.81x slower** than GNU to **1.58x faster** — a 15x improvement! Additional optimizations in sort, cat, and other utilities. - **Enhanced GNU Compatibility** **538 passing tests** (+16 from 0.1.0), with reduced failures from 65 to 52. Continued improvements in edge case handling and behavior matching. - **Production Ready for Ubuntu** As part of Ubuntu's [announcement](https://lists.ubuntu.com/archives/ubuntu-devel/2025-September/043437.html) of plans to integrate Rust Coreutils, this release focuses on stability and compatibility improvements to ensure Ubuntu users have the best possible experience. --- ### GNU Test Suite Compatibility: | Result | 0.1.0 | 0.2.0 | Change 0.1.0 to 0.2.0 | % Total 0.1.0 | % Total 0.2.0 | % Change 0.1.0 to 0.2.0 | |---------------|-------|-------|------------------------|---------------|---------------|--------------------------| | Pass | 522 | 538 | +16 | 84.46% | 87.06% | +2.60% | | Skip | 31 | 27 | -4 | 5.02% | 4.37% | -0.65% | | Fail | 65 | 52 | -13 | 10.52% | 8.42% | -2.10% | | Error | 0 | 1 | +1 | 0% | 0.16% | +0.16% | | Total | 618 | 618 | 0 | | | | ---  --- ### Call to Action: 🌍 **Help us translate** - Contribute translations at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/) 🚀 **Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils) 🔗 Download the latest release: [https://uutils.github.io](https://uutils.github.io) ## What's Changed ## basenc * allow non-UTF8 filenames by @cakebaker in https://github.com/uutils/coreutils/pull/8558 ## basename * Simply logic, do not trim path separators `/` by @drinkcat in https://github.com/uutils/coreutils/pull/8372 * handle a corner case with /. - Closes #8373 by @sylvestre in https://github.com/uutils/coreutils/pull/8374 * Handle non-unicode parameters by @drinkcat in https://github.com/uutils/coreutils/pull/8375 ## cat * Fix reporting "input file is output file" error when outputting to an input file by @frendsick in https://github.com/uutils/coreutils/pull/8025 * add error handling in write_fast function by @yuankunzhang in https://github.com/uutils/coreutils/pull/8091 * handle broken pipe gracefully by @tgrez in https://github.com/uutils/coreutils/pull/8336 ## chmod * fix recursive symlink handling for -H/-L/-P flags (Closes: #8422) by @sylvestre in https://github.com/uutils/coreutils/pull/8450 * remove Windows function & unnecessary cfgs by @cakebaker in https://github.com/uutils/coreutils/pull/8458 * make a test environment-agnostic by @sylvestre in https://github.com/uutils/coreutils/pull/8525 ## chown * fix --reference file syntax by @Anonymous-AAA in https://github.com/uutils/coreutils/pull/8492 ## chroot * remove unwrap calls by @jovielarue in https://github.com/uutils/coreutils/pull/7890 ## cksum * remove duplicate unit test by @cakebaker in https://github.com/uutils/coreutils/pull/8151 * Fix file quoting on stderr by @RenjiSann in https://github.com/uutils/coreutils/pull/8272 * two small refactorings by @cakebaker in https://github.com/uutils/coreutils/pull/8527 ## cp * migrate from quick-error to thiserror by @vikram-kangotra in https://github.com/uutils/coreutils/pull/7989 * clean existing file when copy from stream by @Luv-Ray in https://github.com/uutils/coreutils/pull/8149 * let `clap` render help & version by @cakebaker in https://github.com/uutils/coreutils/pull/8199 * Fix --no-dereference --parents with symlink source by @julian-klode in https://github.com/uutils/coreutils/pull/8331 * Try to change gid only if changing uid+gid fails by @drinkcat in https://github.com/uutils/coreutils/pull/8385 * Properly preserves fifos and symlink attributes by @drinkcat in https://github.com/uutils/coreutils/pull/8416 * fix directory permission preservation for sibling directories with -a (Closes: #8407) by @sylvestre in https://github.com/uutils/coreutils/pull/8449 * fix recursive socket file copy by @Anonymous-AAA in https://github.com/uutils/coreutils/pull/8478 ## csplit * fix two issues with non ASCII digits by @cakebaker in https://github.com/uutils/coreutils/pull/8020 ## date * date/ls: Switch from chrono to jiff by @drinkcat in https://github.com/uutils/coreutils/pull/7894 * update deprecated TZ by @sylvestre in https://github.com/uutils/coreutils/pull/8405 * allow multiple `-d`, last wins by @cakebaker in https://github.com/uutils/coreutils/pull/8507 * add hidden aliases --rfc-2822/822 for GNU compat by @schopin-pro in https://github.com/uutils/coreutils/pull/8550 ## df * Move to using `OsString` by @drinkcat in https://github.com/uutils/coreutils/pull/8371 ## du * create the string into the main thread to avoid some translations issue by @sylvestre in https://github.com/uutils/coreutils/pull/8338 * du/ls: Merge date formatting code, and handle timestamps far in the future/past by just printing them by @drinkcat in https://github.com/uutils/coreutils/pull/8390 * `du`/`ls`: Unify file metadata time handling by @drinkcat in https://github.com/uutils/coreutils/pull/8396 * `du`/`ls`: Improve time-style handling based on GNU coreutils manual by @drinkcat in https://github.com/uutils/coreutils/pull/8415 ## echo * fixed double hyphen as argument by @cerdelen in https://github.com/uutils/coreutils/pull/7581 * Remove clap for echo by @cerdelen in https://github.com/uutils/coreutils/pull/7603 * print help if not posixly correct and only argument is --help by @RGBCube in https://github.com/uutils/coreutils/pull/8310 * show version when `--version` is the only argument by @cakebaker in https://github.com/uutils/coreutils/pull/8341 ## env * use execvp instead of Command::status on Unix systems by @yuankunzhang in https://github.com/uutils/coreutils/pull/8365 * invalid syntx with the french fluent file by @sylvestre in https://github.com/uutils/coreutils/pull/8530 ## expr * Handle more special cases for regex pattern by @frendsick in https://github.com/uutils/coreutils/pull/7974 * Fix parsing range quantifiers in regex by @frendsick in https://github.com/uutils/coreutils/pull/7997 * Fix handling of regex range quantifiers by @frendsick in https://github.com/uutils/coreutils/pull/8010 * Remove `expr.pl` from `why-error.md` by @frendsick in https://github.com/uutils/coreutils/pull/8022 * fix substr parsing by @tgrez in https://github.com/uutils/coreutils/pull/8158 * fix builtin functions precedence by @tgrez in https://github.com/uutils/coreutils/pull/8162 ## factor * fix two "unused import" warnings in test by @cakebaker in https://github.com/uutils/coreutils/pull/8526 ## fmt * Fix the last two GNU tests for fmt by @sylvestre in https://github.com/uutils/coreutils/pull/8264 ## fold * process streams as bytes, not strings, to handle non-utf8 data by @phinjensen in https://github.com/uutils/coreutils/pull/8241 ## hashsum * don't exit early on io errors by @Qelxiros in https://github.com/uutils/coreutils/pull/7918 ## head * fix bug with non-terminated files. by @karlmcdowall in https://github.com/uutils/coreutils/pull/7484 * fix meaning of ---presume-input-pipe by @bvinc in https://github.com/uutils/coreutils/pull/8315 * remove `BadEncoding` variant of `HeadError` by @cakebaker in https://github.com/uutils/coreutils/pull/8484 * refactor `uumain` by @cakebaker in https://github.com/uutils/coreutils/pull/8497 ## install * don't error when multiple arguments of the same type are given, instead override with last one (#8033) by @jenningsfan in https://github.com/uutils/coreutils/pull/8053 * implement option -C by @sylvestre in https://github.com/uutils/coreutils/pull/8265 * use `bool` as return type of `need_copy` by @cakebaker in https://github.com/uutils/coreutils/pull/8288 * Fix --no-target-directory with existing file by @julian-klode in https://github.com/uutils/coreutils/pull/8412 * install, mkdir: Handle dir/./ like dir/. by @julian-klode in https://github.com/uutils/coreutils/pull/8366 ## ln * fix #6350 by @RenjiSann in https://github.com/uutils/coreutils/pull/7449 * rename error variant by @cakebaker in https://github.com/uutils/coreutils/pull/8035 ## logname * remove `unsafe extern "C"` block by @cakebaker in https://github.com/uutils/coreutils/pull/8177 ## ls * move recent time threshold comment by @deadmeu in https://github.com/uutils/coreutils/pull/8214 * follow symlinks for xattrs, fix #8216 by @sudhackar in https://github.com/uutils/coreutils/pull/8217 * fix the GNU test tests/ls/selinux.sh by @sylvestre in https://github.com/uutils/coreutils/pull/8281 * improve the test when running selinux by @sylvestre in https://github.com/uutils/coreutils/pull/8403 * -u/-c/--time control sorting when -l is not used by @drinkcat in https://github.com/uutils/coreutils/pull/8417 ## mkdir * Fix mkdir with non-unicode parameters by @drinkcat in https://github.com/uutils/coreutils/pull/8367 * Replaced strict restorecon compatibility check with validation… by @sylvestre in https://github.com/uutils/coreutils/pull/8340 * refactor(mkdir): Simplify mode argument parsing by @amirhosseinghanipour in https://github.com/uutils/coreutils/pull/8406 ## mkfifo * support symbolic mode by @yuankunzhang in https://github.com/uutils/coreutils/pull/8440 ## mknod * set cli specified file mode even when it's 0o666 by @TheJJ in https://github.com/uutils/coreutils/pull/8343 ## mktemp * allow empty string arguments for -p/--tmpdir options by @yuankunzhang in https://github.com/uutils/coreutils/pull/8447 ## more * tests: cleanup processes in test_valid_arg by @martinkunkel2 in https://github.com/uutils/coreutils/pull/8430 ## mv * moving dangling symlinks into directories by @albus-droid in https://github.com/uutils/coreutils/pull/8064 * improve the hardlink support by @sylvestre in https://github.com/uutils/coreutils/pull/8296 * add support for selinux and add minor refactor by @sylvestre in https://github.com/uutils/coreutils/pull/8333 * use `next()` instead of `peekable().peek()` in `is_empty_dir()` by @cakebaker in https://github.com/uutils/coreutils/pull/8413 * move a string in fluent by @sylvestre in https://github.com/uutils/coreutils/pull/8434 * treat symlinks as files by @id3v1669 in https://github.com/uutils/coreutils/pull/8528 ## nice * remove useless translations by @sylvestre in https://github.com/uutils/coreutils/pull/8295 ## nl * use `OsString` for `--number-separator` by @cakebaker in https://github.com/uutils/coreutils/pull/8519 * allow zero for `--join-blank-lines` by @cakebaker in https://github.com/uutils/coreutils/pull/8540 * support files with non-utf8 content by @cakebaker in https://github.com/uutils/coreutils/pull/8544 ## od * fix handling of non-ascii chars by @tgrez in https://github.com/uutils/coreutils/pull/8268 * fix typo in help by @cakebaker in https://github.com/uutils/coreutils/pull/8344 * Fixes float formatting in scientific notation by @yonatan-linik in https://github.com/uutils/coreutils/pull/8352 * Add support for -tfH and -tfB by @karanabe in https://github.com/uutils/coreutils/pull/8354 * rename `flo16`/`flo32`/`flo64` to `f16`/`f32`/`f64` in function names by @cakebaker in https://github.com/uutils/coreutils/pull/8369 * use underscores in filenames, adapt modules by @cakebaker in https://github.com/uutils/coreutils/pull/8393 * Switch f16 print to width=15/16, precision=8 by @drinkcat in https://github.com/uutils/coreutils/pull/8433 ## pr * Add support for -D/--date-format parameter by @drinkcat in https://github.com/uutils/coreutils/pull/8418 * reduce nesting to improve readability of `file_last_modified_time_format()` by @cakebaker in https://github.com/uutils/coreutils/pull/8420 ## printf * Fix formatting hexadecimals with padding by @frendsick in https://github.com/uutils/coreutils/pull/8185 * accept non-UTF-8 input in FORMAT and ARGUMENT arguments by @drinkcat in https://github.com/uutils/coreutils/pull/8329 ## pwd * style(pwd): simplify physical_path implementation by @amirhosseinghanipour in https://github.com/uutils/coreutils/pull/8409 ## realpath * use consts for all options by @cakebaker in https://github.com/uutils/coreutils/pull/8150 ## rm * add support for the `--interactive` arg aliases by @cakebaker in https://github.com/uutils/coreutils/pull/8419 * do "early return" earlier in `uumain` by @cakebaker in https://github.com/uutils/coreutils/pull/8045 * rename two consts for better readability by @cakebaker in https://github.com/uutils/coreutils/pull/8070 * consistent naming of test functions by @cakebaker in https://github.com/uutils/coreutils/pull/8084 * fix too long filename corner case by @tgrez in https://github.com/uutils/coreutils/pull/8299 * improve `is_dir_empty` from O(n) to O(1) by @cakebaker in https://github.com/uutils/coreutils/pull/8384 * remove duplicate test by @cakebaker in https://github.com/uutils/coreutils/pull/8494 * fix unused var warning on non-(unix & windows) by @cakebaker in https://github.com/uutils/coreutils/pull/8495 ## shred * implement and test feature --random-source by @BenWiederhake in https://github.com/uutils/coreutils/pull/7948 ## sort * prevent -o/--output to be specified multiple times by @RenjiSann in https://github.com/uutils/coreutils/pull/7991 * Fix sort-files0-from.log by @Charlie-Zheng in https://github.com/uutils/coreutils/pull/8011 * Make use of ExtendedBigDecimal in -g sorting, then attempt to recover some performance by @drinkcat in https://github.com/uutils/coreutils/pull/8062 * Support hexadecimal numbers/floats correctly by @yonatan-linik in https://github.com/uutils/coreutils/pull/8377 * Handle non-utf8 sorting content by @RenjiSann in https://github.com/uutils/coreutils/pull/8386 * adjust the behavior of 'sort --output --file-with-dash' to match GNU's by @sylvestre in https://github.com/uutils/coreutils/pull/8482 ## stat * stat/locales: Fix fluent_linter errors by @drinkcat in https://github.com/uutils/coreutils/pull/8404 * `stat`: Convert to use `uucore` functions by @drinkcat in https://github.com/uutils/coreutils/pull/8398 ## stdbuf * fix cross-compilation by @Ecordonnier in https://github.com/uutils/coreutils/pull/7972 * avoid double "lib" prefix by @Ecordonnier in https://github.com/uutils/coreutils/pull/8067 * add feat_external_libstdbuf by @Ecordonnier in https://github.com/uutils/coreutils/pull/8104 * GNUMakefile: install libstdbuf by @Ecordonnier in https://github.com/uutils/coreutils/pull/8238 ## stty * Add stty to GNUmakefile by @oech3 in https://github.com/uutils/coreutils/pull/8013 * fix output redirection by @willshuttleworth in https://github.com/uutils/coreutils/pull/8016 * set control characters by @willshuttleworth in https://github.com/uutils/coreutils/pull/7931 * fix negated options getting rejected by clap by @willshuttleworth in https://github.com/uutils/coreutils/pull/8136 * fix mappings with empty string literal args by @willshuttleworth in https://github.com/uutils/coreutils/pull/8135 * add ispeed/ospeed settings by @willshuttleworth in https://github.com/uutils/coreutils/pull/8180 * add options to set and print terminal size by @willshuttleworth in https://github.com/uutils/coreutils/pull/8221 * remove redundant `cfg` by @cakebaker in https://github.com/uutils/coreutils/pull/8262 * `stty`: remove quotes around strings in locale files by @willshuttleworth in https://github.com/uutils/coreutils/pull/8290 * `stty`: special settings by @willshuttleworth in https://github.com/uutils/coreutils/pull/8309 * add combination settings by @willshuttleworth in https://github.com/uutils/coreutils/pull/8256 * print non-default control characters by @yuankunzhang in https://github.com/uutils/coreutils/pull/8280 * refactor arg processing loop by @willshuttleworth in https://github.com/uutils/coreutils/pull/8359 ## sync * adjust safety comments by @jtracey in https://github.com/uutils/coreutils/pull/8024 * reduce use of unsafe and improve comments by @jtracey in https://github.com/uutils/coreutils/pull/8017 ## tail * fix test that disables output in bash shell by @willshuttleworth in https://github.com/uutils/coreutils/pull/8157 * fix tailing /dev/zero by @bvinc in https://github.com/uutils/coreutils/pull/8314 * handle broken pipe gracefully by @tgrez in https://github.com/uutils/coreutils/pull/8327 * show end of device by @martinkunkel2 in https://github.com/uutils/coreutils/pull/8037 ## tee * tests/tee: enable no_more_writable test by @Maximkaaa in https://github.com/uutils/coreutils/pull/8219 * remove output buffering by @Maximkaaa in https://github.com/uutils/coreutils/pull/8218 * move test to `linux_only` module by @cakebaker in https://github.com/uutils/coreutils/pull/8225 ## timeout * catch TERM signal by @Luv-Ray in https://github.com/uutils/coreutils/pull/8197 ## touch * fix f flag by @VenetiaFurtado in https://github.com/uutils/coreutils/pull/8274 * Bump `parse_datetime` & adapt `touch` tests by @cakebaker in https://github.com/uutils/coreutils/pull/8424 ## tr * some small improvements by @cakebaker in https://github.com/uutils/coreutils/pull/8126 * handle broken pipe gracefully by @yuankunzhang in https://github.com/uutils/coreutils/pull/8298 * restore default action of sigpipe by @yuankunzhang in https://github.com/uutils/coreutils/pull/8312 * Fix regression causing read error with sockets by @JohnoKing in https://github.com/uutils/coreutils/pull/8083 * fix high memory use, possible heap exhaustion by @julian-klode in https://github.com/uutils/coreutils/pull/8435 * Improve tr performances (Closes: #8439) by @sylvestre in https://github.com/uutils/coreutils/pull/8442 * refactor and introduce simd to get important perf win by @sylvestre in https://github.com/uutils/coreutils/pull/8471 ## uname * output OS last by @cakebaker in https://github.com/uutils/coreutils/pull/8094 ## unexpand * add -f short alias for --first-only by @GTimothy in https://github.com/uutils/coreutils/pull/8229 ## uptime * use "0 users" instead of "0 user" by @cakebaker in https://github.com/uutils/coreutils/pull/8069 * move imports into test function by @cakebaker in https://github.com/uutils/coreutils/pull/8052 * improve readability of `uptime_since` by @cakebaker in https://github.com/uutils/coreutils/pull/8164 ## users * fix unused imports in tests on FreeBSD by @cakebaker in https://github.com/uutils/coreutils/pull/8488 ## who * honor locale settings by @yuankunzhang in https://github.com/uutils/coreutils/pull/8535 * use `match` instead of `if`/`else` chain by @cakebaker in https://github.com/uutils/coreutils/pull/8541 * rename var, cleanup spell-checker:ignore by @cakebaker in https://github.com/uutils/coreutils/pull/8411 ## uucore * num_parser: Update pow_with_context by @drinkcat in https://github.com/uutils/coreutils/pull/8028 * locale: Use if let instead of match by @drinkcat in https://github.com/uutils/coreutils/pull/8050 * use authors.workspace by @sylvestre in https://github.com/uutils/coreutils/pull/8057 * fix clippy warnings - the following explicit lifetimes could be elided: 'a by @sylvestre in https://github.com/uutils/coreutils/pull/8269 * uucore(quoting_style): Improve quoting style handling by @RenjiSann in https://github.com/uutils/coreutils/pull/8271 * lib/mods/locale: fix locale loading by @kevinburke in https://github.com/uutils/coreutils/pull/8234 * uucore/fs: call `to_string_lossy` only once in `dir_strip_dot_for_creation` by @cakebaker in https://github.com/uutils/coreutils/pull/8399 * locale: Fix clippy warning by @drinkcat in https://github.com/uutils/coreutils/pull/8432 * num_format: Optimize `format_float_shortest` by @drinkcat in https://github.com/uutils/coreutils/pull/8444 * uucore/clap_localization: use iterator from `lines()` by @cakebaker in https://github.com/uutils/coreutils/pull/8536 * uucore/locale: move duplicate code to closure by @cakebaker in https://github.com/uutils/coreutils/pull/8549 ## Localization & Internationalization * Improve the locale support by @sylvestre in https://github.com/uutils/coreutils/pull/7981 * convert the md files to fluent by @sylvestre in https://github.com/uutils/coreutils/pull/8054 * Disable Unicode directional isolate characters (U+2068, U+2069) by @sylvestre in https://github.com/uutils/coreutils/pull/8066 * document a bit how it works by @sylvestre in https://github.com/uutils/coreutils/pull/8102 * i18n: Locale-aware quoting by @RenjiSann in https://github.com/uutils/coreutils/pull/8179 * i18n: further work, expr support by @RenjiSann in https://github.com/uutils/coreutils/pull/8292 * replace `\n` with a new line in ftl files by @cakebaker in https://github.com/uutils/coreutils/pull/8349 * Setup localization for utility symlinks by @julian-klode in https://github.com/uutils/coreutils/pull/8364 * Create macros for l10n translations by @sylvestre in https://github.com/uutils/coreutils/pull/8392 * embedded english strings + test the whole thing in github by @sylvestre in https://github.com/uutils/coreutils/pull/8423 * add support for clap translations by @sylvestre in https://github.com/uutils/coreutils/pull/8431 * clap localization improvements by @sylvestre in https://github.com/uutils/coreutils/pull/8520 * clap/locale: fix the colors for all programs (Closes: #8501) by @sylvestre in https://github.com/uutils/coreutils/pull/8542 * Allow non-utf8 paths name as input for most of the programs by @sylvestre in https://github.com/uutils/coreutils/pull/8457 * port base32 for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8287 * port basenc for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8167 * port basename to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8074 * add support for translation by @sylvestre in https://github.com/uutils/coreutils/pull/8529 * port chcon to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8086 * port chgrp for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8168 * port chmod for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8245 * port chown for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8260 * port chroot for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8170 * port cksum for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8148 * port comm for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8169 * port cp for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8200 * port csplit for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8147 * port cut for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8171 * port date for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8258 * port dd for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8191 * port df for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8239 * port dircolors for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8141 * port dirname to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8085 * port du for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8176 * port echo for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8247 * port env for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8204 * port expand for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8205 * port expr for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8118 * port factor for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8206 * port false to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8097 * port fmt for translation + use thiserror + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8242 * port fold to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8100 * port groups to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8098 * port hashsum for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8207 * port head for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8240 * port hostname to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8082 * port id to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8073 * port install for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8192 * port join for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8193 * port kill for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8139 * port link for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8140 * port ln for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8248 * port logname for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8172 * port ls for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8249 * port mkdir to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8089 * port mkfifo for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8182 * port mknod for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8183 * port mktemp for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8184 * port more for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8250 * port mv for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8251 * port nice to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8076 * port nl for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8181 * port nohup for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8173 * port nproc to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8077 * port numfmt for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8208 * port od for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8252 * port paste for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8142 * port pathchk for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8143 * port pinky for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8144 * port pr for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8253 * port printenv for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8209 * port printf for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8212 * port ptx for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8188 * port pwd for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8119 * port readlink for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8145 * port realpath for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8146 * port rm for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8259 * port rmdir for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8174 * port runcon for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8187 * port seq for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8195 * port shred for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8194 * port shuf for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8175 * port sleep to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8087 * port sort for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8244 * port split for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8211 * port stat for translation + use thiserror + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8243 * port stdbuf for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8254 * port stty for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8257 * port sum for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8120 * port sync to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8088 * port tac for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8125 * port tail for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8124 * port tee for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8122 * port test for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8121 * port timeout for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8117 * port touch for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8116 * port tr for translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8112 * port true to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8099 * port truncate to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8111 * port tsort to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8095 * port tty to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8110 * port uname to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8080 * port unexpand to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8109 * port uniq to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8108 * port unlink to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8107 * port uptime to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8092 * port users to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8106 * port wc to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8105 * port who to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8079 * port whoami to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8081 * port yes to translation + add french by @sylvestre in https://github.com/uutils/coreutils/pull/8078 ## Test Improvements * Fix macros, rewrite tests to use idiomatic macros by @RenjiSann in https://github.com/uutils/coreutils/pull/8293 * add tests with emoji for various commands by @sylvestre in https://github.com/uutils/coreutils/pull/8545 * add more emoji tests by @sylvestre in https://github.com/uutils/coreutils/pull/8551 * fix execution on WSL2, Ubuntu 24.04 by @martinkunkel2 in https://github.com/uutils/coreutils/pull/8235 * On MacOS, ignore tests that use /dev/fd/0 by @drinkcat in https://github.com/uutils/coreutils/pull/8454 * tests/cp/preserve-gid: Partial fix by @drinkcat in https://github.com/uutils/coreutils/pull/8380 ## Code Quality & Cleanup * cleanup workspace crates by @nyurik in https://github.com/uutils/coreutils/pull/8058 * Enable common pre-commit.ci fixes by @nyurik in https://github.com/uutils/coreutils/pull/8059 * Prepare for clippy pedantic rules by @gabelluardo in https://github.com/uutils/coreutils/pull/8201 * Enable some pedantic rules by @gabelluardo in https://github.com/uutils/coreutils/pull/8203 * a lot of documentation cleanups by @nyurik in https://github.com/uutils/coreutils/pull/8301 * remove unused dependencies by @nyurik in https://github.com/uutils/coreutils/pull/8056 * cleanup `inefficient_to_string` lint by @nyurik in https://github.com/uutils/coreutils/pull/8303 * cleanup `map_unwrap_or` lint by @nyurik in https://github.com/uutils/coreutils/pull/8302 * fix more inefficient_to_string by @RenjiSann in https://github.com/uutils/coreutils/pull/8316 * minor Cargo.toml linting by @nyurik in https://github.com/uutils/coreutils/pull/8319 * convert comments to markdown docs by @nyurik in https://github.com/uutils/coreutils/pull/8304 * fix unnecessary_semicolon lint by @nyurik in https://github.com/uutils/coreutils/pull/8321 * fix uninlined_format_args lint by @nyurik in https://github.com/uutils/coreutils/pull/8320 * fix expl_impl_clone_on_copy lint by @nyurik in https://github.com/uutils/coreutils/pull/8328 * fix warnings from `uninlined_format_args` lint by @cakebaker in https://github.com/uutils/coreutils/pull/8279 * replace vector indexing with safe .get() method by @sylvestre in https://github.com/uutils/coreutils/pull/8282 * fix clippy by @Luv-Ray in https://github.com/uutils/coreutils/pull/8275 * Cargo.toml: remove `match_on_vec_items` lint by @cakebaker in https://github.com/uutils/coreutils/pull/8277 * fix warnings introduced with Rust `1.89` by @cakebaker in https://github.com/uutils/coreutils/pull/8446 ## CI & Build * publish.sh: also publish uutests by @sylvestre in https://github.com/uutils/coreutils/pull/7984 * Reenable windows-latest/x86_64-pc-windows-gnu (and do not update gcc) by @drinkcat in https://github.com/uutils/coreutils/pull/7985 * publish.sh: be more prescriptive on the grep by @sylvestre in https://github.com/uutils/coreutils/pull/7983 * reduce timeout of freebsd jobs by @cakebaker in https://github.com/uutils/coreutils/pull/7994 * .pre-commit-config.yaml: Do not fail cspell if all files are ignored by @drinkcat in https://github.com/uutils/coreutils/pull/8026 * clippy pre-commit/CI improvements by @drinkcat in https://github.com/uutils/coreutils/pull/8030 * GNU CI: also build selinux with --release-build by @sylvestre in https://github.com/uutils/coreutils/pull/8055 * GNUMakefile: fix compilation on Macs by @kevinburke in https://github.com/uutils/coreutils/pull/7964 * adapt `ARTIFACTS_SUFFIX` if "features" not set by @cakebaker in https://github.com/uutils/coreutils/pull/8113 * add missing braces by @cakebaker in https://github.com/uutils/coreutils/pull/8114 * Make cspell pre-commit hook optional with skip message by @sylvestre in https://github.com/uutils/coreutils/pull/8138 * add the fluent hook conf file by @sylvestre in https://github.com/uutils/coreutils/pull/8237 * Use mozilla fluent linter (and remove mine) by @sylvestre in https://github.com/uutils/coreutils/pull/8284 * remove unneeded file by @RenjiSann in https://github.com/uutils/coreutils/pull/8266 * fix ftl - Identifiers may only contain lowercase characters and - by @sylvestre in https://github.com/uutils/coreutils/pull/8283 * util/build-gnu.sh: Bypass timeout/yes SIGPIPE handling bug by @drinkcat in https://github.com/uutils/coreutils/pull/8353 * .github/workflows/CICD.yml: Speed up Build/SELinux by @drinkcat in https://github.com/uutils/coreutils/pull/8389 * Makefile: Copy locales _after_ build by @drinkcat in https://github.com/uutils/coreutils/pull/8379 * CI: GnuTests: Split native and selinux tests to 2 different jobs by @drinkcat in https://github.com/uutils/coreutils/pull/8388 * Fix get_context on fifos (and symlinks) by @drinkcat in https://github.com/uutils/coreutils/pull/8401 * github action: moz-fluent-l10n runs a directory, not a file by @sylvestre in https://github.com/uutils/coreutils/pull/8533 * Do not build SELinux programs on FreeBSD when using make by @martinkunkel2 in https://github.com/uutils/coreutils/pull/8443 * .github/workflows/CICD.yml: Create a fully fake utmp by @drinkcat in https://github.com/uutils/coreutils/pull/8456 * use `macos-latest` instead of `macos-13` by @cakebaker in https://github.com/uutils/coreutils/pull/8334 * Add devcontainer setup and small related fixes by @martinkunkel2 in https://github.com/uutils/coreutils/pull/8486 * add support for systemd-logind by @Ecordonnier in https://github.com/uutils/coreutils/pull/8483 * prepare the publication of uufuzz + add emojis by @sylvestre in https://github.com/uutils/coreutils/pull/8563 * prepare release 0.2.0 by @sylvestre in https://github.com/uutils/coreutils/pull/8561 ## Documentation * extensions: Explain how printf/seq handle precision by @drinkcat in https://github.com/uutils/coreutils/pull/7641 * add `-U`/`--no-utf8` as extension of `expand`/`unexpand` by @cakebaker in https://github.com/uutils/coreutils/pull/8236 * Improvements of the docs by @sylvestre in https://github.com/uutils/coreutils/pull/8543 ## Platform Support * flake.nix: Add cspell by @RenjiSann in https://github.com/uutils/coreutils/pull/7987 * silence musl warnings by @Ecordonnier in https://github.com/uutils/coreutils/pull/8018 * Feat/add wezterm to terms by @eldyl in https://github.com/uutils/coreutils/pull/8047 * add `--version` argument to print main binary version by @MarcusGrass in https://github.com/uutils/coreutils/pull/8127 * remove PROJECT_NAME_FOR_VERSION_STRING by @Ecordonnier in https://github.com/uutils/coreutils/pull/8360 ## Dependency Updates * Bump `onig` from `6.4.0` to `6.5.1` by @cakebaker in https://github.com/uutils/coreutils/pull/7976 * Cargo.lock: Bump toml_edit to latest version by @drinkcat in https://github.com/uutils/coreutils/pull/7988 * Bump `type-map` by @cakebaker in https://github.com/uutils/coreutils/pull/7993 * Cargo.toml: remove unused `coz` dependency by @cakebaker in https://github.com/uutils/coreutils/pull/8021 * deny.toml: remove obsolete skips related to rustix by @alerque in https://github.com/uutils/coreutils/pull/8019 * Cargo.toml: remove `procfs` dependency & adapt `cp` test by @cakebaker in https://github.com/uutils/coreutils/pull/8027 * Bump `windows-sys` & adapt to API change by @cakebaker in https://github.com/uutils/coreutils/pull/8160 * Bump selinux crates by @cakebaker in https://github.com/uutils/coreutils/pull/8226 * Bump `phf` and `phf_codegen` & fix compilation errors by @cakebaker in https://github.com/uutils/coreutils/pull/8233 * Bump `linux-raw-sys` by @cakebaker in https://github.com/uutils/coreutils/pull/8289 * deny.toml: remove old `windows-sys` version from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/8438 * Bump `parse_datetime` & adapt `touch` tests by @cakebaker in https://github.com/uutils/coreutils/pull/8424 * Cargo.toml: lock version of `selinux` by @cakebaker in https://github.com/uutils/coreutils/pull/8502 * Bump `phf` & `phf_codegen` from `0.12.1` to `0.13.1` by @cakebaker in https://github.com/uutils/coreutils/pull/8516 * Bump `windows-sys` from `0.60.1` to `0.61.0` by @cakebaker in https://github.com/uutils/coreutils/pull/8557 * chore(deps): update rust crate clap to v4.5.39 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8014 * chore(deps): update rust crate clap_complete to v4.5.51 - autoclosed by @renovate[bot] in https://github.com/uutils/coreutils/pull/8015 * chore(deps): update dawidd6/action-download-artifact action to v10 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8041 * chore(deps): update rust crate clap_complete to v4.5.52 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8038 * chore(deps): update rust crate jiff to v0.2.14 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8042 * fix(deps): update rust crate libc to v0.2.173 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8166 * chore(deps): update rust crate bytecount to v0.6.9 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8051 * chore(deps): update rust crate clap_complete to v4.5.53 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8130 * chore(deps): update rust crate clap to v4.5.40 - autoclosed by @renovate[bot] in https://github.com/uutils/coreutils/pull/8129 * chore(deps): update rust crate clap_complete to v4.5.54 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8132 * chore(deps): update rust crate clap_mangen to v0.2.27 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8133 * chore(deps): update rust crate unicode-width to v0.2.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8137 * chore(deps): update rust crate memchr to v2.7.5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8154 * chore(deps): update rust crate windows-sys to v0.60.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8163 * chore(deps): update rust crate jiff to v0.2.15 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8165 * chore(deps): update dawidd6/action-download-artifact action to v11 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8186 * chore(deps): update rust crate zip to v4.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8189 * chore(deps): update vmactions/freebsd-vm action to v1.2.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8190 * fix(deps): update rust crate libc to v0.2.174 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8210 * chore(deps): update rust crate zip to v4.2.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8255 * chore(deps): update rust crate xattr to v1.5.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8267 * fix(deps): update rust crate console to 0.16.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8278 * chore(deps): update rust crate indicatif to v0.17.12 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8291 * chore(deps): update rust crate rust-ini to v0.21.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8300 * chore(deps): update rust crate notify to v8.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8306 * fix(deps): update rust crate libfuzzer-sys to v0.4.10 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8311 * chore(deps): update rust crate indicatif to 0.18.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8313 * chore(deps): update rust crate clap to v4.5.41 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8324 * chore(deps): update rust crate clap_complete to v4.5.55 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8325 * chore(deps): update rust crate zip to v4.3.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8323 * chore(deps): update rust crate clap_mangen to v0.2.28 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8326 * chore(deps): update rust crate memmap2 to v0.9.7 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8337 * chore(deps): update rust crate crc32fast to v1.5.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8339 * fix(deps): update rust crate rand to v0.9.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8358 * chore(deps): update rust crate rstest to 0.26.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8394 * chore(deps): update rust crate rstest to v0.26.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8397 * chore(deps): update rust crate ctor to v0.4.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8400 * chore(deps): update rust crate clap_mangen to v0.2.29 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8410 * chore(deps): update rust crate clap to v4.5.42 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8414 * chore(deps): update rust crate notify to v8.2.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8428 * chore(deps): update actions/download-artifact action to v5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8437 * chore(deps): update rust crate dns-lookup to v2.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8436 * chore(deps): update rust crate clap to v4.5.43 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8441 * chore(deps): update rust crate clap_complete to v4.5.56 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8451 * fix(deps): update rust crate proc-macro2 to v1.0.96 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8460 * chore(deps): update rust crate ctor to 0.5.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8461 * fix(deps): update rust crate libc to v0.2.175 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8464 * chore(deps): update rust crate glob to v0.3.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8465 * chore(deps): update actions/checkout action to v5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8466 * fix(deps): update rust crate proc-macro2 to v1.0.97 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8473 * chore(deps): update rust crate terminal_size to v0.4.3 - autoclosed by @renovate[bot] in https://github.com/uutils/coreutils/pull/8468 * chore(deps): update rust crate clap to v4.5.44 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8469 * chore(deps): update rust crate clap_complete to v4.5.57 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8470 * chore(deps): update rust crate thiserror to v2.0.14 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8472 * chore(deps): update rust crate clap to v4.5.45 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8476 * chore(deps): update rust crate rayon to v1.11.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8477 * chore(deps): update actions/checkout action to v5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8479 * chore(deps): update vmactions/freebsd-vm action to v1.2.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8487 * fix(deps): update rust crate proc-macro2 to v1.0.98 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8489 * chore(deps): update rust crate thiserror to v2.0.15 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8490 * fix(deps): update rust crate proc-macro2 to v1.0.101 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8491 * chore(deps): update vmactions/freebsd-vm action to v1.2.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8493 * chore(deps): update rust crate winapi-util to v0.1.10 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8498 * chore(deps): update rust crate thiserror to v2.0.16 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8500 * fix(deps): update rust crate tempfile to v3.21.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8499 * chore(deps): update rust crate filetime to v0.2.26 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8503 * chore(deps): update rust crate zip to v4.4.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8505 * chore(deps): update rust crate zip to v4.5.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8506 * chore(deps): update rust crate dns-lookup to v3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8512 * chore(deps): update rust crate memmap2 to v0.9.8 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8510 * chore(deps): update mfinelli/setup-shfmt action to v4 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8511 * chore(deps): update rust crate regex to v1.11.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8518 * chore(deps): update rust crate clap to v4.5.46 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8524 * chore(deps): update rust crate rust-ini to v0.21.3 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8531 * chore(deps): update rust crate zip to v4.6.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8532 * chore(deps): update rust crate time to v0.3.42 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8539 * chore(deps): update rust crate clap to v4.5.47 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8546 * chore(deps): update rust crate time to v0.3.43 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8547 * chore(deps): update rust crate zip to v4.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8548 * chore(deps): update actions/setup-python action to v6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8552 * chore(deps): update actions/github-script action to v8 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8554 * chore(deps): update rust crate zip to v5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8562 ## New Contributors * @oech3 made their first contribution in https://github.com/uutils/coreutils/pull/8013 * @alerque made their first contribution in https://github.com/uutils/coreutils/pull/8019 * @willshuttleworth made their first contribution in https://github.com/uutils/coreutils/pull/8016 * @Charlie-Zheng made their first contribution in https://github.com/uutils/coreutils/pull/8011 * @eldyl made their first contribution in https://github.com/uutils/coreutils/pull/8047 * @vikram-kangotra made their first contribution in https://github.com/uutils/coreutils/pull/7989 * @albus-droid made their first contribution in https://github.com/uutils/coreutils/pull/8064 * @tgrez made their first contribution in https://github.com/uutils/coreutils/pull/8158 * @MarcusGrass made their first contribution in https://github.com/uutils/coreutils/pull/8127 * @gabelluardo made their first contribution in https://github.com/uutils/coreutils/pull/8201 * @deadmeu made their first contribution in https://github.com/uutils/coreutils/pull/8214 * @Maximkaaa made their first contribution in https://github.com/uutils/coreutils/pull/8219 * @phinjensen made their first contribution in https://github.com/uutils/coreutils/pull/8241 * @jenningsfan made their first contribution in https://github.com/uutils/coreutils/pull/8053 * @VenetiaFurtado made their first contribution in https://github.com/uutils/coreutils/pull/8274 * @bvinc made their first contribution in https://github.com/uutils/coreutils/pull/8314 * @JohnoKing made their first contribution in https://github.com/uutils/coreutils/pull/8083 * @julian-klode made their first contribution in https://github.com/uutils/coreutils/pull/8331 * @RGBCube made their first contribution in https://github.com/uutils/coreutils/pull/8310 * @martinkunkel2 made their first contribution in https://github.com/uutils/coreutils/pull/8037 * @yonatan-linik made their first contribution in https://github.com/uutils/coreutils/pull/8352 * @karanabe made their first contribution in https://github.com/uutils/coreutils/pull/8354 * @amirhosseinghanipour made their first contribution in https://github.com/uutils/coreutils/pull/8409 * @TheJJ made their first contribution in https://github.com/uutils/coreutils/pull/8343 * @Anonymous-AAA made their first contribution in https://github.com/uutils/coreutils/pull/8478 * @id3v1669 made their first contribution in https://github.com/uutils/coreutils/pull/8528 * @schopin-pro made their first contribution in https://github.com/uutils/coreutils/pull/8550 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.1.0...0.2.0
### 📦 **Rust Coreutils 0.1.0 Release:** We are excited to announce the release of **Rust Coreutils 0.1.0** — our first 0.1 milestone! This release brings **major performance gains**, **SELinux support**, and expanded **GNU compatibility**. --- ### Highlights: - **SELinux Support** New SELinux integration in `cp`, `ls`, `mkdir`, `mknod`, `mkfifo`, `install`, and `stat`. Plus, SELinux-aware CI testing is now live! - **Performance Improvements** Notable speedups in `cat`, `ls`, `wc`, `tail`, `seq`, and more — many now **match or exceed GNU performance**. - **Ubuntu Plans to Ship uutils** Ubuntu is beginning to integrate Rust Coreutils into its base system! ➤ [Oxidizing Ubuntu](https://discourse.ubuntu.com/t/carefully-but-purposefully-oxidising-ubuntu/56995) - **Huge Contribution Wave** This release includes **843 commits** from **80+ contributors**, including **40 newcomers**! --- ### GNU Test Suite Compatibility: | Result | 0.0.30 | 0.1.0 | Change | |--------|--------|-------|--------| | Pass | 507 | 513 | +6 | | Skip | 41 | 42 | +1 | | Fail | 69 | 68 | -1 | | Total | 617 | 623 | +6 | ---  --- ### Call to Action: 🚀 **Sponsor us on GitHub** to help us grow faster: [github.com/sponsors/uutils](https://github.com/sponsors/uutils) 🔗 Download the latest release & learn more: [https://uutils.github.io](https://uutils.github.io) ## What's Changed ## basenc * base32/base64/basenc: add -D flag by @TerakomariGandesblood in https://github.com/uutils/coreutils/pull/7479 ## cat * cat: Improve performance of formatting. by @karlmcdowall in https://github.com/uutils/coreutils/pull/7519 * cat: bugfix when running with -T option by @karlmcdowall in https://github.com/uutils/coreutils/pull/7636 * cat: Formatting performance improvement by @karlmcdowall in https://github.com/uutils/coreutils/pull/7642 * cat: Performance improvement when printing line numbers by @karlmcdowall in https://github.com/uutils/coreutils/pull/7645 ## chmod * chmod: Correct chmod -R on dangling symlink and tests by @CSRessel in https://github.com/uutils/coreutils/pull/7618 ## chroot * Fix chroot trying to change into non-existent directory by @jplatte in https://github.com/uutils/coreutils/pull/7803 ## cksum * cksum: take out regex pattern matching by @GTimothy in https://github.com/uutils/coreutils/pull/7580 ## cp * cp: Use FICLONE ioctl constant from linux-raw-sys by @dezgeg in https://github.com/uutils/coreutils/pull/7439 * cp: fix update prompting by @hz2 in https://github.com/uutils/coreutils/pull/7668 * cp -P hardlink-to-symlink hardlink-to-same-symlink should no-op by @dan-hipschman in https://github.com/uutils/coreutils/pull/7753 * cp: refuse to copy symlink over itself by @dan-hipschman in https://github.com/uutils/coreutils/pull/7729 * cp: use `authors.workspace` in `Cargo.toml` by @cakebaker in https://github.com/uutils/coreutils/pull/7882 * cp: improve the selinux support by @sylvestre in https://github.com/uutils/coreutils/pull/7878 * cp: context Disable a check in tests/cp/no-ctx.sh by @sylvestre in https://github.com/uutils/coreutils/pull/7938 * cp: copy dir if source path ends with dot by @cakebaker in https://github.com/uutils/coreutils/pull/7874 ## csplit * csplit: removed unnecesary implementation of From<io::Error> by @lukasx999 in https://github.com/uutils/coreutils/pull/7778 * csplit: don't add a newline if the file doesn't end with one by @Qelxiros in https://github.com/uutils/coreutils/pull/7901 ## date * date: allow negative date offsets by @lewisboon in https://github.com/uutils/coreutils/pull/7548 * date: add tests for relative weekdays by @dan-hipschman in https://github.com/uutils/coreutils/pull/7843 * date: move file header to top & merge some imports by @cakebaker in https://github.com/uutils/coreutils/pull/7857 * refactor(tests): use absolute difference of dates to check if they are within a window by @lavafroth in https://github.com/uutils/coreutils/pull/7755 ## dd * feat: optimize `dd` parsing, bugfix by @nyurik in https://github.com/uutils/coreutils/pull/7704 ## df * refactor: Add thiserror to df by @kiran-4444 in https://github.com/uutils/coreutils/pull/7545 * df: migrate OptionsError to thiserror by @lewisboon in https://github.com/uutils/coreutils/pull/7673 * fix: df: filter filesystem types after mount point resolution by @SergeiPatiakin in https://github.com/uutils/coreutils/pull/7452 ## du * du: don't panic on block-size 0 by @BenWiederhake in https://github.com/uutils/coreutils/pull/7742 * du: fix "function never used" warning in test by @cakebaker in https://github.com/uutils/coreutils/pull/7943 ## echo * echo: fixed double hyphen as argument by @cerdelen in https://github.com/uutils/coreutils/pull/7581 * Remove clap for echo by @cerdelen in https://github.com/uutils/coreutils/pull/7603 ## env * env: ignore flags after the command or -- argument by @dan-hipschman in https://github.com/uutils/coreutils/pull/7781 * docs: env doesn't handle the empty string as a variable name by @Qelxiros in https://github.com/uutils/coreutils/pull/7956 ## expr * expr: Refactor AST evaluation to avoid stack overflow by @LouisDISPA in https://github.com/uutils/coreutils/pull/7388 * expr: Escape anchor characters within pattern by @frendsick in https://github.com/uutils/coreutils/pull/7842 * expr: Fix regex anchor matching behavior with `REGEX_OPTION_SINGLELINE` by @frendsick in https://github.com/uutils/coreutils/pull/7846 * expr: Fix parsing negated character classes "[^a]" by @frendsick in https://github.com/uutils/coreutils/pull/7884 * expr: Fix parsing regex anchors '^' and '$' by @frendsick in https://github.com/uutils/coreutils/pull/7953 ## false * true,false: remove unnecessary newline from version string by @cakebaker in https://github.com/uutils/coreutils/pull/7446 ## fmt * chore: minor fmt match cleanup by @nyurik in https://github.com/uutils/coreutils/pull/7722 * Run cargo fmt on missed files by @BenWiederhake in https://github.com/uutils/coreutils/pull/7949 * ci: run `cargo fmt --check` in `fuzz` folder by @cakebaker in https://github.com/uutils/coreutils/pull/7958 ## head * head: rework handling of non-seekable files by @karlmcdowall in https://github.com/uutils/coreutils/pull/7438 * head: fix overflow errors by @Qelxiros in https://github.com/uutils/coreutils/pull/7721 ## hostid * hostid: use `gethostid` from Rust `libc` by @cakebaker in https://github.com/uutils/coreutils/pull/7571 ## hostname * Bump `hostname` & remove `windows-core` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7713 ## id * bug: fix id printing of egid by @nyurik in https://github.com/uutils/coreutils/pull/7696 * id: Handle NULL pointer gracefully within `cstr2cow` macro by @frendsick in https://github.com/uutils/coreutils/pull/7810 * id: adapt error message to match the one from GNU `id` by @cakebaker in https://github.com/uutils/coreutils/pull/7836 * id: The `--real` flag should only affect `-u`, `-g`, and `-G` by @frendsick in https://github.com/uutils/coreutils/pull/7796 * id: remove unnecessary `to_string` calls by @cakebaker in https://github.com/uutils/coreutils/pull/7914 ## install * install: friendly message install file to directory by @zhw2101024 in https://github.com/uutils/coreutils/pull/7794 * install: fixes issue #7795 by @zcg00 in https://github.com/uutils/coreutils/pull/7838 * Install implement the --no-target-directory option by @zhw2101024 in https://github.com/uutils/coreutils/pull/7867 * install: remove todos by @cakebaker in https://github.com/uutils/coreutils/pull/7872 * ci: install `libselinux1-dev` for coverage job by @cakebaker in https://github.com/uutils/coreutils/pull/7959 * selinux: start the support of install by @sylvestre in https://github.com/uutils/coreutils/pull/7908 ## ls * ls: More performance optimizations by @drinkcat in https://github.com/uutils/coreutils/pull/7813 * ls: add -T support and fix --classify output by @emar-kar in https://github.com/uutils/coreutils/pull/7616 * ls: add selinux support by @sylvestre in https://github.com/uutils/coreutils/pull/7768 * ls: Print optimizations by @drinkcat in https://github.com/uutils/coreutils/pull/7801 * ls: update chrono crate version and switch to `new_lenient` use by @emar-kar in https://github.com/uutils/coreutils/pull/7858 * ls: remove duplicate code by @cakebaker in https://github.com/uutils/coreutils/pull/7932 * test_ls: Improve test_ls_perm_io_errors by @drinkcat in https://github.com/uutils/coreutils/pull/7811 ## mkdir * mkdir: add the selinux support by @sylvestre in https://github.com/uutils/coreutils/pull/7635 ## mkfifo * mkfifo: implement selinux support by @sylvestre in https://github.com/uutils/coreutils/pull/7831 ## mknod * mknod: remove windows-related code & flags by @cakebaker in https://github.com/uutils/coreutils/pull/7821 * mknod: implement selinux support by @sylvestre in https://github.com/uutils/coreutils/pull/7818 * mknod: rename function `_mknod` to `mknod` by @cakebaker in https://github.com/uutils/coreutils/pull/7824 * mknod: refactor `uumain` by @cakebaker in https://github.com/uutils/coreutils/pull/7825 * mknod: remove duplicate test by @cakebaker in https://github.com/uutils/coreutils/pull/7828 ## mktemp * mktemp: Prevent race condition when setting permissions for tempdir by @MidnightRocket in https://github.com/uutils/coreutils/pull/7617 ## more * more: keep only screen lines in mem by @aaron-ang in https://github.com/uutils/coreutils/pull/7680 * more: constant memory initialization overhead by @aaron-ang in https://github.com/uutils/coreutils/pull/7765 ## mv * Implement `Default` for `Options` of `mv` and `cp` by @jmjoy in https://github.com/uutils/coreutils/pull/7506 * mv: fix moving FIFO to a different filesystem by @jfinkels in https://github.com/uutils/coreutils/pull/7241 * mv: use `bool` instead of `Result` as return type by @cakebaker in https://github.com/uutils/coreutils/pull/7962 * mv: factor rename_with_fallback function into helpers by @jfinkels in https://github.com/uutils/coreutils/pull/7774 ## numfmt * numfmt: add --zero-terminated option by @dan-hipschman in https://github.com/uutils/coreutils/pull/7686 ## od * od: fix for issue #7666 by @karlmcdowall in https://github.com/uutils/coreutils/pull/7776 ## pr * pr: migrate from quick-error to thiserror by @Qelxiros in https://github.com/uutils/coreutils/pull/7919 ## printf * printf: fix octal escape parsing by @RenjiSann in https://github.com/uutils/coreutils/pull/7431 * printf: trim leading whitespace when parsing numeric values by @dlrobertson in https://github.com/uutils/coreutils/pull/7512 * printf: Consistently handle negative widths/precision by @sargas in https://github.com/uutils/coreutils/pull/7620 * printf: make negative values wrap around with unsigned/hex format by @eduardorittner in https://github.com/uutils/coreutils/pull/7656 * printf: Error handling with unicode parsing by @sargas in https://github.com/uutils/coreutils/pull/7681 * fuzzing: add a summary and enable printf by @sylvestre in https://github.com/uutils/coreutils/pull/7747 * printf: improve support of printing multi-byte values of characters by @jtracey in https://github.com/uutils/coreutils/pull/7208 * printf: Add indexing to format strings by @sargas in https://github.com/uutils/coreutils/pull/7837 * printf: use non-zero indexes by @jtracey in https://github.com/uutils/coreutils/pull/7855 * Fix `nan` print, simplify negative number printing. by @drinkcat in https://github.com/uutils/coreutils/pull/7413 * parser: Fix 3 corner cases by @drinkcat in https://github.com/uutils/coreutils/pull/7694 ## ptx * ptx: fixes by @usamoi in https://github.com/uutils/coreutils/pull/7521 * ptx: use char count instead of byte index to handle utf-8 characters by @aaron-ang in https://github.com/uutils/coreutils/pull/7897 ## rm * rm: skip prompt when stdin is not interactive; Fix #7326 by @bitspill in https://github.com/uutils/coreutils/pull/7492 ## seq * seq: fix default float precision (`%f`); fix 0 scientific printing by @drinkcat in https://github.com/uutils/coreutils/pull/7384 * seq: Buffer writes to stdout by @drinkcat in https://github.com/uutils/coreutils/pull/7485 * seq: Directly write separator string, instead of using format by @drinkcat in https://github.com/uutils/coreutils/pull/7562 * seq: Do not allow -w and -f to be specified at the same time by @drinkcat in https://github.com/uutils/coreutils/pull/7646 * seq: Trim whitespaces, then try to remove + by @drinkcat in https://github.com/uutils/coreutils/pull/7650 * test_seq: Add a few more tests for corner cases by @drinkcat in https://github.com/uutils/coreutils/pull/7527 ## shred * shred: remove unwanted padding in verbose messages by @BenWiederhake in https://github.com/uutils/coreutils/pull/7799 * shred: correctly print zero-byte pass in verbose mode by @BenWiederhake in https://github.com/uutils/coreutils/pull/7800 * shred: fix random passes* by @Qelxiros in https://github.com/uutils/coreutils/pull/7830 * shred: remove obsolete test by @cakebaker in https://github.com/uutils/coreutils/pull/7833 * shred: document simplified (better?) number of random passes by @BenWiederhake in https://github.com/uutils/coreutils/pull/7847 * shred: add 4K data alignment by @alexs-sh in https://github.com/uutils/coreutils/pull/7915 * shred: minor improvements and tests by @alexs-sh in https://github.com/uutils/coreutils/pull/7925 ## shuf * Make `shuf` OsStr-compliant and bring newline handling in line with GNU by @blyxxyz in https://github.com/uutils/coreutils/pull/7463 ## sleep * sleep: remove unused `fundu` from `Cargo.toml` by @cakebaker in https://github.com/uutils/coreutils/pull/7758 * util/build-gnu.sh: Accept hex float as sleep parameter by @drinkcat in https://github.com/uutils/coreutils/pull/7761 ## sort * sort: immediately compare whole lines if they parse as numbers by @MoSal in https://github.com/uutils/coreutils/pull/7567 ## split * split: fix a racing condition that causes issue #7869 by @yuankunzhang in https://github.com/uutils/coreutils/pull/7877 * split: use delegation to avoid code duplication in test by @cakebaker in https://github.com/uutils/coreutils/pull/7924 ## stat * stat: Print what kind of "weird" mode it is, if it's "weird" by @drinkcat in https://github.com/uutils/coreutils/pull/7587 * stat: add support for selinux by @sylvestre in https://github.com/uutils/coreutils/pull/7752 * test_stat: Disable test_stdin_pipe_fifo1/2 on Mac OS X by @drinkcat in https://github.com/uutils/coreutils/pull/7611 ## sum * sum: Rework some error handling by @karlmcdowall in https://github.com/uutils/coreutils/pull/7605 ## sync * sync: move call to unsafe fn to unsafe block by @cakebaker in https://github.com/uutils/coreutils/pull/7942 ## tail * tail: Performance improvements by @karlmcdowall in https://github.com/uutils/coreutils/pull/7643 * tail: Ignore a few tests on selinux by @sylvestre in https://github.com/uutils/coreutils/pull/7756 * tail: fix issue with -v flag and stdin by @karlmcdowall in https://github.com/uutils/coreutils/pull/7792 * tail hex parsing, remove fundu dependency by @Qelxiros in https://github.com/uutils/coreutils/pull/7760 * Tail macos stdin ran from script fix by @hz2 in https://github.com/uutils/coreutils/pull/7844 ## tee * add tests/misc/tee.sh to the list of intermittent issues by @sylvestre in https://github.com/uutils/coreutils/pull/7820 ## test * CI: add a new job to test with Selinux by @sylvestre in https://github.com/uutils/coreutils/pull/7440 * cp: create failing test for #7455 by @Carreau in https://github.com/uutils/coreutils/pull/7457 * selinux: run the GNU test too by @sylvestre in https://github.com/uutils/coreutils/pull/7448 * Add test to ensure arch output is not empty by @valerioedu in https://github.com/uutils/coreutils/pull/7523 * ci: Enable cspell on test on dotfiles too by @drinkcat in https://github.com/uutils/coreutils/pull/7582 * Test workspace CI on macos by @drinkcat in https://github.com/uutils/coreutils/pull/7576 * env: Removed parse_errors to follow other commands standard with "thiserror" + added errors test case by @ValentinBoudevin in https://github.com/uutils/coreutils/pull/7584 * Bump `bigdecimal` & fix failing test by @cakebaker in https://github.com/uutils/coreutils/pull/7630 * test/cp: Fix "No such file or directory" error in test_acl_preserve by @shskwmt in https://github.com/uutils/coreutils/pull/7677 * du: already passes GNU test in spirit, adjust test by @BenWiederhake in https://github.com/uutils/coreutils/pull/7754 * Bump `bincode` & adapt test code to API changes by @cakebaker in https://github.com/uutils/coreutils/pull/7767 * du: test existing correct behavior: warn about --inodes -b conflict by @BenWiederhake in https://github.com/uutils/coreutils/pull/7764 * test_ls: Improve acl test by @drinkcat in https://github.com/uutils/coreutils/pull/7816 * date: add `%q` test, support `%#z` properly by @drinkcat in https://github.com/uutils/coreutils/pull/7854 * test_test: Simplify test_file_N by @drinkcat in https://github.com/uutils/coreutils/pull/7579 ## timeout * timeout: Use common parser to parse time duration by @drinkcat in https://github.com/uutils/coreutils/pull/7648 * add tests against '0 in sleep/timeout durations by @Qelxiros in https://github.com/uutils/coreutils/pull/7777 * timeout: add hex parsing test by @Qelxiros in https://github.com/uutils/coreutils/pull/7940 ## touch * Fix touch -t with 2 digit years when YY > 68 by @Carreau in https://github.com/uutils/coreutils/pull/7378 ## tsort * tsort: remove duplicate sorting step by @anastygnome in https://github.com/uutils/coreutils/pull/7965 ## uptime * fix uptime on windows by @Bluemangoo in https://github.com/uutils/coreutils/pull/7430 * uptime: fix "unused import" warning in test by @cakebaker in https://github.com/uutils/coreutils/pull/7629 * uptime: fix "unused import" warnings with `musl` by @cakebaker in https://github.com/uutils/coreutils/pull/7866 * uptime: fix typo (formated -> formatted) by @cakebaker in https://github.com/uutils/coreutils/pull/7887 * uptime: some small refactorings by @cakebaker in https://github.com/uutils/coreutils/pull/7891 * uptime: fix typo (Gnu -> GNU) by @fran-tor in https://github.com/uutils/coreutils/pull/7896 * uptime: refactor `uumain` by @cakebaker in https://github.com/uutils/coreutils/pull/7892 ## uucore * Move ExtendedBigDecimal to uucore/format, make use of it in formatting functions by @drinkcat in https://github.com/uutils/coreutils/pull/7458 * uucore: format: num_format: add `fmt` function tests, and workaround 0e10 printing. by @drinkcat in https://github.com/uutils/coreutils/pull/7514 * uucore: format: num_parser: Use ExtendedBigDecimal by @drinkcat in https://github.com/uutils/coreutils/pull/7556 * uucore: format: Collection of small parser fixes by @drinkcat in https://github.com/uutils/coreutils/pull/7623 * seq: Move to uucore/format common number parsing code by @drinkcat in https://github.com/uutils/coreutils/pull/7624 * uucore: Move extendedbigdecimal and parsers to 2 separate features by @drinkcat in https://github.com/uutils/coreutils/pull/7647 * uucore: Minor fix to optional dependences by @RenjiSann in https://github.com/uutils/coreutils/pull/7654 * uucore: format: Fix hexadecimal default format print by @drinkcat in https://github.com/uutils/coreutils/pull/7631 * uucore: num_parser: Limit precision when computing 2**exp by @drinkcat in https://github.com/uutils/coreutils/pull/7712 * uucore: add `chrono` to `uptime` feature by @cakebaker in https://github.com/uutils/coreutils/pull/7719 * uucore/quoting_style: Add support for quoting/escaping empty strings by @sargas in https://github.com/uutils/coreutils/pull/7693 * fix(sleep): use uucore's from_str to support parsing hex by @Qelxiros in https://github.com/uutils/coreutils/pull/7675 * cp: factor make_fifo() function out to uucore::fs by @jfinkels in https://github.com/uutils/coreutils/pull/7775 * uucore: num_parser: Operate on slices, instead of iterator by @drinkcat in https://github.com/uutils/coreutils/pull/7790 * Move seq's `fast_inc` to `uucore`, use it in `cat` by @drinkcat in https://github.com/uutils/coreutils/pull/7782 * Allow compiling `uucore` with `wasm32-unknown-unknown` by @cptpiepmatz in https://github.com/uutils/coreutils/pull/7840 * uucore: add safe wrapper for getpgrp() by @eduardorittner in https://github.com/uutils/coreutils/pull/7676 * uucore/echo:handle ControlFlow result by @alexs-sh in https://github.com/uutils/coreutils/pull/7881 * selinux: use the uucore::selinux::is_selinux_enabled() function by @sylvestre in https://github.com/uutils/coreutils/pull/7909 * uucore: add functions to manage translations by @sylvestre in https://github.com/uutils/coreutils/pull/7955 ## wc * wc: Perf gains with the bytecount crate. by @karlmcdowall in https://github.com/uutils/coreutils/pull/7495 * wc: Speed optimization by @drinkcat in https://github.com/uutils/coreutils/pull/7934 ## whoami * whoami: remove unused libc dependency by @siddharthteli12 in https://github.com/uutils/coreutils/pull/7786 ## yes * yes: Remove usage of vmsplice by @karlmcdowall in https://github.com/uutils/coreutils/pull/7770 ## Selinux * selinux: get closer to the GNU error msgs by @sylvestre in https://github.com/uutils/coreutils/pull/7898 * selinux: rename `check_selinux_enabled()` by @cakebaker in https://github.com/uutils/coreutils/pull/7771 * set_selinux_security_context should return an Error, not String by @sylvestre in https://github.com/uutils/coreutils/pull/7845 * Cargo.toml: remove exact version requirements for `selinux` by @cakebaker in https://github.com/uutils/coreutils/pull/7883 ## Code quality * all: add `(uutils coreutils)` to version string by @cakebaker in https://github.com/uutils/coreutils/pull/7441 * Cargo.toml: use `authors.workspace = true` by @cakebaker in https://github.com/uutils/coreutils/pull/7723 * utmpx.rs: use correct constant names for musl libc by @Ecordonnier in https://github.com/uutils/coreutils/pull/7459 * fsext.rs: use type inference fsid_t / __fsid_t by @Ecordonnier in https://github.com/uutils/coreutils/pull/7469 * .pre-commit-config.yaml: Also run cspell by @drinkcat in https://github.com/uutils/coreutils/pull/7577 * Move our tests infra into a dedicated crate by @sylvestre in https://github.com/uutils/coreutils/pull/7598 * Flush `BufWriter`s, clean up error reporting by @blyxxyz in https://github.com/uutils/coreutils/pull/7622 * Consolidate crate config in workspace by @nyurik in https://github.com/uutils/coreutils/pull/7710 * chore: clean up a few code paths by @nyurik in https://github.com/uutils/coreutils/pull/7725 * enable feature_require_crate_cpp for musl by @Ecordonnier in https://github.com/uutils/coreutils/pull/7741 * enable utmpx feature for musl by @Ecordonnier in https://github.com/uutils/coreutils/pull/7740 * update parse_datetime to 0.9.0 by @sylvestre in https://github.com/uutils/coreutils/pull/7839 * Cargo.toml: Add profiling profile by @drinkcat in https://github.com/uutils/coreutils/pull/7862 * Switched to SVG graphs by @tdulcet in https://github.com/uutils/coreutils/pull/7888 * Move more programs to thiserror by @sylvestre in https://github.com/uutils/coreutils/pull/7525 * Move more errors to thiserror by @sgvictorino in https://github.com/uutils/coreutils/pull/7540 * chore: cleanup trailing commas before parens by @nyurik in https://github.com/uutils/coreutils/pull/7691 * chore: use inline formatting by @nyurik in https://github.com/uutils/coreutils/pull/7688 * chore: manual inline formatting - tests by @nyurik in https://github.com/uutils/coreutils/pull/7690 * clippy: fix warnings from Rust 1.86 by @cakebaker in https://github.com/uutils/coreutils/pull/7640 * chore: use `assert_eq!` and `assert_ne!` instead of `assert!` by @nyurik in https://github.com/uutils/coreutils/pull/7698 * feat: minor linting by @nyurik in https://github.com/uutils/coreutils/pull/7703 * Address new clippy lints by @nyurik in https://github.com/uutils/coreutils/pull/7707 * Consolidate lint management with workspaces by @nyurik in https://github.com/uutils/coreutils/pull/7709 * chore: remove unneeded parens by @nyurik in https://github.com/uutils/coreutils/pull/7700 * Fuzzing: minor fixes by @drinkcat in https://github.com/uutils/coreutils/pull/7717 * chore: manual inline formatting by @nyurik in https://github.com/uutils/coreutils/pull/7689 * chore: simplify `return` in multi-branch by @nyurik in https://github.com/uutils/coreutils/pull/7699 * chore: fix `clippy::unnested_or_patterns` by @nyurik in https://github.com/uutils/coreutils/pull/7730 * chore: fix `ref_option` lint by @nyurik in https://github.com/uutils/coreutils/pull/7724 * chore: remove trailing commas by @nyurik in https://github.com/uutils/coreutils/pull/7746 * Fix the implementation of Display and TryFrom<&str> for Teletype by @evilpie in https://github.com/uutils/coreutils/pull/7743 * Apply suggestions from clippy 0.1.87+nightly by @BenWiederhake in https://github.com/uutils/coreutils/pull/7744 * Enable and fix `unused_qualifications` lint by @nyurik in https://github.com/uutils/coreutils/pull/7715 * fix low-count lints in all crates by @nyurik in https://github.com/uutils/coreutils/pull/7716 * chore: address a few clippy lints that break API by @nyurik in https://github.com/uutils/coreutils/pull/7697 * feat: optimize iter matching by @nyurik in https://github.com/uutils/coreutils/pull/7702 ## CI * bump to Rust edition 2024 & min = 1.85 by @sylvestre in https://github.com/uutils/coreutils/pull/7423 * CI: improve the intermittent ignore by @sylvestre in https://github.com/uutils/coreutils/pull/7411 * Python: add ruff check and fix the code by @sylvestre in https://github.com/uutils/coreutils/pull/7486 * python: fix formatting in `compare_test_results.py` by @cakebaker in https://github.com/uutils/coreutils/pull/7493 * flake: drop flake-utils, refactor by @bloxx12 in https://github.com/uutils/coreutils/pull/7368 * GNU CI: fix the intermittement management by @sylvestre in https://github.com/uutils/coreutils/pull/7517 * remaining-gnu-error.py: Adjust to the new URL by @sylvestre in https://github.com/uutils/coreutils/pull/7634 * github/action: on fork, run the CI for all the branches (currently: only main) by @sylvestre in https://github.com/uutils/coreutils/pull/7604 * .github/workflows: Take care of both ./Cargo.lock and fuzz/Cargo.lock by @drinkcat in https://github.com/uutils/coreutils/pull/7653 * Fix coverage files generation by @RenjiSann in https://github.com/uutils/coreutils/pull/7401 * bump busybox & toybox reference code by @sylvestre in https://github.com/uutils/coreutils/pull/7470 * tests: replace `run()` with `succeeds()` or `fails()` by @cakebaker in https://github.com/uutils/coreutils/pull/7426 * github: fix the name - it is reference/aggregated-result.json/aggregated-result.json otherwise by @sylvestre in https://github.com/uutils/coreutils/pull/7477 * why-skip: Improve the display by @sylvestre in https://github.com/uutils/coreutils/pull/7437 * GNU/CI: use the aggregated-result.json files and move to python by @sylvestre in https://github.com/uutils/coreutils/pull/7471 * Fix Android CI by @drinkcat in https://github.com/uutils/coreutils/pull/7546 * ci: if FAIL => PASS but in the intermittent list, show the info by @sylvestre in https://github.com/uutils/coreutils/pull/7524 * flake.nix: bump minimal rust version by @sylvestre in https://github.com/uutils/coreutils/pull/7568 * deny.toml: remove two crates from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7575 * Move clippy lints from CI to `Cargo.toml` by @cakebaker in https://github.com/uutils/coreutils/pull/7748 * ci: lint with selinux by @cakebaker in https://github.com/uutils/coreutils/pull/7779 * ci: fix `unexpected input 'file'` warning in coverage job by @cakebaker in https://github.com/uutils/coreutils/pull/7960 * gnu: fix the build with selinux by @sylvestre in https://github.com/uutils/coreutils/pull/7899 * .cargo/config.toml: set `CFLAGS='-std=gnu17'` by @cakebaker in https://github.com/uutils/coreutils/pull/7944 * Revert #7944 by @cakebaker in https://github.com/uutils/coreutils/pull/7963 * upgrade to GNU coreutils 9.7 as ref by @sylvestre in https://github.com/uutils/coreutils/pull/7711 * CICD: Disable windows-latest/x86_64-pc-windows-gnu for now by @drinkcat in https://github.com/uutils/coreutils/pull/7859 * clippy: set MSRV and fix warnings by @cakebaker in https://github.com/uutils/coreutils/pull/7957 * Create an uufuzz crate for common functions and use it by @sylvestre in https://github.com/uutils/coreutils/pull/7954 * prepare release 0.1.0 by @sylvestre in https://github.com/uutils/coreutils/pull/7982 ## Documentation * CONTRIBUTING: fix broken link to Apple's file_cmds by @ohno418 in https://github.com/uutils/coreutils/pull/7460 * fixed link to repo on uutests docs by @hz2 in https://github.com/uutils/coreutils/pull/7848 * README.md: Refer to macOS when talking about the OS, not Mac (hardware) by @C0rn3j in https://github.com/uutils/coreutils/pull/7462 * uutests: add a doc by @sylvestre in https://github.com/uutils/coreutils/pull/7607 * uudoc: Fix for edition 2024 by @drinkcat in https://github.com/uutils/coreutils/pull/7573 * ci: Enable uudoc feature on x86-64 native builder by @drinkcat in https://github.com/uutils/coreutils/pull/7574 * Document the release process by @sylvestre in https://github.com/uutils/coreutils/pull/7419 * add fedora and RHEL installation docs by @benyaminl in https://github.com/uutils/coreutils/pull/7453 * docs: fix url of file with coverage results by @cakebaker in https://github.com/uutils/coreutils/pull/7528 * document how to do good performance work by @sylvestre in https://github.com/uutils/coreutils/pull/7541 * doc: bump version of ubuntu badge by @lbellomo in https://github.com/uutils/coreutils/pull/7553 * docs: replace AUR package in installation.md by @cakebaker in https://github.com/uutils/coreutils/pull/7554 * doc: fix broken links on mdbook by @lbellomo in https://github.com/uutils/coreutils/pull/7551 * Update installation.md by @AspadaX in https://github.com/uutils/coreutils/pull/7557 * doc: escape RE with backticks (`) by @lbellomo in https://github.com/uutils/coreutils/pull/7560 * performance.md: recommend to build with the right profile by @sylvestre in https://github.com/uutils/coreutils/pull/7930 ## Dependency Updates * Bump `iana-time-zone` & add `windows-core` to skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7628 * deny.toml: remove `zerocopy` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7773 * Bump `libc` & remove unnecessary `unsafe` blocks by @cakebaker in https://github.com/uutils/coreutils/pull/7434 * Bump `tempfile` & fix deprecation warning by @cakebaker in https://github.com/uutils/coreutils/pull/7922 * Bump `markdownlint` action & fix warnings by @cakebaker in https://github.com/uutils/coreutils/pull/7939 * Bump `nix` & `ctrlc`, adapt code to API changes in `nix` by @cakebaker in https://github.com/uutils/coreutils/pull/7971 * Bump `fluent` and `fluent-bundle` by @cakebaker in https://github.com/uutils/coreutils/pull/7980 * chore(deps): update rust crate terminal_size to v0.4.2 by @renovate in https://github.com/uutils/coreutils/pull/7425 * chore(deps): update rust crate serde to v1.0.219 by @renovate in https://github.com/uutils/coreutils/pull/7428 * chore(deps): update rust crate clap to v4.5.32 by @renovate in https://github.com/uutils/coreutils/pull/7432 * fix(deps): update rust crate quote to v1.0.40 by @renovate in https://github.com/uutils/coreutils/pull/7436 * fix(deps): update rust crate tempfile to v3.19.0 by @renovate in https://github.com/uutils/coreutils/pull/7444 * chore(deps): update rust crate half to v2.5.0 by @renovate in https://github.com/uutils/coreutils/pull/7445 * chore(deps): update rust crate linux-raw-sys to v0.9.3 by @renovate in https://github.com/uutils/coreutils/pull/7447 * chore(deps): update vmactions/freebsd-vm action to v1.1.9 by @renovate in https://github.com/uutils/coreutils/pull/7456 * chore(deps): update rust crate zip to v2.3.0 by @renovate in https://github.com/uutils/coreutils/pull/7467 * chore(deps): update rust crate zip to v2.4.1 by @renovate in https://github.com/uutils/coreutils/pull/7476 * chore(deps): update rust crate time to v0.3.40 by @renovate in https://github.com/uutils/coreutils/pull/7478 * chore(deps): update rust crate blake3 to v1.7.0 by @renovate in https://github.com/uutils/coreutils/pull/7489 * chore(deps): update rust crate zip to v2.4.2 by @renovate in https://github.com/uutils/coreutils/pull/7491 * chore(deps): update rust crate clap_complete to v4.5.47 by @renovate in https://github.com/uutils/coreutils/pull/7499 * fix(deps): update rust crate tempfile to v3.19.1 by @renovate in https://github.com/uutils/coreutils/pull/7500 * chore(deps): update rust crate chrono-tz to v0.10.2 by @renovate in https://github.com/uutils/coreutils/pull/7543 * chore(deps): update rust crate time to v0.3.41 by @renovate in https://github.com/uutils/coreutils/pull/7549 * chore(deps): update rust crate zip to v2.5.0 by @renovate in https://github.com/uutils/coreutils/pull/7547 * chore(deps): update rust crate iana-time-zone to v0.1.62 by @renovate in https://github.com/uutils/coreutils/pull/7555 * chore(deps): update rust crate chrono-tz to v0.10.3 by @renovate in https://github.com/uutils/coreutils/pull/7561 * chore(deps): update rust crate hex-literal to v1 by @renovate in https://github.com/uutils/coreutils/pull/7343 * chore(deps): update rust crate selinux-sys to v0.6.14 by @renovate in https://github.com/uutils/coreutils/pull/7424 * chore(deps): update rust crate selinux to v0.5.1 by @renovate in https://github.com/uutils/coreutils/pull/7421 * chore(deps): update rust crate fts-sys to v0.2.16 by @renovate in https://github.com/uutils/coreutils/pull/7420 * chore(deps): update rust crate clap to v4.5.34 by @renovate in https://github.com/uutils/coreutils/pull/7588 * chore(deps): update mozilla-actions/sccache-action action to v0.0.9 by @renovate in https://github.com/uutils/coreutils/pull/7592 * fix(deps): update rust crate os_display to v0.1.4 by @renovate in https://github.com/uutils/coreutils/pull/7599 * chore(deps): update reactivecircus/android-emulator-runner action to v2.34.0 by @renovate in https://github.com/uutils/coreutils/pull/7602 * chore(deps): update rust crate blake3 to v1.8.0 by @renovate in https://github.com/uutils/coreutils/pull/7621 * chore(deps): update rust crate clap to v4.5.35 by @renovate in https://github.com/uutils/coreutils/pull/7633 * chore(deps): update rust crate blake3 to v1.8.1 by @renovate in https://github.com/uutils/coreutils/pull/7639 * chore(deps): update rust crate zip to v2.6.0 by @renovate in https://github.com/uutils/coreutils/pull/7644 * chore(deps): update rust crate ctrlc to v3.4.6 by @renovate in https://github.com/uutils/coreutils/pull/7652 * chore(deps): update rust crate smallvec to v1.15.0 by @renovate in https://github.com/uutils/coreutils/pull/7657 * chore(deps): update rust crate zip to v2.6.1 by @renovate in https://github.com/uutils/coreutils/pull/7655 * chore(deps): update vmactions/freebsd-vm action to v1.2.0 by @renovate in https://github.com/uutils/coreutils/pull/7672 * chore(deps): update rust crate crossterm to 0.29.0 by @renovate in https://github.com/uutils/coreutils/pull/7667 * chore(deps): update mozilla-actions/sccache-action action to v0.0.9 by @renovate in https://github.com/uutils/coreutils/pull/7682 * chore(deps): update codecov/codecov-action action to v5 by @renovate in https://github.com/uutils/coreutils/pull/7683 * chore(deps): update rust crate half to v2.6.0 by @renovate in https://github.com/uutils/coreutils/pull/7692 * chore(deps): update rust crate bstr to v1.12.0 by @renovate in https://github.com/uutils/coreutils/pull/7701 * chore(deps): update rust crate linux-raw-sys to v0.9.4 by @renovate in https://github.com/uutils/coreutils/pull/7714 * chore(deps): update rust crate uutils_term_grid to 0.7 by @renovate in https://github.com/uutils/coreutils/pull/7720 * chore(deps): update rust crate self_cell to v1.2.0 by @renovate in https://github.com/uutils/coreutils/pull/7727 * chore(deps): update rust crate clap to v4.5.36 by @renovate in https://github.com/uutils/coreutils/pull/7731 * fix(deps): update rust crate data-encoding to v2.9.0 by @renovate in https://github.com/uutils/coreutils/pull/7735 * fix(deps): update rust crate data-encoding-macro to v0.1.18 by @renovate in https://github.com/uutils/coreutils/pull/7734 * fix(deps): update rust crate libc to v0.2.172 by @renovate in https://github.com/uutils/coreutils/pull/7759 * fix(deps): update rust crate proc-macro2 to v1.0.95 by @renovate in https://github.com/uutils/coreutils/pull/7766 * fix(deps): update rust crate rand to v0.9.1 by @renovate in https://github.com/uutils/coreutils/pull/7772 * chore(deps): update rust crate clap to v4.5.37 by @renovate in https://github.com/uutils/coreutils/pull/7783 * chore(deps): update rust crate blake3 to v1.8.2 by @renovate in https://github.com/uutils/coreutils/pull/7807 * chore(deps): update rust crate ctor to v0.4.2 by @renovate in https://github.com/uutils/coreutils/pull/7817 * chore(deps): update rust crate clap_complete to v4.5.48 by @renovate in https://github.com/uutils/coreutils/pull/7856 * chore(deps): update rust crate sha2 to v0.10.9 by @renovate in https://github.com/uutils/coreutils/pull/7864 * chore(deps): update rust crate clap_complete to v4.5.49 by @renovate in https://github.com/uutils/coreutils/pull/7889 * chore(deps): update rust crate clap_complete to v4.5.50 by @renovate in https://github.com/uutils/coreutils/pull/7893 * chore(deps): update rust crate signal-hook to v0.3.18 by @renovate in https://github.com/uutils/coreutils/pull/7905 * chore(deps): update rust crate clap to v4.5.38 by @renovate in https://github.com/uutils/coreutils/pull/7911 * chore(deps): update rust crate zip to v3 by @renovate in https://github.com/uutils/coreutils/pull/7935 * chore(deps): update rust crate zip to v4 by @renovate in https://github.com/uutils/coreutils/pull/7969 ## New Contributors * @LouisDISPA made their first contribution in https://github.com/uutils/coreutils/pull/7388 * @Carreau made their first contribution in https://github.com/uutils/coreutils/pull/7378 * @ohno418 made their first contribution in https://github.com/uutils/coreutils/pull/7460 * @benyaminl made their first contribution in https://github.com/uutils/coreutils/pull/7453 * @C0rn3j made their first contribution in https://github.com/uutils/coreutils/pull/7462 * @TerakomariGandesblood made their first contribution in https://github.com/uutils/coreutils/pull/7479 * @bloxx12 made their first contribution in https://github.com/uutils/coreutils/pull/7368 * @jmjoy made their first contribution in https://github.com/uutils/coreutils/pull/7506 * @valerioedu made their first contribution in https://github.com/uutils/coreutils/pull/7523 * @usamoi made their first contribution in https://github.com/uutils/coreutils/pull/7521 * @lbellomo made their first contribution in https://github.com/uutils/coreutils/pull/7553 * @AspadaX made their first contribution in https://github.com/uutils/coreutils/pull/7557 * @dlrobertson made their first contribution in https://github.com/uutils/coreutils/pull/7512 * @lewisboon made their first contribution in https://github.com/uutils/coreutils/pull/7548 * @cerdelen made their first contribution in https://github.com/uutils/coreutils/pull/7581 * @ValentinBoudevin made their first contribution in https://github.com/uutils/coreutils/pull/7584 * @GTimothy made their first contribution in https://github.com/uutils/coreutils/pull/7580 * @MoSal made their first contribution in https://github.com/uutils/coreutils/pull/7567 * @kiran-4444 made their first contribution in https://github.com/uutils/coreutils/pull/7545 * @shskwmt made their first contribution in https://github.com/uutils/coreutils/pull/7677 * @CSRessel made their first contribution in https://github.com/uutils/coreutils/pull/7618 * @nyurik made their first contribution in https://github.com/uutils/coreutils/pull/7691 * @MidnightRocket made their first contribution in https://github.com/uutils/coreutils/pull/7617 * @eduardorittner made their first contribution in https://github.com/uutils/coreutils/pull/7656 * @dan-hipschman made their first contribution in https://github.com/uutils/coreutils/pull/7686 * @hz2 made their first contribution in https://github.com/uutils/coreutils/pull/7668 * @evilpie made their first contribution in https://github.com/uutils/coreutils/pull/7743 * @lavafroth made their first contribution in https://github.com/uutils/coreutils/pull/7755 * @emar-kar made their first contribution in https://github.com/uutils/coreutils/pull/7616 * @SergeiPatiakin made their first contribution in https://github.com/uutils/coreutils/pull/7452 * @aaron-ang made their first contribution in https://github.com/uutils/coreutils/pull/7680 * @lukasx999 made their first contribution in https://github.com/uutils/coreutils/pull/7778 * @siddharthteli12 made their first contribution in https://github.com/uutils/coreutils/pull/7786 * @zhw2101024 made their first contribution in https://github.com/uutils/coreutils/pull/7794 * @jplatte made their first contribution in https://github.com/uutils/coreutils/pull/7803 * @frendsick made their first contribution in https://github.com/uutils/coreutils/pull/7810 * @bitspill made their first contribution in https://github.com/uutils/coreutils/pull/7492 * @cptpiepmatz made their first contribution in https://github.com/uutils/coreutils/pull/7840 * @yuankunzhang made their first contribution in https://github.com/uutils/coreutils/pull/7877 * @tdulcet made their first contribution in https://github.com/uutils/coreutils/pull/7888 * @fran-tor made their first contribution in https://github.com/uutils/coreutils/pull/7896 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.0.30...0.1.0
### 📦 **Rust Coreutils 0.0.30 Release:** We are excited to announce the release of **Rust Coreutils 0.0.30**! --- ### Highlights: - **Improved Compatibility**: - This release focused on compatibility with the upstream GNU Coreutils 9.6 release. This is why the number of passing tests didn't change much - our effort was directed at adapting to the new upstream version rather than fixing existing test failures. - Passing GNU tests increased to **507** (+1 compared to 0.0.29). - **Contributions**: This release was made possible by the dedication of **32 contributors**, including **8 newcomers**. - We also announced at FOSDEM the extension of this project to cover other key Linux tools through our uutils initiative. This will extend the Rust rewrite effort to additional common Unix tools. See the presentation on [YouTube](https://www.youtube.com/watch?v=cXf31nFPo0U) ([slides](https://sylvestre.ledru.info/coreutils-fosdem-2025/)) or read the [LWN article](https://lwn.net/Articles/1007907/) for more details about our vision. --- ### GNU Test Suite Compatibility: Here's how version 0.0.30 compares to the previous release: | Result | 0.0.29 | 0.0.30 | Change 0.0.29 to 0.0.30 | % Total 0.0.29 | % Total 0.0.30 | % Change 0.0.29 to 0.0.30 | |---------------|--------|--------|-------------------------|----------------|----------------|--------------------------| | Pass | 506 | 507 | +1 | 82.38% | 82.17% | -0.21% | | Skip | 41 | 41 | 0 | 6.68% | 6.65% | -0.03% | | Fail | 67 | 69 | +2 | 10.92% | 11.18% | +0.26% | | Total | 614 | 617 | +3 (new tests) | | | | ---  --- ### Call to Action: Support our work by sponsoring us on GitHub! Your contributions directly help maintain our infrastructure and enable faster development. [Sponsor us here](https://github.com/sponsors/uutils). For more details and to download the latest release, visit our website: [https://uutils.github.io](https://uutils.github.io). ## What's Changed ### cat * error when output is input and appending by @jfinkels in https://github.com/uutils/coreutils/pull/7260 ### chgrp * add option --from by @sylvestre in https://github.com/uutils/coreutils/pull/7129 * gnu/tests/chgrp/from.sh is now fixed by @sylvestre in https://github.com/uutils/coreutils/pull/7205 ### cksum * Fix #6375 and un-ignore now passing tests by @RenjiSann in https://github.com/uutils/coreutils/pull/7261 * Update error and flags handling to improver GNU's match by @RenjiSann in https://github.com/uutils/coreutils/pull/7192 * add CRC32B algorithm added in GNU 9.6 by @RenjiSann in https://github.com/uutils/coreutils/pull/7169 * replace `is_some_and` with `is_none_or` by @cakebaker in https://github.com/uutils/coreutils/pull/7403 ### cp * disabled verbose output if file has been skipped by @BigPapa314 in https://github.com/uutils/coreutils/pull/7347 * fix verbose output order after prompt by @aimerlief in https://github.com/uutils/coreutils/pull/7287 ### csplit * don't panic on missing suppressed file by @jfinkels in https://github.com/uutils/coreutils/pull/7292 ### echo * use uucore::format::parse_escape_only() by @jfinkels in https://github.com/uutils/coreutils/pull/7316 ### expr * Add tests by @RenjiSann in https://github.com/uutils/coreutils/pull/7356 * Evaluate parenthesis content before checking for closing parenthesis by @RenjiSann in https://github.com/uutils/coreutils/pull/7332 * Fix assorted test errors in tests/expr/expr.pl by @sargas in https://github.com/uutils/coreutils/pull/6134 * Get rid of clap for performance reasons by @RenjiSann in https://github.com/uutils/coreutils/pull/7352 ### install * Document install-C test failure by @sylvestre in https://github.com/uutils/coreutils/pull/7223 ### head * ensure stdin input stream is correct on exit by @karlmcdowall in https://github.com/uutils/coreutils/pull/7253 * Fix bug printing large non-seekable files by @karlmcdowall in https://github.com/uutils/coreutils/pull/7294 * fix bug reading back through files by @karlmcdowall in https://github.com/uutils/coreutils/pull/7248 * improve error mgmt. by @sylvestre in https://github.com/uutils/coreutils/pull/7408 * Remove a head test from the list of failure by @sylvestre in https://github.com/uutils/coreutils/pull/7414 ### kill * don't allow lowercase signal names with '-' by @cakebaker in https://github.com/uutils/coreutils/pull/7206 * fix the fail to use only least significant bits to identify signal with -l by @Felle33 in https://github.com/uutils/coreutils/pull/7225 * list signal `0` with `-l` and `-t` by @cakebaker in https://github.com/uutils/coreutils/pull/7193 * test "-l <number>" & adapt error messages by @cakebaker in https://github.com/uutils/coreutils/pull/7213 ### ls * display %Z alphabetic time zone abbreviation by @jfinkels in https://github.com/uutils/coreutils/pull/7154 * Refactoring ls and date by @Felle33 in https://github.com/uutils/coreutils/pull/7194 * gnu patches: adapt `tests_ls_no_cap.patch` to GNU `coreutils 9.6` by @cakebaker in https://github.com/uutils/coreutils/pull/7163 ### mv * show prompt for `-u --interactive` by @cakebaker in https://github.com/uutils/coreutils/pull/7178 * Make mv command fallback to copy only if the src and dst are on different device by @hamflx in https://github.com/uutils/coreutils/pull/6040 ### numfmt * extract test from other test & expand it by @cakebaker in https://github.com/uutils/coreutils/pull/7155 * fix Unit::SI uses lowercase `k` suffix for kilos by @alexsnaps in https://github.com/uutils/coreutils/pull/7322 * fix from iec-i without suffix are bytes by @alexsnaps in https://github.com/uutils/coreutils/pull/7323 ### od * remove custom implementations of PartialEq and Eq by @alexs-sh in https://github.com/uutils/coreutils/pull/7211 ### printf * (partially) fix hex format: exponent is decimal, correctly print negative numbers by @drinkcat in https://github.com/uutils/coreutils/pull/7365 * Show warning message in case of excess arguments by @RenjiSann in https://github.com/uutils/coreutils/pull/7239 * error on missing hexadecial escape value by @jfinkels in https://github.com/uutils/coreutils/pull/7259 * negative asterisk param changes alignment by @RenjiSann in https://github.com/uutils/coreutils/pull/7246 * Re-enable integer overflow test case for printf by @jfinkels in https://github.com/uutils/coreutils/pull/7168 ### rm * add two passing tests for -i option by @jfinkels in https://github.com/uutils/coreutils/pull/7306 * correct prompt for removing inaccessible dir by @jfinkels in https://github.com/uutils/coreutils/pull/7325 * simplify remove_dir() helper function by @jfinkels in https://github.com/uutils/coreutils/pull/7308 * use recursive directory traversal with --recursive by @jfinkels in https://github.com/uutils/coreutils/pull/7304 ### seq * remove timeout from seq test cases by @jfinkels in https://github.com/uutils/coreutils/pull/7171 ### sort * errors on overflowing -k argument but shouldn't by @ic3man5 in https://github.com/uutils/coreutils/pull/7188 * needs support for human-readable block size suffixes R and Q by @ic3man5 in https://github.com/uutils/coreutils/pull/7198 * options -C and -c should be mutually exclusive but aren't by @ic3man5 in https://github.com/uutils/coreutils/pull/7191 * support percent arguments to -S option by @jfinkels in https://github.com/uutils/coreutils/pull/7181 ### split * avoid extremely long format width in test by @jfinkels in https://github.com/uutils/coreutils/pull/7301 ### tee * fix -p behavior upon broken pipe stdout by @RenjiSann in https://github.com/uutils/coreutils/pull/7273 * fix usage of deprecated function in tests by @cakebaker in https://github.com/uutils/coreutils/pull/7341 ### test * add < and > operators for string comparison by @jfinkels in https://github.com/uutils/coreutils/pull/7315 * remove `sleep` from tests by @cakebaker in https://github.com/uutils/coreutils/pull/7327 ### timeout * add support for `-f` and `-p` short options by @cakebaker in https://github.com/uutils/coreutils/pull/7200 ### touch * support obsolete POSIX timestamp argument by @jfinkels in https://github.com/uutils/coreutils/pull/7274 ### tr * Fix GNU behavior deviation by @RenjiSann in https://github.com/uutils/coreutils/pull/7320 ### uptime * refactor, move some codes to uucore by @Bluemangoo in https://github.com/uutils/coreutils/pull/7289 * remove duplicate test by @cakebaker in https://github.com/uutils/coreutils/pull/7265 ### yes * fix use of deprecated function in test by @cakebaker in https://github.com/uutils/coreutils/pull/7348 ### uucore * Add missing dependencies by @sylvestre in https://github.com/uutils/coreutils/pull/7157 * Fix proc_info compilation by @dezgeg in https://github.com/uutils/coreutils/pull/7385 * Sync proc_info methods from procps by @dezgeg in https://github.com/uutils/coreutils/pull/7351 * remove `lazy_static` and use `LazyLock` instead by @cakebaker in https://github.com/uutils/coreutils/pull/7404 * replace `PanicInfo` with `PanicHookInfo` by @cakebaker in https://github.com/uutils/coreutils/pull/7395 * uucore/docs.rs: generate the doc for all features by @sylvestre in https://github.com/uutils/coreutils/pull/7220 ### Documentation * Fix usage strings for #5692 by @rwdj in https://github.com/uutils/coreutils/pull/7303 * why-error.md: document more errors by @sylvestre in https://github.com/uutils/coreutils/pull/7224 ### Build & CI * add words to `spell-checker:ignore` in two files by @cakebaker in https://github.com/uutils/coreutils/pull/7300 * build: restore uutils in GNU test files by @jfinkels in https://github.com/uutils/coreutils/pull/7170 * try upstream 9.6 by @sylvestre in https://github.com/uutils/coreutils/pull/7149 * .github: CICD: add workspace test to build matrix by @drinkcat in https://github.com/uutils/coreutils/pull/7386 * GNUmakefile: fix install error "argument list too long" by @blmaier in https://github.com/uutils/coreutils/pull/7321 * GNUmakefile: support skipping manpages and completions by @blmaier in https://github.com/uutils/coreutils/pull/7331 * gnu patches: move to use quilt by @sylvestre in https://github.com/uutils/coreutils/pull/7127 * Decrease more sleep by @sylvestre in https://github.com/uutils/coreutils/pull/7244 * Fixed Bugs When Not Using Default Target Directory by @zcg00 in https://github.com/uutils/coreutils/pull/7266 * Use ubuntu-24.04-arm to build/test linux arm64 by @sylvestre in https://github.com/uutils/coreutils/pull/7153 * prepare version 0.0.30 by @sylvestre in https://github.com/uutils/coreutils/pull/7418 * Add fails_with_code() function by @RenjiSann in https://github.com/uutils/coreutils/pull/7369 * Decrease the various sleeps by @sylvestre in https://github.com/uutils/coreutils/pull/7232 * make `wait_with_output` private by @cakebaker in https://github.com/uutils/coreutils/pull/7350 * use the new function fails_with_code by @sylvestre in https://github.com/uutils/coreutils/pull/7371 * Use the new function 'fails_with_code' - followup by @sylvestre in https://github.com/uutils/coreutils/pull/7391 * GNU test: don't generate an error if a new test passes by @sylvestre in https://github.com/uutils/coreutils/pull/7349 * deny.toml: remove `syn` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7139 * deny.toml: remove three crates from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7390 * deny.toml: add `rustix` & `linux-raw-sys` to skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7416 * Nix/Nixos development by @RenjiSann in https://github.com/uutils/coreutils/pull/6947 * mount temp fs by @matrixhead in https://github.com/uutils/coreutils/pull/7249 * github action: do not fail the GNU test if only intermittent by @sylvestre in https://github.com/uutils/coreutils/pull/7283 * Remove some replacements of touch in build script by @jfinkels in https://github.com/uutils/coreutils/pull/7243 * add two tests to the list of intermittent tests by @sylvestre in https://github.com/uutils/coreutils/pull/7195 * fix util/remaining-gnu-error.py by @sylvestre in https://github.com/uutils/coreutils/pull/7204 ### fuzzing * fuzz: update dependencies by @cakebaker in https://github.com/uutils/coreutils/pull/7245 * fuzz: use new `<`/`>` operators in `fuzz_test.rs` by @cakebaker in https://github.com/uutils/coreutils/pull/7330 * Improve fuzzer logging by @RenjiSann in https://github.com/uutils/coreutils/pull/7281 ### Code quality * clippy: fix warnings from `unnecessary_map_or` lint by @cakebaker in https://github.com/uutils/coreutils/pull/7398 * clippy: fix/disable warnings introduced with Rust `1.85` by @cakebaker in https://github.com/uutils/coreutils/pull/7329 * Cargo.toml: fix incorrect lint name by @cakebaker in https://github.com/uutils/coreutils/pull/7267 * Remove `once_cell` dependency and use `LazyLock` by @cakebaker in https://github.com/uutils/coreutils/pull/7405 * Remove `rand_pcg` by @cakebaker in https://github.com/uutils/coreutils/pull/7233 * Style fixes from cargo +nightly clippy by @jfinkels in https://github.com/uutils/coreutils/pull/7339 * Move other programs to thiserror by @sylvestre in https://github.com/uutils/coreutils/pull/7207 * Move some programs to thiserror by @sylvestre in https://github.com/uutils/coreutils/pull/7175 * minor code quality improvements by @danieleades in https://github.com/uutils/coreutils/pull/7177 * remove redundant clippy MSRV config by @danieleades in https://github.com/uutils/coreutils/pull/7176 * mktemp,tr: replace `repeat().take()` with `repeat_n()` by @cakebaker in https://github.com/uutils/coreutils/pull/7400 ## Dependency Updates * Bump MSRV to 1.82.0 by @drinkcat in https://github.com/uutils/coreutils/pull/7394 * Bump `fts-sys` from `0.2.13` to `0.2.14` by @cakebaker in https://github.com/uutils/coreutils/pull/7279 * Bump `nom` and adapt `tr` to API changes by @cakebaker in https://github.com/uutils/coreutils/pull/7227 * Bump `rand` & `rand_core` to `0.9.0`, adapt code to API changes by @cakebaker in https://github.com/uutils/coreutils/pull/7242 * Bump `tempfile` & add two crates to the skip list in `deny.toml` by @cakebaker in https://github.com/uutils/coreutils/pull/7238 * fix(deps): update rust crate similar to v2.7.0 by @renovate in https://github.com/uutils/coreutils/pull/7164 * chore(deps): update rust crate parse_datetime to 0.7.0 by @renovate in https://github.com/uutils/coreutils/pull/7172 * chore(deps): update rust crate clap to v4.5.27 by @renovate in https://github.com/uutils/coreutils/pull/7189 * chore(deps): update dawidd6/action-download-artifact action to v8 by @renovate in https://github.com/uutils/coreutils/pull/7196 * chore(deps): update rust crate clap_complete to v4.5.43 by @renovate in https://github.com/uutils/coreutils/pull/7228 * chore(deps): update rust crate indicatif to v0.17.10 by @renovate in https://github.com/uutils/coreutils/pull/7234 * fix(deps): update rust crate libfuzzer-sys to v0.4.9 by @renovate in https://github.com/uutils/coreutils/pull/7236 * chore(deps): update rust crate indicatif to v0.17.11 by @renovate in https://github.com/uutils/coreutils/pull/7235 * chore(deps): update rust crate clap_complete to v4.5.44 by @renovate in https://github.com/uutils/coreutils/pull/7240 * fix(deps): update rust crate z85 to v3.0.6 by @renovate in https://github.com/uutils/coreutils/pull/7264 * chore(deps): update rust crate clap to v4.5.28 by @renovate in https://github.com/uutils/coreutils/pull/7263 * chore(deps): update rust crate blake2b_simd to v1.0.3 by @renovate in https://github.com/uutils/coreutils/pull/7268 * chore(deps): update rust crate selinux to 0.5.0 by @renovate in https://github.com/uutils/coreutils/pull/7278 * chore(deps): update rust crate once_cell to v1.20.3 by @renovate in https://github.com/uutils/coreutils/pull/7277 * fix(deps): update rust crate data-encoding-macro to v0.1.17 by @renovate in https://github.com/uutils/coreutils/pull/7290 * chore(deps): update rust crate clap to v4.5.29 by @renovate in https://github.com/uutils/coreutils/pull/7297 * chore(deps): update rust crate smallvec to v1.14.0 by @renovate in https://github.com/uutils/coreutils/pull/7302 * fix(deps): update rust crate tempfile to v3.17.0 by @renovate in https://github.com/uutils/coreutils/pull/7311 * chore(deps): update rust crate rand_core to v0.9.1 by @renovate in https://github.com/uutils/coreutils/pull/7310 * chore(deps): update rust crate parse_datetime to 0.8.0 by @renovate in https://github.com/uutils/coreutils/pull/7314 * fix(deps): update rust crate tempfile to v3.17.1 by @renovate in https://github.com/uutils/coreutils/pull/7313 * chore(deps): update rust crate clap to v4.5.30 by @renovate in https://github.com/uutils/coreutils/pull/7317 * chore(deps): update rust crate clap_complete to v4.5.45 by @renovate in https://github.com/uutils/coreutils/pull/7318 * chore(deps): update rust crate blake3 to v1.6.0 by @renovate in https://github.com/uutils/coreutils/pull/7319 * chore(deps): update rust crate serde to v1.0.218 by @renovate in https://github.com/uutils/coreutils/pull/7328 * fix(deps): update rust crate libc to v0.2.170 by @renovate in https://github.com/uutils/coreutils/pull/7346 * chore(deps): update rust crate rand_core to v0.9.2 by @renovate in https://github.com/uutils/coreutils/pull/7345 * chore(deps): update rust crate clap_complete to v4.5.46 by @renovate in https://github.com/uutils/coreutils/pull/7354 * chore(deps): update rust crate clap to v4.5.31 by @renovate in https://github.com/uutils/coreutils/pull/7353 * chore(deps): update rust crate zip to v2.2.3 by @renovate in https://github.com/uutils/coreutils/pull/7358 * chore(deps): update rust crate chrono to v0.4.40 by @renovate in https://github.com/uutils/coreutils/pull/7360 * chore(deps): update dawidd6/action-download-artifact action to v9 by @renovate in https://github.com/uutils/coreutils/pull/7367 * chore(deps): update rust crate blake3 to v1.6.1 by @renovate in https://github.com/uutils/coreutils/pull/7370 * fix(deps): update rust crate console to v0.15.11 by @renovate in https://github.com/uutils/coreutils/pull/7374 * chore(deps): update rust crate rand_core to v0.9.3 by @renovate in https://github.com/uutils/coreutils/pull/7373 * chore(deps): update rust crate rstest to 0.25.0 by @renovate in https://github.com/uutils/coreutils/pull/7377 * chore(deps): update rust crate thiserror to v2.0.12 by @renovate in https://github.com/uutils/coreutils/pull/7379 * fix(deps): update rust crate proc-macro2 to v1.0.94 by @renovate in https://github.com/uutils/coreutils/pull/7380 * fix(deps): update rust crate quote to v1.0.39 by @renovate in https://github.com/uutils/coreutils/pull/7381 * chore(deps): update rust crate textwrap to v0.16.2 by @renovate in https://github.com/uutils/coreutils/pull/7387 * chore(deps): update rust crate unindent to v0.2.4 by @renovate in https://github.com/uutils/coreutils/pull/7389 * chore(deps): update rust crate time to v0.3.38 by @renovate in https://github.com/uutils/coreutils/pull/7402 * chore(deps): update rust crate time to v0.3.39 by @renovate in https://github.com/uutils/coreutils/pull/7406 * chore(deps): update mozilla-actions/sccache-action action to v0.0.8 by @renovate in https://github.com/uutils/coreutils/pull/7415 * chore(deps): update rust crate xattr to v1.5.0 by @renovate in https://github.com/uutils/coreutils/pull/7409 * fix(deps): update rust crate tempfile to v3.18.0 by @renovate in https://github.com/uutils/coreutils/pull/7410 ## New Contributors * @ic3man5 made their first contribution in https://github.com/uutils/coreutils/pull/7188 * @rwdj made their first contribution in https://github.com/uutils/coreutils/pull/7303 * @alexsnaps made their first contribution in https://github.com/uutils/coreutils/pull/7323 * @blmaier made their first contribution in https://github.com/uutils/coreutils/pull/7321 * @Bluemangoo made their first contribution in https://github.com/uutils/coreutils/pull/7289 * @BigPapa314 made their first contribution in https://github.com/uutils/coreutils/pull/7347 * @drinkcat made their first contribution in https://github.com/uutils/coreutils/pull/7365 * @zcg00 made their first contribution in https://github.com/uutils/coreutils/pull/7266 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.0.29...0.0.30
### 📦 **Rust Coreutils 0.0.30 Release:** We are excited to announce the release of **Rust Coreutils 0.0.30**! --- ### Highlights: - **Improved Compatibility**: - This release focused on compatibility with the upstream GNU Coreutils 9.6 release. This is why the number of passing tests didn't change much - our effort was directed at adapting to the new upstream version rather than fixing existing test failures. - Passing GNU tests increased to **507** (+1 compared to 0.0.29). - **Contributions**: This release was made possible by the dedication of **32 contributors**, including **8 newcomers**. - We also announced at FOSDEM the extension of this project to cover other key Linux tools through our uutils initiative. This will extend the Rust rewrite effort to additional common Unix tools. See the presentation on [YouTube](https://www.youtube.com/watch?v=cXf31nFPo0U) ([slides](https://sylvestre.ledru.info/coreutils-fosdem-2025/)) or read the [LWN article](https://lwn.net/Articles/1007907/) for more details about our vision. --- ### GNU Test Suite Compatibility: Here's how version 0.0.30 compares to the previous release: | Result | 0.0.29 | 0.0.30 | Change 0.0.29 to 0.0.30 | % Total 0.0.29 | % Total 0.0.30 | % Change 0.0.29 to 0.0.30 | |---------------|--------|--------|-------------------------|----------------|----------------|--------------------------| | Pass | 506 | 507 | +1 | 82.38% | 82.17% | -0.21% | | Skip | 41 | 41 | 0 | 6.68% | 6.65% | -0.03% | | Fail | 67 | 69 | +2 | 10.92% | 11.18% | +0.26% | | Total | 614 | 617 | +3 (new tests) | | | | ---  --- ### Call to Action: Support our work by sponsoring us on GitHub! Your contributions directly help maintain our infrastructure and enable faster development. [Sponsor us here](https://github.com/sponsors/uutils). For more details and to download the latest release, visit our website: [https://uutils.github.io](https://uutils.github.io). ## What's Changed ### cat * error when output is input and appending by @jfinkels in https://github.com/uutils/coreutils/pull/7260 ### chgrp * add option --from by @sylvestre in https://github.com/uutils/coreutils/pull/7129 * gnu/tests/chgrp/from.sh is now fixed by @sylvestre in https://github.com/uutils/coreutils/pull/7205 ### cksum * Fix #6375 and un-ignore now passing tests by @RenjiSann in https://github.com/uutils/coreutils/pull/7261 * Update error and flags handling to improver GNU's match by @RenjiSann in https://github.com/uutils/coreutils/pull/7192 * add CRC32B algorithm added in GNU 9.6 by @RenjiSann in https://github.com/uutils/coreutils/pull/7169 * replace `is_some_and` with `is_none_or` by @cakebaker in https://github.com/uutils/coreutils/pull/7403 ### cp * disabled verbose output if file has been skipped by @BigPapa314 in https://github.com/uutils/coreutils/pull/7347 * fix verbose output order after prompt by @aimerlief in https://github.com/uutils/coreutils/pull/7287 ### csplit * don't panic on missing suppressed file by @jfinkels in https://github.com/uutils/coreutils/pull/7292 ### echo * use uucore::format::parse_escape_only() by @jfinkels in https://github.com/uutils/coreutils/pull/7316 ### expr * Add tests by @RenjiSann in https://github.com/uutils/coreutils/pull/7356 * Evaluate parenthesis content before checking for closing parenthesis by @RenjiSann in https://github.com/uutils/coreutils/pull/7332 * Fix assorted test errors in tests/expr/expr.pl by @sargas in https://github.com/uutils/coreutils/pull/6134 * Get rid of clap for performance reasons by @RenjiSann in https://github.com/uutils/coreutils/pull/7352 ### install * Document install-C test failure by @sylvestre in https://github.com/uutils/coreutils/pull/7223 ### head * ensure stdin input stream is correct on exit by @karlmcdowall in https://github.com/uutils/coreutils/pull/7253 * Fix bug printing large non-seekable files by @karlmcdowall in https://github.com/uutils/coreutils/pull/7294 * fix bug reading back through files by @karlmcdowall in https://github.com/uutils/coreutils/pull/7248 * improve error mgmt. by @sylvestre in https://github.com/uutils/coreutils/pull/7408 * Remove a head test from the list of failure by @sylvestre in https://github.com/uutils/coreutils/pull/7414 ### kill * don't allow lowercase signal names with '-' by @cakebaker in https://github.com/uutils/coreutils/pull/7206 * fix the fail to use only least significant bits to identify signal with -l by @Felle33 in https://github.com/uutils/coreutils/pull/7225 * list signal `0` with `-l` and `-t` by @cakebaker in https://github.com/uutils/coreutils/pull/7193 * test "-l <number>" & adapt error messages by @cakebaker in https://github.com/uutils/coreutils/pull/7213 ### ls * display %Z alphabetic time zone abbreviation by @jfinkels in https://github.com/uutils/coreutils/pull/7154 * Refactoring ls and date by @Felle33 in https://github.com/uutils/coreutils/pull/7194 * gnu patches: adapt `tests_ls_no_cap.patch` to GNU `coreutils 9.6` by @cakebaker in https://github.com/uutils/coreutils/pull/7163 ### mv * show prompt for `-u --interactive` by @cakebaker in https://github.com/uutils/coreutils/pull/7178 * Make mv command fallback to copy only if the src and dst are on different device by @hamflx in https://github.com/uutils/coreutils/pull/6040 ### numfmt * extract test from other test & expand it by @cakebaker in https://github.com/uutils/coreutils/pull/7155 * fix Unit::SI uses lowercase `k` suffix for kilos by @alexsnaps in https://github.com/uutils/coreutils/pull/7322 * fix from iec-i without suffix are bytes by @alexsnaps in https://github.com/uutils/coreutils/pull/7323 ### od * remove custom implementations of PartialEq and Eq by @alexs-sh in https://github.com/uutils/coreutils/pull/7211 ### printf * (partially) fix hex format: exponent is decimal, correctly print negative numbers by @drinkcat in https://github.com/uutils/coreutils/pull/7365 * Show warning message in case of excess arguments by @RenjiSann in https://github.com/uutils/coreutils/pull/7239 * error on missing hexadecial escape value by @jfinkels in https://github.com/uutils/coreutils/pull/7259 * negative asterisk param changes alignment by @RenjiSann in https://github.com/uutils/coreutils/pull/7246 * Re-enable integer overflow test case for printf by @jfinkels in https://github.com/uutils/coreutils/pull/7168 ### rm * add two passing tests for -i option by @jfinkels in https://github.com/uutils/coreutils/pull/7306 * correct prompt for removing inaccessible dir by @jfinkels in https://github.com/uutils/coreutils/pull/7325 * simplify remove_dir() helper function by @jfinkels in https://github.com/uutils/coreutils/pull/7308 * use recursive directory traversal with --recursive by @jfinkels in https://github.com/uutils/coreutils/pull/7304 ### seq * remove timeout from seq test cases by @jfinkels in https://github.com/uutils/coreutils/pull/7171 ### sort * errors on overflowing -k argument but shouldn't by @ic3man5 in https://github.com/uutils/coreutils/pull/7188 * needs support for human-readable block size suffixes R and Q by @ic3man5 in https://github.com/uutils/coreutils/pull/7198 * options -C and -c should be mutually exclusive but aren't by @ic3man5 in https://github.com/uutils/coreutils/pull/7191 * support percent arguments to -S option by @jfinkels in https://github.com/uutils/coreutils/pull/7181 ### split * avoid extremely long format width in test by @jfinkels in https://github.com/uutils/coreutils/pull/7301 ### tee * fix -p behavior upon broken pipe stdout by @RenjiSann in https://github.com/uutils/coreutils/pull/7273 * fix usage of deprecated function in tests by @cakebaker in https://github.com/uutils/coreutils/pull/7341 ### test * add < and > operators for string comparison by @jfinkels in https://github.com/uutils/coreutils/pull/7315 * remove `sleep` from tests by @cakebaker in https://github.com/uutils/coreutils/pull/7327 ### timeout * add support for `-f` and `-p` short options by @cakebaker in https://github.com/uutils/coreutils/pull/7200 ### touch * support obsolete POSIX timestamp argument by @jfinkels in https://github.com/uutils/coreutils/pull/7274 ### tr * Fix GNU behavior deviation by @RenjiSann in https://github.com/uutils/coreutils/pull/7320 ### uptime * refactor, move some codes to uucore by @Bluemangoo in https://github.com/uutils/coreutils/pull/7289 * remove duplicate test by @cakebaker in https://github.com/uutils/coreutils/pull/7265 ### yes * fix use of deprecated function in test by @cakebaker in https://github.com/uutils/coreutils/pull/7348 ### uucore * Add missing dependencies by @sylvestre in https://github.com/uutils/coreutils/pull/7157 * Fix proc_info compilation by @dezgeg in https://github.com/uutils/coreutils/pull/7385 * Sync proc_info methods from procps by @dezgeg in https://github.com/uutils/coreutils/pull/7351 * remove `lazy_static` and use `LazyLock` instead by @cakebaker in https://github.com/uutils/coreutils/pull/7404 * replace `PanicInfo` with `PanicHookInfo` by @cakebaker in https://github.com/uutils/coreutils/pull/7395 * uucore/docs.rs: generate the doc for all features by @sylvestre in https://github.com/uutils/coreutils/pull/7220 ### Documentation * Fix usage strings for #5692 by @rwdj in https://github.com/uutils/coreutils/pull/7303 * why-error.md: document more errors by @sylvestre in https://github.com/uutils/coreutils/pull/7224 ### Build & CI * add words to `spell-checker:ignore` in two files by @cakebaker in https://github.com/uutils/coreutils/pull/7300 * build: restore uutils in GNU test files by @jfinkels in https://github.com/uutils/coreutils/pull/7170 * try upstream 9.6 by @sylvestre in https://github.com/uutils/coreutils/pull/7149 * .github: CICD: add workspace test to build matrix by @drinkcat in https://github.com/uutils/coreutils/pull/7386 * GNUmakefile: fix install error "argument list too long" by @blmaier in https://github.com/uutils/coreutils/pull/7321 * GNUmakefile: support skipping manpages and completions by @blmaier in https://github.com/uutils/coreutils/pull/7331 * gnu patches: move to use quilt by @sylvestre in https://github.com/uutils/coreutils/pull/7127 * Decrease more sleep by @sylvestre in https://github.com/uutils/coreutils/pull/7244 * Fixed Bugs When Not Using Default Target Directory by @zcg00 in https://github.com/uutils/coreutils/pull/7266 * Use ubuntu-24.04-arm to build/test linux arm64 by @sylvestre in https://github.com/uutils/coreutils/pull/7153 * prepare version 0.0.30 by @sylvestre in https://github.com/uutils/coreutils/pull/7418 * Add fails_with_code() function by @RenjiSann in https://github.com/uutils/coreutils/pull/7369 * Decrease the various sleeps by @sylvestre in https://github.com/uutils/coreutils/pull/7232 * make `wait_with_output` private by @cakebaker in https://github.com/uutils/coreutils/pull/7350 * use the new function fails_with_code by @sylvestre in https://github.com/uutils/coreutils/pull/7371 * Use the new function 'fails_with_code' - followup by @sylvestre in https://github.com/uutils/coreutils/pull/7391 * GNU test: don't generate an error if a new test passes by @sylvestre in https://github.com/uutils/coreutils/pull/7349 * deny.toml: remove `syn` from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7139 * deny.toml: remove three crates from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7390 * deny.toml: add `rustix` & `linux-raw-sys` to skip list by @cakebaker in https://github.com/uutils/coreutils/pull/7416 * Nix/Nixos development by @RenjiSann in https://github.com/uutils/coreutils/pull/6947 * mount temp fs by @matrixhead in https://github.com/uutils/coreutils/pull/7249 * github action: do not fail the GNU test if only intermittent by @sylvestre in https://github.com/uutils/coreutils/pull/7283 * Remove some replacements of touch in build script by @jfinkels in https://github.com/uutils/coreutils/pull/7243 * add two tests to the list of intermittent tests by @sylvestre in https://github.com/uutils/coreutils/pull/7195 * fix util/remaining-gnu-error.py by @sylvestre in https://github.com/uutils/coreutils/pull/7204 ### fuzzing * fuzz: update dependencies by @cakebaker in https://github.com/uutils/coreutils/pull/7245 * fuzz: use new `<`/`>` operators in `fuzz_test.rs` by @cakebaker in https://github.com/uutils/coreutils/pull/7330 * Improve fuzzer logging by @RenjiSann in https://github.com/uutils/coreutils/pull/7281 ### Code quality * clippy: fix warnings from `unnecessary_map_or` lint by @cakebaker in https://github.com/uutils/coreutils/pull/7398 * clippy: fix/disable warnings introduced with Rust `1.85` by @cakebaker in https://github.com/uutils/coreutils/pull/7329 * Cargo.toml: fix incorrect lint name by @cakebaker in https://github.com/uutils/coreutils/pull/7267 * Remove `once_cell` dependency and use `LazyLock` by @cakebaker in https://github.com/uutils/coreutils/pull/7405 * Remove `rand_pcg` by @cakebaker in https://github.com/uutils/coreutils/pull/7233 * Style fixes from cargo +nightly clippy by @jfinkels in https://github.com/uutils/coreutils/pull/7339 * Move other programs to thiserror by @sylvestre in https://github.com/uutils/coreutils/pull/7207 * Move some programs to thiserror by @sylvestre in https://github.com/uutils/coreutils/pull/7175 * minor code quality improvements by @danieleades in https://github.com/uutils/coreutils/pull/7177 * remove redundant clippy MSRV config by @danieleades in https://github.com/uutils/coreutils/pull/7176 * mktemp,tr: replace `repeat().take()` with `repeat_n()` by @cakebaker in https://github.com/uutils/coreutils/pull/7400 ## Dependency Updates * Bump MSRV to 1.82.0 by @drinkcat in https://github.com/uutils/coreutils/pull/7394 * Bump `fts-sys` from `0.2.13` to `0.2.14` by @cakebaker in https://github.com/uutils/coreutils/pull/7279 * Bump `nom` and adapt `tr` to API changes by @cakebaker in https://github.com/uutils/coreutils/pull/7227 * Bump `rand` & `rand_core` to `0.9.0`, adapt code to API changes by @cakebaker in https://github.com/uutils/coreutils/pull/7242 * Bump `tempfile` & add two crates to the skip list in `deny.toml` by @cakebaker in https://github.com/uutils/coreutils/pull/7238 * fix(deps): update rust crate similar to v2.7.0 by @renovate in https://github.com/uutils/coreutils/pull/7164 * chore(deps): update rust crate parse_datetime to 0.7.0 by @renovate in https://github.com/uutils/coreutils/pull/7172 * chore(deps): update rust crate clap to v4.5.27 by @renovate in https://github.com/uutils/coreutils/pull/7189 * chore(deps): update dawidd6/action-download-artifact action to v8 by @renovate in https://github.com/uutils/coreutils/pull/7196 * chore(deps): update rust crate clap_complete to v4.5.43 by @renovate in https://github.com/uutils/coreutils/pull/7228 * chore(deps): update rust crate indicatif to v0.17.10 by @renovate in https://github.com/uutils/coreutils/pull/7234 * fix(deps): update rust crate libfuzzer-sys to v0.4.9 by @renovate in https://github.com/uutils/coreutils/pull/7236 * chore(deps): update rust crate indicatif to v0.17.11 by @renovate in https://github.com/uutils/coreutils/pull/7235 * chore(deps): update rust crate clap_complete to v4.5.44 by @renovate in https://github.com/uutils/coreutils/pull/7240 * fix(deps): update rust crate z85 to v3.0.6 by @renovate in https://github.com/uutils/coreutils/pull/7264 * chore(deps): update rust crate clap to v4.5.28 by @renovate in https://github.com/uutils/coreutils/pull/7263 * chore(deps): update rust crate blake2b_simd to v1.0.3 by @renovate in https://github.com/uutils/coreutils/pull/7268 * chore(deps): update rust crate selinux to 0.5.0 by @renovate in https://github.com/uutils/coreutils/pull/7278 * chore(deps): update rust crate once_cell to v1.20.3 by @renovate in https://github.com/uutils/coreutils/pull/7277 * fix(deps): update rust crate data-encoding-macro to v0.1.17 by @renovate in https://github.com/uutils/coreutils/pull/7290 * chore(deps): update rust crate clap to v4.5.29 by @renovate in https://github.com/uutils/coreutils/pull/7297 * chore(deps): update rust crate smallvec to v1.14.0 by @renovate in https://github.com/uutils/coreutils/pull/7302 * fix(deps): update rust crate tempfile to v3.17.0 by @renovate in https://github.com/uutils/coreutils/pull/7311 * chore(deps): update rust crate rand_core to v0.9.1 by @renovate in https://github.com/uutils/coreutils/pull/7310 * chore(deps): update rust crate parse_datetime to 0.8.0 by @renovate in https://github.com/uutils/coreutils/pull/7314 * fix(deps): update rust crate tempfile to v3.17.1 by @renovate in https://github.com/uutils/coreutils/pull/7313 * chore(deps): update rust crate clap to v4.5.30 by @renovate in https://github.com/uutils/coreutils/pull/7317 * chore(deps): update rust crate clap_complete to v4.5.45 by @renovate in https://github.com/uutils/coreutils/pull/7318 * chore(deps): update rust crate blake3 to v1.6.0 by @renovate in https://github.com/uutils/coreutils/pull/7319 * chore(deps): update rust crate serde to v1.0.218 by @renovate in https://github.com/uutils/coreutils/pull/7328 * fix(deps): update rust crate libc to v0.2.170 by @renovate in https://github.com/uutils/coreutils/pull/7346 * chore(deps): update rust crate rand_core to v0.9.2 by @renovate in https://github.com/uutils/coreutils/pull/7345 * chore(deps): update rust crate clap_complete to v4.5.46 by @renovate in https://github.com/uutils/coreutils/pull/7354 * chore(deps): update rust crate clap to v4.5.31 by @renovate in https://github.com/uutils/coreutils/pull/7353 * chore(deps): update rust crate zip to v2.2.3 by @renovate in https://github.com/uutils/coreutils/pull/7358 * chore(deps): update rust crate chrono to v0.4.40 by @renovate in https://github.com/uutils/coreutils/pull/7360 * chore(deps): update dawidd6/action-download-artifact action to v9 by @renovate in https://github.com/uutils/coreutils/pull/7367 * chore(deps): update rust crate blake3 to v1.6.1 by @renovate in https://github.com/uutils/coreutils/pull/7370 * fix(deps): update rust crate console to v0.15.11 by @renovate in https://github.com/uutils/coreutils/pull/7374 * chore(deps): update rust crate rand_core to v0.9.3 by @renovate in https://github.com/uutils/coreutils/pull/7373 * chore(deps): update rust crate rstest to 0.25.0 by @renovate in https://github.com/uutils/coreutils/pull/7377 * chore(deps): update rust crate thiserror to v2.0.12 by @renovate in https://github.com/uutils/coreutils/pull/7379 * fix(deps): update rust crate proc-macro2 to v1.0.94 by @renovate in https://github.com/uutils/coreutils/pull/7380 * fix(deps): update rust crate quote to v1.0.39 by @renovate in https://github.com/uutils/coreutils/pull/7381 * chore(deps): update rust crate textwrap to v0.16.2 by @renovate in https://github.com/uutils/coreutils/pull/7387 * chore(deps): update rust crate unindent to v0.2.4 by @renovate in https://github.com/uutils/coreutils/pull/7389 * chore(deps): update rust crate time to v0.3.38 by @renovate in https://github.com/uutils/coreutils/pull/7402 * chore(deps): update rust crate time to v0.3.39 by @renovate in https://github.com/uutils/coreutils/pull/7406 * chore(deps): update mozilla-actions/sccache-action action to v0.0.8 by @renovate in https://github.com/uutils/coreutils/pull/7415 * chore(deps): update rust crate xattr to v1.5.0 by @renovate in https://github.com/uutils/coreutils/pull/7409 * fix(deps): update rust crate tempfile to v3.18.0 by @renovate in https://github.com/uutils/coreutils/pull/7410 ## New Contributors * @ic3man5 made their first contribution in https://github.com/uutils/coreutils/pull/7188 * @rwdj made their first contribution in https://github.com/uutils/coreutils/pull/7303 * @alexsnaps made their first contribution in https://github.com/uutils/coreutils/pull/7323 * @blmaier made their first contribution in https://github.com/uutils/coreutils/pull/7321 * @Bluemangoo made their first contribution in https://github.com/uutils/coreutils/pull/7289 * @BigPapa314 made their first contribution in https://github.com/uutils/coreutils/pull/7347 * @drinkcat made their first contribution in https://github.com/uutils/coreutils/pull/7365 * @zcg00 made their first contribution in https://github.com/uutils/coreutils/pull/7266 **Full Changelog**: https://github.com/uutils/coreutils/compare/0.0.29...0.0.30