docs/src/release-notes/0.7.0.md
We are excited to announce the release of Rust Coreutils 0.7.0 — a performance-focused release with major optimizations across dozens of utilities, continued safety improvements replacing unsafe code with safe abstractions, and a comprehensive campaign to eliminate panics on write errors. We also contributed many patches upstream to GNU coreutils, and welcomed their feedbacks and supports, strengthening both projects!
| Result | 0.6.0 | 0.7.0 | Change 0.6.0 to 0.7.0 | % Total 0.6.0 | % Total 0.7.0 | % Change 0.6.0 to 0.7.0 |
|---|---|---|---|---|---|---|
| Pass | 622 | 629 | +7 | 96.28% | 94.59% | -1.69% |
| Skip | 7 | 13 | +6 | 1.08% | 1.95% | +0.87% |
| Fail | 16 | 23 | +7 | 2.48% | 3.46% | +0.98% |
| Error | 1 | 0 | -1 | 0.15% | 0% | -0.15% |
| Total | 646 | 665 | +19 (new tests) |
Note: The GNU test reference was updated from 9.9 to 9.10, adding 19 new tests. While the pass percentage decreased due to these newly added tests, the absolute number of passing tests increased by 7 and errors were eliminated entirely. Work is ongoing to address the new test failures.
GNU Compatibility & Upstream Contributions
date, fmt, kill, ptx, numfmt, cksum, and morenum-prime, the primality testing library used by factorPerformance Overhaul
rustc-hash in ls, du, tsort, shuf, mv; foldhash in sortunexpand/expand: ASCII fast-path, buffered reads — 14%+ gain in unexpandshuf, split, sort, du: Reduced malloc allocations (+3–6% in du, +4% in shuf)nl: Optimized with itoa and direct writingtrue/false: Removed clap dependency, smaller binary, faster startupuucore: Disabled signal setup in simple utilities for binary size and startup speedRobustness: Eliminated /dev/full Panics
/dev/full across 20+ utilities (echo, date, sort, expr, hostname, id, comm, pr, dircolors, and more)2>/dev/full do not abortSafety & Code Quality
libc calls with safe nix crate wrappers in uucore (umask, mkdirat, and more) and mknodln, tac, and install -Drm: --preserve-root now works correctly on symlinksNotable Bug Fixes
date: Extensive fixes — -u/-s/-d flags, timezone abbreviation lookup and DST, RFC-822 format, %+/%_ modifiers, --debug, locale date_fmtcp: Readonly directories, -a/-z flags, special files, non-UTF-8 directory namesmv: Preserve symlinks during cross-device moves, handle FIFOs in directoriesls: Hyperlink OSC 8 format, dired reports, fd leak on deep recursion, invalid UTF-8 hidden filessort: Collator panic in worker threads, scientific notation parsingpaste: Multi-byte delimiters, GNU escape sequences, bounded bufferingprintf: %q shell quoting with control chars and quotesptx: -t/--typeset-mode, multibyte Unicode panic, GNU default behaviornumfmt: --debug flag, empty delimiter, null byte handling, error message formattingcksum: SHAKE algorithms, --binary/--text/--tag errorscut, tac, tail, tr, uniq, od, chroot, stat, mktemp, pr, readlink, ln, kill, nproc, rm, env, sync, fmt, factor, wc: Various GNU compatibility and correctness fixesPlatform Support
tac stdin piping, test -r/-w/-x, publish static *.exe binaries*.wasm artifactsstdbuf: Support libstdbuf in same directory as binaryContributions: This release was made possible by 23 new contributors joining our community
Help us translate - Contribute translations at Weblate Sponsor us on GitHub to accelerate development: github.com/sponsors/uutils
checksum_common after installation by @RenjiSann in https://github.com/uutils/coreutils/pull/10575test_signed_checksums by @0xMillyByte in https://github.com/uutils/coreutils/pull/10714--ignore-signal=PIPE by @Ecordonnier in https://github.com/uutils/coreutils/pull/9618uninlined_format_args by @cakebaker in https://github.com/uutils/coreutils/pull/10784nix::sys::stat::umask in uucore::mode::get_umask by @mattsu2020 in https://github.com/uutils/coreutils/pull/11102.rs files by @xtqqczze in https://github.com/uutils/coreutils/pull/11020clippy::single_match_else by @nyurik in https://github.com/uutils/coreutils/pull/10699clippy::unreadable_literal by @nyurik in https://github.com/uutils/coreutils/pull/10717clippy::wildcard_imports by @nyurik in https://github.com/uutils/coreutils/pull/10719clippy::unnecessary_wraps by @nyurik in https://github.com/uutils/coreutils/pull/10722clippy::redundant_closure_for_method_calls by @nyurik in https://github.com/uutils/coreutils/pull/10704struct_field_names lint by @cakebaker in https://github.com/uutils/coreutils/pull/112140.3.1 by @cakebaker in https://github.com/uutils/coreutils/pull/10650jiff & fix clippy warning by @cakebaker in https://github.com/uutils/coreutils/pull/10881keccak from 0.1.5 to 0.1.6 by @cakebaker in https://github.com/uutils/coreutils/pull/11035num-prime from 0.4.4 to 0.5.0 by @cakebaker in https://github.com/uutils/coreutils/pull/11069signal-hook from skip list by @cakebaker in https://github.com/uutils/coreutils/pull/10785Full Changelog: https://github.com/uutils/coreutils/compare/0.6.0...0.7.0