[package]
name = "miden-project"
version.workspace = true
description = "Interface for working with Miden projects"
documentation = "https://docs.rs/miden-project"
readme = "README.md"
categories = ["compilers", "no-std"]
keywords = ["project", "miden"]
license.workspace = true
authors.workspace = true
homepage.workspace = true
repository.workspace = true
rust-version.workspace = true
edition.workspace = true

[features]
default = ["std", "serde"]
arbitrary = ["std", "dep:proptest-derive", "dep:proptest", "miden-assembly-syntax/arbitrary"]
resolver = ["std", "miden-package-registry/resolver"]
std = ["miden-assembly-syntax/std", "serde/std", "thiserror/std", "toml/std", "miden-package-registry/std", "miden-package-registry/resolver", "tempfile/getrandom"]
serde = ["dep:serde", "dep:serde-untagged", "miden-assembly-syntax/serde", "miden-core/serde", "miden-package-registry/serde", "toml/serde", "toml/parse", "toml/display"]

[dependencies]
miden-assembly-syntax.workspace = true
miden-core.workspace = true
miden-mast-package.workspace = true
miden-package-registry.workspace = true
proptest = { workspace = true, optional = true }
proptest-derive = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
serde-untagged = { workspace = true, optional = true }
thiserror.workspace = true
toml = { version = "1.0", default-features = false }

[dev-dependencies]
miden-core.workspace = true
miden-mast-package = { workspace = true, features = ["arbitrary"] }
miden-test-serde-macros.workspace = true
serde_json.workspace = true
tempfile.workspace = true
toml = { version = "1.0", default-features = false, features = ["std", "serde", "parse"] }

[lints.rust]
# This is needed until this warning appears in stable when this is commented out. Currently, it
# appears only on nightly, as a side effect of code generated by miette. If we use
# `#[expect(unused_assignments)] in those modules, we get warnings on stable, but not on nightly.
# If we don't do that, we get no warnings on stable, but we do on nightly. Rather than mess about
# with build scripts and such, we just disable this warning for now, as it is essentially useless
# until we get the same behavior on stable and nightly
unused_assignments = "allow"
