PackageTrack
Sign in Get early access

strsim

Implementations of string similarity metrics. Includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro, Jaro-Winkler, and Sørensen-Dice.

0.11.1 1.0B downloads/mo #41 most downloaded on crates.io rapidfuzz/strsim-rs

What this package is like to depend on

Last release 2 years ago

no release in 18 months

Ships unpredictably

gaps range from 2 weeks to 3.9 years

Nearly every release is documented

notes for 24 of 24 stable releases

1 version withdrawn

withdrawn after publishing

12 years old

25 releases · first in 2015

0 releases in the last 12 months

see the full history below

Release timeline

25 releases · Feb 2015 to Apr 2024
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 25
  1. 0.11.1 02 Apr 2024
    Release notes

    Fixed

    • Drop MSRV down to 1.56 which was mistakenly changed in 0.11.0
    Open source →
    Release notes

    Fixed

    • Drop MSRV down to 1.56 which was mistakenly changed in 0.11.0
    Open source →
  2. 0.11.0 07 Jan 2024
    Release notes

    Changed

    • improve OSA implementation

      • reduce runtime
      • reduce binary size by more than 25%
    • reduce binary size of Levenshtein distance

    • improve Damerau-Levenshtein implementation

      • reduce memory usage from O(N*M) to O(N+M)
      • reduce runtime in our own benchmark by more than 70%
      • reduce binary size by more than 25%
    • only boost similarity in Jaro-Winkler once the Jaro similarity exceeds 0.7

    Fixed

    • Fix transposition counting in Jaro and Jaro-Winkler.
    • Limit common prefix in Jaro-Winkler to 4 characters
    Open source →
    Release notes

    Changed

    • improve OSA implementation

      • reduce runtime
      • reduce binary size by more than 25%
    • reduce binary size of Levenshtein distance

    • improve Damerau-Levenshtein implementation

      • reduce memory usage from O(N*M) to O(N+M)
      • reduce runtime in our own benchmark by more than 70%
      • reduce binary size by more than 25%
    • only boost similarity in Jaro-Winkler once the Jaro similarity exceeds 0.7

    Fixed

    • Fix transposition counting in Jaro and Jaro-Winkler.
    • Limit common prefix in Jaro-Winkler to 4 characters
    Open source →
  3. 0.10.1 07 Jan 2024 withdrawn
    Release notes

    Changed

    • improve OSA implementation

      • reduce runtime
      • reduce binary size by more than 25%
    • reduce binary size of Levenshtein distance

    • improve Damerau-Levenshtein implementation

      • reduce memory usage from O(N*M) to O(N+M)
      • reduce runtime in our own benchmark by more than 70%
      • reduce binary size by more than 25%
    • only boost similarity in Jaro-Winkler once the Jaro similarity exceeds 0.7

    Fixed

    • Fix transposition counting in Jaro and Jaro-Winkler.
    • Limit common prefix in Jaro-Winkler to 4 characters
    Open source →
  4. 0.10.0 31 Jan 2020
    Release notes

    Added

    • Sørensen-Dice implementation (thanks @robjtede)
    Open source →
  5. 0.9.3 13 Dec 2019
    Release notes

    Fixed

    • Fix Jaro and Jaro-Winkler when the arguments have lengths of 1 and are equal. Previously, the functions would erroneously return 0 instead of 1. Thanks to @vvrably for pointing out the issue.
    Open source →
  6. 0.9.2 09 May 2019
    Release notes

    Changed

    • Revert back to the standard library hashmap because it will use hashbrown very soon
    • Remove ndarray in favor of using a single vector to represent the 2d grid in Damerau-Levenshtein
    Open source →
  7. 0.9.1 08 Apr 2019
    Release notes

    Changed

    • Faster Damerau-Levenshtein implementation (thanks @lovasoa)
    Open source →
  8. 0.9.0 06 Apr 2019
    Release notes

    Added

    • Generic distance functions (thanks @lovasoa)
    Open source →
  9. 0.8.0 19 Aug 2018
    Release notes

    Added

    • Normalized versions of Levenshtein and Damerau-Levenshtein (thanks @gentoid)
    Open source →
  10. 0.7.0 17 Jan 2018
    Release notes

    Changed

    • Faster Levenshtein implementation (thanks @wdv4758h)

    Removed

    • Remove the "against_vec" functions. They are one-liners now, so they don't seem to add enough value to justify making the API larger. I didn't find anybody using them when I skimmed through a GitHub search. If you do use them, you can change the calls to something like:
    let distances = strings.iter().map(|a| jaro(target, a)).collect();
    
    Open source →
  11. 0.6.0 27 Dec 2016
    Release notes

    Added

    • Add optimal string alignment distance

    Fixed

    • Fix Damerau-Levenshtein implementation (previous implementation was actually optimal string alignment; see this [Damerau-Levenshtein explanation])
    Open source →
  12. 0.5.2 22 Nov 2016
    Release notes

    Changed

    • Remove Cargo generated documentation in favor of a [docs.rs] link
    Open source →
  13. 0.5.1 24 Aug 2016
    Release notes

    Added

    • Add Cargo generated documentation

    Fixed

    • Fix panic when Jaro or Jaro-Winkler are given strings both with a length of one
    Open source →
  14. 0.5.0 12 Aug 2016
    Release notes

    Changed

    • Make Hamming faster (thanks @IBUzPE9) when the two strings have the same length but slower when they have different lengths
    Open source →
  15. 0.4.1 18 Apr 2016
    Release notes

    Added

    • Add Vagrant setup for development
    • Add AppVeyor configuration for Windows CI

    Fixed

    • Fix metrics when given strings with multibyte characters (thanks @WanzenBug)
    Open source →
  16. 0.4.0 10 Jun 2015
    Release notes

    Added

    • For each metric, add a function that takes a vector of strings and returns a vector of results (thanks @ovarene)
    Open source →
  17. 0.3.0 30 Apr 2015
    Release notes

    Changed

    • Remove usage of unstable Rust features
    Open source →
  18. 0.2.5 24 Apr 2015
    Release notes

    Fixed

    • Remove unnecessary Float import from doc tests
    Open source →
  19. 0.2.4 15 Apr 2015
    Release notes

    Fixed

    • Remove unused core feature flag
    Open source →
  20. 0.2.3 02 Apr 2015
    Release notes

    Fixed

    • Remove now unnecessary Float import
    Open source →
  21. 0.2.2 29 Mar 2015
    Release notes

    Fixed

    • Remove usage of char_at (marked as unstable)
    Open source →
  22. 0.2.1 21 Feb 2015
    Release notes

    Fixed

    • Update bit vector import to match Rust update
    Open source →
  23. 0.2.0 19 Feb 2015
    Release notes

    Added

    • Implement Damerau-Levenshtein
    • Add tests in docs
    Open source →
  24. 0.1.1 11 Feb 2015
    Release notes

    Added

    • Configure Travis for CI
    • Add rustdoc comments

    Fixed

    • Limit Jaro-Winkler return value to a maximum of 1.0
    • Fix float comparisons in tests
    Open source →
  25. 0.1.0 10 Feb 2015
    Release notes

    Added

    • Implement Hamming, Jaro, Jaro-Winkler, and Levenshtein
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive