Skip to content

Releases: tavianator/bfs

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)

Version 3.0.3

13 Oct 02:22
3.0.3
Compare
Choose a tag to compare

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 since bfs 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

07 Sep 01:18
3.0.2
Compare
Choose a tag to compare

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

18 Jul 16:47
3.0.1
Compare
Choose a tag to compare

Bug fixes

  • Traversal fixes that mostly affect large directory trees (#107)

    • bfs could encounter EMFILE, 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

14 Jul 01:54
3.0
Compare
Choose a tag to compare

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:

  • $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 to USE_ONIGURUMA

Bug fixes

  • Fixed handling of the "normal text" color (no in $LS_COLORS) to match GNU ls

Version 2.6.3

31 Jan 18:32
2.6.3
Compare
Choose a tag to compare
  • Fixed running the tests as root on Linux 8b24de3

  • Fixed some tests on Android 2724dfb 0a5a80c

  • 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

21 Oct 15:00
2.6.2
Compare
Choose a tag to compare
  • Fixed use of uninitialized memory on parsing errors involving -fprintf

  • Fixed Android build issues (#96)

  • Refactored the test suite

Version 2.6.1

05 Jul 14:32
2.6.1
Compare
Choose a tag to compare
  • Fix stat() errors on GNU Hurd systems with glibc older than 2.35

  • Added fish shell tab completion (#94). Thanks @xfgusta!