Skip to content

Conversation

@LoricAndre
Copy link

Hi, thank you for your work on this project (and on blink.cmp).

I'd like to use your matcher in skim, but I'd also like to retain compilation using stable rustc.
This is what was needed for it to work, I'm not a huge fan of the Appendable impl but it seemed okay to panic there.

@saghen
Copy link
Owner

saghen commented Jan 20, 2026

That'd be neat! Unfortunately, if you remove the SIMD smith waterman, I wouldn't imagine the scalar matcher is that quick (benchmarks welcome though). I'm looking into porting all the SIMD to use intrinsics so that it'll be availabe on stable rust, but it's a ways out since I'm combining those changes with a large rewrite of the smith waterman logic. You could use nucleo for now which is still quite quick if you don't need typo resistance.

@LoricAndre
Copy link
Author

Typo resistance is exactly what I'm looking for 😅

As far as benchmarks go, my benchmark script reported this matcher to be as fast as skim's current one in a realist-ish test. I just released a version that uses the latest pushed crate, feature-gating it on my side so that library users can still use skim with stable rust, but without this matcher.

@saghen
Copy link
Owner

saghen commented Jan 20, 2026

Nice! Linking that benchmark for anyone else who wants to look: skim-rs/skim#891

I'm actually quite surprised it kept up with max_typos: Some(2)! Fyi, for blink.cmp, I set the max_typos based on the length of the keyword. https://github.com/saghen/blink.cmp/blob/main/lua/blink/cmp/config/fuzzy.lua#L43

@LoricAndre
Copy link
Author

I was really pleasantly surprised to see how easy it was to integrate it, I set the default to 2, I'll probably make it smarter in the future but 2 seems reasonable IMO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants