π¦ Findutils 0.10.0 Release
Findutils 0.10.0 is a GNU-compatibility and robustness release. It sharpens several find behaviors that silently differed from GNU (-printf %T+ formatting, -newerXY predicate validation, --files0-from input validation), fixes an xargs bug where the default command line size could make execvp() fail with E2BIG, improves xargs length accounting on Windows, and continues the campaign of turning panics on malformed input into proper error messages.
Five people made their first contribution to findutils in this cycle: @SAY-5, @lhecker, @l46983284-cpu, @wtcpython and @aki-kong.
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
Compatibility is tracked per individual test (PASS/FAIL/SKIP by test name). 0.10.0 stands at:
| Result | find (GNU suite) | bfs suite |
|---|---|---|
| Pass | 417 | 267 |
| Fail | 77 | 41 |
| Skip | 1 | 6 |
| Total | 495 | 314 |
Compared to 0.9.1, one more GNU test passes (417 vs 416). The bfs suite gained a test upstream (314 vs 313) which findutils does not pass yet, so the pass count is unchanged.
For more details, visit https://github.com/uutils/findutils-tracking/.
Highlights
GNU compatibility fixes
find -printf: print a fixed-width fraction for%T+β chrono's%.fdrops the fraction (and the leading dot) when the sub-second part is zero, while GNU always prints a dot followed by ten fractional digits, by @sylvestre in #792find: reject invalid-newerXYpredicates like GNU β the parser used an unanchored regex, so tokens such as-neweraBcmtywere accepted as a truncated-neweraB, by @l46983284-cpu in #784find: reject invalid UTF-8 in--files0-fromby @wtcpython in #798xargs: cap the default command line size at 128 KiB β sizing command lines up toARG_MAXmadeexecvp()fail withE2BIG, since the kernel also charges the argv/envp pointer arrays against the limit. An explicit-smay still raise the limit, as with GNU. By @sylvestre in #791xargs: account for quoting on Windows when computing length limits by @lhecker in #788
Robustness β errors instead of panics
find: report an unparsable-newerXtyear instead of panicking by @leeewee in #762locate: report write errors instead of panicking by @SAY-5 in #785locate: ignore an unrepresentable--max-database-ageinstead of panicking by @leeewee in #768find: skip broken pipe errors in wasm executions by @aki-kong in #802
Error messages
find: avoid the duplicatedfind: find:prefix in two error messages by @cakebaker in #774
Project & CI
- clippy: fix warnings (
byte_char_slices,useless_borrows_in_formatting,question_mark,manual_assert_eq) by @cakebaker in #755 - Release 0.10.0 by @sylvestre in #804
Dependencies
Dependency and GitHub Action bumps via Dependabot and manual refreshes by @cakebaker: anyhow (1.0.102 β 1.0.103, #751), crossbeam-epoch (0.9.18 β 0.9.20, #754), clap (4.6.1 β 4.6.4, #763/#787/#790), regex (1.12.4 β 1.13.1, #765), ctor (1.0.7 β 1.0.12, #752/#764/#789/#796/#800), thiserror (2.0.18 β 2.0.19, #786), and CodSpeedHQ/action (4 β 5.0.1, #799/#803).
New Contributors
- @SAY-5 made their first contribution in #785
- @lhecker made their first contribution in #788
- @l46983284-cpu made their first contribution in #784
- @wtcpython made their first contribution in #798
- @aki-kong made their first contribution in #802
Full Changelog: 0.9.1...0.10.0
Install findutils 0.10.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/uutils/findutils/releases/download/0.10.0/findutils-installer.sh | shDownload findutils 0.10.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 (glibc) | checksum |
| findutils-x86_64-unknown-linux-musl.tar.xz | x64 Linux (static musl) | checksum |
| findutils-aarch64-unknown-linux-musl.tar.xz | ARM64 Linux (static musl) | checksum |