Rust Coreutils 0.5.0 发布:与 GNU Coreutils 兼容性达 87.75%
Rust Coreutils 0.5.0 Release: 87.75% compatibility with GNU Coreutils

原始链接: https://github.com/uutils/coreutils/releases/tag/0.5.0

## Rust Coreutils 0.5.0 版本总结 Rust Coreutils 0.5.0 版本发布,标志着在完全 GNU 兼容性和平台支持方面取得了显著进展。兼容性已提高至 **87.75%**,通过 **566 个测试**——比上一版本增加了 22 个。失败和跳过的测试都已减少。GNU 参考库已更新至 9.9 版本,新增 11 个测试。 主要改进包括增强的 Unicode 和文本处理(尤其是在 `fold` 和 `ptx` 中),`cksum` 和 `hashsum` 合并后的统一校验和功能,以及多个实用程序中的性能优化。 平台支持已扩展,增加了 OpenBSD 到 CI 管道中,重新启用了 Redox OS 支持,并改进了 Cygwin 兼容性。开发者体验通过新的测试工具、全面的基准测试和减少依赖膨胀得到增强。 本次发布有 **6 位新开发者**贡献,并包含对许多核心工具的众多错误修复和改进。请在 [https://uutils.github.io](https://uutils.github.io) 下载最新版本,并在 Weblate 贡献翻译。

相关文章

原文

📦 Rust Coreutils 0.5.0 Release:

We are excited to announce the release of Rust Coreutils 0.5.0 — a significant milestone featuring comprehensive platform improvements, and robust testing infrastructure with continued progress toward full GNU compatibility!


Highlights:

  • Improved GNU Compatibility

    • 566 passing tests (+22 from 0.4.0), achieving 87.75% compatibility
    • Reduced failures from 56 to 55 (-1) and skipped tests from 33 to 23 (-10)
    • Updated GNU reference from 9.8 to 9.9, adding 11 new tests
    • Major improvements to fold, cksum, install, and numfmt
  • Unicode & Text Processing Enhancements

    • fold: Added combining character support for proper Unicode text wrapping
    • ptx: Implemented GNU mode with dumb terminal format
    • Enhanced text processing across multiple utilities
  • Security & Performance Improvements

    • cksum: Merged with hashsum for unified checksum functionality
    • install: Enhanced mode parsing with comma-separated support and umask handling
    • seq: Improved large integer handling with dedicated benchmarks
    • Various memory and performance optimizations across utilities
  • Platform Support Expansion

    • Added OpenBSD to CI pipeline with comprehensive testing
    • Re-enabled Redox OS support in CI
    • Enhanced Cygwin support in uucore
    • Improved build processes across platforms
  • Developer Experience Improvements

    • New TTY helper for enhanced testing capabilities
    • Comprehensive benchmarking additions for multiple utilities
    • Reduced dependency bloat through feature splitting
    • Enhanced hardware detection module
  • Contributions: This release was made possible by 6 new contributors joining our community


GNU Test Suite Compatibility:

Result 0.4.0 0.5.0 Change 0.4.0 to 0.5.0 % Total 0.4.0 % Total 0.5.0 % Change 0.4.0 to 0.5.0
Pass 544 566 +22 85.80% 87.75% +1.95%
Skip 33 23 -10 5.21% 3.57% -1.64%
Fail 56 55 -1 8.83% 8.53% -0.30%
Error 1 1 0 0.16% 0.16% 0%
Total 634 645 +11 (new tests)

GNU testsuite evolution


Call to Action:

🌍 Help us translate - Contribute translations at Weblate
🚀 Sponsor us on GitHub to accelerate development: github.com/sponsors/uutils
🔗 Download the latest release: https://uutils.github.io

What's Changed

basenc

  • basenc: Fix basenc.pl GNU-compat tests pass by @karanabe in #9203
  • fix(Basenc):fix GNU coreutils test bounded-memory.sh by @mattsu2020 in #9536
  • base32, base64, baseenc:Simplifying the base encoding uu_app and adding basic buffer tests by @ChrisDryden in #9409

chmod

cksum

cp

du

env

fold

hashsum

install

  • install: ignore umask by @akretz in #9254
  • Enhance mode parsing to support comma-separated mode strings in install command by @Vesal-J in #9298
  • install: do not call chown when called as root by @Ecordonnier in #9477

ln

  • ln: add error handling for hard link creation on directories by @FidelSch in #9342

ls

mkfifo

  • tests/mkfifo: added a test to check mkfifo permission denied error for code coverage by @asder8215 in #9586

