|
| 1 | +### 📦 **Rust Coreutils 0.4.0 Release:** |
| 2 | + |
| 3 | +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**! |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +### Highlights: |
| 8 | + |
| 9 | +- **Enhanced GNU Compatibility** |
| 10 | + - **544 passing tests** (+12 from 0.3.0), achieving **85.80%** compatibility |
| 11 | + - Reduced failures from 68 to 56 (-12) |
| 12 | + - Major improvements to `cksum` with SHA2/SHA3 support and CRC32B fix |
| 13 | + - Better compatibility with GNU `date` timezone handling |
| 14 | + |
| 15 | +- **Algorithm & Performance Improvements** |
| 16 | + - `factor`: Integrated num_prime crate for 15x faster u64/u128 factorization |
| 17 | + - `tsort`: Fixed stack overflow issues with iterative DFS implementation |
| 18 | + - `cksum`: Added comprehensive performance benchmarks |
| 19 | + - `mkdir`: Fixed stack overflow with deeply nested directories |
| 20 | + |
| 21 | +- **Platform Support Enhancements** |
| 22 | + - OpenBSD support for `stdbuf` and `uptime` |
| 23 | + - FreeBSD build and test improvements |
| 24 | + - Better cross-platform compatibility |
| 25 | + |
| 26 | +- **hashsum Reorganization** |
| 27 | + - Removed non-GNU binaries to fix interface divergence |
| 28 | + - Merged functionality into `cksum` for better GNU compatibility |
| 29 | + - Marked hashsum as deprecated in favor of cksum |
| 30 | + |
| 31 | +- **Contributions**: This release was made possible by **4 new contributors** joining our community |
| 32 | + |
| 33 | +--- |
| 34 | + |
| 35 | +### GNU Test Suite Compatibility: |
| 36 | + |
| 37 | +| 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 | |
| 38 | +|---------------|-------|-------|------------------------|---------------|---------------|--------------------------| |
| 39 | +| Pass | 532 | 544 | +12 | 83.91% | 85.80% | +1.89% | |
| 40 | +| Skip | 33 | 33 | 0 | 5.20% | 5.21% | +0.01% | |
| 41 | +| Fail | 68 | 56 | -12 | 10.73% | 8.83% | -1.90% | |
| 42 | +| Error | 1 | 1 | 0 | 0.16% | 0.16% | 0% | |
| 43 | +| Total | 634 | 634 | 0 | | | | |
| 44 | + |
| 45 | +--- |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | +--- |
| 50 | + |
| 51 | +### Call to Action: |
| 52 | + |
| 53 | +🌍 **Help us translate** - Contribute translations at [Weblate](https://hosted.weblate.org/projects/rust-coreutils/) |
| 54 | +🚀 **Sponsor us on GitHub** to accelerate development: [github.com/sponsors/uutils](https://github.com/sponsors/uutils) |
| 55 | +🔗 Download the latest release: [https://uutils.github.io](https://uutils.github.io) |
| 56 | + |
| 57 | +## What's Changed |
| 58 | + |
| 59 | +## base64 |
| 60 | +* Align base64 with GNU base64.pl tests by @karanabe in https://github.com/uutils/coreutils/pull/9194 |
| 61 | + |
| 62 | +## cat |
| 63 | +* Fix EINTR handling in cat by @naoNao89 in https://github.com/uutils/coreutils/pull/8946 |
| 64 | +* fix(cat): refine unsafe overwrite detection for appending files by @mattsu2020 in https://github.com/uutils/coreutils/pull/9122 |
| 65 | + |
| 66 | +## chown |
| 67 | +* Fix chown tests for FreeBSD and macOS by @akretz in https://github.com/uutils/coreutils/pull/9058 |
| 68 | + |
| 69 | +## cksum |
| 70 | +* Refactor cksum for incoming merge with hashsum, Fix behavior for `--text` and `--untagged` by @RenjiSann in https://github.com/uutils/coreutils/pull/9024 |
| 71 | +* Fix "cksum: --length 0 shouldn't fail for algorithms that don't support --length" by @RenjiSann in https://github.com/uutils/coreutils/pull/9032 |
| 72 | +* Add support for sha2, sha3 by @RenjiSann in https://github.com/uutils/coreutils/pull/9035 |
| 73 | +* Fix GNU `cksum-c.sh` and `cksum-sha3.sh` by @RenjiSann in https://github.com/uutils/coreutils/pull/9063 |
| 74 | +* add cksum performance benchmarks by @naoNao89 in https://github.com/uutils/coreutils/pull/9075 |
| 75 | +* fix(cksum): correct CRC32B implementation to match GNU cksum by @naoNao89 in https://github.com/uutils/coreutils/pull/9026 |
| 76 | + |
| 77 | +## comm |
| 78 | +* Fix EINTR handling in comm by @naoNao89 in https://github.com/uutils/coreutils/pull/8946 |
| 79 | +* hold the stdin lock for the whole duration of the program by @andreacorbellini in https://github.com/uutils/coreutils/pull/9085 |
| 80 | + |
| 81 | +## date |
| 82 | +* fix(date): support timezone abbreviations in date --set by @naoNao89 in https://github.com/uutils/coreutils/pull/8944 |
| 83 | +* date, touch: fix parse_datetime 0.13.0 compatibility by @naoNao89 in https://github.com/uutils/coreutils/pull/8843 |
| 84 | +* improve compat with GNU by @sylvestre in https://github.com/uutils/coreutils/pull/9022 |
| 85 | +* remove `chrono` by @cakebaker in https://github.com/uutils/coreutils/pull/9048 |
| 86 | +* add --uct alias and allow multiple option aliases together by @sylvestre in https://github.com/uutils/coreutils/pull/9181 |
| 87 | + |
| 88 | +## dd |
| 89 | +* fix(dd): handle O_DIRECT partial block writes by @naoNao89 in https://github.com/uutils/coreutils/pull/9016 |
| 90 | + |
| 91 | +## du |
| 92 | +* fix dead code warnings in test on Android by @cakebaker in https://github.com/uutils/coreutils/pull/9131 |
| 93 | +* disable some benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/9167 |
| 94 | +* also disable du_human_balanced_tree as benchmark by @sylvestre in https://github.com/uutils/coreutils/pull/9198 |
| 95 | + |
| 96 | +## factor |
| 97 | +* base benchmarking for single/multiple u64, u128, and >u128 by @asder8215 in https://github.com/uutils/coreutils/pull/9182 |
| 98 | +* 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 |
| 99 | + |
| 100 | +## hashsum |
| 101 | +* don't fail on dirs by @Ada-Armstrong in https://github.com/uutils/coreutils/pull/8930 |
| 102 | +* Remove non-GNU binaries (fix cksum interface divergence) by @oech3 in https://github.com/uutils/coreutils/pull/9153 |
| 103 | + |
| 104 | +## install |
| 105 | +* fix the error message by @sylvestre in https://github.com/uutils/coreutils/pull/9188 |
| 106 | + |
| 107 | +## ls |
| 108 | +* use file path for ACL check by @akretz in https://github.com/uutils/coreutils/pull/9055 |
| 109 | + |
| 110 | +## mkdir |
| 111 | +* Fix stack overflow with deeply nested directories by @naoNao89 in https://github.com/uutils/coreutils/pull/8947 |
| 112 | +* remove `#[allow(unused_variables)]` by @cakebaker in https://github.com/uutils/coreutils/pull/9109 |
| 113 | + |
| 114 | +## od |
| 115 | +* Fix EINTR handling in od by @naoNao89 in https://github.com/uutils/coreutils/pull/8946 |
| 116 | + |
| 117 | +## printenv |
| 118 | +* add more tests by @ya7on in https://github.com/uutils/coreutils/pull/9151 |
| 119 | + |
| 120 | +## printf |
| 121 | +* handle extremely large format widths gracefully to fix GNU test panic by @sylvestre in https://github.com/uutils/coreutils/pull/9133 |
| 122 | + |
| 123 | +## readlink |
| 124 | +* fix(readlink): emit GNU-style Invalid argument for non-symlinks by @karanabe in https://github.com/uutils/coreutils/pull/9189 |
| 125 | + |
| 126 | +## stdbuf |
| 127 | +* add support for OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9185 |
| 128 | + |
| 129 | +## timeout |
| 130 | +* add missing extra help by @matttbe in https://github.com/uutils/coreutils/pull/9160 |
| 131 | + |
| 132 | +## truncate |
| 133 | +* feat(truncate): allow negative size values for truncation by @mattsu2020 in https://github.com/uutils/coreutils/pull/9129 |
| 134 | + |
| 135 | +## tsort |
| 136 | +* use iterative dfs to prevent stack overflows by @Nekrolm in https://github.com/uutils/coreutils/pull/8737 |
| 137 | +* fix minimal cycle reporting and precise back-edge removal by @naoNao89 in https://github.com/uutils/coreutils/pull/8786 |
| 138 | + |
| 139 | +## uptime |
| 140 | +* Fix build and tests for uptime on OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9158 |
| 141 | +* fix clippy warning manual-let-else on OpenBSD by @lcheylus in https://github.com/uutils/coreutils/pull/9193 |
| 142 | + |
| 143 | +## uudoc |
| 144 | +* respect SKIP_UTILS by @oech3 in https://github.com/uutils/coreutils/pull/8982 |
| 145 | +* Add example to manpage by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/7841 |
| 146 | + |
| 147 | +## Documentation |
| 148 | +* release notes: add 0.2.2 by @sylvestre in https://github.com/uutils/coreutils/pull/8998 |
| 149 | +* README: Fix coverage badge URL by @RenjiSann in https://github.com/uutils/coreutils/pull/9046 |
| 150 | +* README.md: Fix about manpage generation by @oech3 in https://github.com/uutils/coreutils/pull/8994 |
| 151 | +* README.md: Show how to build all individual bins by cargo by @oech3 in https://github.com/uutils/coreutils/pull/9069 |
| 152 | +* extensions.md: mark hashsum as deprecated by @oech3 in https://github.com/uutils/coreutils/pull/9089 |
| 153 | +* doc: rename file by @sylvestre in https://github.com/uutils/coreutils/pull/9208 |
| 154 | + |
| 155 | +## CI & Build |
| 156 | +* chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/uutils/coreutils/pull/8997 |
| 157 | +* publish script: add progress by @sylvestre in https://github.com/uutils/coreutils/pull/9008 |
| 158 | +* GNUmakefile: Add a value for cross-build by @oech3 in https://github.com/uutils/coreutils/pull/9015 |
| 159 | +* GNUmakefile: Don't install part of hashsum if we excluded hashsum by @oech3 in https://github.com/uutils/coreutils/pull/9036 |
| 160 | +* ci: remove `code_format` job from `FixPR` workflow by @cakebaker in https://github.com/uutils/coreutils/pull/9043 |
| 161 | +* Append .bash to completions by @oech3 in https://github.com/uutils/coreutils/pull/9049 |
| 162 | +* ci: remove deprecated `lima-actions/ssh` by @cakebaker in https://github.com/uutils/coreutils/pull/9054 |
| 163 | +* GNUmakefile: Do not use install -v by @oech3 in https://github.com/uutils/coreutils/pull/9051 |
| 164 | +* GNUmakefile: Reduce deps & minor cleanup by @oech3 in https://github.com/uutils/coreutils/pull/9065 |
| 165 | +* CICD.yml: stop ci for redox by @oech3 in https://github.com/uutils/coreutils/pull/9112 |
| 166 | +* ci: adapt template name for Lima v2.0 by @cakebaker in https://github.com/uutils/coreutils/pull/9159 |
| 167 | +* FreeBSD workflow: disable stats report for sccache action by @lcheylus in https://github.com/uutils/coreutils/pull/9156 |
| 168 | +* Fix test job in FreeBSD workflow by @lcheylus in https://github.com/uutils/coreutils/pull/9155 |
| 169 | +* GNUmakefile: Better comment for cross build by @oech3 in https://github.com/uutils/coreutils/pull/9186 |
| 170 | +* GNUmakefile: fix LOCALES=n by @oech3 in https://github.com/uutils/coreutils/pull/9034 |
| 171 | +* Fix tests on OpenBSD for unix feature by @lcheylus in https://github.com/uutils/coreutils/pull/9200 |
| 172 | + |
| 173 | +## Code Quality & Cleanup |
| 174 | +* fix: make visible alias by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/9041 |
| 175 | +* fix: show ignored args by @Its-Just-Nans in https://github.com/uutils/coreutils/pull/9040 |
| 176 | +* rustdoc: fix broken intra doc links by @cakebaker in https://github.com/uutils/coreutils/pull/9097 |
| 177 | +* clippy: re-enable `unnecessary_semicolon` lint by @cakebaker in https://github.com/uutils/coreutils/pull/9143 |
| 178 | +* Remove `test_keys2` binary by @cakebaker in https://github.com/uutils/coreutils/pull/9183 |
| 179 | +* Typo by @sylvestre in https://github.com/uutils/coreutils/pull/9197 |
| 180 | + |
| 181 | +## Performance & Benchmarking |
| 182 | +* bench: remove 'sort_random_strings' by @sylvestre in https://github.com/uutils/coreutils/pull/9030 |
| 183 | +* bench: tsort_input_parsing_heavy reduce the input side by @sylvestre in https://github.com/uutils/coreutils/pull/9067 |
| 184 | +* Fix base64 benchmarks by @akretz in https://github.com/uutils/coreutils/pull/9082 |
| 185 | +* Revert "Fix base64 benchmarks" by @sylvestre in https://github.com/uutils/coreutils/pull/9139 |
| 186 | +* Disable variance-heavy benchmark tests by @sylvestre in https://github.com/uutils/coreutils/pull/9201 |
| 187 | + |
| 188 | +## Version Management |
| 189 | +* prepare version 0.4.0 by @sylvestre in https://github.com/uutils/coreutils/pull/9205 |
| 190 | + |
| 191 | +## Dependency Updates |
| 192 | +* be prescriptive on the codspeed-divan-compat version by @sylvestre in https://github.com/uutils/coreutils/pull/9007 |
| 193 | +* Bump `linux-raw-sys` from `0.11` to `0.12` by @cakebaker in https://github.com/uutils/coreutils/pull/9019 |
| 194 | +* chore(deps): update rust crate bstr to v1.12.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9038 |
| 195 | +* chore(deps): update rust crate indicatif to v0.18.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9053 |
| 196 | +* chore(deps): update rust crate hex-literal to v1.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9077 |
| 197 | +* chore(deps): update rust crate clap to v4.5.51 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9079 |
| 198 | +* chore(deps): update rust crate clap_complete to v4.5.60 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9087 |
| 199 | +* chore(deps): update rust crate crc-fast to v1.6.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9095 |
| 200 | +* chore(deps): update vmactions/freebsd-vm action to v1.2.5 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9121 |
| 201 | +* chore(deps): update rust crate ctor to v0.6.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9130 |
| 202 | +* chore(deps): update rust crate quote to v1.0.42 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9165 |
| 203 | +* chore(deps): update reactivecircus/android-emulator-runner action to v2.35.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9169 |
| 204 | +* chore(deps): update rust crate jiff to v0.2.16 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9175 |
| 205 | +* chore(deps): update rust crate divan to v4.1.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9179 |
| 206 | +* chore(deps): update rust crate crc-fast to v1.7.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9180 |
| 207 | +* chore(deps): update vmactions/freebsd-vm action to v1.2.6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9192 |
| 208 | +* chore(deps): update rust crate parse_datetime to v0.13.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9207 |
| 209 | + |
| 210 | +## New Contributors |
| 211 | +* @akretz made their first contribution in https://github.com/uutils/coreutils/pull/9058 |
| 212 | +* @andreacorbellini made their first contribution in https://github.com/uutils/coreutils/pull/9085 |
| 213 | +* @ya7on made their first contribution in https://github.com/uutils/coreutils/pull/9151 |
| 214 | +* @matttbe made their first contribution in https://github.com/uutils/coreutils/pull/9160 |
| 215 | + |
| 216 | +**Full Changelog**: https://github.com/uutils/coreutils/compare/0.3.0...0.4.0 |
0 commit comments