Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
264 commits
Select commit Hold shift + click to select a range
1c9c9e4
test(cksum): Test for cksum -a blake3
RenjiSann Feb 8, 2026
4129d99
bench(cksum): Re-enable blake3 benchmarks
RenjiSann Mar 13, 2026
0fc85a2
ls: add header to new files
cakebaker Mar 21, 2026
303a0f3
l10n.yml: drop cargo build covered by cargo {test,run}
oech3 Mar 16, 2026
991b128
chore(deps): update rust crate zip to v8.3.1
renovate[bot] Mar 22, 2026
908c0bc
fix(ls): reduce allocations on PathData struct
Alonely0 Mar 21, 2026
12554dd
fix(ls): reduce allocations on sorting
Alonely0 Mar 21, 2026
abd8df3
fix(ls): remove various redundant clones
Alonely0 Mar 21, 2026
60eb952
fix(ls): reduce duplicated time syscalls
Alonely0 Mar 21, 2026
232dbf3
fix(ls): optimize create_hyperlink and make it loseless.
Alonely0 Mar 21, 2026
27fd852
fix(ls): do not allocate for symlink len check
Alonely0 Mar 21, 2026
1569d0d
fix(ls): fix double-lookup of (COLOR)TERM env vars
Alonely0 Mar 21, 2026
4bccb7b
fix(ls): fix double-allocation of block options
Alonely0 Mar 21, 2026
73bc8a8
fix(ls): use Cow on parse_time_style to reduce allocations
Alonely0 Mar 21, 2026
a5be6a7
fix(ls): remove various useless LineEnding::to_string()
Alonely0 Mar 21, 2026
9dfb1c0
fix(ls): do not alloc char to push to OsString in display_item_name
Alonely0 Mar 21, 2026
5a823fb
fix(ls): various inode optimizations
Alonely0 Mar 21, 2026
8fb9261
fix(ls): preallocate for a couple of vectors/strings
Alonely0 Mar 21, 2026
ac41191
fix(ls): reuse intermediate buffer on --long
Alonely0 Mar 21, 2026
368ae59
fix(ls): use Vec::push where appropiate in display_item_long
Alonely0 Mar 21, 2026
6a4febe
fix(ls): do not dynamically dispatch display_item_name closures
Alonely0 Mar 21, 2026
fb28dae
fix(ls): do not unnecessary format & allocate on return_total
Alonely0 Mar 22, 2026
0a11492
fix(ls): remove unnecessary allocations in display_additional_leading…
Alonely0 Mar 22, 2026
038f778
fix(ls): remove double collect and extra allocations in display_grid
Alonely0 Mar 22, 2026
afe988e
fix(ls): remove unnecessary allocations in display_item_name
Alonely0 Mar 22, 2026
d96ba9e
fix(ls): apply reviewed changes
Alonely0 Mar 22, 2026
e4bae8e
uudoc: make tldr attribution and disclaimer translatable
sylvestre Mar 22, 2026
c16f5d8
GNUmakefile: Fix LN for cygwin
oech3 Mar 21, 2026
8c51f2f
prepare release 0.8.0
sylvestre Mar 22, 2026
577a158
update-version.sh: update Cargo.lock files after version bump
sylvestre Mar 22, 2026
8816416
Fix `stdbuf` on NetBSD
0323pin Mar 20, 2026
4a344f4
silence apell checker
0323pin Mar 20, 2026
5726b02
coreutils: --help >/dev/full panics
oech3 Mar 21, 2026
2f07ebe
chore(deps): update endbug/add-and-commit action to v10
renovate[bot] Mar 23, 2026
05ce917
ls: simplify canonicalize_indicator_value
sylvestre Mar 22, 2026
f56ffd5
ls: simplify dired helpers
sylvestre Mar 22, 2026
bfdeacc
ls: inline calculate_line_len into update_dired_for_item
sylvestre Mar 22, 2026
58b9e18
uucore: drop an unused function
oech3 Mar 23, 2026
c589377
cut: use "?" instead of "match"
cakebaker Mar 23, 2026
d07c42f
chore(deps): update rust crate zip to v8.4.0
renovate[bot] Mar 23, 2026
bfc3c4e
refactor(base32): use filter_map
xtqqczze Mar 23, 2026
a348708
chore(deps): update rust crate terminal_size to v0.4.4
renovate[bot] Mar 23, 2026
13e26b9
tee: reduce if block
oech3 Mar 24, 2026
9abe08e
yes, coreutils: backport(enable) 2 GnuTests (#11480)
oech3 Mar 25, 2026
4eb967b
cksum: Refactor Blake length validation
RenjiSann Mar 20, 2026
cdf04d3
test(cksum): use rstest template to generate isolated tests for each …
RenjiSann Mar 21, 2026
1393d9f
test(cksum): add regular tests for blake3
RenjiSann Mar 21, 2026
5d936a2
test(cksum): add error case checks for blake2b
RenjiSann Mar 21, 2026
e33d461
test(cksum): Factorized sha2/sha3 tests
RenjiSann Mar 21, 2026
73f6596
CI: add GNU tests/rm/isatty to intermittent (#11486)
Alonely0 Mar 25, 2026
fa07edb
stdbuf: detect unsupported target at build time (#11476)
oech3 Mar 25, 2026
d8a9419
Allow `feat_os_unix` on NetBSD (#11470)
0323pin Mar 25, 2026
107c912
chore(deps): update davidanson/markdownlint-cli2-action action to v23
renovate[bot] Mar 26, 2026
b91d745
hostid: simplify the code (#11502)
oech3 Mar 26, 2026
0a613d2
logname: reduce range of unsafe block
oech3 Mar 26, 2026
34929f2
tr: fix graph/print character class mapping (#11405)
can1357 Mar 26, 2026
d121952
sort: fix infinite loop on --files0-from read error
vitkyrka Mar 26, 2026
80fcb44
chore(deps): update codecov/codecov-action action to v6
renovate[bot] Mar 26, 2026
3ad4a79
hostname: reduce range of unsafe
oech3 Mar 27, 2026
7d719cc
yes: drop unused feat deps
Mar 27, 2026
e7e5e84
Remove duplicated features (#11510)
oech3 Mar 27, 2026
9d4faf8
who: reduce range of unsafe (#11521)
oech3 Mar 27, 2026
b187b25
head: reset stale partial line state on reused buffers (#11407)
can1357 Mar 27, 2026
1fbed86
test(cksum): Add multiple tests on check length digest validation
RenjiSann Mar 25, 2026
61a0238
cksum: make sure --check raises "improperly formatted" for length-gue…
RenjiSann Mar 25, 2026
a8b4720
wc: add bench for small file (#11526)
oech3 Mar 27, 2026
6478d69
chore(deps): update rust crate clap_mangen to 0.3
renovate[bot] Mar 27, 2026
248bd1f
chore(deps): update rust crate uutils_term_grid to 0.8
renovate[bot] Mar 13, 2026
11e2997
chore(deps): update rust crate rustc-hash to v2.1.2
renovate[bot] Mar 28, 2026
974070e
nohup: use LazyLock for FAILURE_CODE
xtqqczze Mar 27, 2026
f5b59c7
chore(deps): update rust crate ctor to 0.8.0
renovate[bot] Mar 28, 2026
23e08f2
Bump sm3 from 0.4.2 to 0.5.0
cakebaker Mar 28, 2026
6c9646a
deny.toml: add crates to skip list
cakebaker Mar 28, 2026
4e8b99b
ls,pr: wrap angle-bracket placeholders in backticks to fix mdbook HTM…
sylvestre Mar 27, 2026
53758e1
pre-commit: add Cargo.lock sync check
sylvestre Mar 29, 2026
98a0689
cat: add bench (#11525)
oech3 Mar 30, 2026
78ffff8
uucore(fs): make display_permissions_unix cross-platform (#11538)
kaladron Mar 30, 2026
602b933
stdbuf: Fix cfg block for Cygwin
oech3 Mar 13, 2026
467ac89
ls: Fix error message for ls file/missing-file
oech3 Mar 15, 2026
b621af6
stdbuf: remove clippy::unnecessary_wraps
oech3 Mar 30, 2026
befb7b9
coreutils: --list arg and no args should fail
oech3 Mar 22, 2026
d6102ba
CONTRIBUTING.md: drop outdated hint, add policies and links (#11433)
oech3 Mar 30, 2026
d01e62e
stdbuf: use .with_capacity for Vec storing searched paths
oech3 Mar 30, 2026
153e6d6
CICD.yml: Bump cross for NetBSD
oech3 Mar 25, 2026
b482d4c
pathchk: build for Windows
oech3 Mar 25, 2026
84b4066
sort: fix warnings about unused stuff on Redox (#11547)
cakebaker Mar 30, 2026
54405fe
head: fix error message when input is a directory (#11541)
aguimaraes Mar 30, 2026
2527e25
chore(deps): update rust crate blake3 to v1.8.4 (#11550)
renovate[bot] Mar 30, 2026
cb29f88
yes: dedup the logic for buffer creation, improve assertion (#11536)
oech3 Mar 30, 2026
8d45386
chore(deps): update rust crate platform-info to v2.1.0
renovate[bot] Mar 30, 2026
6eb8ede
nice: Remove unsafe and reduce bin size (#11489)
oech3 Mar 31, 2026
e7a667f
arch, uname, Cargo.toml: update outdated info (#11556)
oech3 Mar 31, 2026
f18c96b
pre-commit: exclude tests/fixtures from all hooks
sylvestre Mar 31, 2026
662d9f3
pre-commit: fix trailing whitespace and skip cargo hooks in CI
sylvestre Mar 31, 2026
f98ec64
pre-commit: skip cargo and cspell hooks on pre-commit.ci
sylvestre Mar 31, 2026
d3ef3f9
chown: warn when '.' is used as owner:group separator
eyupcanakman Mar 25, 2026
7dcf762
uucore: support realtime signals (RTMIN/RTMAX) in signal_by_name_or_v…
kevinburkesegment Mar 20, 2026
151689a
wc: fix for 32-bit Android (#11452)
YumeYuka Mar 31, 2026
fa1d777
coreutils: strip errno
oech3 Mar 30, 2026
a8734f0
uucore: use rustix'splice & restrict to Linux
sylvestre Mar 31, 2026
0451024
cat: replace nix with rustix
sylvestre Mar 31, 2026
7ff01db
dd: catch OOM
oech3 Mar 31, 2026
2373178
df: replace nix by rustix
sylvestre Apr 1, 2026
7a78c99
wc: replace nix by rustix
sylvestre Apr 1, 2026
2a81092
tests: ensure getlimits is on PATH for reused GNU builds
sylvestre Mar 10, 2026
f78bfb7
tee: remove Box and dyn
oech3 Apr 1, 2026
19b2d9b
sort: add locale-aware month sorting (-M)
sylvestre Mar 21, 2026
aa1c61c
tests: deduplicate locale availability checks into shared is_locale_a…
sylvestre Mar 21, 2026
a9672e0
uucore: add WASI support for FileInformation, fs, and io modules
sylvestre Mar 30, 2026
b48da68
ls: make hostname detection return nothing on WASI target
sylvestre Mar 30, 2026
9cd11a0
feat_wasm: add ls to the WASM-compatible utilities
sylvestre Mar 30, 2026
71be161
tee: fix < . message and strip errno
oech3 Mar 25, 2026
ecba816
chore(deps): update rust crate zip to v8.5.0
renovate[bot] Apr 1, 2026
298c47a
chore(deps): update rust crate icu_provider to v2.2.0
renovate[bot] Apr 1, 2026
e0a770e
fix(deps): update rust crate similar to v3
renovate[bot] Apr 2, 2026
3026304
tee: simplify by clap
oech3 Apr 1, 2026
b75872e
tty: replace nix by rustix
sylvestre Apr 2, 2026
422f014
cat: improve splice fast-path
oech3 Mar 27, 2026
68a05d9
cat: avoid pipe() if stdout is pipe
oech3 Mar 31, 2026
1955f61
cat: add bench for large size for splice
oech3 Apr 2, 2026
7214dbf
Bump icu_* crates from 2.1.1 to 2.2.0
cakebaker Apr 2, 2026
0942270
uucore/datetime: adapt to change in icu_calendar
cakebaker Apr 2, 2026
af91721
feat_wasm: add head to the WASM-compatible utilities
sylvestre Mar 30, 2026
e428236
cat: add WASI stub for is_unsafe_overwrite and add to feat_wasm
sylvestre Mar 30, 2026
8c5babb
uucore: add WASI support for mode and path_ends_with_terminator
sylvestre Mar 30, 2026
f0e45ee
cp, mv: return error for symlinks on non-unix/non-windows platforms
sylvestre Mar 30, 2026
84bb51f
feat_wasm: add tr, cp, and mv to the WASM-compatible utilities
sylvestre Mar 31, 2026
5b71c57
sort: disable rayon on wasi
sylvestre Apr 2, 2026
f1bfe37
sort: replace wildcard rayon import with specific import
sylvestre Apr 2, 2026
07eed6d
tsort: replace nix by rustix
sylvestre Apr 2, 2026
62f26a8
uu_stdbuf_libstdbuf: add LICENSE
michel-slm Mar 19, 2026
8d0361f
chore(deps): update rust crate icu_calendar to v2.2.1
renovate[bot] Apr 2, 2026
a53ba55
chore(deps): update dawidd6/action-download-artifact action to v20
renovate[bot] Apr 3, 2026
480e5fb
pre-commit: update rust-clippy and cargo-lock-check to run without ac…
xtqqczze Apr 2, 2026
24f8aa6
tail: replace nix by rustix
sylvestre Apr 3, 2026
b82527e
sync: fix exit code when fcntl failed & 2>/dev/full abort
oech3 Mar 26, 2026
5cdabb0
wc: improve wc -c perf - 1.67X faster (#11591)
oech3 Apr 3, 2026
89a2dda
dd: avoid 0-filling buf at read_and_discard (#11583)
oech3 Apr 3, 2026
52965b3
timeout: return timed-out status after kill grace period (#11392)
can1357 Apr 3, 2026
4319b63
sync: fall back to full sync when --file-system has no operands (#11393)
can1357 Apr 3, 2026
643405a
expr: fix eager evaluation of parenthesized dead branches (#11395)
can1357 Apr 3, 2026
ba2969f
tail: add WASI support by disabling notify and pid features (#11569)
sylvestre Apr 3, 2026
4b6ac33
uucore: add WASI support for FileInformation and io module (#11568)
sylvestre Apr 3, 2026
7c0b682
CI: run clippy on wasm32-wasip1 target with feat_wasm
sylvestre Apr 2, 2026
47f1559
uucore/fs: fix unnecessary qualifications for wasm target
sylvestre Apr 2, 2026
0ec6f24
uucore/fsext: fix unused imports and split read_fs_list for wasm target
sylvestre Apr 2, 2026
9ceabb6
wc: split WordCountable trait to exclude inner_file on wasi
sylvestre Apr 2, 2026
0b599a0
github action: move the clippy management into a script
sylvestre Apr 2, 2026
0990631
split: preserve non-UTF-8 bytes in output filename generation (#11397)
can1357 Apr 3, 2026
668bd26
Revert "pre-commit: update rust-clippy and cargo-lock-check to run wi…
sylvestre Apr 3, 2026
d856e99
wasm: add 22 more utilities to feat_wasm and add WASI platform stubs
sylvestre Mar 31, 2026
9f41ee2
Remove 'expr' from dependencies in Cargo.toml (needs a c compiler)
sylvestre Apr 3, 2026
1a6ee40
uucore: use wasi OsStrExt/OsStringExt for byte-level access on wasm
sylvestre Apr 2, 2026
fa78c46
echo: add multibyte unicode test cases
sylvestre Apr 2, 2026
9e6cb79
CI: add WASI test workflow with wasmtime
sylvestre Apr 2, 2026
51e495f
wasi: fix warnings
cakebaker Apr 2, 2026
d70ad12
sort: exclude ctrlc dependency and signal handler on wasi
sylvestre Apr 3, 2026
cb5fa08
sort: fix clippy warnings on wasi target
sylvestre Apr 3, 2026
cd5cc6e
cp: fix clippy warnings on wasi target
sylvestre Apr 3, 2026
98c6010
mv: fix clippy warning on wasi target
sylvestre Apr 3, 2026
6e74247
CI: fix feat_wasm feature flag in wasi workflow
sylvestre Apr 3, 2026
f14e4d1
tail: fix clippy warnings on wasi target
sylvestre Apr 3, 2026
5048978
split: fix wasi platform stub to accept OsStr filename
sylvestre Apr 3, 2026
9bca143
date: fix build without i18n-datetime feature
sylvestre Apr 3, 2026
a507069
ignore some CI words
sylvestre Apr 3, 2026
bbde36f
adjust the spell-checker ignores
sylvestre Apr 3, 2026
4236e45
wc: remove unnecessary cfg
sylvestre Apr 3, 2026
63c8319
od: default `-t f` to double precision
can1357 Mar 18, 2026
60d18a8
chore(deps): update rust crate libredox to 0.1.15
xtqqczze Apr 3, 2026
20e37cd
uucore: pipes.rs replace != with >
oech3 Apr 4, 2026
f8ef6ff
sort: add WASI single-threaded sort path
sylvestre Apr 3, 2026
f224335
sort: split ext_sort into platform modules and enable WASI CI
sylvestre Apr 3, 2026
3ef5bf7
CI/WASI: test all compiling utilities instead of just 3
sylvestre Apr 3, 2026
7b136d8
cat: simplify splice & fix comment
oech3 Apr 3, 2026
c9906ee
uucore: add a function returning /dev/null to use splice() for wc,dd,…
oech3 Apr 2, 2026
532fcac
Add expand/bounded-memory to ignore list
sylvestre Apr 4, 2026
587b7f3
libstdbuf: remove eprintln! causing 2>/dev/full abort
oech3 Mar 6, 2026
89cbec0
perf(uucore): call rt_sigaction once not 62 times
danielzgtg Mar 16, 2026
2512afd
uutests: add LICENSE
michel-slm Mar 16, 2026
f12b1a6
uucore: add missing fs feature to rustix
oech3 Apr 4, 2026
e41e5de
tee: increase buf size for large input
oech3 Mar 24, 2026
787b10b
protect names against binary name (#11378)
oech3 Apr 4, 2026
d5e3da2
cat: fallback with pipe() failure
oech3 Apr 4, 2026
9ed6511
date: fix "unused variable" warning (#11637)
cakebaker Apr 4, 2026
38d8145
feat(timeout): add benchmarking support with divan (#9733)
mattsu2020 Apr 4, 2026
d8f24b5
ls: fall back to "." metadata for ".." on WASI (#11633)
sylvestre Apr 4, 2026
db47bee
build: embed all locale files when targeting WASI
sylvestre Apr 4, 2026
b131f90
uucore: add create_wasi_bundle_from_embedded for any locale
sylvestre Apr 4, 2026
df08775
uucore: use embedded locale bundles on WASI for l10n support
sylvestre Apr 4, 2026
b269102
wc: drop #[allow(clippy::question_mark)]
oech3 Apr 4, 2026
0241590
add 0.7.0 release notes in tree
sylvestre Apr 4, 2026
de7e55e
numfmt: support explicit --unit-separator for suffix parsing
sylvestre Mar 10, 2026
75a72ae
tests: skip unsupported GNU numfmt cases and force symlink refresh
sylvestre Mar 10, 2026
1467945
numfmt: add --grouping flag, debug diagnostics, and stricter number v…
sylvestre Mar 10, 2026
03c7518
numfmt: buffer output in non-abort invalid modes and re-enable GNU tests
sylvestre Mar 10, 2026
854a164
numfmt: replace double-reverse with forward pass in apply_grouping
sylvestre Mar 19, 2026
e73510d
numfmt: inline next_field_index into split_next_field
sylvestre Mar 19, 2026
669d4a0
numfmt: deduplicate suffix validation in split_mergeable_suffix
sylvestre Mar 19, 2026
fcdd41b
numfmt: simplify write_line buffering logic
sylvestre Mar 19, 2026
70cb850
numfmt: use consistent debug warning format
sylvestre Mar 19, 2026
2df2325
numfmt: adjust the import
sylvestre Mar 19, 2026
668a190
numfmt: fix clippy errors, remove ---debug alias, rename write_line t…
sylvestre Mar 19, 2026
6b026da
numfmt: fix panic on large format widths
sylvestre Mar 19, 2026
79f23c8
numfmt: fix error message with unit separator and trailing garbage
sylvestre Mar 19, 2026
67662e0
numfmt: add GNU test patch for devdebug, help-1, and field-range errors
sylvestre Mar 19, 2026
1c77bb7
numfmt: add unit tests for detailed_error_message, parse_number_part,…
sylvestre Mar 20, 2026
d32bdec
numfmt: address review feedback - rename valid_part, fix dot check, f…
sylvestre Apr 3, 2026
0bd1546
numfmt: use repeat_n for padding and simplify suffix validation
sylvestre Apr 3, 2026
01db7aa
coreutils: Protect against env -a for security (#10773)
oech3 Apr 4, 2026
e2822ad
uudoc: drop legacy FA4 `fa` class from platform icons
sylvestre Apr 4, 2026
49c6e8e
fix(date): handle width overflow in format modifiers
mattsu2020 Feb 21, 2026
6338b88
refactor: replace `repeat().take()` with `repeat_n()` for better perf…
mattsu2020 Feb 21, 2026
c0d7f87
fix(date): add error handling for format modifier width overflow
mattsu2020 Feb 23, 2026
84de750
fix: improve error handling for format modifier width parsing
mattsu2020 Feb 23, 2026
6536bef
date: extract try_alloc_padded helper and add large-width test
sylvestre Apr 4, 2026
3e8a908
Modify spell-checker ignore comments
sylvestre Apr 4, 2026
fb4c1be
cat: don't lock stdout before splice()
oech3 Apr 5, 2026
a9cb112
tee: split cli part of tee.rs
oech3 Apr 4, 2026
c5839fa
touch: replace nix by rustix
sylvestre Apr 5, 2026
d96e81e
date: replace nix by rustix
sylvestre Apr 5, 2026
cbb2e52
gate uucore::pipes::pipe to test
oech3 Apr 5, 2026
ee0af02
numfmt: simplify DisplayableSuffix with indexed char table
sylvestre Apr 5, 2026
8c240ff
numfmt: dedupe parse_suffix match via RawSuffix::try_from
sylvestre Apr 5, 2026
17df020
numfmt: simplify remove_suffix with base index lookup
sylvestre Apr 5, 2026
70bb4c3
numfmt: avoid String allocation in parse_unit_size
sylvestre Apr 5, 2026
bfdab4f
numfmt: simplify parse_unit_size_suffix
sylvestre Apr 5, 2026
379e96c
uucore: expose SI_BASES and IEC_BASES constants
sylvestre Apr 5, 2026
d3804cc
numfmt: source SI/IEC bases from uucore::parser::parse_size
sylvestre Apr 5, 2026
4f00102
dd: source SI/IEC bases from uucore::parser::parse_size
sylvestre Apr 5, 2026
af7360c
df: source SI/IEC bases from uucore::parser::parse_size
sylvestre Apr 5, 2026
55ee782
fr-FR: fix anglicisms (supporté→pris en charge, drapeau→option, remov…
sylvestre Apr 5, 2026
0b0b835
env: hardcode config file error message
sylvestre Apr 5, 2026
664e54b
cp: hardcode verbose copy/created-directory message
sylvestre Apr 5, 2026
340d62d
install: hardcode verbose copy message
sylvestre Apr 5, 2026
9913be8
tail: hardcode no-such-file and became-inaccessible status messages
sylvestre Apr 5, 2026
09d7fe7
who: hardcode idle current/unknown placeholders
sylvestre Apr 5, 2026
d78314e
mkdir: replace libc and unsafe by rustix
sylvestre Apr 5, 2026
ccc5185
numfmt: add failing test cases
sylvestre Apr 5, 2026
9e67e56
date: add ignored tests for GNU compatibility gaps found by fuzz_date
sylvestre Apr 5, 2026
a4dcf84
pre-commit: update cargo-lock-check to suggest changes
xtqqczze Apr 3, 2026
e6f0687
dd: do not show zero multiplier warning when zero is the multiplicand…
iburaky2 Apr 6, 2026
aa19343
date: fix %#P case-swap on lowercase am/pm
vishakha1411 Apr 6, 2026
cb18e9e
date: honor narrow width on wide default strftime fields
vishakha1411 Apr 6, 2026
ae7e873
numfmt: preserve fractional digits when --from-unit is used without s…
Eshwar1440 Apr 6, 2026
be21127
cat: remove some unnecessary to_owned() calls
cakebaker Apr 6, 2026
23af1ad
head: split head.rs
oech3 Apr 6, 2026
6b5f2e6
Tests for Hungarian locale
MegaBrutal Mar 12, 2026
3ecbb52
date: apply locale-aware localization before GNU modifier processing
sylvestre Apr 5, 2026
2ef0aea
ci: install hu_HU.UTF-8 (and peers) for l10n cargo test job
sylvestre Apr 5, 2026
1bfbb9b
rm: use "traversal failed" message when readdir fails during recursiv…
kevinburkesegment Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 25 additions & 18 deletions .github/workflows/CICD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ name: CICD
# spell-checker:ignore (abbrev/names) CACHEDIR CICD CodeCOV MacOS MinGW MSVC musl taiki
# spell-checker:ignore (env/flags) Awarnings Ccodegen Coverflow Cpanic Dwarnings RUSTDOCFLAGS RUSTFLAGS Zpanic CARGOFLAGS CLEVEL nodocs
# spell-checker:ignore (jargon) SHAs deps dequote softprops subshell toolchain fuzzers dedupe devel profdata
# spell-checker:ignore (people) Peltoche rivy dtolnay Anson dawidd
# spell-checker:ignore (people) Peltoche rivy Anson dawidd
# spell-checker:ignore (shell/tools) binutils choco clippy dmake esac fakeroot fdesc fdescfs gmake grcov halium lcov libclang libfuse libssl limactl nextest nocross pacman popd printf pushd redoxer rsync rustc rustfmt rustup shopt sccache utmpdump xargs zstd
# spell-checker:ignore (misc) aarch alnum armhf bindir busytest coreutils defconfig DESTDIR gecos getenforce gnueabihf issuecomment maint manpages msys multisize noconfirm nofeatures nullglob onexitbegin onexitend pell runtest Swatinem tempfile testsuite toybox uutils libsystemd codspeed wasip
# spell-checker:ignore (misc) aarch alnum armhf bindir busytest coreutils defconfig DESTDIR gecos getenforce gnueabihf issuecomment maint manpages msys multisize noconfirm nofeatures nullglob onexitbegin onexitend pell runtest tempfile testsuite toybox uutils libsystemd codspeed wasip libexecinfo

env:
PROJECT_NAME: coreutils
Expand Down Expand Up @@ -102,7 +102,7 @@ jobs:
# for now, don't build it on mac & windows because the doc is only published from linux
# + it needs a bunch of duplication for build
# and I don't want to add a doc step in the regular build to avoid long builds
# - { os: macos-latest , features: feat_os_macos }
# - { os: macos-latest , features: feat_os_unix }
# - { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v6
Expand Down Expand Up @@ -152,7 +152,7 @@ jobs:
shell: bash
run: |
RUSTDOCFLAGS="-Dwarnings" cargo doc ${{ steps.vars.outputs.CARGO_FEATURES_OPTION }} --no-deps --workspace --document-private-items
- uses: DavidAnson/markdownlint-cli2-action@v22
- uses: DavidAnson/markdownlint-cli2-action@v23
with:
fix: "true"
globs: |
Expand Down Expand Up @@ -237,7 +237,7 @@ jobs:
RUST_BACKTRACE: "1"
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
report_type: test_results
Expand Down Expand Up @@ -277,7 +277,7 @@ jobs:
matrix:
job:
- { os: ubuntu-latest , features: feat_os_unix }
- { os: macos-latest , features: feat_os_macos }
- { os: macos-latest , features: feat_os_unix }
- { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v6
Expand All @@ -301,7 +301,7 @@ jobs:
RUST_BACKTRACE: "1"
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
report_type: test_results
Expand All @@ -320,7 +320,7 @@ jobs:
matrix:
job:
- { os: ubuntu-latest , features: feat_os_unix }
- { os: macos-latest , features: feat_os_macos }
- { os: macos-latest , features: feat_os_unix }
- { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v6
Expand All @@ -344,7 +344,7 @@ jobs:
RUST_BACKTRACE: "1"
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
report_type: test_results
Expand Down Expand Up @@ -378,13 +378,13 @@ jobs:
- { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: "feat_os_unix,test_risky_names", use-cross: use-cross, skip-publish: true }
- { os: ubuntu-latest , target: x86_64-unknown-linux-gnu , features: "feat_os_unix,uudoc" , use-cross: no, workspace-tests: true }
- { os: ubuntu-latest , target: x86_64-unknown-linux-musl , features: feat_os_unix_musl , use-cross: use-cross }
- { os: ubuntu-latest , target: x86_64-unknown-netbsd, features: "feat_Tier1,feat_require_unix_core,feat_require_unix_hostid,feat_require_unix_utmpx", use-cross: use-cross , skip-tests: true , check-only: true }
- { os: ubuntu-latest , target: x86_64-unknown-netbsd, features: "feat_os_unix", use-cross: use-cross , skip-tests: true , check-only: true }
- { os: ubuntu-latest , target: x86_64-unknown-redox , features: feat_os_unix_redox , use-cross: redoxer , skip-tests: true , check-only: true }
- { os: ubuntu-latest , target: wasm32-wasip1, default-features: false, features: feat_wasm, skip-tests: true }
- { os: macos-latest , target: aarch64-apple-darwin , features: feat_os_macos, workspace-tests: true } # M1 CPU
- { os: macos-latest , target: aarch64-apple-darwin , features: feat_os_unix, workspace-tests: true } # M1 CPU
# PR #7964: chcon should not break build without the feature. cargo check is enough to detect it.
- { os: macos-latest , target: aarch64-apple-darwin , workspace-tests: true, check-only: true } # M1 CPU
- { os: macos-latest , target: x86_64-apple-darwin , features: feat_os_macos, workspace-tests: true }
- { os: macos-latest , target: x86_64-apple-darwin , features: feat_os_unix, workspace-tests: true }
- { os: windows-latest , target: i686-pc-windows-msvc , features: feat_os_windows }
- { os: windows-latest , target: x86_64-pc-windows-gnu , features: feat_os_windows }
- { os: windows-latest , target: x86_64-pc-windows-msvc , features: feat_os_windows }
Expand Down Expand Up @@ -504,9 +504,16 @@ jobs:
;;
esac
- uses: taiki-e/install-action@v2
if: steps.vars.outputs.CARGO_CMD == 'cross'
# `cross` v0.2.5 lacks `libexecinfo` on NetBSD. However, this has been added in main.
# See https://github.com/cross-rs/cross/blob/main/docker/netbsd.sh
# We are pulling cross from a specific commit hash rather than HEAD to avoid any potential breakage that may be introduced.
# Once `cross` v0.3 is out, these conditionals can be removed.
if: steps.vars.outputs.CARGO_CMD == 'cross' && matrix.job.target != 'x86_64-unknown-netbsd'
with:
tool: cross@0.2.5
- name: Install cross from git (NetBSD)
if: steps.vars.outputs.CARGO_CMD == 'cross' && matrix.job.target == 'x86_64-unknown-netbsd'
run: cargo install cross --git https://github.com/cross-rs/cross --rev f86fd03bb70b4c6802847c18087e21391498b0b4
- name: Create all needed build/work directories
shell: bash
run: |
Expand Down Expand Up @@ -603,7 +610,7 @@ jobs:
if: matrix.job.skip-publish != true && matrix.job.check-only == true
run: |
# expr breaks redox
sed -i.b '/"expr",/d' Cargo.toml
if [[ "${{ matrix.job.target }}" == *"redox"* ]]; then sed -i.b '/"expr",/d' Cargo.toml; fi
${{ steps.vars.outputs.CARGO_CMD }} ${{ steps.vars.outputs.CARGO_CMD_OPTIONS }} check \
--target=${{ matrix.job.target }} ${{ matrix.job.cargo-options }} ${{ steps.vars.outputs.CARGO_FEATURES_OPTION }} ${{ steps.vars.outputs.CARGO_DEFAULT_FEATURES_OPTION }}
- name: Test
Expand All @@ -624,7 +631,7 @@ jobs:
${{ steps.vars.outputs.CARGO_CMD }} ${{ steps.vars.outputs.CARGO_CMD_OPTIONS }} build --release --config=profile.release.strip=true \
--target=${{ matrix.job.target }} ${{ matrix.job.cargo-options }} ${{ steps.vars.outputs.CARGO_FEATURES_OPTION }} ${{ steps.vars.outputs.CARGO_DEFAULT_FEATURES_OPTION }}
# We don't want to have many duplicated long jobs at here
# So we build individual binaries for few platforms until we deduplicate many release build for Linux
# So we build individual binaries for few platforms until we deduplicate many release build for Linux
- name: Build individual binaries
if: matrix.job.skip-tests != true && matrix.job.target == 'x86_64-pc-windows-msvc'
shell: bash
Expand Down Expand Up @@ -798,7 +805,7 @@ jobs:
# RUSTUP_TOOLCHAIN: ${{ steps.vars.outputs.TOOLCHAIN }}

- name: Upload coverage results (to Codecov.io)
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ${{ steps.run_test_cov.outputs.report }}
Expand All @@ -808,7 +815,7 @@ jobs:
fail_ci_if_error: false
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
report_type: test_results
Expand Down Expand Up @@ -859,7 +866,7 @@ jobs:
fail-fast: false
matrix:
job:
- { os: macos-latest , features: feat_os_macos }
- { os: macos-latest , features: feat_os_unix }
- { os: windows-latest , features: feat_os_windows }

steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/FixPR.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: FixPR

# spell-checker:ignore Swatinem dtolnay dedupe
# spell-checker:ignore dedupe

# Trigger automated fixes for PRs being merged (with associated commits)

Expand Down Expand Up @@ -69,7 +69,7 @@ jobs:
## * using the 'stable' toolchain is necessary to avoid "unexpected '--filter-platform'" errors
cargo +stable tree --locked --no-dedupe -e=no-dev --prefix=none --features ${{ matrix.job.features }} | grep -vE "$PWD" | sort --unique
- name: Commit any changes (to '${{ env.BRANCH_TARGET }}')
uses: EndBug/add-and-commit@v9
uses: EndBug/add-and-commit@v10
with:
new_branch: ${{ env.BRANCH_TARGET }}
default_author: github_actions
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/GnuTests.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: GnuTests

# spell-checker:ignore (abbrev/names) CodeCov gnulib GnuTests Swatinem
# spell-checker:ignore (abbrev/names) CodeCov gnulib GnuTests
# spell-checker:ignore (jargon) submodules devel
# spell-checker:ignore (libs/utils) chksum dpkg getenforce getlimits gperf lcov libexpect limactl pyinotify setenforce shopt valgrind libattr libcap taiki-e zstd cpio
# spell-checker:ignore (libs/utils) chksum dpkg getenforce gperf lcov libexpect limactl pyinotify setenforce shopt valgrind libattr libcap taiki-e zstd cpio
# spell-checker:ignore (options) Ccodegen Coverflow Cpanic Zpanic
# spell-checker:ignore (people) Dawid Dziurla * dawidd dtolnay
# spell-checker:ignore (people) Dawid Dziurla * dawidd
# spell-checker:ignore (vars) FILESET SUBDIRS XPASS
# spell-checker:ignore userns nodocs

Expand Down Expand Up @@ -354,7 +354,7 @@ jobs:
path: 'uutils'
persist-credentials: false
- name: Retrieve reference artifacts
uses: dawidd6/action-download-artifact@v19
uses: dawidd6/action-download-artifact@v20
# ref: <https://github.com/dawidd6/action-download-artifact>
continue-on-error: true ## don't break the build for missing reference artifacts (may be expired or just not generated yet)
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Android

# spell-checker:ignore (people) reactivecircus Swatinem dtolnay juliangruber
# spell-checker:ignore (people) reactivecircus juliangruber
# spell-checker:ignore (shell/tools) TERMUX nextest udevadm pkill
# spell-checker:ignore (misc) swiftshader playstore DATALOSS noaudio

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Benchmarks

# spell-checker:ignore (people) dtolnay Swatinem taiki-e
# spell-checker:ignore (people) taiki-e
# spell-checker:ignore (misc) codspeed sccache

on:
Expand Down Expand Up @@ -30,6 +30,7 @@ jobs:
uu_base64,
uu_cksum,
uu_cp,
uu_cat,
uu_cut,
uu_dd,
uu_df,
Expand All @@ -47,6 +48,7 @@ jobs:
uu_shuf,
uu_sort,
uu_split,
uu_timeout,
uu_tsort,
uu_unexpand,
uu_uniq,
Expand Down
42 changes: 17 additions & 25 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Code Quality

# spell-checker:ignore (people) dtolnay juliangruber pell reactivecircus Swatinem taiki-e taplo
# spell-checker:ignore (people) juliangruber pell reactivecircus taiki-e taplo
# spell-checker:ignore (misc) TERMUX noaudio pkill swiftshader esac sccache pcoreutils shopt subshell dequote libsystemd

on:
Expand Down Expand Up @@ -72,8 +72,9 @@ jobs:
matrix:
job:
- { os: ubuntu-latest , features: all , workspace: true }
- { os: macos-latest , features: feat_os_macos }
- { os: macos-latest , features: feat_os_unix }
- { os: windows-latest , features: feat_os_windows }
- { os: ubuntu-latest , features: feat_wasm , target: wasm32-wasip1 }
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -82,6 +83,7 @@ jobs:
with:
toolchain: stable
components: clippy
targets: ${{ matrix.job.target || '' }}
- uses: Swatinem/rust-cache@v2
- name: Run sccache-cache
id: sccache-setup
Expand All @@ -105,6 +107,7 @@ jobs:
esac;
outputs FAIL_ON_FAULT FAULT_TYPE
- name: Install/setup prerequisites
if: ${{ ! matrix.job.target }}
shell: bash
run: |
## Install/setup prerequisites
Expand All @@ -116,39 +119,28 @@ jobs:
;;
esac
- name: "`cargo clippy` lint testing"
uses: nick-fields/retry@v3
uses: nick-fields/retry@v4
with:
max_attempts: 3
retry_on: error
timeout_minutes: 90
shell: bash
command: |
## `cargo clippy` lint testing
unset fault
fault_type="${{ steps.vars.outputs.FAULT_TYPE }}"
fault_prefix=$(echo "$fault_type" | tr '[:lower:]' '[:upper:]')
# * convert any warnings to GHA UI annotations; ref: <https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message>
if [[ "${{ matrix.job.features }}" == "all" ]]; then
extra="--all-features"
else
extra="--features ${{ matrix.job.features }}"
ARGS="--features ${{ matrix.job.features }}"
ARGS="${ARGS} --fault-type ${{ steps.vars.outputs.FAULT_TYPE }}"
if [[ "${{ matrix.job.workspace }}" =~ ^(1|t|true|y|yes)$ ]]; then
ARGS="${ARGS} --workspace"
fi
case '${{ matrix.job.workspace }}' in
1|t|true|y|yes)
extra="${extra} --workspace"
;;
esac
# * determine sub-crate utility list (similar to FreeBSD workflow)
if [[ "${{ matrix.job.features }}" == "all" ]]; then
UTILITY_LIST="$(./util/show-utils.sh --all-features)"
else
UTILITY_LIST="$(./util/show-utils.sh --features ${{ matrix.job.features }})"
if [[ -n "${{ matrix.job.target }}" ]]; then
ARGS="${ARGS} --target ${{ matrix.job.target }}"
fi
CARGO_UTILITY_LIST_OPTIONS="$(for u in ${UTILITY_LIST}; do echo -n "-puu_${u} "; done;)"
S=$(cargo clippy --all-targets $extra --tests --benches -pcoreutils ${CARGO_UTILITY_LIST_OPTIONS} -- -D warnings 2>&1) && printf "%s\n" "$S" || { printf "%s\n" "$S" ; printf "%s" "$S" | sed -E -n -e '/^error:/{' -e "N; s/^error:[[:space:]]+(.*)\\n[[:space:]]+-->[[:space:]]+(.*):([0-9]+):([0-9]+).*$/::${fault_type} file=\2,line=\3,col=\4::${fault_prefix}: \`cargo clippy\`: \1 (file:'\2', line:\3)/p;" -e '}' ; fault=true ; }
if [ -n "${{ steps.vars.outputs.FAIL_ON_FAULT }}" ] && [ -n "$fault" ]; then exit 1 ; fi
if [[ -n "${{ steps.vars.outputs.FAIL_ON_FAULT }}" ]]; then
ARGS="${ARGS} --fail-on-fault"
fi
python3 util/run-clippy.py ${ARGS}
- name: "cargo clippy on fuzz dir"
if: runner.os != 'Windows'
if: runner.os != 'Windows' && !matrix.job.target
shell: bash
run: |
cd fuzz
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# spell-checker:ignore dtolnay libsystemd libattr libcap gsub
# spell-checker:ignore libsystemd libattr libcap gsub

name: Check uudoc Documentation Generation

Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/freebsd.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: FreeBSD

# spell-checker:ignore sshfs usesh vmactions taiki Swatinem esac fdescfs fdesc nextest copyback logind
# spell-checker:ignore sshfs usesh vmactions taiki esac fdescfs fdesc nextest copyback logind

env:
# * style job configuration
Expand Down Expand Up @@ -41,7 +41,7 @@ jobs:
sync: rsync
copyback: false
# We need jq and GNU coreutils to run show-utils.sh and bash to use inline shell string replacement
prepare: pkg install -y curl sudo jq coreutils bash
prepare: pkg install -y curl sudo jq coreutils bash python3
run: |
## Prepare, build, and test
# implementation modelled after ref: <https://github.com/rust-lang/rustup/pull/2783>
Expand Down Expand Up @@ -73,7 +73,6 @@ jobs:
FAULT_PREFIX=\$(echo "\${FAULT_TYPE}" | tr '[:lower:]' '[:upper:]')
# * determine sub-crate utility list
UTILITY_LIST="\$(./util/show-utils.sh --features ${{ matrix.job.features }})"
CARGO_UTILITY_LIST_OPTIONS="\$(for u in \${UTILITY_LIST}; do echo -n "-puu_\${u} "; done;)"
## Info
# environment
echo "## environment"
Expand Down Expand Up @@ -101,8 +100,9 @@ jobs:
## cargo clippy lint testing
if [ -z "\${FAULT}" ]; then
echo "## cargo clippy lint testing"
# * convert any warnings to GHA UI annotations; ref: <https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message>
S=\$(cargo clippy --all-targets \${CARGO_UTILITY_LIST_OPTIONS} -- -D warnings 2>&1) && printf "%s\n" "\$S" || { printf "%s\n" "\$S" ; printf "%s" "\$S" | sed -E -n -e '/^error:/{' -e "N; s/^error:[[:space:]]+(.*)\\n[[:space:]]+-->[[:space:]]+(.*):([0-9]+):([0-9]+).*\$/::\${FAULT_TYPE} file=\2,line=\3,col=\4::\${FAULT_PREFIX}: \\\`cargo clippy\\\`: \1 (file:'\2', line:\3)/p;" -e '}' ; FAULT=true ; }
CLIPPY_ARGS="--features ${{ matrix.job.features }} --fault-type \${FAULT_TYPE}"
if [ -n "\${FAIL_ON_FAULT}" ]; then CLIPPY_ARGS="\${CLIPPY_ARGS} --fail-on-fault"; fi
python3 util/run-clippy.py \${CLIPPY_ARGS} || FAULT=true
fi
# Clean to avoid to rsync back the files
cargo clean
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/fuzzing.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Fuzzing

# spell-checker:ignore (people) dtolnay Swatinem taiki-e
# spell-checker:ignore (people) taiki-e
# spell-checker:ignore (misc) fuzzer

env:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ignore-intermittent.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
tests/cut/bounded-memory
tests/date/date-locale-hour
tests/date/resolution
tests/expand/bounded-memory
tests/pr/bounded-memory
tests/tail/inotify-dir-recreate
tests/tail/overlay-headers
Expand All @@ -13,3 +14,4 @@ tests/misc/stdbuf
tests/misc/usage_vs_getopt
tests/misc/tee
tests/tail/follow-name
tests/rm/isatty
Loading