[[bench]]
harness = false
name = "search_bench"
path = "benches/search_bench.rs"
[[bin]]
name = "sorex"
path = "src/main.rs"
[dependencies.clap]
features = ["derive"]
version = "4"
[dependencies.crc32fast]
version = "1.4"
[dependencies.indicatif]
optional = true
version = "0.17"
[dependencies.rayon]
optional = true
version = "1.11.0"
[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 = "0.2.4"
[dependencies.unicode-normalization]
optional = true
version = "0.1"
[dependencies.wasm-bindgen]
optional = true
version = "0.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"
[features]
default = ["parallel", "unicode-normalization", "serde_json", "embed-wasm"]
embed-wasm = []
lean = ["sorex-lean-macros"]
parallel = ["rayon", "indicatif"]
wasm = ["wasm-bindgen", "serde-wasm-bindgen"]
[lib]
crate-type = ["cdylib", "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"
[package]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = "build.rs"
description = "Formally verified full-text search with suffix arrays"
edition = "2021"
license = "Apache-2.0"
name = "sorex"
readme = "README.md"
repository = "https://github.com/harryzorus/sorex"
version = "0.2.4"
[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 = ["-Os", "--enable-bulk-memory", "--enable-nontrapping-float-to-int"]
[profile.release]
codegen-units = 1
lto = true
opt-level = "z"
panic = "abort"
strip = true
[profile.release-native]
inherits = "release"
opt-level = 3
panic = "unwind"
[[test]]
name = "comprehensive"
path = "tests/comprehensive.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "invariants"
path = "tests/invariants.rs"
[[test]]
name = "multilingual"
path = "tests/multilingual.rs"
[[test]]
name = "property"
path = "tests/property.rs"