Releases: tavianator/bfs
Version 4.0.1
Bug fixes
bfs
no longer prints a "suppressed errors" warning unless-noerror
is actually suppressing errors5d03c9d
Version 4.0
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 BSDfind
, contrary to the behaviour of GNUfind
. (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
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 likebfs
prior to 3.3 and otherfind
implementations, as required by POSIX.
Version 3.3
New features
-
The
-status
bar can now be toggled bySIGINFO
(Ctrl+T) on systems that support it, andSIGUSR1
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
-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 frompkg-config
during configuration
Version 3.2
New features
-
New
-limit N
action that quits immediately afterN
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
- Implemented
Bug fixes
- Fixed some rarely-used code paths that clean up after allocation failures
Version 3.1.3
Bug fixes
- On Linux, the
io_uring
feature probing introduced inbfs
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
Bug fixes
-
On Linux, we now check for supported
io_uring
operations before using them, which should fixbfs
on 5.X series kernels that supportio_uring
but not all ofopenat()
/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
Changes
-
Performance and scalability improvements
-
The file count in
bfs -status
now has a thousands separator
Version 3.1
New features
-
On Linux,
bfs
now uses io_uring for async I/O -
On all platforms,
bfs
can now performstat()
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 systemfind
Changes
-
Improved
bfs -j2
performance (b2ab7a1
) -
Optimized
-exec
by usingposix_spawn()
when possible, which can avoid the overhead offork()
(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 (commit5f16169
). -
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
Bug Fixes
- Fixed a segfault when reporting errors under musl (
d40eb87
)