Rust Coreutils 0.6.0 Release:
We are happy to announce the release of Rust Coreutils 0.6.0 — a major milestone achieving 96% GNU compatibility with significant safety improvements, enhanced locale support, and extensive bug fixes!
Highlights:
-
Major GNU Compatibility Leap
- 622 passing tests (+56 from 0.5.0), achieving 96.28% compatibility
- Reduced failures from 55 to just 16 (-39) and skipped tests from 23 to 7 (-16)
- Extensive test suite improvements across
sort,ls,date,cksum,tail, and many more
-
Safety & Code Quality
- Removed unsafe code from
date,sort,locale.rs, and other utilities - Replaced raw
libccalls with safenixcrate equivalents throughout - Enhanced error handling to avoid panics on
/dev/fullwrites across many utilities
- Removed unsafe code from
-
Locale & Internationalization
- Added ICU support for locale-aware day/month names in
date - Implemented locale-aware hour formatting and calendar support
- Added locale-aware numeric sorting with thousand separator support in
sort - Locale-aware collation support in
join
- Added ICU support for locale-aware day/month names in
-
Performance Improvements
base32/base64/basenc: Optimized with reduced memset operationsshuf: Optimized numeric output and added--random-seedoptiondate: Wrapped stdout in BufWriter for batch processinguniq: Optimized memory usage for ignore-case comparisontsort: Avoid reading entire input into memory, intern stringsdf: Performance improvements with better filesystem handling
-
Platform Support Expansion
- Expanded safe directory traversal to all Unix platforms
- Enhanced Cygwin support across multiple utilities
- Added SMACK security module support for
ls,id,mkdir,mkfifo,mknod - Added RISC-V 64-bit musl target to CI
-
Notable Utility Improvements
cksum/hashsum: Merged common logic, removed deprecatedhashsumbinarytail: Added--debugflag, fixed-Fsymlink tracking, fixed--pidwith FIFOtimeout: Added comprehensive signal handling and--verboseimprovementssort: Legacy+POS/-POShandling, locale-aware collation, debug key annotationspr: Multiple fixes for headers, form feeds, and pagination optionschmod: Fixed recursive handling and--preserve-rootoptionrm: Fixed error reporting and symlink handling
-
Contributions: This release was made possible by 41 new contributors joining our community
GNU Test Suite Compatibility:
| Result | 0.5.0 | 0.6.0 | Change 0.5.0 to 0.6.0 | % Total 0.5.0 | % Total 0.6.0 | % Change 0.5.0 to 0.6.0 |
|---|---|---|---|---|---|---|
| Pass | 566 | 622 | +56 | 87.75% | 96.28% | +8.53% |
| Skip | 23 | 7 | -16 | 3.57% | 1.08% | -2.49% |
| Fail | 55 | 16 | -39 | 8.53% | 2.48% | -6.05% |
| Error | 1 | 1 | 0 | 0.16% | 0.15% | ~0% |
| Total | 645 | 646 | +1 (new test) |
Call to Action:
Help us translate - Contribute translations at Weblate
Sponsor us on GitHub to accelerate development: github.com/sponsors/uutils
What's Changed
arch
base64
- base(nc|32|64): Optimize performances reduction memset by @mattsu2020 in #9632
- Improve read error message by @dezgeg in #10512
basename
cat
- do not connect to unix domain socket and instead return an error by @asder8215 in #9755
- fix write error handling to propagate errors instead of panicking by @rynewang in #10038
- tests(cat,stdbuf): Add broken-pipe robustness tests (#4627) by @naoNao89 in #8798
chgrp
chmod
- fix error handling if multiple files are handled by @cerdelen in #9793
- recursive hyper nested dirs by @cerdelen in #9990
- preserve root by @cerdelen in #10033
chroot
- use execvp directly instead of process::Command by @mattsu2020 in #9013
cksum
- Checksum ignore binary by @RenjiSann in #9695
- Improve check-only flags handling by @RenjiSann in #9770
- Move --ckeck's deps to clap by @oech3 in #9996
- Move handle_tag_text_binary_flags to clap by @oech3 in #9999
- Simple default tag variable by @oech3 in #10057
- cksum,hashsum: Drop a message replaced by clap by @oech3 in #10055
- cksum/hashsum: Merge common logic under a common crate by @RenjiSann in #10142
- Revert recent checksum CLI changes by @RenjiSann in #10141
- Don't panic when checked file returned EIO by @oech3 in #10534
- --debug 2>/dev/full does not abort by @oech3 in #10589
- -c /dev/null 2>/dev/full should not abort by @oech3 in #10643
comm
- fix comparison when reading from pipes by @martinkunkel2 in #9545
- Fixes #10192 - fix(comm): improve stdout handling and add test for lossy UTF-8 output by @Paol0B in #10206
- Properly handle I/O errors when reading input by @dezgeg in #10567
cp
- fix preserve-gid when canonicalize fails due to inaccessible parent dirs by @ChrisDryden in #9803
- reduce memory usage for cp -al by skipping unnecessary tracking by @ChrisDryden in #9805
- set status code when encountering circular symbolic links by @Thanhphan1147 in #9757
- symlink flags fixing conflicting flag logic to use last flag by @Dylans123 in #9960
- Added test for permissions copying to an existing file by @max-amb in #10049
- use FileInformation without dereference for symlink destination check to match GNU behaviour for test/nfs-removal-race by @ChrisDryden in #10086
- Avoid other error at cp stream /dev/full by @oech3 in #10139
- Fixed posixly correct dangling symlink test by @max-amb in #10247
- cp/mv: suppress xattr ENOTSUP errors for optional preservation by @ChrisDryden in #10083
csplit
- detect and report write errors by @ChrisDryden in #9855
date
- remove unsafe by @xtqqczze in #9688
- fix inconsistent input parsing between -s and -d flags by @AnarchistHoneybun in #9690
- Implement locale-aware hour formatting for date command by @naoNao89 in #9654
- improve fuzzer and handle edge cases by @ChrisDryden in #9661
- fix hardcoded formats with nl_langinfo(D_T_FMT) by @naoNao89 in #9756
- Fix military date parsing not adjusting date by @cerdelen in #9785
- add benchmark by @CrazyRoka in #9911
- benchmark: keep only one value by @sylvestre in #9989
- avoid double parsing when resolving timezone abbreviations by @CrazyRoka in #9997
- perf(date): wrap stdout in BufWriter to improve batch processing by @CrazyRoka in #9994
- use PosixCustom formatting for GNU-compatible output by @ChrisDryden in #10245
- test: %x format specifier respects locale settings by @sylvestre in #10285
- handle parentheses as comments like GNU date by @sylvestre in #10133
- add ICU support for day/months names by @sylvestre in #10457
- add locale-aware calendar support for era years by @sylvestre in #10473
- use jiff-icu for locale calendar conversions by @ChrisDryden in #10499
- fuzz_date: skip combined short options like -Rf- that read from stdin by @ChrisDryden in #10547
- fix %% not being preserved in locale format strings by @ChrisDryden in #10577
dd
- should terminate with error if skip argument is too large by @ic3man5 in #7275
- use actual filename in nocache error messages by @ChrisDryden in #9820
- fix nocache flag handling at EOF by @ChrisDryden in #9818
- use ibs/obs-sized buffer for skip/seek on non-seekable files by @ChrisDryden in #9806
- use seek for stdin skip when possible by @ChrisDryden in #9821
- get rid of line buffered stdout by @svlv in #10235
- feat(dd): add first benchmark suite for performance validation by @naoNao89 in #9136
df
- add binfmt_misc to is_dummy_filesystem by @van-sprundel in #9975
- add benchmarks by @sylvestre in #10123
- improve perfs by @sylvestre in #10122
- add rootfs to is_dummy_filesystem by @ChrisDryden in #10159
- Sum scaled values to compute the totals by @3v1n0 in #10438
dir
dirname
- refactor(dirname): implement pure string manipulation per POSIX by @naoNao89 in #8936
- use Cow::Borrowed to avoid unnecessary heap allocations by @sylvestre in #10294
- add fuzzer to test GNU compatibility by @sylvestre in #10289
du
- fix -l/--count-links option not counting hardlinks separately by @WaterWhisperer in #9884
- count links based on inode by @svlv in #10313
echo
- Reduce memory allocation by @AnuthaDev in #10090
env
- preserve non-UTF-8 environment variables and remove unwrap by @ChrisDryden in #9726
- Improve GNU coreutils Compatibility & Fix env-signal-handler.sh Test by @mattsu2020 in #9465
- env/printenv: dedup the code by @sylvestre in #9841
- dedup some code by @sylvestre in #9874
- --debug 2>/dev/full does not abort by @oech3 in #10594
expand
- address a cognitive_complexity warnings by @sylvestre in #9930
- expand, unexpand: Properly handle I/O errors by @dezgeg in #10510
expr
- fix regex matching on inputs containing newlines by @ChrisDryden in #10543
fmt
- handle invalid UTF-8 input by replacing malformed sequences by @mattsu2020 in #9329
fold
- fix gnu test fold-zero-width.sh by @mattsu2020 in #9274
- Add support for -c short option and fix character mode tab handling by @mattsu2020 in #10530
groups
hashsum
- Drop --no-names by @oech3 in #9762
- Drop non-GNU
--bitsflag by @RenjiSann in #9773 - Drop locales for --bits by @oech3 in #9811
- Drop benches as covered by cksum benches by @oech3 in #9842
- Move --ckeck's deps to clap by @oech3 in #9998
- hashsum, cksum: Move default stdin to clap by @oech3 in #10043
- hashsum, cksum: Move --check confliction to clap by @oech3 in #10041
- Remove hashsum by @RenjiSann in #10587
- Additional hashsum cleanup by @oech3 in #10622
head
- Consolidate legacy argument parsing for head/tail by @sylvestre in #9727
- refactor(head): replace unsafe raw fd usage with safe AsFd API by @mattsu2020 in #10161
hostid
id
- -p crashes with panic when the real GID doesn't exist in /etc/group by @sylvestre in #9670
- Fix incorrect human-readable output by @frendsick in #7814
install
- add FreeBSD's -U (unprivileged) option by @alexandrefresnais in #9526
- prevent TOCTOU race attack by @Dolphindalt in #10067
- install -dv a >/dev/full panics by @oech3 in #10541
join
- add benchmarks by @WaterWhisperer in #10005
- add benchmark with the French locale by @WaterWhisperer in #10025
- consider locale collation in field comparison by @WaterWhisperer in #9982
- Benchmark join with actual Unicode data requiring locale collation by @sylvestre in #10391
kill
- kill -1 should trigger an error by @sylvestre in #9700
ln
logname
ls
- Make ls pass the GNU ls-misc.pl suite by @karanabe in #9262
- Add SMACK support by @ChrisDryden in #9868
- some improvements after #9431 by @sylvestre in #10149
- fixes for capability coloring by @bkueng in #8615
- Proper alignment for capabilities and ACLs notifications by @kimono-koans in #8793
- fix symlink chain target coloring by @ChrisDryden in #10274
mkdir
- create directories atomically with correct permissions by @rynewang in #10036
- Add SMACK support to id, mkdir, mkfifo, mknod utilities by @ChrisDryden in #9910
- chore: add test for setgid bit inheritance in mkdir -p by @0xferrous in #10412
- mkdir -pv a >/dev/full panics by @oech3 in #10540
mkfifo
- replace unsafe libc::mkfifo with nix::unistd::mkfifo by @sylvestre in #10112
- do not change permission when failed to create by @w007878 in #10376
- error when non-file permission mode set by @w007878 in #10372
mknod
- Avoid major/minor No overflow by @oech3 in #10196
- fix SELinux cleanup when context setting fails by @ChiamakaUI in #10582
mktemp
- Fix template validation to require trailing consecutive Xs by @Xylphy in #10224
- treat empty TMPDIR as unset and fallback to /tmp by @reubenwong97 in #10566
more
- file status made more idiomatic. by @devnexen in #10151
- test(more): Fix test_from_line_option race condition by increasing PTY delay by @naoNao89 in #9629
mv
- Adding fixes for i-3 GNU tests related to tty output when file is not writeable by @ChrisDryden in #9599
- support moving folder containing symlinks to different filesystem by @yuankunzhang in #8605
- test_mv.rs: Remove ignore from test_mv_broken_symlink_to_another_fs by @oech3 in #9978
- test-mv: Use temporary directory in /dev/shm by @3v1n0 in #10439
nice
- use Command::exec() instead of libc::execvp() by @Ecordonnier in #9612
- simplify the code by @sylvestre in #9931
- nice -n huge_num true by @oech3 in #10213
- nice > /dev/full panics by @oech3 in #10524
nl
- preserve raw bytes in output instead of using from_utf8_lossy by @ChrisDryden in #9673
nohup
- use POSIXLY_CORRECT to determine failure exit code by @ChrisDryden in #9685
nproc
numfmt
- add --debug flag to print warnings about invalid input (#10110)
- add --unit-separator option for output formatting by @ChrisDryden in #10108
- support non-UTF8 delimiters for locales like GB18030 by @ChrisDryden in #10079
- align error messages for suffixes by @sbentmar in #9887
pr
- Enable pr-tests.pl with suppressed diff output by @ChrisDryden in #9829
- add -b flag for backwards compatibility by @ChrisDryden in #9993
- allow character, block, and fifo devices as input by @SaathwikDasari in #9946
- use 72 char line width for all page headers by @jfinkels in #10059
- add default values for -s and -S separator options by @ChrisDryden in #10073
- add -T/--omit-pagination option by @ChrisDryden in #10107
- uniformly scan for form feed and newline chars by @jfinkels in #10303
- refactor common code for reading from file by @jfinkels in #10334
- ignore empty line after form feed char by @jfinkels in #10331
- ignore empty line after newline char by @jfinkels in #10332
- remove unused lines_printed variable by @jfinkels in #10474
printenv
- Fix printenv non-UTF8 by @RenjiSann in #9728
printf
- Format String Parsing Overflow Causes Panic by @sylvestre in #9693
- printf 1 > /dev/full is not silent by @oech3 in #10171
ptx
- fix incorrect column width calculation and padding logic by @CrazyRoka in #9681
- implement -S/--sentence-regexp by @CrazyRoka in #9682
- fix panic when reference length exceeds line width by @CrazyRoka in #9816
- handle invalid regex arguments gracefully instead of panicking by @CrazyRoka in #9825
- handle duplicate input files by @CrazyRoka in #9823
readlink
rm
- fix safe traversal/access by @mattsu2020 in #9577
- fix error reporting for -r on Linux fixing #9011 by @ChrisDryden in #10111
- don't treat symlinks as write-protected by @GomesGoncalo in #10232
- no abbreviation no preserve root by @cerdelen in #10205
- fix for -rf ./ and variants silently delete current directory by @jacek-kurlit in #9924
rmdir
runcon
- use
Command::exec()instead oflibc::execvp()by @Ecordonnier in #9611 - add missing utilities to enable tests/runcon/runcon-compute and removing PATH from runcon -c by @ChrisDryden in #10088
seq
- add SIGPIPE handling for GNU compatibility by @ChrisDryden in #9657
- Change fuzz_seq_parse_number to should_pass: false by @sylvestre in #10335
shred
- ensure deterministic pass sequence compatibility with reference implementation by @sylvestre in #9317
- fix(shred): stop immediately on write errors by @naoNao89 in #9649
shuf
- Add
--random-seed, make--random-sourceGNU-compatible, report write failures, optimize by @blyxxyz in #7585 - optimize numeric output by avoiding write!() by @CrazyRoka in #10048
- Tune performance for -i 1-1000000 by @oech3 in #10478
sort
- Add legacy +POS/-POS handling in sort to pass GNU sort-field-limit test by @karanabe in #9501
- remove unsafe by @xtqqczze in #9694
- fix(sort): GNU sort-continue.sh test by @mattsu2020 in #9107
- Align sort debug key annotations with GNU coreutils by @mattsu2020 in #9468
- fixing locale benchmarks since locale is cached in OnceCell by @ChrisDryden in #9914
- bench(sort): add general numeric benchmark by @mattsu2020 in #10101
- feat(sort): add warning messages for obsolescent keys and options by @mattsu2020 in #9900
- refine error handling and localize field parsing errors by @mattsu2020 in #10068
- followup of #10068 by @sylvestre in #10226
- gnu coreutils compatibility (sort float.sh) by @mattsu2020 in #9839
- fix(sort): Enable locale-aware collation for UTF-8 locales by @quantum-encoding in #9176
- gnu coreutils compatibility (sort.pl) by @mattsu2020 in #9862
- gnu core utils test (sort-merge-fdlimit.sh) by @mattsu2020 in #9849
- feat(sort): add locale-aware numeric sorting support(sort-h-thousands-sep.sh) by @mattsu2020 in #9848
- FIX 10314 sort: locale-based collation is not supported by @Paol0B in #10481
- fix: numeric sort (-n) does not recognize thousand separators by @Kaua-Klassmann in #10339
split
stat
stdbuf
- use exec instead of forking by @Ecordonnier in #9495
stty
- implemented hex and octal parsing for rows and columns by @ChrisDryden in #9516
- columns env support and integration testing by @ChrisDryden in #9490
- Added unit tests for stty.rs to improve test coverage by @naoNao89 in #9094
- use stdin for TTY operations instead of /dev/tty by @ChrisDryden in #9881
- Implemented input and output baud rate setting for stty by @ChrisDryden in #9517
- bump libc & tmp stop musl-i686 by @oech3 in #10072
- Add bad-speed.sh test script to fetch-gnu.sh by @ChrisDryden in #10077
- Add cfg_aliases by @oech3 in #10443
- Don't panic when GNU provided stty 51 us by @oech3 in #10526
sync
tac
- fix error message by @cerdelen in #9942
- use temp file for stdin to respect TMPDIR and handle disk-full errors by @ChrisDryden in #10094
- add regex flavor translation for compatibility and new test case by @FidelSch in #10416
- tac, tail, dd: detect closed stdin before Rust sanitizes it to /dev/null by @ChrisDryden in #9664
tail
- fix: patch inotify-dir-recreate test for notify crate's threaded inotify by @ChrisDryden in #9666
- Removing flaky inotify-dir patch by @ChrisDryden in #9800
- fix --pid with FIFO by using non-blocking open by @ChrisDryden in #9663
- fix big number handling and error message quoting by @ChrisDryden in #10155
- add --debug flag to show follow implementation mode by @ChrisDryden in #10105
- fix pipe-f test by detecting broken stdout pipe by @ChrisDryden in #10156
- Fix tail -c panics when requested bytes exceed file size by @dhr412 in #10268
- tests: Add 'tests/tail/follow-name' to ignore list by @ChrisDryden in #10297
- fix behaviour of
tail -n0in follow mode by @AnandajithS in #9114 - Fixed passing -0 to tail. Closes #10191 by @trypsynth in #10209
- fix -F to properly track symlinks with changing targets by @ChrisDryden in #10158
tee
- allow multiple -a flags by @sylvestre in #10293
- tee miss/ing 2>/dev/full should not abort by @oech3 in #10637
test
- fixing unary operators that are getting parsed as argument instead of string literal by @georgepaulsen in #9951
- Trim whitespace in integer comparisons by @dezgeg in #10489
timeout
- cleanup return values by @Ecordonnier in #9576
- use nix kill/setpgid to reduce unsafe by @mattsu2020 in #10120
- backport timeout tests from master by @ChrisDryden in #10195
- display signal 0 as '0' instead of 'EXIT' in verbose mode by @ChrisDryden in #10194
- Improve error handling with explicit expect messages by @naoNao89 in #9435
- add all signal handlers, pass on signals to child, add ignored signal handling by @ChrisDryden in #10254
touch
- fix: touch -r: dangling symlink reference is accepted Fixes #9703 by @dshemetov in #9732
- Use libc::UTIME_NOW in touch when updating time to now by @iburaky2 in #9870
- fix: use jiff time for touch tests by @aaron-ang in #10093
- extent a test for many device files by @oech3 in #10199
truncate
- eliminate duplicate stat() syscall by @Jean-Christian-Cirstea in #9527
tsort
- gnu misc tsort.pl by @mattsu2020 in #9289
- perf (tsort) : avoid reading the whole input into memory and intern strings by @anastygnome in #9872
- Disable tsort_input_parsing_heavy for being too intermittent by @sylvestre in #10109
uname
unexpand
- use byte count for multibyte characters for column width when using -a flag by @JaneIllario in #9949
- add support for extended tab stop syntax (+N and /N) by @sylvestre in #9265
- fix +0 and /0 handling, add integration tests by @ChrisDryden in #10406
uniq
- optimize memory usage for ignore-case comparison by @CrazyRoka in #10050
- rename
keys_differtokeys_are_equalby @cakebaker in #10070
uptime
- Fix uptime on macOS using sysctl kern.boottime fallback by @naoNao89 in #8908
- refactor(uptime): use FluentArgs for loadavg formatting in get_format by @mattsu2020 in #10102
- Add -p, --pretty argument by @Ivan-Shaml in #10143
users
wc
- GNU wc-cpu.sh by @mattsu2020 in #9144
- Ensure the output order of stdout and stderror remains unchanged. by @mattsu2020 in #9905
- respect POSIXLY_CORRECT for word counting by @dhr412 in #10344
- fix word undercount with invalid byte sequences by @dhr412 in #10348
- --debug 2>/dev/full does not fail by @oech3 in #10590
yes
- Silently handle broken pipe on windows by @ChrisDryden in #10429
uucore
- use --suffix to enable backup mode by @jacek-kurlit in #9741
- parser: add binary support to determine_number_system and parse_size by @csko in #9659
- locale.rs: move more code outside of the unsafe block by @sylvestre in #9720
- fix clippy::pedantic warnings in build.rs and generated locale code by @skjha98 in #9837
- Remove lossy OS string conversions by @blyxxyz in #9337
- document that libselinux caches is_selinux_enabled by @ChrisDryden in #9873
- switch to
BigDecimal::powiimplementation by @xtqqczze in #9957 - uucore/uptime: remove unreachable code on Windows by @cakebaker in #9985
- fsext.rs: Replace getmntinfo with libc by @oech3 in #10075
- refactor: use
jifffor safer time features by @aaron-ang in #10118 - use the enable_pipe_errors instead of libc::signal by @sylvestre in #10113
- feat: Expand safe directory traversal to all Unix platforms and fix related type conversions. by @abendrothj in #9792
- simplify cfg checks in signals.rs by @sylvestre in #10296
- centralize SIGPIPE handling in main macro by @ChrisDryden in #10354
- uucore(fs): expand path normalization by @FidelSch in #10532
uudoc
- style(uudoc): update header formatting for options and examples by @hwhsu1231 in #10004
- print tldr.zip warning only once per process by @rynewang in #10039
coreutils
- Remove limitation for prefix by @oech3 in #10261
- Drop find_prefixed_util by @oech3 in #10306
- uu: fix typo by @antonkesy in #10170
- fix: properly handle write errors for --version and --help output by @naoNao89 in #10223
Platform Support
- Add more Cygwin support by @500-internal-server-error in #9686
- Bump mio for cygwin by @oech3 in #9809
- clippy: allow "cygwin" as value for "target_os" by @cakebaker in #10054
- fix: allow selinux on android by @xtqqczze in #10419
- runcon, chcon: Don't fetch crates at unsupported target by @oech3 in #10360
CI & Build
- GnuTests: Reduce gnproc deps on BSD by @oech3 in #9644
- GnuTests: Split online process to a script by @oech3 in #9652
- GnuTests: Caches for faster configure and skipping make by @oech3 in #9627
- run-gnu-test.sh: Fix nproc broken by cache by @oech3 in #9735
- build-gnu.sh: Move {ch,run}con tests to Fedora VM and avoid wrong result by @oech3 in #9607
- GnuTests.yml: Fix caches by @oech3 in #9739
- build-gnu.sh: Don't hack test suite to force-enable tests by @oech3 in #9744
- GnuTests.yml: Discard caches at each build-gnu.sh update by @oech3 in #9753
- build-gnu.sh: Enable test/df/no-mtab-status.sh by @oech3 in #9759
- GNUmakefile: Prepend PROG_PREFIX to LIBSTDBUF_DIR too by @oech3 in #9068
- build-gnu.sh: correct path suggestion for fetch-gnu.sh by @nutthawit in #9788
- is_a_tty.sh: Reduce lines by @oech3 in #9814
- ci: add Non UTF8 locale for GNU tests by @ChrisDryden in #9807
- Avoid wrong PASS of cp-mv-enotsup-xattr runcon-compute and enable 1 test by @oech3 in #9743
- CI: Add SMACK test runner for GNU tests by @ChrisDryden in #9888
- openbsd ci: try to remove more temporary files by @sylvestre in #9904
- build-gnu.sh: Use MULTICALL=y and skip not used utils for faster build by @oech3 in #9567
- CICD.yml: Avoid no space left much more by @oech3 in #9907
- GnuTests.yml: Stop manpage generation to reduce size of log by @oech3 in #9943
- CICD.yml: Avoid no space left again by @oech3 in #9939
- GnuTests: Drop texinfo dep by @oech3 in #9944
- GnuTests.yml: install Rust without rustfmt by @cakebaker in #9947
- openbsd.yml: Replace cargo cache related disk space hack by @oech3 in #9917
- GnuTests.yml: Drop autopoint by @oech3 in #9965
- GnuTests.yml: Drop git from VM by @oech3 in #9969
- build-gnu.sh: Skip make at SELinux tests by @oech3 in #9970
- build-gnu.sh: Drop a variable & cleanup by @oech3 in #9953
- GnuTests.yml: use minimal Rust profile in VM by @cakebaker in #9977
- benchmarks: use
simulationmode by @cakebaker in #9986 - CI: Default build artifact for riscv64+musl on CICD.yml by @ffgan in #10029
- ci: set
-no-metricsfor Android emulator by @cakebaker in #10051 - build-gnu.sh: Let md5sum.pl clap compatible by @oech3 in #10065
- FixPR.yml: Use cargo fetch --target $(rustc --print host-tuple) by @oech3 in #10074
- ci: add Codecov Test Analytics integration by @ChrisDryden in #10091
- Add some intermittent tests to the list by @sylvestre in #10104
- ci: re-enable i686-musl platform by @cakebaker in #10127
- ci: add df/skip-rootfs test to SMACK/ROOTFS CI by @ChrisDryden in #10150
- cp: Adding dd to SELinux CI to enable cp-a-selinux by @ChrisDryden in #10148
- run-gnu-tests-smack-ci.sh: Use release-small profile for faster build by @oech3 in #10144
- run-gnu-tests-smack-ci.sh: Use multi-call binary for faster build by @oech3 in #10162
- build-gnu.sh: Build seq as multicall-binary by @oech3 in #10152
- GNUmakefile: Support CARGO_BUILD_TARGET by @oech3 in #9223
- make build-gnu.sh reentrant by @sylvestre in #10180
- CICD.yml: Upload binaries from latest commit too by @oech3 in #10212
- freebsd.yml: Avoid no space left on device by @oech3 in #10203
- CICD.yml: Upload uudoc at least for Linux-x64-glibc by @oech3 in #10231
- benchmarks: Add memory benchmarks by @sylvestre in #10229
- CICD.yml: Drop checks for hashsum by @oech3 in #10259
- try to decrease the variance in the memory usage for benchmark by @sylvestre in #10273
- CICD.yml: Upload manpages and completions by @oech3 in #10257
- CICD.yml: upload binaries without version string by @oech3 in #10217
- CI: Purge disk space at background to avoid delaying by @oech3 in #10276
- GnuTests.yml: Dedup setenforce 1 by @oech3 in #10266
- build-gnu.sh: Replace ${SED} with gsed wrapper by @oech3 in #10201
- bench: try to remove more variances by @sylvestre in #10277
- bench: reduce memory variance in cp and numfmt benchmarks by @sylvestre in #10283
- ci: ensure test failures are caught in coverage script and fix them by @sylvestre in #10286
- bench: fix variance in remaining numfmt benchmarks by @sylvestre in #10292
- CICD.yml: Remove zsh completion for [ by @oech3 in https://github.com//pull/10278
- CICD.yml: Add man and completion for coreutils(1) to docs.tar.zst by @oech3 in #10299
- prepare release 0.6.0 by @sylvestre in #10291
- CIDD.yml: cargo fetch platform spec crates only by @oech3 in #10304
- build-gnu.sh: Enable help-version-getopt.sh (PASS) by @oech3 in #10305
- CICD.yml: Stop manually stripping by @oech3 in #10311
- GnuTests: Replace incompat tests & drop obsolete hack by @oech3 in #9976
- Backport tests/env/env.sh for better multicall support by @oech3 in #10337
- CICD.yml: Drop unused apt-get by @oech3 in #10343
- CICD.yml: Upload individual bins to release by @oech3 in #10338
- CICD.yml: Drop a toolchain outside of VM by @oech3 in #10381
- ci: move
-no-metricstoCOMMON_EMULATOR_OPTIONSby @cakebaker in #10385 - CICD.yml: Filter-out non-SELinux progs on SELinux test by @oech3 in #10382
- l10n.yml: Use git clone --depth=1 by @oech3 in #10367
- Don't build coreutils without MULTICALL=y by @oech3 in #10359
- gnu: patch inotify-race tests to use Rust gdb breakpoints by @ChrisDryden in #9908
- fetch-gnu: add tests/tail/inotify-dir-recreate.sh by @ChrisDryden in #10392
- ci: generate the french locale for benchmark by @sylvestre in #10398
- ci: disable memory profiling in benchmarks due to variance by @sylvestre in #10399
- check-safe-traversal.sh: Support any profile by @oech3 in #10401
- android.yml: Drop x86 by @oech3 in #10353
- CICD.yml: Merge 2 tests by @oech3 in #10424
- openbsd.yml: Try to reduce time by @oech3 in #10423
- freebsd.yml: Drop useless cache actions by @oech3 in #10362
- Reduce duplicated management of supported utils by @oech3 in #10409
- fix(ci): remove outdated
analysismode by @not-matthias in #10414 - Zsh suspended by @sylvestre in #10431
- fix(CI): clippy unnecessary unwrap by @aaron-ang in #10435
- ci/android: use
--lockedwhen installingnextestby @cakebaker in #10467 - CI: Disable incremental build for faster CI by @oech3 in #10462
- CICD.yml: Merge 2 "separately" by @oech3 in #10425
- fuzzing.yml: Reproducible toolchain setup by @oech3 in #10487
- ci: show diff for toml_format by @xtqqczze in #10501
- CICD: Remove unused rustfmt by @oech3 in #10509
- build-gnu.sh: remove workaround for timeout/yes by @Ecordonnier in #10505
- GnuTests: Drop cache action outside of VM, use preinstalled rust by @oech3 in #10504
- GNUmakefile: Complete TEST_PROGS by @oech3 in #10495
- CICD.yml: (partial) reproducible toolchain setup by @oech3 in #10500
- ci: use toolchain override shorthand by @xtqqczze in #10600
- GnuTests: Save setup time 9 min+ by @oech3 in #10557
- GNUmakefile: Drop HASHSUM by @oech3 in #10634
- Enable cat, sort, readlink and tr tests in busybox test suite by @ChrisDryden in #9850
Code Quality & Cleanup
- clippy: fix map_unwrap_or lint by @xtqqczze in #9678
- clippy: fix ptr lints by @xtqqczze in #9687
- clippy: enable
needless_raw_string_hasheslint by @cakebaker in #9840 - clippy: fix uninlined_format_args lint by @xtqqczze in #9962
- Enable clippy::assigning_clones on OpenBSD by @xtqqczze in #9956
- Bump
signal-hook& add it to skip list by @cakebaker in #9979 - benchmark: some minor improvements by @sylvestre in #9928
- mac: change the delay value to avoid intermittent by @sylvestre in #9895
- fix test_backup_mode_suffix_without_backup_option test on mac by @sylvestre in #9891
- fix: reduce factor parallel test runtime by @aaron-ang in #10136
- deny.toml: add
constant_time_eqto skip list by @cakebaker in #10137 - deny.toml: remove
constant_time_eqfrom skip list by @cakebaker in #10176 - fix: handle /dev/full write errors gracefully by @naoNao89 in #10062
- benchmarks: reduce allocations in run_util_function by @xtqqczze in #10378
- uutests: replace unsafe
libc::statwithnix::statby @xtqqczze in #10364 - deny.toml: remove
wasifrom skip list by @cakebaker in #10355 - fuzz: fix clippy lints by @xtqqczze in #10466
- clippy: fix used_underscore_binding lint by @xtqqczze in #10058
- clippy: fix needless_continue lint by @xtqqczze in #10340
- clippy: remove assigning_clones lint suppression by @xtqqczze in #10377
- clippy: fix map_clone lint by @xtqqczze in #10619
- deny.toml: remove unmatched items from skip list by @xtqqczze in #10605
- refactor: rename print functions to write for consistency by @xtqqczze in #10536
- editorconfig: specify toml settings by @xtqqczze in #10601
Documentation
- README.md: Guide people to release page or main by @oech3 in #9709
- DEVELOPMENT.md: Remove a wrong desc by @oech3 in #9717
- why-error.md: Cleanup by @oech3 in #9738
- why-error.md: Remove 2 tests by @oech3 in #9799
- why-error.md: Remove 1 test by @oech3 in #9826
- why-*.md: Drop as issue is enough by @oech3 in #9835
- CONTRIBUTING.md: update crate structure by @cakebaker in #9861
- CONTRIBUTING.md: Bug report with LANG=C by @oech3 in #9890
- README.md: Avoid losting unix specific progs by @oech3 in #9867
- DEVELOPMENT.md: mention nightly requirement for code coverage by @nutthawit in #9919
- contrib: add info about expectations and ping by @sylvestre in #10275
- {README,CONTRIBUTIONS}.md: Add link to binaries from latest commit by @oech3 in #10280
- README.package.md: Fix MSRV by @oech3 in #10485
Dependency Updates
- chore(deps): update rust crate console to v0.16.2 by @renovate[bot] in #9675
- chore(deps): update rust crate clap_complete to v4.5.62 by @renovate[bot] in #9698
- chore(deps): update rust crate zip to v7 by @renovate[bot] in #9731
- chore(deps): update rust crate crc-fast to v1.8.2 by @renovate[bot] in #9730
- chore(deps): update rust crate linux-raw-sys to v0.12.1 by @renovate[bot] in #9787
- chore(deps): update rust crate divan to v4.2.0 by @renovate[bot] in #9786
- chore(deps): update rust crate crc-fast to v1.9.0 by @renovate[bot] in #9791
- chore(deps): update rust crate jiff to v0.2.17 by @renovate[bot] in #9830
- chore(deps): update dawidd6/action-download-artifact action to v12 by @renovate[bot] in #9836
- chore(deps): update rust crate proc-macro2 to v1.0.104 by @renovate[bot] in #9878
- chore(deps): update rust crate bigdecimal to v0.4.10 by @renovate[bot] in #9880
- chore(deps): update actions/upload-artifact action to v6 by @renovate[bot] in #9896
- chore(deps): update rust crate self_cell to v1.2.2 by @renovate[bot] in #9927
- chore(deps): update rust crate clap_complete to v4.5.64 by @renovate[bot] in #9909
- chore(deps): update rust crate clap to v4.5.54 by @renovate[bot] in #10000
- Bump libc to 0.2.178 with fix for FreeBSD by @oech3 in #10046
- chore(deps): update rust crate jiff to v0.2.18 by @renovate[bot] in #10084
- chore(deps): update rust crate proc-macro2 to v1.0.105 by @renovate[bot] in #10085
- chore(deps): update rust crate quote to v1.0.43 by @renovate[bot] in #10087
- chore(deps): update rust crate libc to v0.2.179 by @renovate[bot] in #8717
- chore(deps): update rust crate divan to v4.2.1 by @renovate[bot] in #10103
- chore(deps): update rust crate clap_complete to v4.5.65 by @renovate[bot] in #10106
- chore(deps): update rust crate libc to v0.2.180 by @renovate[bot] in #10126
- replace bincode by wincode by @sylvestre in #10134
- chore(deps): update rust crate blake3 to v1.8.3 by @renovate[bot] in #10132
- chore(deps): update rust crate data-encoding-macro to v0.1.19 by @renovate[bot] in #10163
- chore(deps): update rust crate blake2b_simd to v1.0.4 by @renovate[bot] in #10168
- chore(deps): update rust crate rand_core to v0.9.4 by @renovate[bot] in #10202
- chore(deps): update rust crate time to v0.3.45 by @renovate[bot] in #10216
- chore(deps): update rust crate rand_core to v0.9.5 by @renovate[bot] in #10215
- chore(deps): update rust crate zip to v7.1.0 by @renovate[bot] in #10237
- chore(deps): update rust crate filetime to v0.2.27 by @renovate[bot] in #10336
- chore(deps): update rust crate thiserror to v2.0.18 by @renovate[bot] in #10329
- deps: remove unused rust crate linux-raw-sys by @xtqqczze in #10374
- chore(deps): update rust crate zip to v7.2.0 by @renovate[bot] in #10387
- chore(deps): update rust crate divan to v4.3.0 by @renovate[bot] in #10413
- deps: remove unused rust deps by @xtqqczze in #10404
- chore(deps): update rust crate proc-macro2 to v1.0.106 by @renovate[bot] in #10420
- fix(deps): remove duplicate itertools package by @xtqqczze in #10440
- fix(deps): refactor nix package configuration by @xtqqczze in #10441
- chore(deps): update rust crate quote to v1.0.44 by @renovate[bot] in #10446
- fix(deps): refactor xattr package configuration by @xtqqczze in #10454
- fix(deps): refactor rlimit package configuration by @xtqqczze in #10464
- chore(deps): update rust crate signal-hook to v0.4.2 by @renovate[bot] in #10468
- chore(deps): update rust crate signal-hook to v0.4.3 by @renovate[bot] in #10472
- deps: refactor crossterm package configuration by @xtqqczze in #10484
- chore(deps): update rust crate clap to v4.5.55 by @renovate[bot] in #10521
- chore(deps): update rust crate clap to v4.5.55 by @renovate[bot] in #10544
- chore(deps): update rust crate clap to v4.5.56 by @renovate[bot] in #10568
- chore(deps): update dawidd6/action-download-artifact action to v13 by @renovate[bot] in #10586
- chore(deps): update dawidd6/action-download-artifact action to v14 by @renovate[bot] in #10641
- chore(deps): update rust crate rlimit to 0.11.0 by @renovate[bot] in #10645
New Contributors
- @xtqqczze made their first contribution in #9678
- @Jean-Christian-Cirstea made their first contribution in #9527
- @jacek-kurlit made their first contribution in #9741
- @csko made their first contribution in #9659
- @nutthawit made their first contribution in #9788
- @dshemetov made their first contribution in #9732
- @500-internal-server-error made their first contribution in #9686
- @CrazyRoka made their first contribution in #9681
- @skjha98 made their first contribution in #9837
- @alexandrefresnais made their first contribution in #9526
- @iburaky2 made their first contribution in #9870
- @georgepaulsen made their first contribution in #9951
- @SaathwikDasari made their first contribution in #9946
- @JaneIllario made their first contribution in #9949
- @Dylans123 made their first contribution in #9960
- @max-amb made their first contribution in #9945
- @van-sprundel made their first contribution in #9975
- @ffgan made their first contribution in #10029
- @hwhsu1231 made their first contribution in #10004
- @rynewang made their first contribution in #10038
- @Thanhphan1147 made their first contribution in #9757
- @AnuthaDev made their first contribution in #10090
- @abendrothj made their first contribution in #9792
- @antonkesy made their first contribution in #10170
- @Ivan-Shaml made their first contribution in #10143
- @bkueng made their first contribution in #8615
- @Xylphy made their first contribution in #10224
- @dhr412 made their first contribution in #10268
- @Dolphindalt made their first contribution in #10067
- @quantum-encoding made their first contribution in #9176
- @GomesGoncalo made their first contribution in #10232
- @AnandajithS made their first contribution in #9114
- @trypsynth made their first contribution in #10209
- @w007878 made their first contribution in #10369
- @Paol0B made their first contribution in #10206
- @Kaua-Klassmann made their first contribution in #10339
- @not-matthias made their first contribution in #10414
- @0xferrous made their first contribution in #10412
- @3v1n0 made their first contribution in #10439
- @reubenwong97 made their first contribution in #10566
- @ChiamakaUI made their first contribution in #10582
Full Changelog: 0.5.0...0.6.0