NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2335 most downloaded on crates.io
Search engine library
Last release 6 months ago
31 Mar 2026
Ships fairly regularly
a new release about every 6 months
Some releases are documented
notes for 5 of 13 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
13 releases · first in 2019
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
API Changes. Using Range instead of (start, end) in the API and internals (FileSlice, OwnedBytes, Snippets, ...) This change is breaking but migration
FileSlice, OwnedBytes, Snippets, ...)
This change is breaking but migration is trivial.Migrated tantivy error from the now deprecated failure crate to thiserror #760. (@hirevo)
failure crate to thiserror #760. (@hirevo)Schema::Value now returns an Option instead of panicking if the type does not match.FileSlice that can be reduced and eventually read into an OwnedBytes object. Long and blocking io operation are still required by they do not span over the entire file.Query::explainnotify #924. Replaced with FileWatcher struct that polls meta file every 500ms in background thread. (@halvorboe @guilload)FilterCollector, which wraps another collector and filters docs using a predicate over a fast field (@barrotsteindev)FilterCollector now supports all Fast Field value types (@barrotsteindev)tantivy::merge_segments #1005. (@evanxg852000)This version breaks compatibility and requires users to reindex everything.
Tantivy 0.13 introduce a change in the index format that will require you to reindex your index (BlockWAND information are added in the skiplist). The
Tantivy 0.13 introduce a change in the index format that will require you to reindex your index (BlockWAND information are added in the skiplist). The index size increase is minor as this information is only added for full blocks. If you have a massive index for which reindexing is not an option, please contact me so that we can discuss possible solutions.
FuzzyTermQuery not matching terms by prefix when it should (@Peachball)MMapDirectory::open does not return a Result anymore..advance() returns the new DocId. Scorer::skip(target) has been replaced by Scorer::seek(target) and returns the resulting DocId.
As a result, iterating through DocSet now looks as followslet mut doc = docset.doc();
while doc != TERMINATED {
// ...
doc = docset.advance();
}
The change made it possible to greatly simplify a lot of the docset's code.
Scorer::for_each_pruning function. (@fulmicoton)Removing static dispatch in tokenizers for simplicity.
TermDictionary stream. (@halvorboe)Crates relying on custom tokenizer, or registering tokenizer in the manager will require some minor changes. Check https://github.com/quickwit-oss/tantivy/blob/main/examples/custom_tokenizer.rs to check for some code sample.
Added f64 field. Internally reuse u64 code the same way i64 does (@fdb-hiroshima)
Box<BoxableTokenizer>. See detail in #629Box<dyn BoxableTokenizer> has been replaced by a BoxedTokenizer struct.RegexQuery instance is built. As a result, it can now return
an error and handling the Result is required.tantivy::version() now returns a Version object. This object implements ToString()Your coding agent can read these notes before it upgrades. Set up the MCP server →