nl

nohup

numfmt

  • numfmt: support quetta/ronna suffixes and fix error messages by @naoNao89 in #9280

od

pr

  • pr: fix header formatting for custom date formats starting with '+' by @sylvestre in #9252

ptx

readlink

seq

shuf

sort

  • sort: make compression program failures non-fatal, warn and fallback to plain files by @sylvestre in #9266

stdbuf

  • Remove unsafe unwrap() calls in stdbuf error handling by @naoNao89 in #9429

stty

tail

  • tail: batch inotify events to prevent redundant headers after SIGSTOP/SIGCONT by @sylvestre in #9574
  • tail: fix intermittent overlay-headers test by batching inotify events by @sylvestre in #9598

tee

  • tee: fix poll timeout causing intermittent hangs with -p flag by @sylvestre in #9585

timeout

dd

uucore

uudoc

  • uudoc: fix manpage for individual utilities has wrong name (nit) by @shayelkin in #9152

CI & Build

  • CICD.yml: split PROFILE= from CARGOFLAGS by @oech3 in #9219
  • GNUmakefile: use PROFILE_CMD at make test by @oech3 in #9214
  • GNUmakefile: generalize logic for SELINUX_PROGS for many platforms by @oech3 in #9221
  • build-gnu.sh: Let SELinux optional to use it locally without libselinux by @oech3 in #9220
  • freebsd.yml: remove not working PROFILE= by @oech3 in #9225
  • GNUmakefile: Remove check for LIBSELINUX_ENABLED by @oech3 in #9228
  • Update redoxer and reenable Redox OS in CI by @jackpot51 in #9233
  • GNUmakefile: drop not used use_default:=1 by @oech3 in #9231
  • ci: Mark runcon-no-reorder as SELinux required by @oech3 in #9234
  • github action: add openbsd in the ci by @sylvestre in #9196
  • openbsd.yml: Remove not working PROFILE= by @oech3 in #9238
  • OpenBSD CI: increase max open files for test job by @lcheylus in #9242
  • build-gnu.sh: Remove || true by @oech3 in #9256
  • Enable test test_hostname_ip on OpenBSD by @lcheylus in #9257
  • build-gnu.sh: Use system tools by @oech3 in #9251
  • ci: remove commented out line from freebsd.yml by @cakebaker in #9239
  • GnuTests.yml: reduce deps by @oech3 in #9259
  • Update CICD.yml: Stop releasing duplicated binary by @oech3 in #9269
  • Avoid mixing wget and curl by @oech3 in #9258
  • CICD.yml: Remove if for .exe by @oech3 in #9271
  • GNUmakefile: Use any profile from make install by @oech3 in #8730
  • build-gnu.sh: Freeze SELinux build mode by @oech3 in #9270
  • CICD.yml: Avoid no space left by @oech3 in #9277
  • GNUmakefile: Add missing PROFILE_CMD by @oech3 in #9293
  • Cargo.toml: move panic=abort to release profile for binary size by @oech3 in #9240
  • Fix build failure without libselinux by @oech3 in #9290
  • Revert a patch for runcon-no-reorder (superseded) by @oech3 in #9291
  • build-gnu.sh: fix the error on line 110 by @sylvestre in #9297
  • build-gnu.sh: adjust the PATH for each run by @sylvestre in #9319
  • build-gnu.sh: Use any profile & cleanup vars by @oech3 in #9321
  • GnuTests.yml: Check that build-gnu.sh works without libselinux by @oech3 in #9299
  • android.yml: Reduce RAM (#9278) by @oech3 in #9436
  • l10n.yml:Don't apt-get build-essential by @oech3 in #9472
  • l10n.yml: Use PROFILE=release-small for faster CI by @oech3 in #9473
  • l10n.yml: Do not brew make (support Xcode make) by @oech3 in #9474
  • Update Dockerfile: Don't apt-get jq (preinstalled) by @oech3 in #9481
  • build-gnu.sh: Remove 2 not working sed hacks for tr by @oech3 in #9476
  • build-gnu.sh: Reduce time to build GNU coreutils by @oech3 in #9475
  • CICD.yml: Stop publishing conflicting artifacts by @oech3 in #9491
  • CICD.yml: Removed unused code for i586 by @oech3 in #9497
  • build-gnu.sh: Remove hfs dep from hardlink-case.sh by @oech3 in #9482
  • CICD.yml: Dedup a mkdir by @oech3 in #9504
  • CICD.yml: Drop a workaround for old package by @oech3 in #9505
  • Remove wget dep by @oech3 in #9522
  • Remove Makefile.toml by @oech3 in #9568
  • build-gnu.sh: Remove 2 non-GNU binary by @oech3 in #9583
  • validation.rs: Remove non GNU hashsum aliases by @oech3 in #9589
  • build-gnu.sh: Enable misc/coreutils.sh by @oech3 in #9572
  • GHA-delete-GNU-workflow-logs.sh: Add fallback to jaq by @oech3 in #9581
  • benchmarks.yml: Stop unnecessary apt-get by @oech3 in #9608
  • Do not apt-get preinstalled tools to avoid delaying CI by @oech3 in #9466
  • build-gnu.sh: use GNU sed much more for macOS by @oech3 in #9467
  • ci: add locales for GNU tests by @cakebaker in #9052

Documentation

  • README.md: profiles for binary size by @oech3 in #9268
  • installation.md: Fix wrong reference for AUR by @oech3 in #9447
  • README.md: note that separator is needed for PROG_PREFIX by @oech3 in #9444
  • installation.md: Ref MSYS2 package by @oech3 in #9456
  • installation.md: Add MSYS2 Cygwin package by @oech3 in #9566
  • why-skip.md: Remove an OOD doc by @oech3 in #9506
  • why-skip.md: Remove a passing test by @oech3 in #9507
  • why-skip.md: Remove 4 sparse-* by @oech3 in #9508
  • why-skip.md: Remove 3 tests by @oech3 in #9509
  • why-error.md: Cleanup by @oech3 in #9510
  • why-error.md: Cleanup and documenting by @oech3 in #9512
  • why-skip.md: Remove 1 passing root test by @oech3 in #9528
  • why-skip.md: Let spell-checker:ignore a comment by @oech3 in #9540
  • why-{skip,error}.md: Cleanup by @oech3 in #9602
  • why-{skip,error}.md: Remove stty tests and shared strings by @oech3 in #9626
  • lib.rs: Remove non GNU hashsum aliases by @oech3 in #9642
  • util.rs: Update obsolete comments by @oech3 in #9643

Code Quality & Cleanup

Performance & Benchmarking

  • benches: Migrate factor benchmarks from Criterion to Divan by @naoNao89 in #9247
  • Add functionality to show when tests were previously skipped and now failing accurately by @ChrisDryden in #9521

Version Management

Dependency Updates

  • chore(deps): update rust crate crc-fast to v1.7.1 by @renovate[bot] in #9224
  • chore(deps): update rust crate indicatif to v0.18.3 by @renovate[bot] in #9226
  • chore(deps): update rust crate crc-fast to v1.8.0 by @renovate[bot] in #9282
  • Update vmactions/freebsd-vm action to v1.2.7 by @renovate[bot] in #9304
  • chore(deps): update rust crate clap to v4.5.52 by @renovate[bot] in #9316
  • chore(deps): update rust crate clap_complete to v4.5.61 by @renovate[bot] in #9343
  • chore(deps): update rust crate clap to v4.5.53 by @renovate[bot] in #9340
  • GNUmakefile: Use libstdbuf.* instead of libstdbuf* by @oech3 in #9345
  • chore(deps): update actions/checkout action to v6 by @renovate[bot] in #9416
  • chore(deps): update rust crate parse_datetime to v0.13.3 by @renovate[bot] in #9434
  • chore(deps): update rust crate hostname to v0.4.2 by @renovate[bot] in #9515
  • Bump iana-time-zone and windows-core by @cakebaker in #9519
  • chore(deps): update vmactions/freebsd-vm action to v1.2.8 by @renovate[bot] in #9524
  • chore(deps): update rust crate ctor to v0.6.2 by @renovate[bot] in #9544
  • chore(deps): update rust crate ctor to v0.6.3 by @renovate[bot] in #9562
  • chore(deps): update vmactions/freebsd-vm action to v1.2.9 by @renovate[bot] in #9593
  • chore(deps): update davidanson/markdownlint-cli2-action action to v22 by @renovate[bot] in #9610
  • chore(deps): update actions/cache action to v5 by @renovate[bot] in #9639
  • chore(deps): update rust crate crc-fast to v1.8.1 by @renovate[bot] in #9647
  • chore(deps): update github artifact actions (major) by @renovate[bot] in #9645
  • Bump icu crates from 2.0.0 to 2.1.1 by @cakebaker in #9073

New Contributors

Full Changelog: 0.4.0...0.5.0

联系我们 contact @ memedata.com