Releases: uutils/coreutils
0.3.0
π¦ Rust Coreutils 0.3.0 Release:
We are happy to announce the release of Rust Coreutils 0.3.0 β our latest milestone bringing significant performance improvements, enhanced compatibility, and robust testing infrastructure!
Highlights:
-
Performance Improvements
Compared to GNU:base64is 1.20x fasterexpandis 1.80x fasterunexpandis 1.50x fasternlis 1.57x fastersortis 3.72x faster for regular sorting and 1.46x faster for numeric sortingfoldis 1.19x faster through optimizationuniq -c: 1.13x faster
-
Comprehensive Benchmarking Infrastructure
- Integrated CodSpeed for continuous performance monitoring
- Added benchmarks for 15+ utilities including
sort,ls,uniq,du,base64, and more - Performance regression detection in CI
-
Safe Directory Traversal
- Implemented secure traversal using
openat/unlinkatforrm,du,chmod, andchgrp - Enhanced security through the
nixcrate instead of unsafelibccalls
- Implemented secure traversal using
-
Enhanced GNU Compatibility
- 532 passing tests (83.91% compatibility) with comprehensive test suite expansion
- Improved error handling and behavior matching across utilities
- Better Unicode and non-UTF8 path support
-
Developer Experience Improvements
- Moved documentation and completion generation out of binaries for faster builds
- Enhanced CI with parallel benchmark compilation
- Improved Makefile support for various build configurations
-
Contributions: This release was made possible by the dedication of 36 contributors, including 25 newcomers.
GNU Test Suite Compatibility:
Note: Test result changes are primarily due to upgrading our reference from GNU coreutils 9.7 to 9.8, which introduced 16 new tests and updated existing test expectations.
| Result | 0.2.0 | 0.3.0 | Change 0.2.0 to 0.3.0 | % Total 0.2.0 | % Total 0.3.0 | % Change 0.2.0 to 0.3.0 |
|---|---|---|---|---|---|---|
| Pass | 538 | 532 | -6 | 87.06% | 83.91% | -3.15% |
| Skip | 27 | 33 | +6 | 4.37% | 5.20% | +0.83% |
| Fail | 52 | 68 | +16 | 8.42% | 10.73% | +2.31% |
| Error | 1 | 1 | 0 | 0.16% | 0.16% | 0% |
| Total | 618 | 634 | +16 (new tests) |
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
base64
- Input reuse on base64 by @ThePseudo in #8587
- Add benchmark for base64 by @ThePseudo in #8768
basenc
- basenc: implement --base58 encoding option by @AnarchistHoneybun in #8751
- base58: it wasn't working properly with long input by @sylvestre in #8818
chgrp
- safe traversal: adjust chmod & chgrp to use it by @sylvestre in #8632
chmod
- safe traversal: adjust chmod & chgrp to use it by @sylvestre in #8632
cksum
- cksum: improve performance (Closes: #8573) by @RenjiSann in #8643
cp
- cp: fix Ioctl casting for ppc64 (Closes: #8161) by @maxfilov in #8637
- Replace casting to Ioctl with a const from libc by @maxfilov in #8641
- cp: fix recursive cp fails on files with trailing backslashes by @Anonymous-AAA in #8747
- feat(cp): optimize directory copy by caching file checks and refactoring calls by @mattsu2020 in #8805
- cp: fix crash on -T/--no-preserve-target by @Alonely0 in #8864
- cp: show relative path of source file with -vr by @Ada-Armstrong in #8887
- cp: display symlink creation with --verbose by @Ada-Armstrong in #8899
- docs: add benchmarking guidelines for cp by @mattsu2020 in #8807
csplit
- csplit: create final empty file with --suppress-matched to match GNU (fixes #7286) by @naoNao89 in #8655
date
- date: use --reference=file to display the file modification time by @yuankunzhang in #8630
- date: consolidate date parsing logic by @yuankunzhang in #8629
- date: implement
--resolutionflag by @Banzobotic in #8686 - date: follow GNU pure-number -d semantics by @naoNao89 in #8907
df
- df: follow symlinks by @bakanovskii in #8763
- df: add tracing zero and rounding by @bakanovskii in #8685
- df: treat env var with zero block size same as invalid by @Ada-Armstrong in #8932
- tests(df): Fix test_total to avoid whitespace parsing issues by @naoNao89 in #8799
dirname
du
- Adjust rm & du to use safe traversal (openat, unlinkat, etc) by @sylvestre in #8517
- du: some small refactorings by @cakebaker in #8631
- du: add benchmark by @sylvestre in #8774
- du: ignore env zero blocksize by @Ada-Armstrong in #8961
expand
- expand: add a benchmark by @sylvestre in #8800
- expand: improve the performances - 1.80 faster than GNU by @sylvestre in #8803
expr
- expr: fix some multibyte issues by @sylvestre in #8606
fold
- fold: add a benchmark by @sylvestre in #8801
- fold: improve the performances - now same as GNU by @sylvestre in #8804
hashsum
- hashsum: fix help text to show actual utility name by @AnarchistHoneybun in #8650
- hashsum: remove the usage of the mut by @sylvestre in #8692
- Patch to add hashsum symlinks with tests by @tpowa in #8647
- hashsum: improve hashsum using 32KiB bufreader by @psvri in #8869
hostname
- hostname: fix -d flag by @bakanovskii in #8657
- Build {host,u}name on Windows by @oech3 in #8950
id
install
- tests/install/install-Z-selinux: fix selinux for install by @sylvestre in #8307
ln
- Fix ln -f handling when source and destination are the same entry by @mattsu2020 in #8838
- Allow to replace ln -fs and hardlink on Windows by default by @oech3 in #8810
ls
- ls: Lazily obtain FileType, eagerly obtain Metadata when Metadata is available by @kimono-koans in #8753
- ls: remove unnecessary getgrgid handling for Redox OS by @Connor-GH in #8779
- ls: add some benchmarks by @sylvestre in #8738
- ls: Implement -f flag to disable sorting and enable -a by @naoNao89 in #8824
- ls: fix zero block size handling to match GNU ls by @yrakcaz in #8928
- tests(ls): Add GNU-compat TIME_STYLE tests (#4627) by @naoNao89 in #8796
mv
- mv: support moving source to a symlink directory by @yuankunzhang in #8589
- mv: improve the verbose mode to make tests/mv/mv-special-1.sh pass by @sylvestre in #8521
nl
- nl: add a benchmark by @sylvestre in #8808
- nl: improve the performances by @sylvestre in #8811
nohup
numfmt
- numfmt: add benchmark by @sylvestre in #8726
od
- od: fix options after filename issue by @Anonymous-AAA in #8624
- od: add support for -S by @sylvestre in #8849
*...
0.2.2
Rust Coreutils 0.2.2 Release:
This is a patch release focused on critical infrastructure fixes to ensure reliable distribution and deployment across different platforms.
We also improved the performance of base64 to be faster than the GNU implementation (1.56 times faster).
What's Changed
base64
- base64: improve perfs by using the base64-simd crate by @sylvestre in #8578
cp
nl
- nl: allow non-UTF8 section delimiter by @cakebaker in #8575
stty
- Avoid panic in stty by @julian-klode in #8559
uucore
- uucore/build.rs: rename function by @cakebaker in #8584
Distribution & Build
- manage the locales when the program is coming from crates.io by @sylvestre in #8571
- link musl libc statically by @Ecordonnier in #8585
- Prepare version 0.2.2 by @sylvestre in #8588
Documentation
- release notes: store a copy in-tree too by @sylvestre in #8564
Dependencies
- chore(deps): update rust crate winapi-util to v0.1.11 by @renovate[bot] in #8570
- fix(deps): update rust crate console to v0.16.1 by @renovate[bot] in #8577
- chore(deps): update rust crate chrono to v0.4.42 by @renovate[bot] in #8576
- chore(deps): update rust crate linux-raw-sys to 0.11 by @renovate[bot] in #8580
New Contributors
Full Changelog: 0.2.0...0.2.2
0.2.0
π¦ Rust Coreutils 0.2.0 Release:
We are excited to announce the release of Rust Coreutils 0.2.0 β our first fully internationalized release!
This milestone brings comprehensive localization support, major performance improvements, and enhanced Unicode handling.
Highlights:
-
Full Internationalization & Localization
Complete translation infrastructure using Mozilla's Fluent framework with French translations included.
Support for complex plural forms (Arabic, Hebrew, etc.) and locale-aware formatting.
Even error messages from clap are fully localizable! -
Community Translation Platform
Join our translation efforts at Weblate
or contribute directly via our l10n repository -
Unicode & Non-UTF8 Path Support
All programs now handle non-UTF8 paths seamlessly while supporting full Unicode features.
Example:echo "πππ₯€" | cut -d"π" -f1works perfectly with emoji delimiters! -
Massive Performance Gains
Notable example:trwent from 9.81x slower than GNU to 1.58x faster β a 15x improvement!
Additional optimizations in sort, cat, and other utilities. -
Enhanced GNU Compatibility
538 passing tests (+16 from 0.1.0), with reduced failures from 65 to 52.
Continued improvements in edge case handling and behavior matching. -
Production Ready for Ubuntu
As part of Ubuntu's announcement of plans to integrate Rust Coreutils, this release focuses on stability and compatibility improvements to ensure Ubuntu users have the best possible experience. -
Contributions
This release includes 1183 commits from 46+ contributors, including 28 newcomers!
All this with a code coverage about 87%!
GNU Test Suite Compatibility:
| Result | 0.1.0 | 0.2.0 | Change 0.1.0 to 0.2.0 | % Total 0.1.0 | % Total 0.2.0 | % Change 0.1.0 to 0.2.0 |
|---|---|---|---|---|---|---|
| Pass | 522 | 538 | +16 | 84.46% | 87.06% | +2.60% |
| Skip | 31 | 27 | -4 | 5.02% | 4.37% | -0.65% |
| Fail | 65 | 52 | -13 | 10.52% | 8.42% | -2.10% |
| Error | 0 | 1 | +1 | 0% | 0.16% | +0.16% |
| Total | 618 | 618 | 0 |
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
- allow non-UTF8 filenames by @cakebaker in #8558
basename
- Simply logic, do not trim path separators
/by @drinkcat in #8372 - handle a corner case with /. - Closes #8373 by @sylvestre in #8374
- Handle non-unicode parameters by @drinkcat in #8375
cat
- Fix reporting "input file is output file" error when outputting to an input file by @frendsick in #8025
- add error handling in write_fast function by @yuankunzhang in #8091
- handle broken pipe gracefully by @tgrez in #8336
chmod
- fix recursive symlink handling for -H/-L/-P flags (Closes: #8422) by @sylvestre in #8450
- remove Windows function & unnecessary cfgs by @cakebaker in #8458
- make a test environment-agnostic by @sylvestre in #8525
chown
- fix --reference file syntax by @Anonymous-AAA in #8492
chroot
- remove unwrap calls by @jovielarue in #7890
cksum
- remove duplicate unit test by @cakebaker in #8151
- Fix file quoting on stderr by @RenjiSann in #8272
- two small refactorings by @cakebaker in #8527
cp
- migrate from quick-error to thiserror by @vikram-kangotra in #7989
- clean existing file when copy from stream by @Luv-Ray in #8149
- let
claprender help & version by @cakebaker in #8199 - Fix --no-dereference --parents with symlink source by @julian-klode in #8331
- Try to change gid only if changing uid+gid fails by @drinkcat in #8385
- Properly preserves fifos and symlink attributes by @drinkcat in #8416
- fix directory permission preservation for sibling directories with -a (Closes: #8407) by @sylvestre in #8449
- fix recursive socket file copy by @Anonymous-AAA in #8478
csplit
- fix two issues with non ASCII digits by @cakebaker in #8020
date
- date/ls: Switch from chrono to jiff by @drinkcat in #7894
- update deprecated TZ by @sylvestre in #8405
- allow multiple
-d, last wins by @cakebaker in #8507 - add hidden aliases --rfc-2822/822 for GNU compat by @schopin-pro in #8550
df
du
- create the string into the main thread to avoid some translations issue by @sylvestre in #8338
- du/ls: Merge date formatting code, and handle timestamps far in the future/past by just printing them by @drinkcat in #8390
du/ls: Unify file metadata time handling by @drinkcat in #8396du/ls: Improve time-style handling based on GNU coreutils manual by @drinkcat in #8415
echo
- fixed double hyphen as argument by @cerdelen in #7581
- Remove clap for echo by @cerdelen in #7603
- print help if not posixly correct and only argument is --help by @RGBCube in #8310
- show version when
--versionis the only argument by @cakebaker in #8341
env
- use execvp instead of Command::status on Unix systems by @yuankunzhang in #8365
- invalid syntx with the french fluent file by @sylvestre in #8530
expr
- Handle more special cases for regex pattern by @frendsick in #7974
- Fix parsing range quantifiers in regex by @frendsick in #7997
- Fix handling of regex range quantifiers by @frendsick in #8010
- Remove
expr.plfromwhy-error.mdby @frendsick in #8022 - fix substr parsing by @tgrez in #8158
- fix builtin functions precedence by @tgrez in #8162
factor
- fix two "unused import" warnings in test by @cakebaker in #8526
fmt
- Fix the last two GNU tests for fmt by @sylvestre in #8264
fold
- process streams as bytes, not strings, to handle non-utf8 data by @phinjensen in #8241
hashsum
head
- fix bug with non-terminated files. by @karlmcdowall in #7484
- fix meaning of ---presume-input-pipe by @bvinc in #8315
- remove
BadEncodingvariant ofHeadErrorby @cakebaker in #8484 - refactor
uumainby @cakebaker in #8497
install
- don't error when multiple arguments of the same type are given, instead override with last one (#8033) by @jenningsfan in #8053
- implement option -C by @sylvestre in #8265
- use
boolas return type ofneed_copyby @cakebaker in #8288 - Fix --no-target-directory with existing file by @julian-klode in #8412
- install, mkdir: Handle dir/./ like dir/. by @julian-klode in #8366
ln
- fix #6350 by @RenjiSann in #7449
- rename error variant b...
0.1.0
π¦ Rust Coreutils 0.1.0 Release:
We are excited to announce the release of Rust Coreutils 0.1.0 β our first 0.1 milestone!
This release brings major performance gains, SELinux support, and expanded GNU compatibility.
Highlights:
-
SELinux Support
New SELinux integration incp,ls,mkdir,mknod,mkfifo,install, andstat.
Plus, SELinux-aware CI testing is now live! -
Performance Improvements
Notable speedups incat,ls,wc,tail,seq, and more β many now match or exceed GNU performance. -
Ubuntu Plans to Ship uutils
Ubuntu is beginning to integrate Rust Coreutils into its base system!
β€ Oxidizing Ubuntu -
Huge Contribution Wave
This release includes 843 commits from 60+ contributors, including 40 newcomers!
GNU Test Suite Compatibility:
| Result | 0.0.30 | 0.1.0 | Change 0.0.30 to 0.1.0 | % Total 0.0.30 | % Total 0.1.0 | % Change 0.0.30 to 0.1.0 |
|---|---|---|---|---|---|---|
| Pass | 507 | 522 | +15 | 82.17% | 84.46% | +2.29% |
| Skip | 41 | 31 | -10 | 6.65% | 5.02% | -1.63% |
| Fail | 69 | 65 | -4 | 11.18% | 10.52% | -0.66% |
| Total | 617 | 618 | +1 (new test) |
Call to Action:
π Sponsor us on GitHub to help us grow faster: github.com/sponsors/uutils
π Download the latest release & learn more: https://uutils.github.io
What's Changed
basenc
- base32/base64/basenc: add -D flag by @TerakomariGandesblood in #7479
cat
- cat: Improve performance of formatting. by @karlmcdowall in #7519
- cat: bugfix when running with -T option by @karlmcdowall in #7636
- cat: Formatting performance improvement by @karlmcdowall in #7642
- cat: Performance improvement when printing line numbers by @karlmcdowall in #7645
chmod
chroot
cksum
cp
- cp: Use FICLONE ioctl constant from linux-raw-sys by @dezgeg in #7439
- cp: fix update prompting by @hz2 in #7668
- cp -P hardlink-to-symlink hardlink-to-same-symlink should no-op by @dan-hipschman in #7753
- cp: refuse to copy symlink over itself by @dan-hipschman in #7729
- cp: use
authors.workspaceinCargo.tomlby @cakebaker in #7882 - cp: improve the selinux support by @sylvestre in #7878
- cp: context Disable a check in tests/cp/no-ctx.sh by @sylvestre in #7938
- cp: copy dir if source path ends with dot by @cakebaker in #7874
csplit
- csplit: removed unnecesary implementation of Fromio::Error by @lukasx999 in #7778
- csplit: don't add a newline if the file doesn't end with one by @Qelxiros in #7901
date
- date: allow negative date offsets by @lewisboon in #7548
- date: add tests for relative weekdays by @dan-hipschman in #7843
- date: move file header to top & merge some imports by @cakebaker in #7857
- refactor(tests): use absolute difference of dates to check if they are within a window by @lavafroth in #7755
dd
df
- refactor: Add thiserror to df by @kiran-4444 in #7545
- df: migrate OptionsError to thiserror by @lewisboon in #7673
- fix: df: filter filesystem types after mount point resolution by @SergeiPatiakin in #7452
du
- du: don't panic on block-size 0 by @BenWiederhake in #7742
- du: fix "function never used" warning in test by @cakebaker in #7943
echo
- echo: fixed double hyphen as argument by @cerdelen in #7581
- Remove clap for echo by @cerdelen in #7603
env
- env: ignore flags after the command or -- argument by @dan-hipschman in #7781
- docs: env doesn't handle the empty string as a variable name by @Qelxiros in #7956
expr
- expr: Refactor AST evaluation to avoid stack overflow by @LouisDISPA in #7388
- expr: Escape anchor characters within pattern by @frendsick in #7842
- expr: Fix regex anchor matching behavior with
REGEX_OPTION_SINGLELINEby @frendsick in #7846 - expr: Fix parsing negated character classes "[^a]" by @frendsick in #7884
- expr: Fix parsing regex anchors '^' and '$' by @frendsick in #7953
false
- true,false: remove unnecessary newline from version string by @cakebaker in #7446
fmt
- chore: minor fmt match cleanup by @nyurik in #7722
- Run cargo fmt on missed files by @BenWiederhake in #7949
- ci: run
cargo fmt --checkinfuzzfolder by @cakebaker in #7958
head
- head: rework handling of non-seekable files by @karlmcdowall in #7438
- head: fix overflow errors by @Qelxiros in #7721
hostid
- hostid: use
gethostidfrom Rustlibcby @cakebaker in #7571
hostname
- Bump
hostname& removewindows-corefrom skip list by @cakebaker in #7713
id
- bug: fix id printing of egid by @nyurik in #7696
- id: Handle NULL pointer gracefully within
cstr2cowmacro by @frendsick in #7810 - id: adapt error message to match the one from GNU
idby @cakebaker in #7836 - id: The
--realflag should only affect-u,-g, and-Gby @frendsick in #7796 - id: remove unnecessary
to_stringcalls by @cakebaker in #7914
install
- install: friendly message install file to directory by @zhw2101024 in #7794
- install: fixes issue #7795 by @zcg00 in #7838
- Install implement the --no-target-directory option by @zhw2101024 in #7867
- install: remove todos by @cakebaker in #7872
- ci: install
libselinux1-devfor coverage job by @cakebaker in #7959 - selinux: start the support of install by @sylvestre in #7908
ls
- ls: More performance optimizations by @drinkcat in #7813
- ls: add -T support and fix --classify output by @emar-kar in #7616
- ls: add selinux support by @sylvestre in #7768
- ls: Print optimizations by @drinkcat in #7801
- ls: update chrono crate version and switch to
new_lenientuse by @emar-kar in #7858 - ls: remove duplicate code by @cakebaker in #7932
- test_ls: Improve test_ls_perm_io_errors by @drinkcat in #7811
mkdir
- mkdir: add the selinux support by @sylvestre in #7635
mkfifo
- mkfifo: implement selinux support by @sylvestre in #7831
mknod
- mknod: remove windows-related code & flags by @cakebaker in #7821
- mknod: implement selinux support by @sylvestre in #7818
- mknod: rename function
_mknodtomknodby @cakebaker in #7824 - mknod: refactor
uumainby @cakebaker in #7825 - mknod: remove duplicate test...
0.0.30
π¦ Rust Coreutils 0.0.30 Release:
We are excited to announce the release of Rust Coreutils 0.0.30!
Highlights:
- Improved Compatibility:
- This release focused on compatibility with the upstream GNU Coreutils 9.6 release. This is why the number of passing tests didn't change much - our effort was directed at adapting to the new upstream version rather than fixing existing test failures.
- Passing GNU tests increased to 507 (+1 compared to 0.0.29).
- Contributions: This release was made possible by the dedication of 22 contributors, including 8 newcomers.
- We also announced at FOSDEM the extension of this project to cover other key Linux tools through our uutils initiative. This will extend the Rust rewrite effort to additional common Unix tools. See the presentation on YouTube (slides) or read the LWN article for more details about our vision.
GNU Test Suite Compatibility:
Here's how version 0.0.30 compares to the previous release:
| Result | 0.0.29 | 0.0.30 | Change 0.0.29 to 0.0.30 | % Total 0.0.29 | % Total 0.0.30 | % Change 0.0.29 to 0.0.30 |
|---|---|---|---|---|---|---|
| Pass | 506 | 507 | +1 | 82.38% | 82.17% | -0.21% |
| Skip | 41 | 41 | 0 | 6.68% | 6.65% | -0.03% |
| Fail | 67 | 69 | +2 | 10.92% | 11.18% | +0.26% |
| Total | 614 | 617 | +3 (new tests) |
Call to Action:
Support our work by sponsoring us on GitHub! Your contributions directly help maintain our infrastructure and enable faster development. Sponsor us here.
For more details and to download the latest release, visit our website: https://uutils.github.io.
What's Changed
cat
chgrp
- add option --from by @sylvestre in #7129
- gnu/tests/chgrp/from.sh is now fixed by @sylvestre in #7205
cksum
- Fix #6375 and un-ignore now passing tests by @RenjiSann in #7261
- Update error and flags handling to improver GNU's match by @RenjiSann in #7192
- add CRC32B algorithm added in GNU 9.6 by @RenjiSann in #7169
- replace
is_some_andwithis_none_orby @cakebaker in #7403
cp
- disabled verbose output if file has been skipped by @BigPapa314 in #7347
- fix verbose output order after prompt by @aimerlief in #7287
csplit
echo
expr
- Add tests by @RenjiSann in #7356
- Evaluate parenthesis content before checking for closing parenthesis by @RenjiSann in #7332
- Fix assorted test errors in tests/expr/expr.pl by @sargas in #6134
- Get rid of clap for performance reasons by @RenjiSann in #7352
install
- Document install-C test failure by @sylvestre in #7223
head
- ensure stdin input stream is correct on exit by @karlmcdowall in #7253
- Fix bug printing large non-seekable files by @karlmcdowall in #7294
- fix bug reading back through files by @karlmcdowall in #7248
- improve error mgmt. by @sylvestre in #7408
- Remove a head test from the list of failure by @sylvestre in #7414
kill
- don't allow lowercase signal names with '-' by @cakebaker in #7206
- fix the fail to use only least significant bits to identify signal with -l by @Felle33 in #7225
- list signal
0with-land-tby @cakebaker in #7193 - test "-l " & adapt error messages by @cakebaker in #7213
ls
- display %Z alphabetic time zone abbreviation by @jfinkels in #7154
- Refactoring ls and date by @Felle33 in #7194
- gnu patches: adapt
tests_ls_no_cap.patchto GNUcoreutils 9.6by @cakebaker in #7163
mv
- show prompt for
-u --interactiveby @cakebaker in #7178 - Make mv command fallback to copy only if the src and dst are on different device by @hamflx in #6040
numfmt
- extract test from other test & expand it by @cakebaker in #7155
- fix Unit::SI uses lowercase
ksuffix for kilos by @alexsnaps in #7322 - fix from iec-i without suffix are bytes by @alexsnaps in #7323
od
printf
- (partially) fix hex format: exponent is decimal, correctly print negative numbers by @drinkcat in #7365
- Show warning message in case of excess arguments by @RenjiSann in #7239
- error on missing hexadecial escape value by @jfinkels in #7259
- negative asterisk param changes alignment by @RenjiSann in #7246
- Re-enable integer overflow test case for printf by @jfinkels in #7168
rm
- add two passing tests for -i option by @jfinkels in #7306
- correct prompt for removing inaccessible dir by @jfinkels in #7325
- simplify remove_dir() helper function by @jfinkels in #7308
- use recursive directory traversal with --recursive by @jfinkels in #7304
seq
sort
- errors on overflowing -k argument but shouldn't by @ic3man5 in #7188
- needs support for human-readable block size suffixes R and Q by @ic3man5 in #7198
- options -C and -c should be mutually exclusive but aren't by @ic3man5 in #7191
- support percent arguments to -S option by @jfinkels in #7181
split
tee
- fix -p behavior upon broken pipe stdout by @RenjiSann in #7273
- fix usage of deprecated function in tests by @cakebaker in #7341
test
- add < and > operators for string comparison by @jfinkels in #7315
- remove
sleepfrom tests by @cakebaker in #7327
timeout
- add support for
-fand-pshort options by @cakebaker in #7200
touch
tr
- Fix GNU behavior deviation by @RenjiSann in #7320
uptime
- refactor, move some codes to uucore by @Bluemangoo in #7289
- remove duplicate test by @cakebaker in #7265
yes
- fix use of deprecated function in test by @cakebaker in #7348
uucore
- Add missing dependencies by @sylvestre in #7157
- Fix proc_info compilation by @dezgeg in #7385
- Sync proc_info methods from procps by @dezgeg in #7351
- remove
lazy_staticand useLazyLockinstead by @cakebaker in #7404 - replace
PanicInfowithPanicHookInfoby @cakebaker in #7395 - uucore/docs.rs: generate the doc for all features by @sylvestre in #7220
Documentation
- Fix usage strings for #5692 by @rwdj in #7303
- why-error.md: document more errors by @sylvestre in #7224
Build & CI
- add words to
spell-checker:ignorein two...
0.0.29
π¦ Rust Coreutils 0.0.29 Release:
We are excited to announce the release of Rust Coreutils 0.0.29!
Highlights:
- Improved Compatibility:
- Passing GNU tests increased to 506 (+30 compared to 0.0.28).
- Failing tests reduced to 67 (-27 compared to 0.0.28).
- Contributions: This release was made possible by the dedication of 32 contributors, including 18 newcomers.
- Compared with 0.0.28, several commands now achieve 100% compatibility with GNU tests, including
df,dircolors,chmod,chroot,comm,seq,split,uniq, and more. - Performance Boost: Optimizations in tools like
du,echo, andseq.
GNU Test Suite Compatibility:
Hereβs how version 0.0.29 compares to the previous release:
| Result | 0.0.28 | 0.0.29 | Change 0.0.28 to 0.0.29 | % Total 0.0.28 | % Total 0.0.29 | % Change 0.0.28 to 0.0.29 |
|---|---|---|---|---|---|---|
| Pass | 476 | 506 | +30 | 77.65% | 82.38% | +4.73% |
| Skip | 43 | 41 | -2 | 7.01% | 6.68% | -0.33% |
| Fail | 94 | 67 | -27 | 15.34% | 10.92% | -4.42% |
| Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
Call to Action:
Support our work by sponsoring us on GitHub! Your contributions directly help maintain our infrastructure and enable faster development. Sponsor us here.
For more details and to download the latest release, visit our website: https://uutils.github.io.
What's Changed
basenc
- basenc: ignore Interrupted errors by @andrewliebenow in #6778
- basenc: ignore case with "--base16 --decode" by @cakebaker in #6963
- build-gnu.sh: adapt
basencmessage to clap changes by @cakebaker in #6966
base32/base64
- handle two corner cases by @sylvestre in #6906
checksum
- prepare further behavior fix with a rework by @RenjiSann in #6822
- Further rework by @RenjiSann in #6868
- cksum: even more fixes by @RenjiSann in #6929
- fuzzing: add a new fuzzer for cksum by @sylvestre in #6585
- fix error message when the flags length and an algorithm different from blake2b are present by @Felle33 in #7071
- the --tag is meaningless with --check by @Felle33 in #7079
- remove some unnecessary type info by @cakebaker in #7080
chmod
- Remove duplicate declarations + start to plug it to chmod too by @sylvestre in #7017
- add uucore's
permsfeature toCargo.tomlby @cakebaker in #7037 - add support for the deref and links options by @sylvestre in #7025
- remove test tests/chmod/symlinks from the list by @sylvestre in #7125
chroot
- fix parsing of --userspec argument by @jfinkels in #7043
- remove
-Gshort option by @cakebaker in #7051 - fix many issues with chroot by @jfinkels in #7057
- handle the error when invalid user by @sylvestre in #7015
- make group option self overwriting by @AnirbanHalder654322 in #7123
- tests/chroot/chroot-credentials has been fixed by @sylvestre in #7124
comm
- generate an error if the input is a directory by @sylvestre in #6853
- adapt GNU error messages by @cakebaker in #6998
- don't use files for test by @sylvestre in #7140
- implement the ordering check by @sylvestre in #7144
cp
- remove some
sleep()calls in tests by @cakebaker in #6890 - use the function from uucore by @sylvestre in #7003
- when copying a read only file, make sure that the xattrs can be set properly by @sylvestre in #7009
- copy attributes after making subdir by @rm-dr in #6884
- make --backup and --no-clobber are mutually exclusive by @sylvestre in #7082
- implement copying from streams by @DaringCuteSeal in #7061
csplit
- fix bug when --suppress-matched flag is active and positive/negative offset is present by @Felle33 in #7088
- support reading from pipe by @fuad1502 in #6951
- simplify test by @cakebaker in #7106
- add support for
-qby @cakebaker in #7000 - allow offset without sign in pattern by @cakebaker in #7006
cut
- Fix cut when lines don't end with specified delim by @andreistan26 in #5844
- adjust to our messages as they are better by @sylvestre in #6921
- some test refactorings by @cakebaker in #6970
- fix overriding of
-d=by @cakebaker in #6984 - don't merge adjacent ranges by @cakebaker in #6990
- fix handling of newline as delimiter by @cakebaker in #6996
date
dd
df
- fix display of special characters by @jfinkels in #7151
- error on over-mounted device by @jfinkels in #7116
- df test now passes by @sylvestre in #7130
dircolors
- fix empty COLORTERM matching with ?* pattern by @sylvestre in #7089
- move
usedeclaration to top by @cakebaker in #7143 - dircolors is fixed by @sylvestre in #7141
du
- Reuse metadata from DirEntry where possible by @jesseschalken in #6839
- fix the display with --inodes by @sylvestre in #6878
- deduplicate the input by @sylvestre in #6885
- Reuse existing metadata instead of calling path.is_dir() again by @jesseschalken in #6840
echo
- remove code made obsolete by MSRV 1.79 by @cakebaker in #6989
- handle double hyphens by @cakebaker in #6997
- add support for
POSIXLY_CORRECTby @cakebaker in #7059
env
- add missing
cfgattributes to tests by @cakebaker in #6896 - better handling of the errors by @sylvestre in #7090
- fix only long options are allowed to contain '=' by @jovielarue in #7008
fmt
- generate an error if the input is a directory by @sylvestre in #6854
head
- fix subtraction underflow with --bytes=-N by @jfinkels in #7036
- make head fail when writing to /dev/full by @DaringCuteSeal in #7068
install
- create destination file with safer modes before copy by @nerdroychan in #6595
- Revert "create destination file with safer modes before copy" by @sylvestre in #6922
- implement copying from streams by @DaringCuteSeal in #6965
kill
- add
-nhidden option for compatibility with bash by @samueltardieu in #7069 - make
-sconflict with-land-tby @samueltardieu in #7070
ls
- when a file has capabilities (setcap), change the color by @sylvestre in #6987
- finish the plug of mtime by @sylvestre in #7016
- add better support for non-UTF-8 bytes by @jtracey in #7020
mkfifo
- better handle the mode + umask by @sylvestre in #6971
- add missing "mode" feature for uucore dep by @jfinkels in #7075
more
- reduce memory usage ...
0.0.28
π¦ Rust Coreutils 0.0.28 Release:
We are thrilled to announce the release of Rust Coreutils 0.0.28! This release brings significant improvements in compatibility and stability, continuing our journey to provide a robust alternative to GNU Coreutils.
Highlights:
- Improved Compatibility:
- Passing GNU tests increased to 476 (+21 compared to 0.0.27).
- Failing tests reduced to 94 (-19 compared to 0.0.27).
- Contributions: This release was made possible by the hard work of 37 contributors, including 16 newcomers.
- Enhanced Performance: Updates and optimizations in utilities like
cksum,mkdir, andtr.
GNU Test Suite Compatibility:
Hereβs how version 0.0.28 compares to the previous release:
| Result | 0.0.27 | 0.0.28 | Change 0.0.27 to 0.0.28 | % Total 0.0.27 | % Total 0.0.28 | % Change 0.0.27 to 0.0.28 |
|---|---|---|---|---|---|---|
| Pass | 455 | 476 | +21 | 74.35% | 77.65% | +3.30% |
| Skip | 44 | 43 | -1 | 7.19% | 7.01% | -0.18% |
| Fail | 113 | 94 | -19 | 18.46% | 15.34% | -3.12% |
| Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
Call to Action:
Support our work by sponsoring us on GitHub! Your contributions help maintain our infrastructure and enable faster iterations. Sponsor us here.
For more details and to download the latest release, visit our website: https://uutils.github.io.
What's Changed
GNU Test Suite Compatibility
basenc
- Perform faster, streaming encoding by @andrewliebenow in #6719
cat
- Fix issue #6248 by @OshinoShinobu-Chan in #6763
- Use
write_end_of_line()to avoid duplicate code by @cakebaker in #6764 - Fix issue #5186 by adding explicit flush by @gim913 in #5256
cksum / hashsum
- Add support for
--checkwith base64 and other improvements by @sylvestre in #6452 - Accept non-UTF-8 filenames by @BenWiederhake in #6575
- Support commented lines in checksum files by @RenjiSann in #6782
- Fix error handling by @Luv-Ray in #6801
- Implement
-z/--zeroby @RenjiSann in #6815 - Read the next file when the first is missing or invalid by @sylvestre in #6524
- Support non-UTF-8 input in checksum files by @RenjiSann in #6793
cp
- Fix preserved hardlinks not being reported in
--verbosemode by @djedi23 in #6496 - Improve GNU test case compatibility for
part-symlinkby @matrixhead in #6588 - Treat an empty file name as a non-existing file by @samueltardieu in #6683
- Show mode if the target does not have
S_IWUSRby @andrewliebenow in #6700 - Fix possible OOM and partial writes with large files by @neyo8826 in #6694
- Fix symlink-overwrite error priority by @Luv-Ray in #6586
- Normalize path when checking for duplicate source by @matrixhead in #6825
- Add argument count validation for
cpby @LoricAndre in #6690
date
- Fix timezone error when setting UTC time by @CausingBrick in #6503
- Add test for
dateby @Its-Just-Nans in #6526 - Add tests for issue #6392 by @RenjiSann in #6471
dd
- Fix issue #5905 (different error message from GNU) by @just-an-engineer in #6622
dircolors
- Optimize integer and string operations required by clippy nightly by @BenWiederhake in #6636
echo
- Handle multibyte escape sequences by @andrewliebenow in #6803
- Remove double negation by @cakebaker in #6810
hashsum
- When checksum file is untagged, detect the size by @sylvestre in #6499
- On Windows, check in binary mode by default and allow
--binary/--textby @Pistonight in #6808 - Return error when only
--strictor--quietis given by @howjmay in #6584
hostname
join
- Add support for multibyte separators by @jtracey in #6736
- Avoid extra allocations when using
-iby @jtracey in #6774
ls
- Adjust code for
--diredafter GNU v9.5 changes by @sylvestre in #6144 - Fix GNU test case
color-normby @matrixhead in #6481 - Fix error in subdirectory output by @CausingBrick in #6521
- Fix
diredoption (-D) not outputting datetime and parent directory byte offsets by @pyoky in #6538 - Use tab when
-CFis passed (closes #5396) by @sylvestre in #6528 - Fix GNU test case
color-clear-to-eolby @matrixhead in #6507 - Refactor
parse_widthfunction by @matrixhead in #6510 - Add test for
lsby @Its-Just-Nans in #6527 - Fix GNU test case
color-extby @matrixhead in #6537 - Fix quoting for directory names with a colon (
:) in recursive mode and patch thequote-alignGNU test by @RenjiSann in #6559 - Change
unwrap_orandorto lazy-evaluatedunwrap_or_elseandor_elseby @AnirbanHalder654322 in #6609
ln
- Allow final destination directory when using
-nfby @jansheikkinen in #5975
mkdir
- Add
aclpermissions inheritance for subdirectories by @AnirbanHalder654322 in #6676 - Prevent mode change of existing directories by @samueltardieu in #6682
- Require arguments for
mkdirandrmdirby @sgvictorino in #6790 - Emit error when path is empty by @andrewliebenow in #6802
- Allow
--parentto be provided more than once by @DaringCuteSeal in #6831
mv
- Fix GNU test case
to-symlinkby @matrixhead in #6578 - Clean up inter-partition copying test code by @matrixhead in #6583
- Adjust error message to pass
tests/mv/mv-exchange.shby @sylvestre in #6641 - Fix GNU test case
mv-ncompatibility by @matrixhead in #6599 - Fix GNU test case
dup-srccompatibility by @matrixhead in #6837
od
- Allow trailing characters in address radix by @andrewliebenow in #6674
- Prevent panic on empty address radix by @andrewliebenow in #6675
paste
- Permit the delimiter list to be empty by @andrewliebenow in #6714
printf
- Check precision before writing to stdout (fix #1879) by @Kev1n8 in #6511
- Remove unused argument name from help by @andrewliebenow in #6807
- Fix extra padding by @Kev1n8 in #6548
- Delete unused file by @BenWiederhake in #6758
runcon
- Adjust error message for
runconandstdbufto passtests/misc/invalid-opt.plby @sylvestre in #6657 - Improve help message for
runconby @cakebaker in #6680
sort
- Improve error management with
--batch-sizeby @sylvestre in [#6535](https://gi...
0.0.27
π¦ Rust Coreutils 0.0.27 Release:
We are excited to announce the release of Rust Coreutils 0.0.27! This version continues to improve the compatibility.
This update adds +8 GNU passing tests compared to version 0.0.26 and therefore reduces the failing tests by -8.
This release saw contributions from 21 developers, including 9 newcomers.
We encourage you to support our project by sponsoring us on GitHub. Your sponsorship helps us maintain and enhance our infrastructure, such as GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
For more details and to download the latest release, visit our website at https://uutils.github.io.
What's Changed
GNU Test Suite Compatibility
Hereβs how version 0.0.27 fares in comparison to the previous release:
| Result | 0.0.26 | 0.0.27 | Change 0.0.26 to 0.0.27 | % Total 0.0.26 | % Total 0.0.27 | % Change 0.0.26 to 0.0.27 |
|---|---|---|---|---|---|---|
| Pass | 447 | 455 | +8 | 73.04% | 74.35% | +1.31% |
| Skip | 44 | 44 | 0 | 7.19% | 7.19% | 0.00% |
| Fail | 121 | 113 | -8 | 19.77% | 18.46% | -1.31% |
| Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
cksum
- Improve the GNU compat by @sylvestre in #6256
cksum/hashsum
- refactor the common code. by @sylvestre in #6431
- enable
sumfeature forchecksumfeature by @cakebaker in #6450 - Implement check (Closes: #5705) by @sylvestre in #6390
- Improve the blake2 --tag export by @sylvestre in #6412
cp
- Added overwrite detection for existing symlinks by @AnirbanHalder654322 in #6380
- Changed
/sys/kernel/address_bitsto/sys/kernel/profilingin test_cp by @AnirbanHalder654322 in #6294 - use
#[ignore]to disable tests by @cakebaker in #6395 - remove
target_os = "macos-12"by @cakebaker in #6405 - link-deref gnu test fix by @matrixhead in #6378
- parent-perm-race gnu fix by @matrixhead in #6403
- gnu test case preserve-mode fix by @matrixhead in #6432
cp-parentstest case by @matrixhead in #6446- remove panics in tests by @cakebaker in #6293
df
- fix size column padding by @Qelxiros in #6433
- fix incorrect test & add another test by @cakebaker in #6437
env
fmt
- accept repeated arguments by @BenWiederhake in #6355
- value of minlength should not be negative by @ahmadabd in #6359
- fix error priority, make goal-errors more helpful by @BenWiederhake in #6362
- use
get_matches_from()instead oftry_get_matches_from()in tests by @cakebaker in #6374
id
- Handle repeated flags, recognize conflict between pretty-print and passwd file-entry by @BenWiederhake in #6288
kill
ls
- fix quoting alignment, add tests for default quoting style in TTY and quoting alignment by @RenjiSann in #6402
- Fix ls: panicking on dangling symlink with
--color=auto -lby @AnirbanHalder654322 in #6346
od
- use
u64::MAXinstead ofmax_value()by @cakebaker in #6477 - use TestScenario, avoid spamming /tmp on failure by @BenWiederhake in #6287
pinky
- use UTC if offset can't be determined by @cakebaker in #6414
seq
shuf
sort
tail
- use
#[ignore]to disable tests by @cakebaker in #6388
tr
- calculate complement set early by @jalil-salame in #6340
- Refuse to translate if set2 contains more than one unique characters and set1 contains a character class by @cvonelm in #6472
- A [:lower:]/[:upper:] in set2 must be matched in set1 by @cvonelm in #6445
- disallow classes besides [:upper:]/[:lower:] in set2 when translating by @cvonelm in #6424
- Refuse to translate if set1 is longer than set2 and set2 ends in a character class by @cvonelm in #6470
uptime
- add
-s/--sinceofuptimeto extensions by @cakebaker in #6391 - Support files in uptime by @AnirbanHalder654322 in #6400
utmpx
- use UTC if offset can't be resolved by @cakebaker in #6413
Misc
- clippy: fix warnings introduced with Rust 1.78 by @cakebaker in #6330
- Disable clippy::assigning_clones on OpenBSD by @lcheylus in #6356
- clippy: fix warnings introduced by Rust 1.79 by @cakebaker in #6468
- tests: fix some clippy warnings by @sylvestre in #6430
- Disabling compare_xattrs cp and mv related tests on OpenBSD by @jadijadi in #6368
- src/uucore/src/lib/features/fsext.rs: Add magic for bcachefs by @phedders in #6438
- tests: remove all
#[cfg(not(target_pointer_width = "128"))]by @cakebaker in #6418 - Cargo.toml: enable uucore's
modefeature by @cakebaker in #6421 - uucore: remove support for Bitrig by @cakebaker in #6383
- everywhere: cleanup unused/unnecessary spellcheck-disabling by @BenWiederhake in #6295
- multicall: add --list to list all utils by @tertsdiepraam in #6251
- config terminal simulation for specific stdios only by @cre4ture in #6125
- fix code coverage windows by @piotrkwiecinski in #6332
CI
- macos-latest is now arm64 by @thesayyn in #6425
- stdbuf: rename
dragonflybsdtodragonflyby @cakebaker in #6384 - deny.toml: remove hashbrown, update comment by @cakebaker in #6373
- show-utils.sh: fix jq query to get coreutils deps by @lcheylus in #6485
- deny.toml: allow BSL-1.0 as license by @cakebaker in #6427
Documentation
- docs: describe extensions of id by @cakebaker in #6289
Testing
- tests: fix multi-call test precondition by @BenWiederhake in #6279
- Disabling xattrs tests on OpenBSD by @jadijadi in #6349
- util: added umask manipulation by @matrixhead in #6404
- show-utils.sh: fix jq query to get coreutils deps by @lcheylus in #6300
Dependencies
- Bump
itertoolsand fix use of deprecated function by @cakebaker in #6455 - Bump
fts-sysandselinux-sysby @cakebaker in #6339 - Bump bigdecimal from 0.4.0 to 0.4.2 by @cakebaker in #6285
ls: upgrade uutils-term-grid to 0.5 by @tertsdiepraam in #5485- Downgrade
libcto0.2.153by @cakebaker in #6408 - fix(deps): update rust crate data-encoding to 2.6 by @renovate in #6283
- fix(deps): update rust crate data-encoding-macro to 0.1.15 by @renovate in #6282
- fix(deps): update rust crate cpp to 0.5.9 by @renovate in #6325
- fix(deps): update r...
0.0.26
π¦ Rust Coreutils 0.0.26 Release:
We are happy to announce the release of Rust Coreutils 0.0.26! This version comes with several significant advancements, including the initial support for AIX, ensuring broader compatibility and reach. Despite the short period since our last release, we've managed to fix numerous compatibility issues, further aligning our tools with the latest GNU testsuite, now version 9.5.
This update adds +10 GNU passing tests compared to version 0.0.25.
New in this Release:
- Beginning of the AIX Support
- Updated GNU Reference: We've updated our testsuite to GNU Coreutils 9.5.
- Improved Compatibility: Thanks to the community's efforts, we've addressed several compatibility issues, pushing our pass rate even higher.
- Automated Builds: Binaries for the latest release are once again automatically generated.
This release saw contributions from 20 developers, including 12 newcomers.
We encourage you to support our project by sponsoring us on GitHub. Your sponsorship helps us maintain and enhance our infrastructure, such as GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
For more details and to download the latest release, visit our website at https://uutils.github.io.
GNU Test Suite Compatibility
Hereβs how version 0.0.26 fares in comparison to the previous release:
| Result | 0.0.25 | 0.0.26 | Change 0.0.25 to 0.0.26 | % Total 0.0.25 | % Total 0.0.26 | % Change 0.0.25 to 0.0.26 |
|---|---|---|---|---|---|---|
| Pass | 437 | 447 | +10 | 72.35% | 73.04% | +0.69% |
| Skip | 50 | 44 | -6 | 8.28% | 7.19% | -1.09% |
| Fail | 117 | 121 | +4 | 19.37% | 19.77% | +0.40% |
| Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
Full Changelog: 0.0.25...0.0.26
What's Changed
cksum
- Adding -b as the short form of --base64 by @jadijadi in #6187
- Fix code formatting by @cakebaker in #6192
comm
- Handle duplicated flags and output-delimiter correctly by @BenWiederhake in #6112
cp
- remove unnecessary calls of
touch()in tests by @cakebaker in #6263 - gnu "same-file" test case compatibility by @matrixhead in #6190
- handle update prompt with and without interactive mode enabled by @BenWiederhake in #6207
- Swap
cpβs short-rand alias-Rrecursive options by @LucasLarson in #6231 - Fix the debug results in
cp --debugby @AnirbanHalder654322 in #6220
csplit
- Handle repeated args, fix remainder after error by @BenWiederhake in #6114
cut
date
- Fix
date -f dates.txt is failingby @mvo5 in #6148 - Support
-f -to read from stdin by @mvo5 in #6160 - Remove unimplemented example by @LucasLarson in #6135
dd
- Handle SIGUSR1 directly. not just every 1sec by @cre4ture in #6025
- Fix flaky test_null_stats by @BenWiederhake in #6204
dirname
- Accept repeated flag by @BenWiederhake in #6151
dircolors
- Accept repeated flags by @BenWiederhake in #6150
du
env
- argv0 overwrite possibility (unix only) - fixes new gnu test version by @cre4ture in #6154
- Remove dependency on GNU env in tests by @cakebaker in #6259
- Add missing space to help output by @cakebaker in #6260
hashsum
- Implement the ignore-missing option by @sylvestre in #6230
- Improve the error management to match GNU by @sylvestre in #6252
head
kill
- Support multiple signals for --list by @m-haisham in #6210
- Don't show
EXITwith--listby @cakebaker in #6222 - Return 1 and gnu style stderr in case of no pid by @jadijadi in #6225
- Print --table as vertical by @m-haisham in #6216
- Accept all cases for signal names by @m-haisham in #6229
- Print signals vertically when using --list flag by @m-haisham in #6201
ls
- Compute the correct exit code by @BenWiederhake in #6173
mktemp
- Adjust the error message to match 9.5 by @sylvestre in #6146
more
- Use dev tty instead of mio to avoid panics by @apatrushev in #6262
mv
od
- Remove
print_width_blockfield ofOutputInfoby @cakebaker in #6239
seq
- Removed zero-padding of string when parsing with parse_exponent_no_decimal by @maxer137 in #6185
- Add the unit test even if they are failing for now by @sylvestre in #6236
tail
- Allow multiple usage of --pid to match upstream (regression of β¦ by @sylvestre in #6147
tee
- Correctly handle read-only files, avoid unnecessary wrapping by @BenWiederhake in #6157
tr
- Fix "space" class, test "blank" class for order by @BenWiederhake in #6141
uniq
- Print version and help on stdout again by @tertsdiepraam in #6123
wc
- Count ASCII control characters as word characters by @BenWiederhake in #6199
Misc
- Initial AIX support by @ecnelises in #6209
- Fix warning when executing Clippy by @bin-ly in #6246
- tests: fix deprecation warning
timestamp_subsec_nanos()by @mvo5 in #6149 - tests: test multi-call logic by @BenWiederhake in #6198
- all: Undo custom exit codes by @BenWiederhake in #6162
- Cargo.toml: remove unnecessary caret by @cakebaker in #6128
- Fixing the build issue on NetBSD by @jadijadi in #6268
- Try to release 0.0.26 to see if the artifacts are generated by @sylvestre in #6131
- Fix clippy warning match_bool by @sylvestre in #6184
- Minor nits in the tests by @sylvestre in #6258
###Β Security
- fuzz: also generate the empty string sometimes by @BenWiederhake in #6176
- add env & tr fuzzers + small improvs by @sylvestre in #6167
- seq: fuzz PreciseNumber::from_str by @sylvestre in #6183
Documentation
- Doc: Explain that it is allowed to look at OpenBSD or Apple sources by @sylvestre in #6140
- Readme: fix links to docs by @cakebaker in #6189
CI
- upgrade to GNU coreutils 9.5 as ref by @sylvestre in #6139
- don't upgrade packages - msys2-runtime upgrade fails in CI by @cre4ture in #6153
- fix macos ci instability on clippy with retry by @cre4ture in #6156
- CI: change publish step condition by @tertsdiepraam in #6181
- CI fix: use features arg for stable and nightly build by @cre4ture in #6224
- feat(github): add CICD job build_programs_individually by @gierens in #6212
- show-utils.sh: fix jq query by @tertsdiepraam in #6120
- ci: use
-pcoreutilswhen running clippy by @cakebaker in #6247 - fix/CI ~ re-enable artifact deployment for version t...
0.0.25
π¦ Rust Coreutils 0.0.25 Release:
We're thrilled to announce version 0.0.25. We added +15 GNU passing tests since our last update!
More and more programs have a full compatibility with the GNU testsuite.
The current list is: base64, basename, cat, chgrp, chmod, chown, dirname, expand, fold, groups, join, ln, mktemp, nice, nl, nproc, paste, pathchk, printenv, realpath, shuf, sleep, split, sync, unexpand, uniq, wc and yes.
This release saw contributions from 31 developers, including 14 newcomers.
Some of this work has been supported by the Sovereign Tech Fund.
If you want to help us, please consider sponsoring on GitHub. This helps us use better tools like GitHub Actions. Sponsor us at https://github.com/sponsors/uutils.
Visit our website at https://uutils.github.io.
GNU test suite compatibility
Here's how version 0.0.25 compares to the previous release - running GNU/Coreutils 9.4:
| Result | 0.0.24 | 0.0.25 | Change 0.0.24 to 0.0.25 | % Total 0.0.24 | % Total 0.0.25 | % Change 0.0.24 to 0.0.25 |
|---|---|---|---|---|---|---|
| Pass | 422 | 437 | +15 | 69.87% | 72.35% | +2.48% |
| Skip | 50 | 50 | 0 | 8.28% | 8.28% | 0.00% |
| Fail | 132 | 117 | -15 | 21.85% | 19.37% | -2.48% |
| Error | 0 | 0 | 0 | 0.00% | 0.00% | 0.00% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
What's Changed
base32/base64/basenc
- implement and test proper flag parsing by @BenWiederhake in #6007
basename
- Fix handling of repeated flags/arguments by @BenWiederhake in #6018
cat
- Handle all flags correctly by @BenWiederhake in #6034
chcon
- Handle repeated flags and overrides between --no-XXX and --XXX by @BenWiederhake in #6039
chmod
- Fix chmod -c --reference reporting when no change is made by @mtimaN in #6016
- Fix handling of preserve root flag and error messages by @BenWiederhake in #6042
cksum
- permit repeated flags, handle overrides correctly, implement base64 output by @BenWiederhake in #6041
- enable encoding feature by @cakebaker in #6095
cp
- remove lint exceptions by @kralo in #5891
- improve the support of --attributes-only by @sylvestre in #6051
- Split the copy_file function a bit by @sylvestre in #6056
- fix flaky test test_cp_arg_interactive_update, document adjacent bug by @BenWiederhake in #6020
csplit
- use
printffunctionality fromuucoreby @tertsdiepraam in #5958 - adjust the error message to match GNU's by @sylvestre in #6090
- remove
crate_nameattribute by @cakebaker in #6091
cut
- set exit code to 1 if directory is specified by @cakebaker in #5886
- refactor delimiters OsString handling by @zhitkoff in #6072
- allow non utf8 characters for delimiters by @zhitkoff in #6037
- show error for multiple mode args (
-b,-c,-f) by @wolimst in #5962
dd
- parse big numbers and return u64::MAX by @jfinkels in #5901
- fail on missing number in count, fix #5904 by @sudhackar in #5920
- misc gnu test by @matrixhead in #6084
- fix flaky test_final_stats_unspec by @BenWiederhake in #6001
- treat arg as bytes if it contains a 'B' by @matrixhead in #6050
- fix gnu test
not-rewound.shby @cre4ture in #6088
df
du
- adapt error message to match GNU's by @cakebaker in #5916
- adjust one of the GNU error message as ours is better by @sylvestre in #6085
echo
- do not infer long args by @tertsdiepraam in #5911
env
- support string args by "-S", "-vS" or "--split-strings" by @cre4ture in #5801
- Fix/findings for env string args by @cre4ture in #6105
expand
- Continue work when one of given files doesn't exist by @D9nni in #5873
- make tab explicit in test by @cakebaker in #5875
- do not ignore invalid UTF-8 by @tertsdiepraam in #5987
factor
- remove clippy exceptions by reformatting "unreadable literals" by @kralo in #5890
- rename input parameter by @kralo in #5892
- enable a debug_assert! statement by @cakebaker in #5995
fmt
- Make sure the goal is always positive when given a positive width by @sargas in #6094
- fail if goal is bigger than default width by @cakebaker in #6096
hashsum
- also escape/unescape files with checks by @sylvestre in #5868
install
ln
- fix help text by @cakebaker in #5977
ls
- fix "unused variable" warning on Redox by @cakebaker in #5931
- test_ls_allocation_size fails on filesystem
f2fs(android) by @cre4ture in #6076 - rename
chrono::Durationtochrono::TimeDeltaby @cakebaker in #5970
more
- Disable raw mode before exiting if a panic occurs by @Ideflop in #5914
- Implement argument pattern by @Ideflop in #5966
- handle errors with multiple files by @Ludmuterol in #4997
- fix two incorrect tests by @cakebaker in #6104
numfmt
- remove clap workaround by @tertsdiepraam in #5986
od
- disable failing test_od::test_f16() for android CI by @cre4ture in #5984
- re-enable f16 test with newer AVD system image by @cre4ture in #6099
printf
- pad unsigned numbers properly by @tertsdiepraam in #5955
- Make operate on bytes instead of strings by @RenjiSann in #6028
- '%0c' and '%0s' should fail by @RenjiSann in #6032
pr
- use chrono instead of time in tests #5972 by @biplab5464 in #5973
- Check the correct timestamp in test_with_pr_core_utils_tests by @BenWiederhake in #6010
- relax some error messages by @sylvestre in #6087
seq
- fix about text not found by @tertsdiepraam in #5949
shuf
- Treat empty file as zero elements instead of one empty string by @BenWiederhake in #5979
- Refuse repeating zero lines by @BenWiederhake in #6011
- include all echo args, not just the last by @BenWiederhake in #5978
- Fix OOM crash for huge number ranges by @BenWiederhake in #5980
- add missing word to BENCHMARKING.md by @cakebaker in #5996
- Fix off-by-one errors in range handling by @BenWiederhake in #6014
- treat -e as a flag, not as a multi-value arg by @BenWiederhake in #5989
- Do not read input when -n0 is given by @BenWiederhake in #5990
sort
- fix incorrectly placed "}" in test by @cakebaker in #6064
split
- fix android memory kill in split by @cre4ture in #5940
- fix error message shown if file doesn't exist by @cakebaker in #5909
stat
- Refactor to remove #[allow(clippy::cognitive_complexity)] #5881 by @biplab5464 in https://github.com/uutils/coreutils/pu...