Skip to content

Releases: skim-rs/skim

4.0.0 - 2026-03-10

10 Mar 15:40

Choose a tag to compare

Release Notes

Changes

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.

This release brings multiple breaking changes, please read the following if you have doubts about the update.

Default to the Arinae matcher

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.
This also makes the --scheme option available to the default matcher, allowing for more refined matching scenarii.

Default to non-typo resistant

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.

Removal of the skim_v1 algorithm

The SkimV1 algorithm, skim's initial algorithm, has been deprecated for years now, and it has now been removed.

SkimItem index (library only)

SkimItem::get_index and SkimItem::set_index are gone, and all index handling is now done internally.

Benchmarks

This benchmarks runs the interactive interface in a tmux session, and waits for the UI to stabilize.
It uses a 10 million path-like ASCII items input file, and the query test.

=== Results: sk v4.0.0 [baseline] ===
Completed runs: 50 / 50
Average items matched: 2895782 / 10000000  (min: 2895782, max: 2895782)
Average time: 3.827s  (min: 3.576s, max: 4.090s)
Average items/second: 2615767  (min: 2445033, max: 2796365)
Average peak memory usage: 1589.2 MB  (min: 1518.6 MB, max: 1661.2 MB)
Average peak CPU usage: 528.9%  (min: 457.0%, max: 740.0%)

=== Results: sk v3.7.0 ===
Completed runs: 50 / 50
Average items matched: 2895782 / 10000000  (min: 2895782, max: 2895782) +0.0%
Average time: 3.930s  (min: 3.565s, max: 4.226s)  +2.7%
Average items/second: 2548674  (min: 2366263, max: 2804816)  -2.6%
Average peak memory usage: 1618.8 MB  (min: 1539.1 MB, max: 1680.6 MB) +1.9%
Average peak CPU usage: 696.8%  (min: 608.0%, max: 875.0%)  +31.7%

=== Results: fzf 0.70.0 ===
Completed runs: 50 / 50
Average items matched: 2895782 / 10000000  (min: 2895782, max: 2895782) +0.0%
Average time: 5.421s  (min: 4.814s, max: 6.111s)  +41.7%
Average items/second: 1848269  (min: 1636444, max: 2077385)  -29.3%
Average peak memory usage: 2015.3 MB  (min: 1860.7 MB, max: 2173.9 MB) +26.8%
Average peak CPU usage: 1301.1%  (min: 1229.0%, max: 1431.0%)  +146.0%

=== Comparison Summary (vs baseline: sk v4.0.0) ===
Binary      Avg time     Ξ” time  Avg rate     Ξ” rate
------------------------------------------------------------------------------
sk v4.0.0   3.827s    baseline   2615767     baseline
sk v3.7.0   3.930s      +2.7%    2548674      -2.6%
fzf 0.70.0  5.421s     +41.7%    1848269     -29.3%

