[package]
name = "panproto-core"
description = "Core re-export facade for panproto"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true

[features]
default = []
# Enable full-AST tree-sitter parsing for 10 languages.
# Adds C compilation dependencies (tree-sitter grammars).
full-parse = ["dep:panproto-parse"]
# Enable multi-file project assembly.
project = ["dep:panproto-project", "full-parse"]
# Enable git bridge for bidirectional git ↔ panproto-vcs translation.
git = ["dep:panproto-git", "project"]
# Enable LLVM IR protocol and lowering morphisms.
llvm = ["dep:panproto-llvm"]
# Enable LLVM JIT compilation of expressions.
jit = ["dep:panproto-jit"]
# Enable tree-sitter-based format-preserving parsing for all protocols.
tree-sitter = ["panproto-io/tree-sitter"]

[dependencies]
panproto-gat = { workspace = true }
panproto-schema = { workspace = true }
panproto-inst = { workspace = true }
panproto-mig = { workspace = true }
panproto-lens = { workspace = true }
panproto-check = { workspace = true }
panproto-protocols = { workspace = true }
panproto-io = { workspace = true }
panproto-vcs = { workspace = true }

# Optional cospan-support crates (feature-gated).
panproto-parse = { workspace = true, optional = true }
panproto-project = { workspace = true, optional = true }
panproto-git = { workspace = true, optional = true }
panproto-llvm = { workspace = true, optional = true }
panproto-jit = { workspace = true, optional = true }

[dev-dependencies]
divan = { workspace = true }
serde_json = { workspace = true }

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

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

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

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

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

[lints]
workspace = true
