You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+73-2Lines changed: 73 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,79 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [4.0.0] - 2026-03-10
9
+
10
+
### Changes
11
+
12
+
`sk` is now beating `fzf` in interactive matching for time, peak memory usage and CPU usage ! See the benchmarks below for details, including a brief explanation of the benchmark itself.
13
+
14
+
This release brings multiple breaking changes, please read the following if you have doubts about the update.
15
+
16
+
#### Default to the Arinae matcher
17
+
18
+
The biggest change of them all is that the default algorithm is now `Arinae`, skim's latest and most performant algorithm, featuring typo-resistance. If you want to keep using `SkimV2`, pass `--algo skim_v2` and please take the time to open an issue explaining why if possible.
19
+
This also makes the `--scheme` option available to the default matcher, allowing for more refined matching scenarii.
20
+
21
+
#### Default to non-typo resistant
22
+
23
+
Typo-resistant behavior is now disable by default, add `--typos` to your skim invocation or `SKIM_DEFAULT_OPTIONS` to get it back. Unless you were using the `frizbee`, `fzy` or `arinae` matcher, this should not impact you.
24
+
25
+
#### Removal of the `skim_v1` algorithm
26
+
27
+
The `SkimV1` algorithm, skim's initial algorithm, has been deprecated for years now, and it has now been removed.
28
+
29
+
#### SkimItem index (library only)
30
+
31
+
`SkimItem::get_index` and `SkimItem::set_index` are gone, and all index handling is now done internally.
32
+
33
+
### Benchmarks
34
+
35
+
This benchmarks runs the interactive interface in a tmux session, and waits for the UI to stabilize.
36
+
It uses a 10 million path-like ASCII items input file, and the query `test`.
37
+
38
+
```
39
+
=== Results: sk v4.0.0 [baseline] ===
40
+
Completed runs: 50 / 50
41
+
Average items matched: 2895782 / 10000000 (min: 2895782, max: 2895782)
42
+
Average time: 3.827s (min: 3.576s, max: 4.090s)
43
+
Average items/second: 2615767 (min: 2445033, max: 2796365)
When passed without a value (\-\-typos), uses adaptive formula (pattern_length / 4). When passed with a value (e.g. \-\-typos=2), uses that exact number as the maximum allowed typos. \-\-typos=0 explicitly disables typo tolerance. Applies to both fzy and frizbee matchers.
@@ -1062,4 +1060,4 @@ When using `sk \-\-remote`, pipe in action chains (see the KEYBINDS section), fo
0 commit comments