πŸš€ Features

  • [breaking] Internally compute indexes at match time (removes get/set_index) (#1001)
  • [breaking] Use Arinae as default algorithm

βš™οΈ Miscellaneous Tasks

  • [breaking] Default to disabled typos
  • Use python for bench script for comparison

Install skim 4.0.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v4.0.0/skim-installer.sh | sh

Download skim 4.0.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.7.0 - 2026-03-08

08 Mar 18:35

Choose a tag to compare

Release Notes

This adds a new library API: Skim::run_items. Using this, you don't need to send the items, the library handles it for you.

Instead of writing this:

use skim::prelude::*;
let (rx, tx) = unbounded();

// We need MySkimItem to override the set_index/get_index methods
struct MySkimItem {
    value: String,
    index: usize
}

impl SkimItem for MySkimItem {
    // Implement the default members
}

tx.send(vec![Arc::new(MySkimItem { value: String::from("foo"), index: 0 }) as Arc<dyn SkimItem>, Arc::new(MySkimItem { value: String::from("bar"), index: 1 }) as Arc<dyn SkimItem>]);

let res = Skim::run_with(options, Some(rx));

You can simply write this:

use skim::prelude::*;

let res = Skim::run_with(options, ["foo", "bar"]);

It will automatically convert any iterator of by adding an index field and then send it, before running skim.

πŸš€ Features

  • Add scheme for better filepath matching in Arinae
  • Add Skim::run_items API

πŸ› Bug Fixes

  • Use sum of scores in And engine
  • Correctly init rank for and engine

βš™οΈ Miscellaneous Tasks

  • Add gungraun benchmark
  • Review snapshots

Install skim 3.7.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.7.0/skim-installer.sh | sh

Download skim 3.7.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.6.2 - 2026-03-04

04 Mar 20:24

Choose a tag to compare

Release Notes

βš™οΈ Miscellaneous Tasks

  • Refactor app layout computations to take them out of the hot loop (#996)
  • Allow using flag or env vars for both log level and file

Install skim 3.6.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.6.2/skim-installer.sh | sh

Download skim 3.6.2

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.6.1 - 2026-03-03

03 Mar 11:13

Choose a tag to compare

Release Notes

βš™οΈ Miscellaneous Tasks

  • Switch allocator to mimalloc for ~20% perf in some cases
  • Add bench plot scripts

Install skim 3.6.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.6.1/skim-installer.sh | sh

Download skim 3.6.1

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.6.0 - 2026-03-02

02 Mar 17:20

Choose a tag to compare

Release Notes

This version adds the Arinae algorithm as an option, run sk --algo arinae to use it !

Arinae is designed to become skim's default algorithm in the future.

Technically, it uses Smith-Waterman and a modified Levenshtein distance with affine gaps for scoring, as well as multiple optimizations (the main ones being a loose prefilter and checks for early dismissal of paths that cannot lead to the best match). It also forbids typos on the first char of the query.

In practice, it should feel close to FZY's scoring with typos disabled, but with a more natural behavior regarding typos as Frizbee or other algorithms.

These other algorithms usually work by allowing a set number of typos using 3D matrices for computations, the max-typos value being set based on the length of the query. In practice, that meant that tes will match exactly, but test will allow one typo, meaning that typing a single character will change the filtered items completely. This algorithm will instead penalize typos, not block them completely.

This algorithm does not aim to revolution anything, but it aims at making typo-resistant fuzzy matching feel more like an actual alternative to the current options (namely FZF and FZY), while maintaining per-item performance at least as good as the current algorithms.

πŸš€ Features

  • Merge ranks in AndOr engine matcher
  • Add Arinae algorithm (#990)
  • (shell) Colored history widgets & remove perl completely (#994)

πŸ› Bug Fixes

  • Make sure we drop Skim before returning the output

πŸ’Ό Other

  • Drop flake-utils, add formatter (#992)

New Contributors

Install skim 3.6.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.6.0/skim-installer.sh | sh

Download skim 3.6.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.5.0 - 2026-02-22

22 Feb 11:17

Choose a tag to compare

Release Notes

πŸš€ Features

  • Add fzy matcher and --typos/--no-typos flag (#987)

πŸ› Bug Fixes

  • Correctly bind uppercase keys
  • More precision on AndOr matches (closes #526)
  • Respect the and & or priority

βš™οΈ Miscellaneous Tasks

  • (dep) Remove unused dependency 'beef' (#986)
  • (dep) Frizbee 0.8.1 (#985)
  • Add partial bench to measure the time it takes to setup skim
  • Pin dependencies to the latest exact version

New Contributors

Install skim 3.5.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.5.0/skim-installer.sh | sh

Download skim 3.5.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.4.0 - 2026-02-19

19 Feb 20:22

Choose a tag to compare

Release Notes

πŸš€ Features

  • Allow setting delimiters in + expansions (closes #935)
  • Add set-header action (closes #768)
  • Add --print-current, --output-format (closes #981)
  • Add --ellipsis option
  • Back to stable rust (#980)

πŸ› Bug Fixes

  • (ci) Do not run benches

πŸ’Ό Other

  • Add filter

πŸ“š Documentation

  • Benchmarks

βš™οΈ Miscellaneous Tasks

  • Add rust benchmark

Install skim 3.4.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.4.0/skim-installer.sh | sh

Download skim 3.4.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.3.0 - 2026-02-18

18 Feb 12:05

Choose a tag to compare

Release Notes

πŸš€ Features

  • Use a separate thread pool for Matcher runs (#961)
  • Event-driven re-render (#949)
  • Allow run_with to be run within a tokio runtime (#979)

πŸ› Bug Fixes

  • Possible None unwrap if ansi enabled but not in item

βš™οΈ Miscellaneous Tasks

  • Unify filter mode & squeeze more perf (#974)
  • Refactor Skim into its own file

New Contributors

Install skim 3.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.3.0/skim-installer.sh | sh

Download skim 3.3.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.2.0 - 2026-02-13

13 Feb 14:47

Choose a tag to compare

Release Notes

πŸš€ Features

  • Further reduce DefaultSkimItem size (#967)

βš™οΈ Miscellaneous Tasks

  • Enhance PR template [skip ci]

Install skim 3.2.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.2.0/skim-installer.sh | sh

Download skim 3.2.0

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

3.1.1 - 2026-02-13

13 Feb 09:43

Choose a tag to compare

Release Notes

πŸ› Bug Fixes

  • Republish crate

Install skim 3.1.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/download/v3.1.1/skim-installer.sh | sh

Download skim 3.1.1

File Platform Checksum
skim-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
skim-x86_64-apple-darwin.tar.xz Intel macOS checksum
skim-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
skim-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
skim-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum