0.6.0
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
- Avoid >/dev/full panic by @oech3 in https://github.com/uutils/coreutils/pull/10516
base64
- base(nc|32|64): Optimize performances reduction memset by @mattsu2020 in https://github.com/uutils/coreutils/pull/9632
- Improve read error message by @dezgeg in https://github.com/uutils/coreutils/pull/10512
basename
- basename . >/dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10553
cat
- do not connect to unix domain socket and instead return an error by @asder8215 in https://github.com/uutils/coreutils/pull/9755
- fix write error handling to propagate errors instead of panicking by @rynewang in https://github.com/uutils/coreutils/pull/10038
- tests(cat,stdbuf): Add broken-pipe robustness tests (#4627) by @naoNao89 in https://github.com/uutils/coreutils/pull/8798
chgrp
- correct exit code by @cerdelen in https://github.com/uutils/coreutils/pull/10035
chmod
- fix error handling if multiple files are handled by @cerdelen in https://github.com/uutils/coreutils/pull/9793
- recursive hyper nested dirs by @cerdelen in https://github.com/uutils/coreutils/pull/9990
- preserve root by @cerdelen in https://github.com/uutils/coreutils/pull/10033
chroot
- use execvp directly instead of process::Command by @mattsu2020 in https://github.com/uutils/coreutils/pull/9013
cksum
- Checksum ignore binary by @RenjiSann in https://github.com/uutils/coreutils/pull/9695
- Improve check-only flags handling by @RenjiSann in https://github.com/uutils/coreutils/pull/9770
- Move --ckeck's deps to clap by @oech3 in https://github.com/uutils/coreutils/pull/9996
- Move handle_tag_text_binary_flags to clap by @oech3 in https://github.com/uutils/coreutils/pull/9999
- Simple default tag variable by @oech3 in https://github.com/uutils/coreutils/pull/10057
- cksum,hashsum: Drop a message replaced by clap by @oech3 in https://github.com/uutils/coreutils/pull/10055
- cksum/hashsum: Merge common logic under a common crate by @RenjiSann in https://github.com/uutils/coreutils/pull/10142
- Revert recent checksum CLI changes by @RenjiSann in https://github.com/uutils/coreutils/pull/10141
- Don't panic when checked file returned EIO by @oech3 in https://github.com/uutils/coreutils/pull/10534
- --debug 2>/dev/full does not abort by @oech3 in https://github.com/uutils/coreutils/pull/10589
- -c /dev/null 2>/dev/full should not abort by @oech3 in https://github.com/uutils/coreutils/pull/10643
comm
- fix comparison when reading from pipes by @martinkunkel2 in https://github.com/uutils/coreutils/pull/9545
- Fixes #10192 - fix(comm): improve stdout handling and add test for lossy UTF-8 output by @Paol0B in https://github.com/uutils/coreutils/pull/10206
- Properly handle I/O errors when reading input by @dezgeg in https://github.com/uutils/coreutils/pull/10567
cp
- fix preserve-gid when canonicalize fails due to inaccessible parent dirs by @ChrisDryden in https://github.com/uutils/coreutils/pull/9803
- reduce memory usage for cp -al by skipping unnecessary tracking by @ChrisDryden in https://github.com/uutils/coreutils/pull/9805
- set status code when encountering circular symbolic links by @Thanhphan1147 in https://github.com/uutils/coreutils/pull/9757
- symlink flags fixing conflicting flag logic to use last flag by @Dylans123 in https://github.com/uutils/coreutils/pull/9960
- Added test for permissions copying to an existing file by @max-amb in https://github.com/uutils/coreutils/pull/10049
- use FileInformation without dereference for symlink destination check to match GNU behaviour for test/nfs-removal-race by @ChrisDryden in https://github.com/uutils/coreutils/pull/10086
- Avoid other error at cp stream /dev/full by @oech3 in https://github.com/uutils/coreutils/pull/10139
- Fixed posixly correct dangling symlink test by @max-amb in https://github.com/uutils/coreutils/pull/10247
- cp/mv: suppress xattr ENOTSUP errors for optional preservation by @ChrisDryden in https://github.com/uutils/coreutils/pull/10083
csplit
- detect and report write errors by @ChrisDryden in https://github.com/uutils/coreutils/pull/9855
date
- remove unsafe by @xtqqczze in https://github.com/uutils/coreutils/pull/9688
- fix inconsistent input parsing between -s and -d flags by @AnarchistHoneybun in https://github.com/uutils/coreutils/pull/9690
- Implement locale-aware hour formatting for date command by @naoNao89 in https://github.com/uutils/coreutils/pull/9654
- improve fuzzer and handle edge cases by @ChrisDryden in https://github.com/uutils/coreutils/pull/9661
- fix hardcoded formats with nl_langinfo(D_T_FMT) by @naoNao89 in https://github.com/uutils/coreutils/pull/9756
- Fix military date parsing not adjusting date by @cerdelen in https://github.com/uutils/coreutils/pull/9785
- add benchmark by @CrazyRoka in https://github.com/uutils/coreutils/pull/9911
- benchmark: keep only one value by @sylvestre in https://github.com/uutils/coreutils/pull/9989
- avoid double parsing when resolving timezone abbreviations by @CrazyRoka in https://github.com/uutils/coreutils/pull/9997
- perf(date): wrap stdout in BufWriter to improve batch processing by @CrazyRoka in https://github.com/uutils/coreutils/pull/9994
- use PosixCustom formatting for GNU-compatible output by @ChrisDryden in https://github.com/uutils/coreutils/pull/10245
- test: %x format specifier respects locale settings by @sylvestre in https://github.com/uutils/coreutils/pull/10285
- handle parentheses as comments like GNU date by @sylvestre in https://github.com/uutils/coreutils/pull/10133
- add ICU support for day/months names by @sylvestre in https://github.com/uutils/coreutils/pull/10457
- add locale-aware calendar support for era years by @sylvestre in https://github.com/uutils/coreutils/pull/10473
- use jiff-icu for locale calendar conversions by @ChrisDryden in https://github.com/uutils/coreutils/pull/10499
- fuzz_date: skip combined short options like -Rf- that read from stdin by @ChrisDryden in https://github.com/uutils/coreutils/pull/10547
- fix %% not being preserved in locale format strings by @ChrisDryden in https://github.com/uutils/coreutils/pull/10577
dd
- should terminate with error if skip argument is too large by @ic3man5 in https://github.com/uutils/coreutils/pull/7275
- use actual filename in nocache error messages by @ChrisDryden in https://github.com/uutils/coreutils/pull/9820
- fix nocache flag handling at EOF by @ChrisDryden in https://github.com/uutils/coreutils/pull/9818
- use ibs/obs-sized buffer for skip/seek on non-seekable files by @ChrisDryden in https://github.com/uutils/coreutils/pull/9806
- use seek for stdin skip when possible by @ChrisDryden in https://github.com/uutils/coreutils/pull/9821
- get rid of line buffered stdout by @svlv in https://github.com/uutils/coreutils/pull/10235
- feat(dd): add first benchmark suite for performance validation by @naoNao89 in https://github.com/uutils/coreutils/pull/9136
df
- add binfmt_misc to is_dummy_filesystem by @van-sprundel in https://github.com/uutils/coreutils/pull/9975
- add benchmarks by @sylvestre in https://github.com/uutils/coreutils/pull/10123
- improve perfs by @sylvestre in https://github.com/uutils/coreutils/pull/10122
- add rootfs to is_dummy_filesystem by @ChrisDryden in https://github.com/uutils/coreutils/pull/10159
- Sum scaled values to compute the totals by @3v1n0 in https://github.com/uutils/coreutils/pull/10438
dir
- add "about" and "usage" instead of being "ls" by @w007878 in https://github.com/uutils/coreutils/pull/10369
dirname
- refactor(dirname): implement pure string manipulation per POSIX by @naoNao89 in https://github.com/uutils/coreutils/pull/8936
- use Cow::Borrowed to avoid unnecessary heap allocations by @sylvestre in https://github.com/uutils/coreutils/pull/10294
- add fuzzer to test GNU compatibility by @sylvestre in https://github.com/uutils/coreutils/pull/10289
du
- fix -l/--count-links option not counting hardlinks separately by @WaterWhisperer in https://github.com/uutils/coreutils/pull/9884
- count links based on inode by @svlv in https://github.com/uutils/coreutils/pull/10313
echo
- Reduce memory allocation by @AnuthaDev in https://github.com/uutils/coreutils/pull/10090
env
- preserve non-UTF-8 environment variables and remove unwrap by @ChrisDryden in https://github.com/uutils/coreutils/pull/9726
- Improve GNU coreutils Compatibility & Fix env-signal-handler.sh Test by @mattsu2020 in https://github.com/uutils/coreutils/pull/9465
- env/printenv: dedup the code by @sylvestre in https://github.com/uutils/coreutils/pull/9841
- dedup some code by @sylvestre in https://github.com/uutils/coreutils/pull/9874
- --debug 2>/dev/full does not abort by @oech3 in https://github.com/uutils/coreutils/pull/10594
expand
- address a cognitive_complexity warnings by @sylvestre in https://github.com/uutils/coreutils/pull/9930
- expand, unexpand: Properly handle I/O errors by @dezgeg in https://github.com/uutils/coreutils/pull/10510
expr
- fix regex matching on inputs containing newlines by @ChrisDryden in https://github.com/uutils/coreutils/pull/10543
fmt
- handle invalid UTF-8 input by replacing malformed sequences by @mattsu2020 in https://github.com/uutils/coreutils/pull/9329
fold
- fix gnu test fold-zero-width.sh by @mattsu2020 in https://github.com/uutils/coreutils/pull/9274
- Add support for -c short option and fix character mode tab handling by @mattsu2020 in https://github.com/uutils/coreutils/pull/10530
groups
- groups > /dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10523
hashsum
- Drop --no-names by @oech3 in https://github.com/uutils/coreutils/pull/9762
- Drop non-GNU
--bitsflag by @RenjiSann in https://github.com/uutils/coreutils/pull/9773 - Drop locales for --bits by @oech3 in https://github.com/uutils/coreutils/pull/9811
- Drop benches as covered by cksum benches by @oech3 in https://github.com/uutils/coreutils/pull/9842
- Move --ckeck's deps to clap by @oech3 in https://github.com/uutils/coreutils/pull/9998
- hashsum, cksum: Move default stdin to clap by @oech3 in https://github.com/uutils/coreutils/pull/10043
- hashsum, cksum: Move --check confliction to clap by @oech3 in https://github.com/uutils/coreutils/pull/10041
- Remove hashsum by @RenjiSann in https://github.com/uutils/coreutils/pull/10587
- Additional hashsum cleanup by @oech3 in https://github.com/uutils/coreutils/pull/10622
head
- Consolidate legacy argument parsing for head/tail by @sylvestre in https://github.com/uutils/coreutils/pull/9727
- refactor(head): replace unsafe raw fd usage with safe AsFd API by @mattsu2020 in https://github.com/uutils/coreutils/pull/10161
hostid
- Avoid hostid > /dev/full panic by @oech3 in https://github.com/uutils/coreutils/pull/10172
id
- -p crashes with panic when the real GID doesn't exist in /etc/group by @sylvestre in https://github.com/uutils/coreutils/pull/9670
- Fix incorrect human-readable output by @frendsick in https://github.com/uutils/coreutils/pull/7814
install
- add FreeBSD's -U (unprivileged) option by @alexandrefresnais in https://github.com/uutils/coreutils/pull/9526
- prevent TOCTOU race attack by @Dolphindalt in https://github.com/uutils/coreutils/pull/10067
- install -dv a >/dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10541
join
- add benchmarks by @WaterWhisperer in https://github.com/uutils/coreutils/pull/10005
- add benchmark with the French locale by @WaterWhisperer in https://github.com/uutils/coreutils/pull/10025
- consider locale collation in field comparison by @WaterWhisperer in https://github.com/uutils/coreutils/pull/9982
- Benchmark join with actual Unicode data requiring locale collation by @sylvestre in https://github.com/uutils/coreutils/pull/10391
kill
- kill -1 should trigger an error by @sylvestre in https://github.com/uutils/coreutils/pull/9700
ln
- ln -svf /dev/null /tmp/a > /dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10539
logname
- logname > /dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10522
ls
- Make ls pass the GNU ls-misc.pl suite by @karanabe in https://github.com/uutils/coreutils/pull/9262
- Add SMACK support by @ChrisDryden in https://github.com/uutils/coreutils/pull/9868
- some improvements after #9431 by @sylvestre in https://github.com/uutils/coreutils/pull/10149
- fixes for capability coloring by @bkueng in https://github.com/uutils/coreutils/pull/8615
- Proper alignment for capabilities and ACLs notifications by @kimono-koans in https://github.com/uutils/coreutils/pull/8793
- fix symlink chain target coloring by @ChrisDryden in https://github.com/uutils/coreutils/pull/10274
mkdir
- create directories atomically with correct permissions by @rynewang in https://github.com/uutils/coreutils/pull/10036
- Add SMACK support to id, mkdir, mkfifo, mknod utilities by @ChrisDryden in https://github.com/uutils/coreutils/pull/9910
- chore: add test for setgid bit inheritance in mkdir -p by @0xferrous in https://github.com/uutils/coreutils/pull/10412
- mkdir -pv a >/dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10540
mkfifo
- replace unsafe libc::mkfifo with nix::unistd::mkfifo by @sylvestre in https://github.com/uutils/coreutils/pull/10112
- do not change permission when failed to create by @w007878 in https://github.com/uutils/coreutils/pull/10376
- error when non-file permission mode set by @w007878 in https://github.com/uutils/coreutils/pull/10372
mknod
- Avoid major/minor No overflow by @oech3 in https://github.com/uutils/coreutils/pull/10196
- fix SELinux cleanup when context setting fails by @ChiamakaUI in https://github.com/uutils/coreutils/pull/10582
mktemp
- Fix template validation to require trailing consecutive Xs by @Xylphy in https://github.com/uutils/coreutils/pull/10224
- treat empty TMPDIR as unset and fallback to /tmp by @reubenwong97 in https://github.com/uutils/coreutils/pull/10566
more
- file status made more idiomatic. by @devnexen in https://github.com/uutils/coreutils/pull/10151
- test(more): Fix test_from_line_option race condition by increasing PTY delay by @naoNao89 in https://github.com/uutils/coreutils/pull/9629
mv
- Adding fixes for i-3 GNU tests related to tty output when file is not writeable by @ChrisDryden in https://github.com/uutils/coreutils/pull/9599
- support moving folder containing symlinks to different filesystem by @yuankunzhang in https://github.com/uutils/coreutils/pull/8605
- test_mv.rs: Remove ignore from test_mv_broken_symlink_to_another_fs by @oech3 in https://github.com/uutils/coreutils/pull/9978
- test-mv: Use temporary directory in /dev/shm by @3v1n0 in https://github.com/uutils/coreutils/pull/10439
nice
- use Command::exec() instead of libc::execvp() by @Ecordonnier in https://github.com/uutils/coreutils/pull/9612
- simplify the code by @sylvestre in https://github.com/uutils/coreutils/pull/9931
- nice -n huge_num true by @oech3 in https://github.com/uutils/coreutils/pull/10213
- nice > /dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10524
nl
- preserve raw bytes in output instead of using from_utf8_lossy by @ChrisDryden in https://github.com/uutils/coreutils/pull/9673
nohup
- use POSIXLY_CORRECT to determine failure exit code by @ChrisDryden in https://github.com/uutils/coreutils/pull/9685
nproc
- Avoid nproc > /dev/full panic by @oech3 in https://github.com/uutils/coreutils/pull/10157
numfmt
- add --debug flag to print warnings about invalid input (#10110)
- add --unit-separator option for output formatting by @ChrisDryden in https://github.com/uutils/coreutils/pull/10108
- support non-UTF8 delimiters for locales like GB18030 by @ChrisDryden in https://github.com/uutils/coreutils/pull/10079
- align error messages for suffixes by @sbentmar in https://github.com/uutils/coreutils/pull/9887
pr
- Enable pr-tests.pl with suppressed diff output by @ChrisDryden in https://github.com/uutils/coreutils/pull/9829
- add -b flag for backwards compatibility by @ChrisDryden in https://github.com/uutils/coreutils/pull/9993
- allow character, block, and fifo devices as input by @SaathwikDasari in https://github.com/uutils/coreutils/pull/9946
- use 72 char line width for all page headers by @jfinkels in https://github.com/uutils/coreutils/pull/10059
- add default values for -s and -S separator options by @ChrisDryden in https://github.com/uutils/coreutils/pull/10073
- add -T/--omit-pagination option by @ChrisDryden in https://github.com/uutils/coreutils/pull/10107
- uniformly scan for form feed and newline chars by @jfinkels in https://github.com/uutils/coreutils/pull/10303
- refactor common code for reading from file by @jfinkels in https://github.com/uutils/coreutils/pull/10334
- ignore empty line after form feed char by @jfinkels in https://github.com/uutils/coreutils/pull/10331
- ignore empty line after newline char by @jfinkels in https://github.com/uutils/coreutils/pull/10332
- remove unused lines_printed variable by @jfinkels in https://github.com/uutils/coreutils/pull/10474
printenv
- Fix printenv non-UTF8 by @RenjiSann in https://github.com/uutils/coreutils/pull/9728
printf
- Format String Parsing Overflow Causes Panic by @sylvestre in https://github.com/uutils/coreutils/pull/9693
- printf 1 > /dev/full is not silent by @oech3 in https://github.com/uutils/coreutils/pull/10171
ptx
- fix incorrect column width calculation and padding logic by @CrazyRoka in https://github.com/uutils/coreutils/pull/9681
- implement -S/--sentence-regexp by @CrazyRoka in https://github.com/uutils/coreutils/pull/9682
- fix panic when reference length exceeds line width by @CrazyRoka in https://github.com/uutils/coreutils/pull/9816
- handle invalid regex arguments gracefully instead of panicking by @CrazyRoka in https://github.com/uutils/coreutils/pull/9825
- handle duplicate input files by @CrazyRoka in https://github.com/uutils/coreutils/pull/9823
readlink
- readlink /etc/mtab > /dev/full panics by @oech3 in https://github.com/uutils/coreutils/pull/10525
rm
- fix safe traversal/access by @mattsu2020 in https://github.com/uutils/coreutils/pull/9577
- fix error reporting for -r on Linux fixing #9011 by @ChrisDryden in https://github.com/uutils/coreutils/pull/10111
- don't treat symlinks as write-protected by @GomesGoncalo in https://github.com/uutils/coreutils/pull/10232
- no abbreviation no preserve root by @cerdelen in https://github.com/uutils/coreutils/pull/10205
- fix for -rf ./ and variants silently delete current directory by @jacek-kurlit in https://github.com/uutils/coreutils/pull/9924
rmdir
- Remove all trailing slashes when checking for symlinks by @cerdelen in https://github.com/uutils/coreutils/pull/9983
runcon
- use
Command::exec()instead oflibc::execvp()by @Ecordonnier in https://github.com/uutils/coreutils/pull/9611 - add missing utilities to enable tests/runcon/runcon-compute and removing PATH from runcon -c by @ChrisDryden in https://github.com/uutils/coreutils/pull/10088
seq
- add SIGPIPE handling for GNU compatibility by @ChrisDryden in https://github.com/uutils/coreutils/pull/9657
- Change fuzz_seq_parse_number to should_pass: false by @sylvestre in https://github.com/uutils/coreutils/pull/10335
shred
- ensure deterministic pass sequence compatibility with reference implementation by @sylvestre in https://github.com/uutils/coreutils/pull/9317
- fix(shred): stop immediately on write errors by @naoNao89 in https://github.com/uutils/coreutils/pull/9649
shuf
- Add
--random-seed, make--random-sourceGNU-compatible, report write failures, optimize by @blyxxyz in https://github.com/uutils/coreutils/pull/7585 - optimize numeric output by avoiding write!() by @CrazyRoka in https://github.com/uutils/coreutils/pull/10048
- Tune performance for -i 1-1000000 by @oech3 in https://github.com/uutils/coreutils/pull/10478
sort
- Add legacy +POS/-POS handling in sort to pass GNU sort-field-limit test by @karanabe in https://github.com/uutils/coreutils/pull/9501
- remove unsafe by @xtqqczze in https://github.com/uutils/coreutils/pull/9694
- fix(sort): GNU sort-continue.sh test by @mattsu2020 in https://github.com/uutils/coreutils/pull/9107
- Align sort debug key annotations with GNU coreutils by @mattsu2020 in https://github.com/uutils/coreutils/pull/9468
- fixing locale benchmarks since locale is cached in OnceCell by @ChrisDryden in https://github.com/uutils/coreutils/pull/9914
- bench(sort): add general numeric benchmark by @mattsu2020 in https://github.com/uutils/coreutils/pull/10101
- feat(sort): add warning messages for obsolescent keys and options by @mattsu2020 in https://github.com/uutils/coreutils/pull/9900
- refine error handling and localize field parsing errors by @mattsu2020 in https://github.com/uutils/coreutils/pull/10068
- followup of #10068 by @sylvestre in https://github.com/uutils/coreutils/pull/10226
- gnu coreutils compatibility (sort float.sh) by @mattsu2020 in https://github.com/uutils/coreutils/pull/9839
- fix(sort): Enable locale-aware collation for UTF-8 locales by @quantum-encoding in https://github.com/uutils/coreutils/pull/9176
- gnu coreutils compatibility (sort.pl) by @mattsu2020 in https://github.com/uutils/coreutils/pull/9862
- gnu core utils test (sort-merge-fdlimit.sh) by @mattsu2020 in https://github.com/uutils/coreutils/pull/9849
- feat(sort): add locale-aware numeric sorting support(sort-h-thousands-sep.sh) by @mattsu2020 in https://github.com/uutils/coreutils/pull/9848
- FIX 10314 sort: locale-based collation is not supported by @Paol0B in https://github.com/uutils/coreutils/pull/10481
- fix: numeric sort (-n) does not recognize thousand separators by @Kaua-Klassmann in https://github.com/uutils/coreutils/pull/10339
split
- Added error when attempting to create file that already exists as directory by @max-amb in https://github.com/uutils/coreutils/pull/9945
stat
- fix(stat): Collection of fixes for stat(1) by @Alonely0 in https://github.com/uutils/coreutils/pull/9078
stdbuf
- use exec instead of forking by @Ecordonnier in https://github.com/uutils/coreutils/pull/9495
stty
- implemented hex and octal parsing for rows and columns by @ChrisDryden in https://github.com/uutils/coreutils/pull/9516
- columns env support and integration testing by @ChrisDryden in https://github.com/uutils/coreutils/pull/9490
- Added unit tests for stty.rs to improve test coverage by @naoNao89 in https://github.com/uutils/coreutils/pull/9094
- use stdin for TTY operations instead of /dev/tty by @ChrisDryden in https://github.com/uutils/coreutils/pull/9881
- Implemented input and output baud rate setting for stty by @ChrisDryden in https://github.com/uutils/coreutils/pull/9517
- bump libc & tmp stop musl-i686 by @oech3 in https://github.com/uutils/coreutils/pull/10072
- Add bad-speed.sh test script to fetch-gnu.sh by @ChrisDryden in https://github.com/uutils/coreutils/pull/10077
- Add cfg_aliases by @oech3 in https://github.com/uutils/coreutils/pull/10443
- Don't panic when GNU provided stty 51 us by @oech3 in https://github.com/uutils/coreutils/pull/10526
sync
- Reset O_NONBLOCK flag after file validation to match GNU behavior by @naoNao89 in https://github.com/uutils/coreutils/pull/9437
tac
- fix error message by @cerdelen in https://github.com/uutils/coreutils/pull/9942
- use temp file for stdin to respect TMPDIR and handle disk-full errors by @ChrisDryden in https://github.com/uutils/coreutils/pull/10094
- add regex flavor translation for compatibility and new test case by @FidelSch in https://github.com/uutils/coreutils/pull/10416
- tac, tail, dd: detect closed stdin before Rust sanitizes it to /dev/null by @ChrisDryden in https://github.com/uutils/coreutils/pull/9664
tail
- fix: patch inotify-dir-recreate test for notify crate's threaded inotify by @ChrisDryden in https://github.com/uutils/coreutils/pull/9666
- Removing flaky inotify-dir patch by @ChrisDryden in https://github.com/uutils/coreutils/pull/9800
- fix --pid with FIFO by using non-blocking open by @ChrisDryden in https://github.com/uutils/coreutils/pull/9663
- fix big number handling and error message quoting by @ChrisDryden in https://github.com/uutils/coreutils/pull/10155
- add --debug flag to show follow implementation mode by @ChrisDryden in https://github.com/uutils/coreutils/pull/10105
- fix pipe-f test by detecting broken stdout pipe by @ChrisDryden in https://github.com/uutils/coreutils/pull/10156
- Fix tail -c panics when requested bytes exceed file size by @dhr412 in https://github.com/uutils/coreutils/pull/10268
- tests: Add 'tests/tail/follow-name' to ignore list by @ChrisDryden in https://github.com/uutils/coreutils/pull/10297
- fix behaviour of
tail -n0in follow mode by @AnandajithS in https://github.com/uutils/coreutils/pull/9114 - Fixed passing -0 to tail. Closes #10191 by @trypsynth in https://github.com/uutils/coreutils/pull/10209
- fix -F to properly track symlinks with changing targets by @ChrisDryden in https://github.com/uutils/coreutils/pull/10158
tee
- allow multiple -a flags by @sylvestre in https://github.com/uutils/coreutils/pull/10293
- tee miss/ing 2>/dev/full should not abort by @oech3 in https://github.com/uutils/coreutils/pull/10637
test
- fixing unary operators that are getting parsed as argument instead of string literal by @georgepaulsen in https://github.com/uutils/coreutils/pull/9951
- Trim whitespace in integer comparisons by @dezgeg in https://github.com/uutils/coreutils/pull/10489
timeout
- cleanup return values by @Ecordonnier in https://github.com/uutils/coreutils/pull/9576
- use nix kill/setpgid to reduce unsafe by @mattsu2020 in https://github.com/uutils/coreutils/pull/10120
- backport timeout tests from master by @ChrisDryden in https://github.com/uutils/coreutils/pull/10195
- display signal 0 as '0' instead of 'EXIT' in verbose mode by @ChrisDryden in https://github.com/uutils/coreutils/pull/10194
- Improve error handling with explicit expect messages by @naoNao89 in https://github.com/uutils/coreutils/pull/9435
- add all signal handlers, pass on signals to child, add ignored signal handling by @ChrisDryden in https://github.com/uutils/coreutils/pull/10254
touch
- fix: touch -r: dangling symlink reference is accepted Fixes #9703 by @dshemetov in https://github.com/uutils/coreutils/pull/9732
- Use libc::UTIME_NOW in touch when updating time to now by @iburaky2 in https://github.com/uutils/coreutils/pull/9870
- fix: use jiff time for touch tests by @aaron-ang in https://github.com/uutils/coreutils/pull/10093
- extent a test for many device files by @oech3 in https://github.com/uutils/coreutils/pull/10199
truncate
- eliminate duplicate stat() syscall by @Jean-Christian-Cirstea in https://github.com/uutils/coreutils/pull/9527
tsort
- gnu misc tsort.pl by @mattsu2020 in https://github.com/uutils/coreutils/pull/9289
- perf (tsort) : avoid reading the whole input into memory and intern strings by @anastygnome in https://github.com/uutils/coreutils/pull/9872
- Disable tsort_input_parsing_heavy for being too intermittent by @sylvestre in https://github.com/uutils/coreutils/pull/10109
uname
- remove unwrap() for > /dev/full by @oech3 in https://github.com/uutils/coreutils/pull/10517
unexpand
- use byte count for multibyte characters for column width when using -a flag by @JaneIllario in https://github.com/uutils/coreutils/pull/9949
- add support for extended tab stop syntax (+N and /N) by @sylvestre in https://github.com/uutils/coreutils/pull/9265
- fix +0 and /0 handling, add integration tests by @ChrisDryden in https://github.com/uutils/coreutils/pull/10406
uniq
- optimize memory usage for ignore-case comparison by @CrazyRoka in https://github.com/uutils/coreutils/pull/10050
- rename
keys_differtokeys_are_equalby @cakebaker in https://github.com/uutils/coreutils/pull/10070
uptime
- Fix uptime on macOS using sysctl kern.boottime fallback by @naoNao89 in https://github.com/uutils/coreutils/pull/8908
- refactor(uptime): use FluentArgs for loadavg formatting in get_format by @mattsu2020 in https://github.com/uutils/coreutils/pull/10102
- Add -p, --pretty argument by @Ivan-Shaml in https://github.com/uutils/coreutils/pull/10143
users
- Avoid > /dev/full panic by @oech3 in https://github.com/uutils/coreutils/pull/10165
wc
- GNU wc-cpu.sh by @mattsu2020 in https://github.com/uutils/coreutils/pull/9144
- Ensure the output order of stdout and stderror remains unchanged. by @mattsu2020 in https://github.com/uutils/coreutils/pull/9905
- respect POSIXLY_CORRECT for word counting by @dhr412 in https://github.com/uutils/coreutils/pull/10344
- fix word undercount with invalid byte sequences by @dhr412 in https://github.com/uutils/coreutils/pull/10348
- --debug 2>/dev/full does not fail by @oech3 in https://github.com/uutils/coreutils/pull/10590
yes
- Silently handle broken pipe on windows by @ChrisDryden in https://github.com/uutils/coreutils/pull/10429
uucore
- use --suffix to enable backup mode by @jacek-kurlit in https://github.com/uutils/coreutils/pull/9741
- parser: add binary support to determine_number_system and parse_size by @csko in https://github.com/uutils/coreutils/pull/9659
- locale.rs: move more code outside of the unsafe block by @sylvestre in https://github.com/uutils/coreutils/pull/9720
- fix clippy::pedantic warnings in build.rs and generated locale code by @skjha98 in https://github.com/uutils/coreutils/pull/9837
- Remove lossy OS string conversions by @blyxxyz in https://github.com/uutils/coreutils/pull/9337
- document that libselinux caches is_selinux_enabled by @ChrisDryden in https://github.com/uutils/coreutils/pull/9873
- switch to
BigDecimal::powiimplementation by @xtqqczze in https://github.com/uutils/coreutils/pull/9957 - uucore/uptime: remove unreachable code on Windows by @cakebaker in https://github.com/uutils/coreutils/pull/9985
- fsext.rs: Replace getmntinfo with libc by @oech3 in https://github.com/uutils/coreutils/pull/10075
- refactor: use
jifffor safer time features by @aaron-ang in https://github.com/uutils/coreutils/pull/10118 - use the enable_pipe_errors instead of libc::signal by @sylvestre in https://github.com/uutils/coreutils/pull/10113
- feat: Expand safe directory traversal to all Unix platforms and fix related type conversions. by @abendrothj in https://github.com/uutils/coreutils/pull/9792
- simplify cfg checks in signals.rs by @sylvestre in https://github.com/uutils/coreutils/pull/10296
- centralize SIGPIPE handling in main macro by @ChrisDryden in https://github.com/uutils/coreutils/pull/10354
- uucore(fs): expand path normalization by @FidelSch in https://github.com/uutils/coreutils/pull/10532
uudoc
- style(uudoc): update header formatting for options and examples by @hwhsu1231 in https://github.com/uutils/coreutils/pull/10004
- print tldr.zip warning only once per process by @rynewang in https://github.com/uutils/coreutils/pull/10039
coreutils
- Remove limitation for prefix by @oech3 in https://github.com/uutils/coreutils/pull/10261
- Drop find_prefixed_util by @oech3 in https://github.com/uutils/coreutils/pull/10306
- uu: fix typo by @antonkesy in https://github.com/uutils/coreutils/pull/10170
- fix: properly handle write errors for --version and --help output by @naoNao89 in https://github.com/uutils/coreutils/pull/10223
Platform Support
- Add more Cygwin support by @500-internal-server-error in https://github.com/uutils/coreutils/pull/9686
- Bump mio for cygwin by @oech3 in https://github.com/uutils/coreutils/pull/9809
- clippy: allow "cygwin" as value for "target_os" by @cakebaker in https://github.com/uutils/coreutils/pull/10054
- fix: allow selinux on android by @xtqqczze in https://github.com/uutils/coreutils/pull/10419
- runcon, chcon: Don't fetch crates at unsupported target by @oech3 in https://github.com/uutils/coreutils/pull/10360
CI & Build
- GnuTests: Reduce gnproc deps on BSD by @oech3 in https://github.com/uutils/coreutils/pull/9644
- GnuTests: Split online process to a script by @oech3 in https://github.com/uutils/coreutils/pull/9652
- GnuTests: Caches for faster configure and skipping make by @oech3 in https://github.com/uutils/coreutils/pull/9627
- run-gnu-test.sh: Fix nproc broken by cache by @oech3 in https://github.com/uutils/coreutils/pull/9735
- build-gnu.sh: Move {ch,run}con tests to Fedora VM and avoid wrong result by @oech3 in https://github.com/uutils/coreutils/pull/9607
- GnuTests.yml: Fix caches by @oech3 in https://github.com/uutils/coreutils/pull/9739
- build-gnu.sh: Don't hack test suite to force-enable tests by @oech3 in https://github.com/uutils/coreutils/pull/9744
- GnuTests.yml: Discard caches at each build-gnu.sh update by @oech3 in https://github.com/uutils/coreutils/pull/9753
- build-gnu.sh: Enable test/df/no-mtab-status.sh by @oech3 in https://github.com/uutils/coreutils/pull/9759
- GNUmakefile: Prepend PROG_PREFIX to LIBSTDBUF_DIR too by @oech3 in https://github.com/uutils/coreutils/pull/9068
- build-gnu.sh: correct path suggestion for fetch-gnu.sh by @nutthawit in https://github.com/uutils/coreutils/pull/9788
- is_a_tty.sh: Reduce lines by @oech3 in https://github.com/uutils/coreutils/pull/9814
- ci: add Non UTF8 locale for GNU tests by @ChrisDryden in https://github.com/uutils/coreutils/pull/9807
- Avoid wrong PASS of cp-mv-enotsup-xattr runcon-compute and enable 1 test by @oech3 in https://github.com/uutils/coreutils/pull/9743
- CI: Add SMACK test runner for GNU tests by @ChrisDryden in https://github.com/uutils/coreutils/pull/9888
- openbsd ci: try to remove more temporary files by @sylvestre in https://github.com/uutils/coreutils/pull/9904
- build-gnu.sh: Use MULTICALL=y and skip not used utils for faster build by @oech3 in https://github.com/uutils/coreutils/pull/9567
- CICD.yml: Avoid no space left much more by @oech3 in https://github.com/uutils/coreutils/pull/9907
- GnuTests.yml: Stop manpage generation to reduce size of log by @oech3 in https://github.com/uutils/coreutils/pull/9943
- CICD.yml: Avoid no space left again by @oech3 in https://github.com/uutils/coreutils/pull/9939
- GnuTests: Drop texinfo dep by @oech3 in https://github.com/uutils/coreutils/pull/9944
- GnuTests.yml: install Rust without rustfmt by @cakebaker in https://github.com/uutils/coreutils/pull/9947
- openbsd.yml: Replace cargo cache related disk space hack by @oech3 in https://github.com/uutils/coreutils/pull/9917
- GnuTests.yml: Drop autopoint by @oech3 in https://github.com/uutils/coreutils/pull/9965
- GnuTests.yml: Drop git from VM by @oech3 in https://github.com/uutils/coreutils/pull/9969
Code Quality & Cleanup
- clippy: fix map_unwrap_or lint by @xtqqczze in https://github.com/uutils/coreutils/pull/9678
- clippy: fix ptr lints by @xtqqczze in https://github.com/uutils/coreutils/pull/9687
- clippy: enable
needless_raw_string_hasheslint by @cakebaker in https://github.com/uutils/coreutils/pull/9840 - clippy: fix uninlined_format_args lint by @xtqqczze in https://github.com/uutils/coreutils/pull/9962
- Enable clippy::assigning_clones on OpenBSD by @xtqqczze in https://github.com/uutils/coreutils/pull/9956
- Bump
signal-hook& add it to skip list by @cakebaker in https://github.com/uutils/coreutils/pull/9979 - benchmark: some minor improvements by @sylvestre in https://github.com/uutils/coreutils/pull/9928
- mac: change the delay value to avoid intermittent by @sylvestre in https://github.com/uutils/coreutils/pull/9895
- fix test_backup_mode_suffix_without_backup_option test on mac by @sylvestre in https://github.com/uutils/coreutils/pull/9891
- fix: reduce factor parallel test runtime by @aaron-ang in https://github.com/uutils/coreutils/pull/10136
- deny.toml: add
constant_time_eqto skip list by @cakebaker in https://github.com/uutils/coreutils/pull/10137 - deny.toml: remove
constant_time_eqfrom skip list by @cakebaker in https://github.com/uutils/coreutils/pull/10176 - fix: handle /dev/full write errors gracefully by @naoNao89 in https://github.com/uutils/coreutils/pull/10062
- benchmarks: reduce allocations in run_util_function by @xtqqczze in https://github.com/uutils/coreutils/pull/10378
- uutests: replace unsafe
libc::statwithnix::statby @xtqqczze in https://github.com/uutils/coreutils/pull/10364 - deny.toml: remove
wasifrom skip list by @cakebaker in https://github.com/uutils/coreutils/pull/10355 - fuzz: fix clippy lints by @xtqqczze in https://github.com/uutils/coreutils/pull/10466
- clippy: fix used_underscore_binding lint by @xtqqczze in https://github.com/uutils/coreutils/pull/10058
- clippy: fix needless_continue lint by @xtqqczze in https://github.com/uutils/coreutils/pull/10340
- clippy: remove assigning_clones lint suppression by @xtqqczze in https://github.com/uutils/coreutils/pull/10377
- clippy: fix map_clone lint by @xtqqczze in https://github.com/uutils/coreutils/pull/10619
- deny.toml: remove unmatched items from skip list by @xtqqczze in https://github.com/uutils/coreutils/pull/10605
- refactor: rename print functions to write for consistency by @xtqqczze in https://github.com/uutils/coreutils/pull/10536
- editorconfig: specify toml settings by @xtqqczze in https://github.com/uutils/coreutils/pull/10601
Documentation
- README.md: Guide people to release page or main by @oech3 in https://github.com/uutils/coreutils/pull/9709
- DEVELOPMENT.md: Remove a wrong desc by @oech3 in https://github.com/uutils/coreutils/pull/9717
- why-error.md: Cleanup by @oech3 in https://github.com/uutils/coreutils/pull/9738
- why-error.md: Remove 2 tests by @oech3 in https://github.com/uutils/coreutils/pull/9799
- why-error.md: Remove 1 test by @oech3 in https://github.com/uutils/coreutils/pull/9826
- why-*.md: Drop as issue is enough by @oech3 in https://github.com/uutils/coreutils/pull/9835
- CONTRIBUTING.md: update crate structure by @cakebaker in https://github.com/uutils/coreutils/pull/9861
- CONTRIBUTING.md: Bug report with LANG=C by @oech3 in https://github.com/uutils/coreutils/pull/9890
- README.md: Avoid losting unix specific progs by @oech3 in https://github.com/uutils/coreutils/pull/9867
- DEVELOPMENT.md: mention nightly requirement for code coverage by @nutthawit in https://github.com/uutils/coreutils/pull/9919
- contrib: add info about expectations and ping by @sylvestre in https://github.com/uutils/coreutils/pull/10275
- {README,CONTRIBUTIONS}.md: Add link to binaries from latest commit by @oech3 in https://github.com/uutils/coreutils/pull/10280
- README.package.md: Fix MSRV by @oech3 in https://github.com/uutils/coreutils/pull/10485
Dependency Updates
- chore(deps): update rust crate console to v0.16.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9675
- chore(deps): update rust crate clap_complete to v4.5.62 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9698
- chore(deps): update rust crate zip to v7 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9731
- chore(deps): update rust crate crc-fast to v1.8.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9730
- chore(deps): update rust crate linux-raw-sys to v0.12.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9787
- chore(deps): update rust crate divan to v4.2.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9786
- chore(deps): update rust crate crc-fast to v1.9.0 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9791
- chore(deps): update rust crate jiff to v0.2.17 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9830
- chore(deps): update dawidd6/action-download-artifact action to v12 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9836
- chore(deps): update rust crate proc-macro2 to v1.0.104 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9878
- chore(deps): update rust crate bigdecimal to v0.4.10 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9880
- chore(deps): update actions/upload-artifact action to v6 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9896
- chore(deps): update rust crate self_cell to v1.2.2 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9927
- chore(deps): update rust crate clap_complete to v4.5.64 by @renovate[bot] in https://github.com/uutils/coreutils/pull/9909
- chore(deps): update rust crate clap to v4.5.54 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10000
- Bump libc to 0.2.178 with fix for FreeBSD by @oech3 in https://github.com/uutils/coreutils/pull/10046
- chore(deps): update rust crate jiff to v0.2.18 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10084
- chore(deps): update rust crate proc-macro2 to v1.0.105 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10085
- chore(deps): update rust crate quote to v1.0.43 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10087
- chore(deps): update rust crate libc to v0.2.179 by @renovate[bot] in https://github.com/uutils/coreutils/pull/8717
- chore(deps): update rust crate divan to v4.2.1 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10103
- chore(deps): update rust crate clap_complete to v4.5.65 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10106
- chore(deps): update rust crate libc to v0.2.180 by @renovate[bot] in https://github.com/uutils/coreutils/pull/10126
New Contributors
- @xtqqczze made their first contribution in https://github.com/uutils/coreutils/pull/9678
- @Jean-Christian-Cirstea made their first contribution in https://github.com/uutils/coreutils/pull/9527
- @jacek-kurlit made their first contribution in https://github.com/uutils/coreutils/pull/9741
- @csko made their first contribution in https://github.com/uutils/coreutils/pull/9659
- @nutthawit made their first contribution in https://github.com/uutils/coreutils/pull/9788
- @dshemetov made their first contribution in https://github.com/uutils/coreutils/pull/9732
- @500-internal-server-error made their first contribution in https://github.com/uutils/coreutils/pull/9686
- @CrazyRoka made their first contribution in https://github.com/uutils/coreutils/pull/9681
- @skjha98 made their first contribution in https://github.com/uutils/coreutils/pull/9837
- @alexandrefresnais made their first contribution in https://github.com/uutils/coreutils/pull/9526
- @iburaky2 made their first contribution in https://github.com/uutils/coreutils/pull/9870
- @georgepaulsen made their first contribution in https://github.com/uutils/coreutils/pull/9951
- @SaathwikDasari made their first contribution in https://github.com/uutils/coreutils/pull/9946
- @JaneIllario made their first contribution in https://github.com/uutils/coreutils/pull/9949
- @Dylans123 made their first contribution in https://github.com/uutils/coreutils/pull/9960
- @max-amb made their first contribution in https://github.com/uutils/coreutils/pull/9945
- @van-sprundel made their first contribution in https://github.com/uutils/coreutils/pull/9975
- @ffgan made their first contribution in https://github.com/uutils/coreutils/pull/10029
- @hwhsu1231 made their first contribution in https://github.com/uutils/coreutils/pull/10004
- @rynewang made their first contribution in https://github.com/uutils/coreutils/pull/10038
- @Thanhphan1147 made their first contribution in https://github.com/uutils/coreutils/pull/9757
- @AnuthaDev made their first contribution in https://github.com/uutils/coreutils/pull/10090
- @abendrothj made their first contribution in https://github.com/uutils/coreutils/pull/9792
- @antonkesy made their first contribution in https://github.com/uutils/coreutils/pull/10170
- @Ivan-Shaml made their first contribution in https://github.com/uutils/coreutils/pull/10143
- @bkueng made their first contribution in https://github.com/uutils/coreutils/pull/8615
- @Xylphy made their first contribution in https://github.com/uutils/coreutils/pull/10224
- @dhr412 made their first contribution in https://github.com/uutils/coreutils/pull/10268
Full Changelog: https://github.com/uutils/coreutils/compare/0.5.0...0.6.0