mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-19 09:03:43 -05:00
I profiled fzf and it turned out that it was spending significant amount of time repeatedly converting character arrays into Unicode codepoints. This commit greatly improves search performance after the initial scan by memoizing the converted results. This commit also addresses the problem of unbounded memory usage of fzf. fzf is a short-lived process that usually processes small input, so it was implemented to cache the intermediate results very aggressively with no notion of cache expiration/eviction. I still think a proper implementation of caching scheme is definitely an overkill. Instead this commit introduces limits to the maximum size (or minimum selectivity) of the intermediate results that can be cached.
148 lines
3.5 KiB
Markdown
148 lines
3.5 KiB
Markdown
CHANGELOG
|
|
=========
|
|
|
|
0.9.10
|
|
------
|
|
|
|
### Improvements
|
|
|
|
- Performance optimization
|
|
- Less aggressive memoization to limit memory usage
|
|
|
|
0.9.9
|
|
-----
|
|
|
|
### New features
|
|
|
|
- Added `--tiebreak` option (#191)
|
|
- Added `--no-hscroll` option (#193)
|
|
- Visual indication of `--toggle-sort` (#194)
|
|
|
|
0.9.8
|
|
-----
|
|
|
|
### Bug fixes
|
|
|
|
- Fixed Unicode case handling (#186)
|
|
- Fixed to terminate on RuneError (#185)
|
|
|
|
0.9.7
|
|
-----
|
|
|
|
### New features
|
|
|
|
- Added `--toggle-sort` option (#173)
|
|
- `--toggle-sort=ctrl-r` is applied to `CTRL-R` shell extension
|
|
|
|
### Bug fixes
|
|
|
|
- Fixed to print empty line if `--expect` is set and fzf is completed by
|
|
`--select-1` or `--exit-0` (#172)
|
|
- Fixed to allow comma character as an argument to `--expect` option
|
|
|
|
0.9.6
|
|
-----
|
|
|
|
### New features
|
|
|
|
#### Added `--expect` option (#163)
|
|
|
|
If you provide a comma-separated list of keys with `--expect` option, fzf will
|
|
allow you to select the match and complete the finder when any of the keys is
|
|
pressed. Additionally, fzf will print the name of the key pressed as the first
|
|
line of the output so that your script can decide what to do next based on the
|
|
information.
|
|
|
|
```sh
|
|
fzf --expect=ctrl-v,ctrl-t,alt-s,f1,f2,~,@
|
|
```
|
|
|
|
The updated vim plugin uses this option to implement
|
|
[ctrlp](https://github.com/kien/ctrlp.vim)-compatible key bindings.
|
|
|
|
### Bug fixes
|
|
|
|
- Fixed to ignore ANSI escape code `\e[K` (#162)
|
|
|
|
0.9.5
|
|
-----
|
|
|
|
### New features
|
|
|
|
#### Added `--ansi` option (#150)
|
|
|
|
If you give `--ansi` option to fzf, fzf will interpret ANSI color codes from
|
|
the input, display the item with the ANSI colors (true colors are not
|
|
supported), and strips the codes from the output. This option is off by
|
|
default as it entails some overhead.
|
|
|
|
### Improvements
|
|
|
|
#### Reduced initial memory footprint (#151)
|
|
|
|
By removing unnecessary copy of pointers, fzf will use significantly smaller
|
|
amount of memory when it's started. The difference is hugely noticeable when
|
|
the input is extremely large. (e.g. `locate / | fzf`)
|
|
|
|
### Bug fixes
|
|
|
|
- Fixed panic on `--no-sort --filter ''` (#149)
|
|
|
|
0.9.4
|
|
-----
|
|
|
|
### New features
|
|
|
|
#### Added `--tac` option to reverse the order of the input.
|
|
|
|
One might argue that this option is unnecessary since we can already put `tac`
|
|
or `tail -r` in the command pipeline to achieve the same result. However, the
|
|
advantage of `--tac` is that it does not block until the input is complete.
|
|
|
|
### *Backward incompatible changes*
|
|
|
|
#### Changed behavior on `--no-sort`
|
|
|
|
`--no-sort` option will no longer reverse the display order within finder. You
|
|
may want to use the new `--tac` option with `--no-sort`.
|
|
|
|
```
|
|
history | fzf +s --tac
|
|
```
|
|
|
|
### Improvements
|
|
|
|
#### `--filter` will not block when sort is disabled
|
|
|
|
When fzf works in filtering mode (`--filter`) and sort is disabled
|
|
(`--no-sort`), there's no need to block until input is complete. The new
|
|
version of fzf will print the matches on-the-fly when the following condition
|
|
is met:
|
|
|
|
--filter TERM --no-sort [--no-tac --no-sync]
|
|
|
|
or simply:
|
|
|
|
-f TERM +s
|
|
|
|
This change removes unnecessary delay in the use cases like the following:
|
|
|
|
fzf -f xxx +s | head -5
|
|
|
|
However, in this case, fzf processes the lines sequentially, so it cannot
|
|
utilize multiple cores, and fzf will run slightly slower than the previous
|
|
mode of execution where filtering is done in parallel after the entire input
|
|
is loaded. If the user is concerned about this performance problem, one can
|
|
add `--sync` option to re-enable buffering.
|
|
|
|
0.9.3
|
|
-----
|
|
|
|
### New features
|
|
- Added `--sync` option for multi-staged filtering
|
|
|
|
### Improvements
|
|
- `--select-1` and `--exit-0` will start finder immediately when the condition
|
|
cannot be met
|
|
|