Skip to content

Releases: tavianator/bfs

Version 4.0.1

19 Aug 17:07
4.0.1
Compare
Choose a tag to compare

Bug fixes

  • bfs no longer prints a "suppressed errors" warning unless -noerror is actually suppressing errors 5d03c9d

Version 4.0

16 Aug 14:29
4.0
Compare
Choose a tag to compare

New features

  • To match BSD find (and the POSIX Utility Syntax Guidelines), multiple flags can now be given in a single argument like -LEXO2. Previously, you would have had to write -L -E -X -O2. (c0fd33a)

  • Explicit timestamps can now be written as @SECONDS_SINCE_EPOCH. For example, bfs -newermt @946684800 will print files modified since January 1, 2000 (UTC). (c6bb003)

  • The new -noerror option suppresses all error messages during traversal. (#142)

Changes

  • -mount now excludes mount points entirely, to comply with the recently published POSIX 2024 standard. Use -xdev to include the mount point itself, but not its contents. bfs has been warning about this change since version 1.5.1 (September 2019). (33b85e1)

  • -perm now takes the current file creation mask into account when parsing a symbolic mode like +rw, as clarified by POSIX defect 1392. This matches the behaviour of BSD find, contrary to the behaviour of GNU find. (6290ce4)

Bug fixes

  • Fixed commands like ./configure CC=clang --enable-release that set variables before other options (49a5d48)

  • Fixed the build on RISC-V with GCC versions older than 14 (e93a1dc)

  • Fixed running bfs under Valgrind (a01cfac)

  • Fixed the exit code when failing to execute a non-existent command with -exec/-ok on some platforms including OpenBSD and HPPA (8c130ca)

  • Fixed $LS_COLORS case-sensitivity to match GNU ls more closely when the same extension is specified multiple times (08030ae)

  • Fixed the -status bar on Solaris/Illumos

New Contributors

Full Changelog: 3.3.1...4.0

Version 3.3.1

03 Jun 22:37
3.3.1
Compare
Choose a tag to compare

Bug fixes

  • Reduced the scope of the symbolic link loop change in version 3.3. -xtype l remains true for symbolic link loops, matching a change in GNU findutils 4.10.0. However, -L will report an error, just like bfs prior to 3.3 and other find implementations, as required by POSIX.

Version 3.3

28 May 21:09
3.3
Compare
Choose a tag to compare

New features

  • The -status bar can now be toggled by SIGINFO (Ctrl+T) on systems that support it, and SIGUSR1 on other systems

  • -regextype now supports all regex types from GNU find (#21)

  • File birth times are now supported on OpenBSD

Changes

  • Symbolic link loops are now treated like other broken links, rather than an error

  • ./configure now expects --with-libacl, --without-libcap, etc. rather than --enable-/--disable-

  • The (space) flag is now restricted to numeric -printf specifiers

Bug fixes

  • -regextype emacs now supports shy (non-capturing) groups

  • Fixed -status bar visual corruption when the terminal is resized

  • bfs now prints a reset escape sequence when terminated by a signal in the middle of colored output (#138)

  • ./configure CFLAGS=... no longer overrides flags from pkg-config during configuration

Version 3.2

02 May 17:20
3.2
Compare
Choose a tag to compare

New features

  • New -limit N action that quits immediately after N results

  • Implemented -context (from GNU find) for matching SELinux contexts (#27)

  • Implemented -printf %Z for printing SELinux contexts

Changes

  • The build system has been rewritten, and there is now a configure step:

    $ ./configure
    $ make
    

    See ./configure --help or docs/BUILDING.md for more details.

  • Improved platform support

    • Implemented -acl on Solaris/Illumos
    • Implemented -xattr on DragonFly BSD

Bug fixes

  • Fixed some rarely-used code paths that clean up after allocation failures

Version 3.1.3

07 Mar 00:21
3.1.3
Compare
Choose a tag to compare

Bug fixes

  • On Linux, the io_uring feature probing introduced in bfs 3.1.2 only applied to one thread, causing all other threads to avoid using io_uring entirely. The probe results are now copied to all threads correctly. (f64f76b)

Version 3.1.2

29 Feb 19:21
3.1.2
Compare
Choose a tag to compare

Bug fixes

  • On Linux, we now check for supported io_uring operations before using them, which should fix bfs on 5.X series kernels that support io_uring but not all of openat()/close()/statx() (8bc72d6)

  • Fixed a test failure triggered by certain filesystem types for /tmp (#131)

  • Fixed parsing and interpretation of timezone offsets for explicit reference times used in -*since and -newerXt (a9f3cde)

  • Fixed the build on m68k (c749c11)

3.1.1

16 Feb 13:46
3.1.1
Compare
Choose a tag to compare

Changes

  • Performance and scalability improvements

  • The file count in bfs -status now has a thousands separator

Version 3.1

06 Feb 21:38
3.1
Compare
Choose a tag to compare

New features

  • On Linux, bfs now uses io_uring for async I/O

  • On all platforms, bfs can now perform stat() calls in parallel, accelerating queries like -links, -newer, and -size, as well as colorized output

  • On FreeBSD, -type w now works to find whiteouts like the system find

Changes

  • Improved bfs -j2 performance (b2ab7a1)

  • Optimized -exec by using posix_spawn() when possible, which can avoid the overhead of fork() (95fbde1)

  • -execdir and -okdir are now rejected if $PATH contains a relative path, matching the behaviour of GNU find (163baf1)

  • Leading whitespace is no longer accepted in integer command line arguments like -links ' 1' (e0d7dc5)

Bug Fixes

  • -quit and -exit could be ignored in the iterative deepening modes (-S {ids,eds}). This is now fixed (670ebd9). The bug was introduced in version 3.0.3 (commit 5f16169).

  • Fixed two possible errors in sort mode (-s):

  • Fixed handling of FreeBSD union mounts (3ac3bee)

  • Fixed NO_COLOR handling when it's set to the empty string (79aee58)

  • Fixed some portability issues:

Version 3.0.4

13 Oct 03:53
3.0.4
Compare
Choose a tag to compare

Bug Fixes

  • Fixed a segfault when reporting errors under musl (d40eb87)