fzf/src
2015-01-05 01:25:54 +09:00
..
curses Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
fzf Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
algo_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
algo.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
atomicbool_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
atomicbool.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
cache.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
chunklist_test.go Remove race conditions when accessing the last chunk 2015-01-04 05:01:13 +09:00
chunklist.go Remove race conditions when accessing the last chunk 2015-01-04 05:01:13 +09:00
constants.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
core.go Remove race conditions when accessing the last chunk 2015-01-04 05:01:13 +09:00
Dockerfile Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
eventbox_test.go Remove unnecessary delay on non/defered interactive mode 2015-01-04 05:00:28 +09:00
eventbox.go Remove unnecessary delay on non/defered interactive mode 2015-01-04 05:00:28 +09:00
item_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
item.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
LICENSE Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
Makefile Update Makefile and installer to use version number 2015-01-05 01:25:54 +09:00
matcher.go Fix scan limit for --select-1 and --exit-0 options 2015-01-04 01:47:59 +09:00
options_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
options.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
pattern_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
pattern.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
reader_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
reader.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
README.md Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
terminal.go Remove race conditions from screen update 2015-01-04 05:09:40 +09:00
tokenizer_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
tokenizer.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
util_test.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00
util.go Rewrite fzf in Go 2015-01-04 00:37:29 +09:00

fzf in Go

This directory contains the source code for the new fzf implementation in Go. This new version has the following benefits over the previous Ruby version.

  • Immensely faster
    • No GIL. Performance is linearly proportional to the number of cores.
    • It's so fast that I even decided to remove the sort limit (--sort=N)
  • Does not require Ruby and distributed as an executable binary
    • Ruby dependency is especially painful on Ruby 2.1 or above which ships without curses gem

Build

# Build fzf executable
make

# Install the executable to ../bin directory
make install

# Build executable for Linux x86_64 using Docker
make linux64

Prebuilt binaries

  • Darwin x86_64
  • Linux x86_64

Third-party libraries used

Contribution

For the moment, I will not add or accept any new features until we can be sure that the implementation is stable and we have a sufficient number of test cases. However, fixes for obvious bugs and new test cases are welcome.

I also care much about the performance of the implementation (that's the reason I rewrote the whole thing in Go, right?), so please make sure that your change does not result in performance regression. Please be minded that we still don't have a quantitative measure of the performance.

License