[package]
name = "croma-core"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
description = "Library-first ABC to MusicXML exporter"
readme = "../../README.md"
keywords = ["abc", "musicxml", "music", "notation"]
categories = ["parser-implementations"]

[lib]
path = "src/lib.rs"

[lints]
workspace = true

[features]
# Experimental, gated MusicXML -> Score reader (inverse of the writer). Pulls in
# the only optional dependency (roxmltree); the default build stays dep-free and
# crates.io-publishable.
musicxml-reader = ["dep:roxmltree"]

[dependencies]
roxmltree = { version = "0.21", optional = true }

[dev-dependencies]
# Dev-only statistical benchmark harness. `default-features = false` drops the
# heavy plotters/HTML chain; `cargo_bench_support` keeps `cargo bench` working.
# Excluded from `--edges normal`, so the zero-dep guard stays at 1.
criterion = { version = "0.8", default-features = false, features = ["cargo_bench_support"] }

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

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

# Reader bench needs the gated MusicXML reader; skipped by a plain `cargo bench`.
[[bench]]
name = "reader"
harness = false
required-features = ["musicxml-reader"]
