Skip to content

Releases

Version 4.1.7

Choose a tag to compare

@tavianator tavianator released this 11 Nov 20:00
Immutable release. Only release title and notes can be modified.
4.1.7

Changes

  • Parallel depth-first searches (-S dfs -j3 and up) now stay much closer to depth-first order, rather than degrading towards breadth-first (c650271c)

Bug fixes

  • Fixed the traversal order of -S dfs when stat() calls weren't needed, which was not actually depth-first. The bug was originally introduced in bfs 3.1 (February 6, 2024). (fe6e2867)

  • Fixed -perm with X in symbolic modes like u+x,g+X, which now takes execute bits set earlier in the same mode into account. The bug had been present since -perm was implemented in bfs 0.84 (October 29, 2016). (c9be2981)

  • Fixed -perm with = in symbolic modes like u+s,u=r or o+t,o=r, which failed to clear the set-user-ID, set-group-ID, and sticky bits. As with GNU chmod, the set-user-ID and set-group-ID bits are still preserved for directories. The bug had been present since -perm was implemented in bfs 0.84 (October 29, 2016). (efdf3ad5)

  • Fixed and extended the mapping from C locale charsets to Oniguruma encodings for -regex (c3794ef0)

  • Fixed a missing error message when -files0-from failed to read from its file. The bug was originally introduced in bfs 2.6.3 (January 31, 2023). (17f5165c)

  • Fixed a redundant error message when closing a file after a write error had already been reported, as in

    $ bfs -print -exec true \; >/dev/full
    

    The bug was originally introduced in bfs 3.3 (May 28, 2024). (2c970dbd)

Version 4.1.6

Choose a tag to compare

@tavianator tavianator released this 05 Nov 17:10
Immutable release. Only release title and notes can be modified.
4.1.6

Bug fixes

  • Fixed optimizer bugs that could produce wrong results for expressions involving the comma operator, like

    $ bfs \( -type f -o -type d \) , \! -type d
    

    The bugs were originally introduced in bfs 3.1 (February 6, 2024). (9b36c6bf, b6a703a3)

  • Fixed -regex with Oniguruma when a partial match was found before a complete one. For example, -regex '.*/a*\(ab\)*' failed to match ./aab. The bug was originally introduced in bfs 2.4 (February 22, 2022). (90bd8929)

  • Fixed -fstype on Linux bind mounts of the same file system. The bug was originally introduced in bfs 4.0.6 (February 26, 2025). (6fd62172)

  • Fixed -perm with multiple actions in a single symbolic mode, like +r+w, which only applied the file creation mask to the first action. The bug was originally introduced in bfs 4.0 (August 16, 2024). (0b16a06b)

  • Fixed -hidden and -nohidden with root paths like ./ or ../, which are now treated the same as . and ... The bug was originally introduced in bfs 2.2 (March 6, 2021). (95e9fec5)

  • Signals that were ignored at startup (for example by nohup) now stay ignored, both by bfs itself and by any child processes it spawns. The bug was originally introduced in bfs 3.3 (May 28, 2024). (3da97069)

  • Fixed -execdir ... {} + detection of a changed working directory with -depth and multiple root paths. The bug had been present since -execdir was implemented in bfs 1.0 (April 24, 2017). (c855df75)

  • Fixed an assertion failure after -execdir failed to open a parent directory. -execdir now also works in directories that are searchable but not readable. (f330325b)

  • Fixed -exec, etc. attempting to execute a directory if it appeared earlier in $PATH than the actual binary. The bug was originally introduced in bfs 2.3 (November 25, 2021). (a44963fe)

  • Fixed integer overflow in -mtime and friends with very large time units, which are now reported as an error (b7bd6b7d)

  • Fixed a potential crash when hiding the -status bar with SIGINFO/SIGUSR1. The bug was originally introduced in bfs 4.0.3 (October 22, 2024). (f63154bf)

  • Fixed a use-after-free in -D exec with commands like -exec {} +. The bug was originally introduced in bfs 1.2.3 (July 15, 2018). (d68703db)

  • Fixed spurious EMFILE errors by waiting for pending I/O before retrying. The bug was originally introduced in bfs 3.0 (July 13, 2023). (b5361674)

  • Fixed duplicate error messages for files that couldn't be stat()ed with -S {ids,eds} (b79d51a4)

  • Fixed error messages when fork() fails. The bug was originally introduced in bfs 4.0 (August 16, 2024). (07ddac5c)

  • Fixed coloring of dataless files on macOS (a96e7570)

  • Fixed -acl on DragonFly BSD (fc37d66c)

