Releases: uutils/coreutils
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"🍟" -f1
works perfectly with emoji delimiters! -
Massive Performance Gains
Notable example:tr
went 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
clap
render 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
--version
is 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.pl
fromwhy-error.md
by @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
BadEncoding
variant ofHeadError
by @cakebaker in #8484 - refactor
uumain
by @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
bool
as return type ofneed_copy
by @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.workspace
inCargo.toml
by @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_SINGLELINE
by @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 --check
infuzz
folder 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
gethostid
from Rustlibc
by @cakebaker in #7571
hostname
- Bump
hostname
& removewindows-core
from skip list by @cakebaker in #7713
id
- bug: fix id printing of egid by @nyurik in #7696
- id: Handle NULL pointer gracefully within
cstr2cow
macro by @frendsick in #7810 - id: adapt error message to match the one from GNU
id
by @cakebaker in #7836 - id: The
--real
flag should only affect-u
,-g
, and-G
by @frendsick in #7796 - id: remove unnecessary
to_string
calls 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-dev
for 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_lenient
use 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
_mknod
tomknod
by @cakebaker in #7824 - mknod: refactor
uumain
by @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_and
withis_none_or
by @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
0
with-l
and-t
by @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.patch
to GNUcoreutils 9.6
by @cakebaker in #7163
mv
- show prompt for
-u --interactive
by @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
k
suffix 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
sleep
from tests by @cakebaker in #7327
timeout
- add support for
-f
and-p
short 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_static
and useLazyLock
instead by @cakebaker in #7404 - replace
PanicInfo
withPanicHookInfo
by @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:ignore
in 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
basenc
message 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
perms
feature toCargo.toml
by @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
-G
short 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
-q
by @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
use
declaration 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_CORRECT
by @cakebaker in #7059
env
- add missing
cfg
attributes 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
-n
hidden option for compatibility with bash by @samueltardieu in #7069 - make
-s
conflict with-l
and-t
by @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
--check
with 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
/--zero
by @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
--verbose
mode by @djedi23 in #6496 - Improve GNU test case compatibility for
part-symlink
by @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_IWUSR
by @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
cp
by @LoricAndre in #6690
date
- Fix timezone error when setting UTC time by @CausingBrick in #6503
- Add test for
date
by @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
/--text
by @Pistonight in #6808 - Return error when only
--strict
or--quiet
is given by @howjmay in #6584
hostname
join
- Add support for multibyte separators by @jtracey in #6736
- Avoid extra allocations when using
-i
by @jtracey in #6774
ls
- Adjust code for
--dired
after GNU v9.5 changes by @sylvestre in #6144 - Fix GNU test case
color-norm
by @matrixhead in #6481 - Fix error in subdirectory output by @CausingBrick in #6521
- Fix
dired
option (-D
) not outputting datetime and parent directory byte offsets by @pyoky in #6538 - Use tab when
-CF
is passed (closes #5396) by @sylvestre in #6528 - Fix GNU test case
color-clear-to-eol
by @matrixhead in #6507 - Refactor
parse_width
function by @matrixhead in #6510 - Add test for
ls
by @Its-Just-Nans in #6527 - Fix GNU test case
color-ext
by @matrixhead in #6537 - Fix quoting for directory names with a colon (
:
) in recursive mode and patch thequote-align
GNU test by @RenjiSann in #6559 - Change
unwrap_or
andor
to lazy-evaluatedunwrap_or_else
andor_else
by @AnirbanHalder654322 in #6609
ln
- Allow final destination directory when using
-nf
by @jansheikkinen in #5975
mkdir
- Add
acl
permissions inheritance for subdirectories by @AnirbanHalder654322 in #6676 - Prevent mode change of existing directories by @samueltardieu in #6682
- Require arguments for
mkdir
andrmdir
by @sgvictorino in #6790 - Emit error when path is empty by @andrewliebenow in #6802
- Allow
--parent
to be provided more than once by @DaringCuteSeal in #6831
mv
- Fix GNU test case
to-symlink
by @matrixhead in #6578 - Clean up inter-partition copying test code by @matrixhead in #6583
- Adjust error message to pass
tests/mv/mv-exchange.sh
by @sylvestre in #6641 - Fix GNU test case
mv-n
compatibility by @matrixhead in #6599 - Fix GNU test case
dup-src
compatibility 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
runcon
andstdbuf
to passtests/misc/invalid-opt.pl
by @sylvestre in #6657 - Improve help message for
runcon
by @cakebaker in #6680
sort
- Improve error management with
--batch-size
by @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
sum
feature forchecksum
feature 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_bits
to/sys/kernel/profiling
in 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-parents
test 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 -l
by @AnirbanHalder654322 in #6346
od
- use
u64::MAX
instead 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
/--since
ofuptime
to 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
mode
feature 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
dragonflybsd
todragonfly
by @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
itertools
and fix use of deprecated function by @cakebaker in #6455 - Bump
fts-sys
andselinux-sys
by @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
libc
to0.2.153
by @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-r
and alias-R
recursive options by @LucasLarson in #6231 - Fix the debug results in
cp --debug
by @AnirbanHalder654322 in #6220
csplit
- Handle repeated args, fix remainder after error by @BenWiederhake in #6114
cut
date
- Fix
date -f dates.txt is failing
by @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
EXIT
with--list
by @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_block
field ofOutputInfo
by @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
-pcoreutils
when 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
printf
functionality fromuucore
by @tertsdiepraam in #5958 - adjust the error message to match GNU's by @sylvestre in #6090
- remove
crate_name
attribute 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.sh
by @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::Duration
tochrono::TimeDelta
by @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...
0.0.24
📦 Rust Coreutils 0.0.24 Release:
We've got +29 more GNU tests passing than in our last release! We are getting closer to version 1.0: each test passed is a step forward in ensuring that our users have a reliable and robust set of utilities that align closely with GNU standards.
49 developers contributed to this release (28 new contributors started with this release).
A key highlight of this release is the expansion of support to new platforms and operating systems. Notably, the software has been ported to sparc64, OpenBSD, and Redox, broadening its usability across different system architectures and environments. This marks a significant step in making Rust Coreutils more versatile and accessible to a wider range of users and developers.
In addition to these expansions, the release has also focused on the integration of more fuzzing techniques, including differential fuzzing and OSS Fuzz integration.
We also contributed to the GNU implementation to improve their test coverage.
We would like to thank to the support the Sovereign Tech Fund for their support (more details later).
Visit our website at https://uutils.github.io.
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.
GNU test suite compatibility
Here's how version 0.0.24 compares to the previous release - running GNU/Coreutils 9.4:
Result | 0.0.23 | 0.0.24 | Change 0.0.23 to 0.0.24 | % Total 0.0.23 | % Total 0.0.24 | % Change |
---|---|---|---|---|---|---|
Pass | 393 | 422 | +29 | 65.07% | 69.87% | +4.80% |
Skip | 49 | 50 | +1 | 8.11% | 8.28% | +0.17% |
Fail | 160 | 132 | -28 | 26.49% | 21.85% | -4.64% |
Error | 2 | 0 | -2 | 0.33% | 0.00% | -0.33% |
For more details, visit https://github.com/uutils/coreutils-tracking/.
What's Changed
cat
cksum
- Stops when one of given files doesn't exist #5809 by @biplab5464 in #5820
- Made return an error if the algorithm blake2b is used on a directory. by @Ato2207 in #5804
- Add --raw argument by @D9nni in #5803
- Made return an error if used on a directory. by @Ato2207 in #5822
- Add --length argument for the blake2b algorithm by @DitherWither in #5749
cp
- Improve error msg if -r is not specified by @cakebaker in #5555
- Debug with --update=none should show 'skipped' by @sylvestre in #5701
- --remove-destination: don't fail if destination is hardlink to source by @cakebaker in #5431
- cp/mv/ln: add support for the "will not overwrite just-created" by @sylvestre in #5699
- --link: don't fail if destination is hardlink to source by @cakebaker in #5484
- Fix backup of destination symlink by @cakebaker in #5731
- Update a GNU test error check - tests/fail-perm.sh by @sylvestre in #5784
- cp/mv: manage with trailing slash in target by @sylvestre in #5780
- Show no "same file" error for
--link a a
by @cakebaker in #5762 - Backup dest symlink linking to source by @cakebaker in #5739
- --preserve should keep xattr by @sylvestre in #5834
- Remove the tests/link-heap.sh workaround by @sylvestre in #5800
- Show error if source and destination are same file by @cakebaker in #5757
- Disable a test failing on freebsd by @sylvestre in #5750
- Adapt warning if source is used more than once by @cakebaker in #5745
- tests, tests/test: Don't attempt to set sticky file bit on FreeBSD by @n1000 in #5602
dd
- Buffer partial blocks in the output writer by @jfinkels in #4545
- Skip two tests without "printf" feature by @cakebaker in #5607
- /chroot: improve the skip message (not root) by @sylvestre in #5734
df
- Fix rounding issue in test by @cakebaker in #5532
dircolors
- Move the static long string into structures. by @sylvestre in #5611
du
- Start printing output immediately by @ceteece in #5552
- Disable test on Android by @cakebaker in #5615
- Cleanup by @tertsdiepraam in #5623
- Fix issue with dereference in test by @cakebaker in #5625
- Test behavior with POSIXLY_CORRECT set by @cakebaker in #5530
- Call unused _du_basics() in test_du_basics() by @cakebaker in #5503
- Implement files0-from by @sylvestre in #5721
- Simplify file creation in tests by @cakebaker in #5727
- Show error for nul names with
--files0-from
by @cakebaker in #5772 - Ignore duplicate names with
--files0-from
by @cakebaker in #5775
echo
- Make
-e
and-E
override each other by @tertsdiepraam in #5635
expand
- Fix duplicate flags by @allaboutevemirolive in #5684
expr
- Check prefix operation by @Luv-Ray in #5566
- Different stderr with
"56" "substr"
by @pawelngei in #5559 - Adapt error messages, revert most of #5559 by @cakebaker in #5578
- Refactor AST and parsing by @tertsdiepraam in #5586
- Fix issue 5576 (regex matching bug) by @cobaweel in #5577
- Optimizing for integer values by @Arp-1 in #5614
- Coerce to string before comparing values by @tertsdiepraam in #5673
fmt
- A collection of small refactors by @tertsdiepraam in #5592
- Rename
pfxind_end
->prefix_indent_end
by @cakebaker in #5593 - Remove crash! macro by @Arp-1 in #5589
hashsum
- Remove usage of crash! macro by @GDYendell in #5581
- When the filename contains some special chars, escape them by @sylvestre in #5865
head
- -c allocate memory as needed by @sylvestre in #5704
- head_backwards for non-seekable files like /proc/* or fifos (named pipes) by @cre4ture in #5732
- Disable some tests on Android by @cakebaker in #5813
- Fix clippy warnings in tests by @cakebaker in #5838
hostname
install
- Fix strip program stdout and destination hyphen handling #5718 by @cre4ture in #5848
- Support when a hyphen is passed by @sylvestre in #5697
- With -t, check if we aren't passed a file by @sylvestre in #5686
- Manages permissions when run as root by @sylvestre in #5735
- Remove / from end of path if it exists so as not to mess with .exists() by @mtimaN in #5730
- Remove a debug artifact by @sylvestre in #5719
join
ls
- Remove "#[allow(unused_variables)]" by @cakebaker in #5617
- Ignore value of
POSIXLY_CORRECT
by @cakebaker in #5609 - Implement --hyperlink by @cakebaker in #5622
- Improve the access to metadata of the files by @sylvestre in #5660
- Set correct block size when -k is provided by @cakebaker in #5700
- Fix padding of size column when using
-l
by @cakebaker in #5604 - Match the gnu behavior for colors by @sylvestre in https://github.c...