From eacef5ea6e39c6be3fff4e231fc6d10ba2ff9491 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Mon, 2 Mar 2026 16:56:13 +0900 Subject: [PATCH] 0.70.0 --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++-- install | 2 +- install.ps1 | 2 +- main.go | 2 +- man/man1/fzf-tmux.1 | 2 +- man/man1/fzf.1 | 14 +++++++++++++- 6 files changed, 46 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4443f79c..1793dc52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,40 @@ CHANGELOG ========= -0.69.0 +0.70.0 ------ -- Added `change-with-nth` action for dynamically changing the `--with-nth` option +- Added `change-with-nth` action for dynamically changing the `--with-nth` option. + - Requires `--with-nth` to be set initially. + - Multiple options separated by `|` can be given to cycle through. ```sh echo -e "a b c\nd e f\ng h i" | fzf --with-nth .. \ --bind 'space:change-with-nth(1|2|3|1,3|2,3|)' ``` +- Added `change-header-lines` action for dynamically changing the `--header-lines` option +- Performance improvements (1.3x to 1.9x faster filtering depending on query) + ``` + === query: 'l' === + [all] baseline: 168.87ms current: 95.21ms (1.77x) matches: 5069891 (94.78%) + [1T] baseline: 1652.22ms current: 841.40ms (1.96x) matches: 5069891 (94.78%) + + === query: 'lin' === + [all] baseline: 343.27ms current: 252.59ms (1.36x) matches: 3516507 (65.74%) + [1T] baseline: 3199.89ms current: 2230.64ms (1.43x) matches: 3516507 (65.74%) + + === query: 'linux' === + [all] baseline: 85.47ms current: 63.72ms (1.34x) matches: 307229 (5.74%) + [1T] baseline: 774.64ms current: 589.32ms (1.31x) matches: 307229 (5.74%) + + === query: 'linuxlinux' === + [all] baseline: 55.13ms current: 35.67ms (1.55x) matches: 12230 (0.23%) + [1T] baseline: 461.99ms current: 332.38ms (1.39x) matches: 12230 (0.23%) + + === query: 'linuxlinuxlinux' === + [all] baseline: 51.77ms current: 32.53ms (1.59x) matches: 865 (0.02%) + [1T] baseline: 409.99ms current: 296.33ms (1.38x) matches: 865 (0.02%) + ``` +- Fixed `nth` attribute merge order to respect precedence hierarchy (#4697) +- bash: Replaced `printf` with builtin `printf` to bypass local indirections (#4684) (@DarrenBishop) 0.68.0 ------ diff --git a/install b/install index ad1ec1b9..7eee4d8a 100755 --- a/install +++ b/install @@ -2,7 +2,7 @@ set -u -version=0.68.0 +version=0.70.0 auto_completion= key_bindings= update_config=2 diff --git a/install.ps1 b/install.ps1 index c0370317..e910b51f 100644 --- a/install.ps1 +++ b/install.ps1 @@ -1,4 +1,4 @@ -$version="0.68.0" +$version="0.70.0" $fzf_base=Split-Path -Parent $MyInvocation.MyCommand.Definition diff --git a/main.go b/main.go index 16748575..828c8933 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ import ( "github.com/junegunn/fzf/src/protector" ) -var version = "0.68" +var version = "0.70" var revision = "devel" //go:embed shell/key-bindings.bash diff --git a/man/man1/fzf-tmux.1 b/man/man1/fzf-tmux.1 index e369b9e6..22a7ddf4 100644 --- a/man/man1/fzf-tmux.1 +++ b/man/man1/fzf-tmux.1 @@ -21,7 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. .. -.TH fzf\-tmux 1 "Feb 2026" "fzf 0.68.0" "fzf\-tmux - open fzf in tmux split pane" +.TH fzf\-tmux 1 "Mar 2026" "fzf 0.70.0" "fzf\-tmux - open fzf in tmux split pane" .SH NAME fzf\-tmux - open fzf in tmux split pane diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index c0711754..93cce3af 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -21,7 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. .. -.TH fzf 1 "Feb 2026" "fzf 0.68.0" "fzf - a command-line fuzzy finder" +.TH fzf 1 "Mar 2026" "fzf 0.70.0" "fzf - a command-line fuzzy finder" .SH NAME fzf - a command-line fuzzy finder @@ -1237,6 +1237,18 @@ Here is an example script that uses a Unix socket instead of a TCP port. curl --unix-socket /tmp/fzf.sock http -d up \fR +.TP +.BI "\-\-threads=" "N" +Number of matcher threads to use. The default value is +\fBmin(8 * NUM_CPU, 32)\fR. +.TP +.BI "\-\-bench=" "DURATION" +Repeatedly run \fB\-\-filter\fR for the given duration and print timing +statistics. Must be used with \fB\-\-filter\fR. + +e.g. + \fBcat /usr/share/dict/words | fzf \-\-filter abc \-\-bench 10s\fR + .SS DIRECTORY TRAVERSAL .TP .B "\-\-walker=[file][,dir][,follow][,hidden]"