All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.0 - 2026-08-22
Changed
- Major performance and memory optimization for
Levenshtein.distance/2:- Added prefix and suffix trimming to eliminate identical leading and trailing graphemes before matrix computation.
- Replaced two-row matrix algorithm with a single-row iterative approach.
- Swapped inputs to always iterate columns over the shorter string for reduced memory and computation.
- Replaced
Enumhelper overhead with direct list recursion and:listsoperations.
Added
- Comprehensive test suite covering identical strings, empty strings, insertions, deletions, substitutions, mixed operations, Unicode/multibyte grapheme clusters, emojis, whitespace/newlines, symmetry, and triangle inequality properties.
Fixed
- Fixed typos in documentation and formatted typespec for
Levenshtein.distance/2.
0.3.0 - 2019-10-08
Changed
- Switched from Erlang implementation to a pure Elixir implementation based on the Wagner-Fischer algorithm.
- Removed Erlang source files (
src/levenshtein.erl) anddistance_cachedfunction.
Added
- Doctests and expanded test cases.
- ExDoc documentation and Hex package metadata.
0.2.2 - 2019-09-29
Fixed
- Fixed
distance_cachedcalling the wrong underlying function.
Added
- Basic test suite.
0.2.1 - 2019-06-20
Added
- Added documentation for
Levenshteinmodule and integratedex_doc.
0.2.0 - 2018-07-16
Added
- Initial Hex package release.
- Added
Levenshteinmodule wrapping Erlang implementation with caching support (distanceanddistance_cached). - MIT License.