a3s-vec 0.1.8

Native Rust in-process vector database with zvec-compatible capabilities
Documentation
[package]
name = "a3s-vec"
version = "0.1.8"
edition = "2021"
rust-version = "1.75"
license = "MIT"
authors = ["A3S Lab Team"]
repository = "https://github.com/A3S-Lab/Vec"
documentation = "https://docs.rs/a3s-vec"
readme = "README.md"
description = "Native Rust in-process vector database with zvec-compatible capabilities"
keywords = ["a3s", "vector-database", "ann", "hnsw", "fts"]
categories = ["database-implementations", "algorithms"]

[features]
default = []
jieba = ["dep:jieba-rs"]
# Tokio-facing query methods offload the synchronous snapshot/planner/I/O path
# to the runtime's blocking pool. The core API remains runtime-independent.
async = ["dep:tokio"]

[dependencies]
# Newer Rayon releases require Rust 1.80. Keep this pair on the Rust 1.75 line.
rayon = "=1.10.0"
rayon-core = "=1.12.1"
crc32fast = "1"
bincode = "=1.3.3"
fs2 = "0.4"
# Document generations use the maintained imbl fork of the original `im`
# API. It keeps persistent ordered-tree sharing without the unsound
# `sized-chunks`/`bitmaps` dependency chain in im 15.1.0. Pin the 3.0
# compatibility line (the latest imbl line that builds on Rust 1.75) so the
# declared MSRV remains auditable.
im = { package = "imbl", version = "=3.0.0", features = ["serde"] }
# imbl's semver `bitmaps@3` currently resolves to 3.2.x, which is covered by
# RUSTSEC-2025-0167. Keep the shared dependency on the unaffected 3.1 line
# until imbl publishes a replacement bitmap implementation.
bitmaps = "=3.1.0"
# Anonymous mappings provide an immutable, path-independent DiskANN snapshot
# without exposing file-backed mmap invalidation to safe Rust callers.
memmap2 = "=0.9.11"
roaring = { version = "=0.11.1", features = ["serde"] }
# rmp-serde permits rmp 0.8.15, whose Cargo 2024 manifest requires Rust 1.85.
# Keep the transitive codec on the declared Rust-1.75-compatible release.
rmp = "=0.8.14"
rmp-serde = "=1.3.0"
serde = { version = "1", features = ["derive", "rc"] }
serde_json = { version = "1", features = ["float_roundtrip"] }
thiserror = "1"
tokio = { version = "1", features = ["rt", "sync"], optional = true }
jieba-rs = { version = "0.7", optional = true }
# N-gram token character filters use Unicode general categories instead of
# ASCII-only approximations. Pin the audited Unicode-16 table and MSRV line.
unicode-general-category = "=1.1.0"
# FTS analysis stays pure Rust: NFKD powers accent folding and the Snowball
# implementation supplies the same language family as zvec's stemmer filter.
unicode-normalization = "=0.1.24"
rust-stemmers = "=1.2.0"

[dev-dependencies]
# Tempfile 3.15+ may resolve dependencies that require a newer compiler.
tempfile = "=3.14.0"

[[bench]]
name = "ann_recall"
harness = false

[[bench]]
name = "incremental_write"
harness = false

[[bench]]
name = "scalar_filter"
harness = false

[[bench]]
name = "fts_index"
harness = false

[[bench]]
name = "filtered_ann"
harness = false

[[bench]]
name = "reopen_index"
harness = false

[[bench]]
name = "ngram_fts"
harness = false

[[bench]]
name = "structured_fts"
harness = false

[[bench]]
name = "feature_matrix"
harness = false

[[bench]]
name = "concurrent_queries"
harness = false

[[bench]]
name = "mixed_workload"
harness = false

[[bench]]
name = "scale_compare"
harness = false

[[bench]]
name = "lifecycle_matrix"
harness = false

[lints.rust]
unsafe_code = "deny"

[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
# These API-annotation lints are useful during final public-API review, but
# enabling them globally obscures correctness diagnostics while the prototype
# surface is still changing. Keep the substantive pedantic lints enabled.
missing_errors_doc = "allow"
must_use_candidate = "allow"
return_self_not_must_use = "allow"

[package.metadata.docs.rs]
all-features = true