Version 4.1.5

Choose a tag to compare

@tavianator tavianator released this 28 Oct 04:37
Immutable release. Only release title and notes can be modified.
4.1.5

Changes

  • bfs now builds a static library as part of the build process. For release builds with LTO, some systems will require an ar wrapper to find the linker plugin, such as

    $ ./configure --enable-release AR=gcc-ar
    

    (or AR=llvm-ar for Clang builds). Most modern systems will not require overriding the default AR. (9d6880c2)

  • As hardening against some race conditions and buggy file systems, bfs will refuse to follow symbolic links in more cases (18415819)

Bug fixes

  • Fixed an optimizer bug that assumed if -samefile didn't match, -inum couldn't match either. This is false for files on different mount points, which is why (device, inode) number pairs are necessary to uniquely identify a file. The bug was originally introduced in bfs 3.1 (February 6, 2024). (1537b7e6)

  • Added some missing primary expression types to various shell completions (fa35eb9c)

  • Fixed a memory leak in -context (568c1bd0)

Full Changelog: 4.1.4...4.1.5

Version 4.1.4

Choose a tag to compare

@tavianator tavianator released this 29 Jun 18:11
Immutable release. Only release title and notes can be modified.
4.1.4

Bug fixes

  • Fixed an optimizer bug that ignored the units of -size arguments, meaning

    $ bfs -size 1k -size 1024c
    

    would claim that

    bfs: warning: bfs -size 1k -size 1024c
    bfs: warning:              ~~~~~~~~~~~
    bfs: warning: This expression is always false.
    

    and return no results.

    The bug was originally introduced in bfs 1.3.3 (February 10, 2019) (a6aecebe)

Version 4.1.3

Choose a tag to compare

@tavianator tavianator released this 16 Jun 01:29
Immutable release. Only release title and notes can be modified.
4.1.3

Bug fixes

  • Fixed a segfault when binaries built on macOS 26.4+ were run on older macOS versions (#229)

  • Fixed a potential hang in the test suite (77915eb9)

Version 4.1.2

Choose a tag to compare

@tavianator tavianator released this 06 May 19:44
4.1.2

Bug fixes

  • Fixed ./configure-time detection of sysctlbyname() on FreeBSD (#219)

  • Bumped the default version number, which was missed in 4.1.1

4.1.1

Choose a tag to compare

@tavianator tavianator released this 29 Apr 16:42
4.1.1

Bug fixes

  • Fixed ./configure CFLAGS=... being overridden by auto-detected flags (70341236)

  • Fixed the build for WASIX (5de89564)

  • Fixed the build on Android < 11 (#215)

  • bfs now takes system-wide open file limits into account. Previously, a handful of concurrent bfs instances could overwhelm a system with a low global limit, particularly macOS. (6f6f760a)

Version 4.1

Choose a tag to compare

@tavianator tavianator released this 11 Aug 23:32
4.1

New features

  • Added support for the $LSCOLORS variable used by FreeBSD and macOS (#54, #157)

Changes

  • Switched from C17 to C23 by default. C17 is still supported as a fallback as long as your compiler supports some common extensions.

Full Changelog: 4.0.8...4.1

4.0.8

Choose a tag to compare

@tavianator tavianator released this 20 Jun 14:09
4.0.8

Bug fixes

  • Fixed an invalid optimization that transformed

    $ bfs -user you -or -user me
    

    into just

    $ bfs -user you
    

    The bug was originally introduced in bfs 2.0 (October 14, 2020). (#155)

Full Changelog: 4.0.7...4.0.8

4.0.7

Choose a tag to compare

@tavianator tavianator released this 15 Jun 17:57
4.0.7

Changes

  • bfs now takes CPU affinity into account when picking how many threads to use (a36774b)

  • -execdir /bin/... is now allowed even with a relative path in $PATH (cb40f51)

  • Expect is no longer a test suite dependency (7102fec)

Bug fixes

  • Only the last -files0-from argument now has any effect, to match GNU find (a662fda)

  • Fixed -execdir {}, which was inadvertently broken in bfs 4.0 (def4a83)