<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fzf/src/algo, branch v0.66.0-custom</title>
<subtitle>Personal fork of fzf</subtitle>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/'/>
<entry>
<title>Normalize halfwidth and fullwidth characers for matching</title>
<updated>2025-07-03T11:57:19+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2025-07-03T11:57:19+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=ff1550bb383c74267416132592516aae8662833d'/>
<id>ff1550bb383c74267416132592516aae8662833d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix exact boundary match with --scheme=path or --tiebreak end</title>
<updated>2025-06-26T13:33:58+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2025-06-26T13:33:58+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=79690724d8fe0dbf785f17a49e24358e0913b5ad'/>
<id>79690724d8fe0dbf785f17a49e24358e0913b5ad</id>
<content type='text'>
Fix #4438
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix #4438
</pre>
</div>
</content>
</entry>
<entry>
<title>Normalize char before pattern lookup (#4252)</title>
<updated>2025-02-17T11:50:15+00:00</updated>
<author>
<name>Alexei Șerșun</name>
<email>alexei.sersun@yahoo.com</email>
</author>
<published>2025-02-17T11:50:15+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=01d9d9c8c895de728e7abcad1723db019280452d'/>
<id>01d9d9c8c895de728e7abcad1723db019280452d</id>
<content type='text'>
There is an edge-case in FuzzyMatchV1 during backward scan, related to
normalization: if string is initially denormalized (e.g. Unicode symbol),
backward scan will proceed further to the next char; however, when the
score is computed, the string is normalized first, then scanned based on
the pattern. This leads to accessing pattern index increment, which
itself leads to out-of-bound index access, resulting in a panic.

To illustrate the process, here's the sequence of operations when search
is perfored:

1. during backward scan by "minim" pattern

```
xxxxx Minímal example
      ^^^^^^^^^^^^
      ||||||||||||
      miniiiiiiiim &lt;- compute score for this substring
```
2. during compute score by "minim" pattern
```
      Minímal exam
      minimal exam &lt;- normalize chars before computing the score
      ^^^^^^
      ||||||
      minim &lt;- at this point the pattern is already fully scanned and index
              is out-of-the-bound
```

In this commit the char is normalized during backward scan, to detect
properly the boundaries for the pattern.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is an edge-case in FuzzyMatchV1 during backward scan, related to
normalization: if string is initially denormalized (e.g. Unicode symbol),
backward scan will proceed further to the next char; however, when the
score is computed, the string is normalized first, then scanned based on
the pattern. This leads to accessing pattern index increment, which
itself leads to out-of-bound index access, resulting in a panic.

To illustrate the process, here's the sequence of operations when search
is perfored:

1. during backward scan by "minim" pattern

```
xxxxx Minímal example
      ^^^^^^^^^^^^
      ||||||||||||
      miniiiiiiiim &lt;- compute score for this substring
```
2. during compute score by "minim" pattern
```
      Minímal exam
      minimal exam &lt;- normalize chars before computing the score
      ^^^^^^
      ||||||
      minim &lt;- at this point the pattern is already fully scanned and index
              is out-of-the-bound
```

In this commit the char is normalized during backward scan, to detect
properly the boundaries for the pattern.</pre>
</div>
</content>
</entry>
<entry>
<title>Fix a non-constant format string (#4189)</title>
<updated>2025-01-19T15:32:50+00:00</updated>
<author>
<name>Elliott Sales de Andrade</name>
<email>quantum.analyst@gmail.com</email>
</author>
<published>2025-01-19T15:32:50+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=6580f32b437df41aa7890446ac4a01d37cd5c85e'/>
<id>6580f32b437df41aa7890446ac4a01d37cd5c85e</id>
<content type='text'>
Go 1.24 now has a vet check about this that causes `go test` to fail:
https://github.com/golang/go/issues/60529</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Go 1.24 now has a vet check about this that causes `go test` to fail:
https://github.com/golang/go/issues/60529</pre>
</div>
</content>
</entry>
<entry>
<title>Underscore boundaries should be ranked lower</title>
<updated>2024-08-29T08:08:23+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2024-08-16T10:20:30+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=4ae3069c6fc3e3f2427557bf4813867a621c79ad'/>
<id>4ae3069c6fc3e3f2427557bf4813867a621c79ad</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement exact-boundary match type</title>
<updated>2024-08-29T08:08:23+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2024-08-13T02:19:54+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=6a67712944bbba3bfbb04e6ad02f7ae7d55cd238'/>
<id>6a67712944bbba3bfbb04e6ad02f7ae7d55cd238</id>
<content type='text'>
Close #3963
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Close #3963
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor the code so that fzf can be used as a library (#3769)</title>
<updated>2024-05-06T16:06:42+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2024-05-06T16:06:42+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=e8405f40fe2eb3675f1cb4f69e825eff5f13f269'/>
<id>e8405f40fe2eb3675f1cb4f69e825eff5f13f269</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve search performance by limiting the search scope</title>
<updated>2024-04-14T02:48:44+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2024-04-13T22:52:42+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=e86b81bbf5c55344f4e29060b71eb1ab563296fe'/>
<id>e86b81bbf5c55344f4e29060b71eb1ab563296fe</id>
<content type='text'>
Find the last occurrence of the last character in the pattern and
perform the search algorithm only up to that point.

The effectiveness of this mechanism depends a lot on the shape of the
input and the pattern.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Find the last occurrence of the last character in the pattern and
perform the search algorithm only up to that point.

The effectiveness of this mechanism depends a lot on the shape of the
input and the pattern.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve search performance by pre-calculating bonus matrix</title>
<updated>2024-04-14T02:47:06+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2024-04-13T07:57:34+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=a5447b8b7531dacb49961d3fccc404f634f06709'/>
<id>a5447b8b7531dacb49961d3fccc404f634f06709</id>
<content type='text'>
This gives yet another 5% boost.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This gives yet another 5% boost.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve search performance by pre-calculating character classes</title>
<updated>2024-04-14T02:47:05+00:00</updated>
<author>
<name>Junegunn Choi</name>
<email>junegunn.c@gmail.com</email>
</author>
<published>2024-04-13T07:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/fzf/commit/?id=7ce6452d83a62a3bc409fef8face1cfaef6e0146'/>
<id>7ce6452d83a62a3bc409fef8face1cfaef6e0146</id>
<content type='text'>
This simple optmization can give more than 15% performance boost
in some scenarios.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This simple optmization can give more than 15% performance boost
in some scenarios.
</pre>
</div>
</content>
</entry>
</feed>
