sorex 1.0.7

Formally verified full-text search with suffix arrays
[[bench]]
harness = false
name = "bench_searcher"
path = "benches/bench_searcher.rs"
required-features = ["bench-datasets"]

[[bench]]
harness = false
name = "bench_wasm"
path = "benches/bench_wasm.rs"
required-features = ["deno-runtime"]

[[bench]]
harness = false
name = "decode_sections"
path = "benches/decode_sections.rs"
required-features = ["bench-datasets"]

[[bench]]
harness = false
name = "search_bench"
path = "benches/search_bench.rs"

[[bin]]
name = "sorex"
path = "src/main.rs"

[dependencies.atty]
version = "0.2"

[dependencies.brotli]
version = "6.0"

[dependencies.clap]
features = ["derive"]
version = "4"

[dependencies.crc32fast]
version = "1.4"

[dependencies.deno_core]
optional = true
version = "0.377"

[dependencies.indicatif]
optional = true
version = "0.17"

[dependencies.js-sys]
optional = true
version = "0.3"

[dependencies.parking_lot]
optional = true
version = "0.12"

[dependencies.rayon]
optional = true
version = "1.10"

[dependencies.serde]
features = ["derive"]
version = "1.0"

[dependencies.serde-wasm-bindgen]
optional = true
version = "0.6"

[dependencies.serde_json]
optional = true
version = "1.0"

[dependencies.sorex-lean-macros]
optional = true
version = "1.0.0"

[dependencies.tokio]
features = ["rt"]
optional = true
version = "1"

[dependencies.unicode-normalization]
optional = true
version = "0.1"

[dependencies.wasm-bindgen]
optional = true
version = "0.2"

[dependencies.wasm-bindgen-rayon]
optional = true
version = "1.2"

[dev-dependencies.brotli]
version = "6.0"

[dev-dependencies.criterion]
version = "0.5"

[dev-dependencies.fuzzy-matcher]
version = "0.3"

[dev-dependencies.proptest]
version = "1.0"

[dev-dependencies.simsearch]
version = "0.2"

[dev-dependencies.strsim]
version = "0.11"

[dev-dependencies.tantivy]
version = "0.22"

[dev-dependencies.tempfile]
version = "3"

[features]
bench-datasets = []
default = ["parallel", "unicode-normalization", "serde_json", "embed-wasm", "deno-runtime"]
deno-runtime = ["deno_core", "tokio"]
embed-wasm = []
lean = ["sorex-lean-macros"]
parallel = ["rayon", "indicatif", "parking_lot"]
wasm = ["wasm-bindgen", "serde-wasm-bindgen", "js-sys", "rayon", "wasm-bindgen-rayon", "parking_lot"]
wasm-simd = ["wasm"]
wasm-single-threaded = ["wasm-bindgen", "serde-wasm-bindgen", "js-sys"]
wasm-threads = ["wasm"]

[lib]
crate-type = ["rlib"]
name = "sorex"
path = "src/lib.rs"

[lints.clippy]
cast_possible_truncation = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
items_after_statements = "allow"
manual_midpoint = "allow"
missing_const_for_fn = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_range_loop = "allow"
similar_names = "allow"
uninlined_format_args = "allow"

[lints.clippy.all]
level = "warn"
priority = -1

[lints.rust]
unsafe_code = "forbid"

[lints.rust.unexpected_cfgs]
check-cfg = ["cfg(kani)"]
level = "warn"
priority = 0

[package]
authors = ["Harry Tummalacherla <harry@harryzorus.xyz>"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = "build.rs"
categories = ["algorithms", "text-processing", "wasm"]
description = "Formally verified full-text search with suffix arrays"
documentation = "https://github.com/harryzorus/sorex/tree/main/docs"
edition = "2021"
homepage = "https://github.com/harryzorus/sorex"
keywords = ["search", "fuzzy", "suffix-array", "wasm", "formal-verification"]
license = "Apache-2.0"
name = "sorex"
readme = "README.md"
repository = "https://github.com/harryzorus/sorex"
version = "1.0.7"

[package.metadata.deb]
assets = [["target/release-native/sorex", "usr/bin/sorex", "755"], ["examples/generate-eu-data.sh", "usr/share/sorex/examples/generate-eu-data.sh", "755"]]
copyright = "2026, Harry Tummalachērla"
extended-description = """
Sorex is a formally verified full-text search engine using suffix arrays.
It provides fast substring and fuzzy search with mathematical guarantees
of correctness via Lean 4 proofs.

WASM is embedded in every .sorex index file by default.

Commands:
  sorex index --input <dir> --output <dir>   Build search index
  sorex inspect <file.sorex>                 Inspect index structure

"""
license-file = ["LICENSE", "0"]
maintainer = "Harry Tummalachērla <harry@harryzorus.xyz>"
maintainer-scripts = "debian/"
priority = "optional"
section = "utils"

[package.metadata.wasm-pack.profile.release]
wasm-opt = false

[profile.release]
codegen-units = 1
lto = "thin"
opt-level = 3
panic = "abort"
strip = false

[profile.release-native]
inherits = "release"
opt-level = 3
panic = "unwind"
strip = true

[[test]]
name = "build"
path = "tests/build.rs"

[[test]]
name = "integration"
path = "tests/integration.rs"

[[test]]
name = "property"
path = "tests/property.rs"

[[test]]
name = "regression"
path = "tests/regression.rs"

[[test]]
name = "search"
path = "tests/search.rs"

[[test]]
name = "unit"
path = "tests/unit.rs"