Releases: tavianator/bfs
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
Version 2.6.1
Version 2.6
-
Fixed deleting large NFS directories on FreeBSD (#67).
-
Added support for a
bfs
-specificBFS_COLORS
environment variable. -
Refactored the build system, directory structure, and documentation (#88, #89, #91). Thanks @ElectronicsArchiver!
-
Added
zsh
completion (#86). Thanks @VorpalBlade! -
Updated the default color scheme to match GNU coreutils 9.1. Files with capabilities set are no longer colored differently by default, resulting in a significant performance improvement.
-
Became less aggressive at triggering automounts
-
Added support for out-of-tree builds with
BUILDDIR
Version 2.5
-
Added compiler-style context for errors and warnings. Errors look like this:
$ bfs -nam needle bfs: error: bfs -nam needle bfs: error: ~~~~ bfs: error: Unknown argument; did you mean -name?
and warnings look like this:
$ bfs -print -name 'needle' bfs: warning: bfs -print -name needle bfs: warning: ~~~~~~~~~~~~ bfs: warning: The result of this expression is ignored.
-
Updated from C99 to C11
-
Fixed the tests when built against musl
-
Fixed a build error reported on Manjaro
Version 2.4.1
-
Fixed the build when Oniguruma is not installed in the default search paths (#82)
-
Fixed string encoding bugs with Oniguruma enabled
-
Fixed regex error reporting bugs
Version 2.4
-
Added the Oniguruma regular expression library as an (optional, but enabled by default) dependency (#81). Oniguruma supports more regular expression syntax types than the POSIX regex API, and often performs better. To build
bfs
without this new dependency, domake WITH_ONIGURUMA=
to disable it. Thanks @data-man! -
Added support for the
ed
,emacs
,grep
, andsed
regular expression types (#21) -
Before executing a process with
-exec[dir]
/-ok[dir]
,bfs
now ensures all output streams are flushed. Previously, I/O from subprocesses could be interleaved unpredictably with buffered I/O frombfs
itself.
Version 2.3.1
-
Fixed the build on Debian kFreeBSD
-
Fixed a crash on GNU Hurd when piping bfs's output
-
Fixed a double-
close()
on non-Linux platforms iffdopendir()
fails -
Reduced memory allocations on startup