Repository navigation
π¦ Findutils 0.11.0 Release
Findutils 0.11.0 is the largest GNU-compatibility release in a while: 20 more GNU tests pass (437, up from 417) and 13 more bfs tests (280, up from 267). Most of the work went into find -printf (precision and flags, \c, %m, octal escapes, unknown directives) and find -ls (file type, special bits, block counts, symlink targets, local time), -newerXt date parsing, and xargs input splitting (blank handling, -I lines, quotes spanning lines). find now also points at the offending argument in expression errors, with a "did you mean" suggestion for mistyped predicates, and more write errors and malformed arguments are reported instead of panicking.
Nine people made their first contribution to findutils in this cycle: @MsfPablo, @AlejandroCoronadoN, @amoghsingh130, @AbhinavMir, @Jorge-Polanco-Roque, @SichenLiang, @youdie006, @zhangpan2001 and @jayhemnani9910.
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.
GNU Test Suite Compatibility:
| Result | 0.10.0 | 0.11.0 | Change 0.10.0 to 0.11.0 | % Total 0.10.0 | % Total 0.11.0 | % Change 0.10.0 to 0.11.0 |
|---|---|---|---|---|---|---|
| Pass | 417 | 437 | +20 | 84.24% | 88.28% | +4.04% |
| Skip | 1 | 1 | 0 | 0.20% | 0.20% | 0% |
| Fail | 77 | 57 | -20 | 15.56% | 11.52% | -4.04% |
| Error | 0 | 0 | 0 | 0% | 0% | 0% |
| Total | 495 | 495 | 0 |
bfs Test Suite Compatibility:
| Result | 0.10.0 | 0.11.0 | Change 0.10.0 to 0.11.0 | % Total 0.10.0 | % Total 0.11.0 | % Change 0.10.0 to 0.11.0 |
|---|---|---|---|---|---|---|
| Pass | 267 | 280 | +13 | 85.03% | 88.33% | +3.30% |
| Skip | 6 | 6 | 0 | 1.91% | 1.89% | -0.02% |
| Fail | 41 | 31 | -10 | 13.06% | 9.78% | -3.28% |
| Total | 314 | 317 | +3 |
The bfs suite gained three tests upstream (317 vs 314).
For more details, visit https://github.com/uutils/findutils-tracking/.
Highlights
find: -printf
- support precision and the
+, space,#and0flags; count width and precision in bytes; keep unrecognized directives whole; fail on a precision aboveINT_MAX, by @jayhemnani9910 in #918 - stop the format at
\c, by @jayhemnani9910 in #910 (test: #919) - warn on unrecognized directives and escapes and print them literally, instead of dropping or erroring, by @MsfPablo in #818
- print special bits and no padding in
%mby @youdie006 in #891 - pad the day with a space in
%t,%aand%cby @jayhemnani9910 in #917 - write octal escapes as raw bytes by @zhangpan2001 in #912
- print a trailing backslash by @SichenLiang in #881
find: -ls
- show the file type and special bits by @youdie006 in #892
- show allocated blocks and symlink targets by @jayhemnani9910 in #916
- print times in local time by @jayhemnani9910 in #922
find: other GNU compatibility fixes
-newerXt: match only strictly newer files, and keep the sign of pre-1970 times, by @jayhemnani9910 in #914-newerXt: parse dates withparse_datetime, in local time, by @jayhemnani9910 in #915-newerXt: parse ISO 8601 dates by @AlejandroCoronadoN in #847- fix symbolic
-permmatching for directories by @zhangpan2001 in #931 - preserve
-regextypeacross parentheses by @zhangpan2001 in #934 - reject the deprecated
-perm +MODEoctal form by @AlejandroCoronadoN in #851 - reject a non-numeric prefix in the
-sizeargument by @AlejandroCoronadoN in #834 - reject a signed
-maxdepth/-mindepthvalue by @AlejandroCoronadoN in #835 - output nothing when
-mindepthexceeds-maxdepthby @Jorge-Polanco-Roque in #857 - stream
-files0-frominput instead of reading it all into memory by @MsfPablo in #831
xargs
- only blanks and newlines separate arguments β CR, VT and FF are now kept inside an argument, as in GNU, by @jayhemnani9910 in #920
- read
-Iinput lines like GNU (leading blanks stripped, quoting applied, blank lines skipped,-Ehonored) by @jayhemnani9910 in #921 - reject quotes spanning input lines by @wtcpython in #797
- don't emit an empty argument for a trailing blank by @kevinburke in #829
- retry reading on
BrokenPipeand use a larger input buffer, so input such as/dev/kmsgcan be read, by Alessio Attilio (c9ae506, c1aeb11)
locate / updatedb
- use a platform-dependent default database path and the platform path delimiter by Alessio Attilio (015dc1f)
- only use
std::env::split_pathson Windows β it panics on other non-Unix targets such aswasm32-wasip1, which brokelocateandfind -execdirthere, by @sylvestre (4357fc7)
Error messages and diagnostics
find: point at the offending argument in expression errors β when stderr is a terminal (orUUTILS_DIAG=always), the argument is underlined and a mistyped predicate gets a "did you mean" suggestion; piped output stays byte-for-byte GNU's single line. By @sylvestre in #874find: name the program as invoked in every message by @sylvestre in #876find: do not double thefind:prefix on an invalid-typelist by @AlejandroCoronadoN in #849xargs: strip(os error N)from an--arg-fileopen failure by @MsfPablo in #822- make
--versionoutput consistent across utilities by @Xylphy in #838
Robustness β errors instead of panics
find: report stdout write errors from-lsand-printfonce, with exit status 1, by @SichenLiang in #905find: report-printwrite errors on standard output by @SichenLiang in #908find: handle-fprintfwrite errors without panicking by @amoghsingh130 in #840find: avoid a panic on a non-UTF-8 argument by @AlejandroCoronadoN in #833locate,updatedb,xargs: avoid a panic on a non-UTF-8 argument by @AbhinavMir in #853find -printf: advance past a full character to avoid a multibyte panic by @leeewee in #731 (test follow-up by @wtcpython in #870)
Documentation
- add release notes for every release by @sylvestre in #805
- document the
-sortedextension by @sylvestre in #877 and #879
Project & CI
- add
rust-versiontoCargo.tomland run CI across several OSes and Rust versions by @xtqqczze in #808 - remove the deprecated package
authorsfield by @xtqqczze in #823 - add cargo-binstall metadata by @sylvestre in #814
- sync the release profile with coreutils by @oech3 in #873
- bump
cargo-distfrom 0.32 to 0.33 by @cakebaker in #862 - fix an intermittent test failure by @sylvestre in #844
- clippy: fix warnings by @cakebaker in #850 and #888
- ci: build GNU findutils in C17 mode by @sylvestre in #939
- ci: create the GitHub release as a draft again by @sylvestre in #938
- prepare version 0.11.0 by @sylvestre in #872
Dependencies
Dependency and GitHub Action bumps via Dependabot and manual refreshes by @xtqqczze (#806) and @sylvestre (uucore 0.12.0, #875): uucore (0.9.0 β 0.12.0, #826/#875), uutests (0.9.0 β 0.12.0, #827/#859/#868), clap (4.6.4 β 4.6.7, #807/#825/#863), thiserror (2.0.19 β 2.0.21, #830/#883), ctor (1.0.12 β 1.0.13, #836), rustix (1.1.4 β 1.1.5, #882), rstest (0.26.1 β 0.28.0, #860/#913), CodSpeedHQ/action (5.0.1 β 5.6.1, #810/#824/#856/#895/#901/#909/#924/#940) and dawidd6/action-download-artifact (21 β 27, #843/#852/#884/#887/#893).
New Contributors
- @MsfPablo made their first contribution in #822
- @AlejandroCoronadoN made their first contribution in #834
- @amoghsingh130 made their first contribution in #840
- @AbhinavMir made their first contribution in #853
- @Jorge-Polanco-Roque made their first contribution in #857
- @SichenLiang made their first contribution in #881
- @youdie006 made their first contribution in #892
- @zhangpan2001 made their first contribution in #912
- @jayhemnani9910 made their first contribution in #914
Full Changelog: 0.10.0...0.11.0
Install findutils 0.11.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/uutils/findutils/releases/download/0.11.0/findutils-installer.sh | shInstall prebuilt binaries via cargo-binstall
cargo binstall findutils@0.11.0Download findutils 0.11.0
| File | Platform | Checksum |
|---|---|---|
| findutils-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| findutils-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| findutils-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| findutils-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| findutils-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| findutils-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
