Releases: tavianator/bfs
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
)
Version 3.0.3
Changes
-
Iterative deepening modes (
-S {ids,eds}
) were optimized by delaying teardown until the very end (5f16169
) -
Parallel depth-first search (
-S dfs
) was optimized to avoid enqueueing every file separately (2572273
)
Bug Fixes
-
Iterative deepening modes (
-S {ids,eds}
) were performing iterative breadth-first searches sincebfs
3.0, negating any advantages they may have had over normal breadth-first search. They now do iterative depth-first searches as expected. (a029d95
) -
Fixed a linked-list corruption that could lead to an infinite loop on macOS and other non-Linux, non-FreeBSD platforms (
773f4a4
)
Version 3.0.2
Changes
-
-files0-from
now allows an empty set of paths to be given, matching GNU findutils 4.9.0 -
Reduced memory consumption in multi-threaded searches
-
Many man page updates
Bug fixes
- Fixed an out-of-bounds memory read that could occur when escaping a string containing an incomplete multi-byte character
Version 3.0.1
Bug fixes
-
Traversal fixes that mostly affect large directory trees (#107)
-
bfs
could encounterEMFILE
, close a file, and retry many times, particularly with-j1
-
Breadth-first search could become highly unbalanced, negating many of the benefits of
bfs
-
On non-{Linux,FreeBSD} plaforms, directories could stay open longer than necessary, consuming extra memory
-
Version 3.0
New features
bfs
now reads directories asynchronously and in parallel (#101). Performance is significantly improved as a result. Parallelism is controlled by the new-j
flag, e.g.-j1
,-j2
, etc.
Changes
-
bfs
now uses the C17 standard version, up from C11 -
Due to #101,
bfs
now requires some additional C and POSIX features:- Standard C atomics (
<stdatomic.h>
) - POSIX threads (
<pthread.h>
)
- Standard C atomics (
-
$LS_COLORS
extensions written in different cases (e.g.*.jpg=35:*.JPG=01;35
) are now matched case-sensitively, to match the new behaviour of GNU ls since coreutils version 9.2 -
Added a warning/error if
$LS_COLORS
can't be parsed, depending on whether-color
is requested explicitly -
Filenames with control characters are now escaped when printing with
-color
-
Build flags like
WITH_ONIGURUMA
have been renamed toUSE_ONIGURUMA
Bug fixes
- Fixed handling of the "normal text" color (
no
in$LS_COLORS
) to match GNU ls
Version 2.6.3
-
Fixed running the tests as root on Linux 8b24de3
-
Stopped relying on non-POSIX touch(1) features in the tests. This should fix the tests on at least OpenBSD. 2d5edb3
-
User/group caches are now filled lazily instead of eagerly b41dca5
-
More caches and I/O streams are flushed before -exec/-ok f98a1c4
-
Fixed various memory safety issues found by fuzzing
712b137 5ce883d da02def c55e855 -
Fixed a test failure on certain macOS versions 8b24de3
-
Mitigated a race condition when determining filesystem types (#97)
-
Lots of refactoring and optimization
Version 2.6.2
-
Fixed use of uninitialized memory on parsing errors involving
-fprintf
-
Fixed Android build issues (#96)
-
Refactored the test suite