0.47.0

junegunn/fzf0.47.0Mar 10, 2024by junegunn

Upgrading?

Release notes summary

Replaced the default find command with a built-in parallel directory walker, which changes behavior regarding hidden files and ordering.

Key Highlights

  • Replaced default find command with a built-in parallel walker.
  • Added `$FZF_DEFAULT_OPTS_FILE` to manage default options in a file.
  • Hidden files are now listed (previously ignored).
  • Traversal is parallelized, so the order of entries is non-deterministic.

Breaking Changes

  • Hidden files are now listed (previously ignored).
  • No filtering of `devtmpfs` or `proc` types.
  • Traversal is parallelized, resulting in non-deterministic entry order.

New Features

  • Built-in parallel walker
  • $FZF_DEFAULT_OPTS_FILE

Full Release Notes

- Replaced ["the default find command"][find] with a built-in directory walker to simplify the code and to achieve better performance and consistent behavior across platforms. This doesn't affect you if you have `$FZF_DEFAULT_COMMAND` set.
    - Breaking changes:
        - Unlike [the previous "find" command][find], the new traversal code will list hidden files, but hidden directories will still be ignored
        - No filtering of `devtmpfs` or `proc` types
        - Traversal is parallelized, so the order of the entries will be different each time
    - You may wonder why fzf implements directory walker anyway when it's a filter program following the Unix philosophy. But fzf has had [the walker code for years][walker] to tackle the performance problem on Windows. And I decided to use the same approach on different platforms as well for the benefits listed above.
    - Built-in walker is using the excellent [charlievieth/fastwalk][fastwalk] library, which easily outperforms its competitors and supports safely following symlinks.
- Added `$FZF_DEFAULT_OPTS_FILE` to allow managing default options in a file
    - See [#3618](https://github.com/junegunn/fzf/pull/3618)
    - Option precedence from lower to higher
        1. Options read from `$FZF_DEFAULT_OPTS_FILE`
        1. Options from `$FZF_DEFAULT_OPTS`
        1. Options from command-line arguments
- Bug fixes and improvements

[find]: https://github.com/junegunn/fzf/blob/0.46.1/src/constants.go#L60-L64
[walker]: https://github.com/junegunn/fzf/pull/1847
[fastwalk]: https://github.com/charlievieth/fastwalk

Related Repositories