[workspace]
members = [
  "crates/fff-c",
  "crates/fff-core",
  "crates/fff-mcp",
  "crates/fff-nvim",
  "crates/fff-python",
  "crates/fff-query-parser",
  "crates/fff-grep",
]

resolver = "2"

[workspace.lints.clippy]
module_inception = "allow"

[workspace.dependencies]
fff-grep = { version = "0.10.1", path = "crates/fff-grep" }
fff-query-parser = { version = "0.10.1", path = "crates/fff-query-parser", default-features = false }

# Shared dependencies
ahash = "0.8"
blake3 = "1.8.2"
chrono = { version = "0.4", features = ["serde"] }
ctrlc = "3.4.2"
dirs = "5.0"
dunce = "1.0"
# git2 - base config without TLS (each crate adds platform-specific TLS)
git2 = { version = "0.20.2", default-features = false, features = [
  "vendored-libgit2",
] }
glidesort = "0.1"
globset = "0.4"
heed = "0.22.0"
ignore = "0.4.22"
memmap2 = "0.9"
mimalloc = "0.1.47"
signal-hook-registry = "1.4"
zlob = { version = "=1.6.1" }

mlua = { version = "0.11.1", features = ["module", "luajit"] }
neo_frizbee = { version = "0.11.0", features = ["match_end_col"] }
notify = { version = "9.0.0-rc.3" }
notify-debouncer-full = { package = "fff-notify-debouncer-full", version = "0.9.4" }
once_cell = "1.20.2"
parking_lot = "0.12"
pathdiff = "0.2.1"
rayon = "1.8.0"
regex = "1.11"
regex-syntax = "0.8"
smallvec = { version = "1.13", features = ["const_generics", "union"] }
thiserror = "2.0.10"
tracing = "0.1"

[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
strip = "debuginfo"

[profile.ci]
inherits = "release"
# we use lto=fat locally for better SIMD for the march=native but
# on CI when we cross compiling we should not exclude any cpu flags checking
lto = "thin"

[profile.bench]
inherits = "release"

# For Instruments / xctrace: release-level optimization but keep debuginfo
# and symbols so sampled frames resolve to real Rust names.
[profile.prof]
inherits = "release"
debug = "full"
strip = false
lto = "thin"
