fandango 0.1.0

An extremely performant, compiler-optimizable form of Fandango for high-complexity input languages.
Documentation
[package]
name = "fandango"
description = "An extremely performant, compiler-optimizable form of Fandango for high-complexity input languages."
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true

[dependencies]
fandango-core.workspace = true
fandango-derive = { workspace = true, default-features = false }

pest.workspace = true
pest_derive.workspace = true
tuple_list.workspace = true

[dev-dependencies]
rand = { workspace = true, features = ["default"] }

[profile.release]
codegen-units = 1
lto = true

[profile.bench]
inherits = "release"
debug = true
opt-level = 3

[profile.bench-noopt]
inherits = "dev"
debug-assertions = false
overflow-checks = false

[lints]
workspace = true

[workspace]
members = [
    ".",
    "core",
    "derive",
    "targets",
    "generator",
    "runtime",
    "baselines",
    "baselines/analysis",
    "baselines/common",
    "baselines/csv",
    "baselines/rest",
    "baselines/scriptsizec",
    "baselines/xml",
    # "libafl",
]
default-members = [
    ".", "core", "derive", "targets", "generator", "runtime"
]
resolver = "3"

[workspace.package]
version = "0.1.0"
edition = "2024"
authors = ["The fandango-rs developers"]
license = "EUPL-1.2"
repository = "https://github.com/fandango-fuzzer/fandango-rs"

[workspace.dependencies]
fandango = { path = ".", version = "0.1.0" }
fandango-core = { path = "core", version = "0.1.0" }
fandango-derive = { path = "derive", version = "0.1.0", default-features = false }
fandango-generator = { path = "generator", version = "0.1.0" }

anyhow = { version = "1.0", default-features = false }
criterion = { version = "0.7.0", features = ["html_reports"] }
either = { version = "1.13", default-features = false }
embedded-io = { version = "0.6.1", features = ["alloc"] }
foldhash = { version = "0.2.0", default-features = false }
hashbrown = "0.16.0"
libafl = { version = "0.15.3", default-features = false }
libafl_bolts = { version = "0.15.3", default-features = false }
linfa = "0.7.1"
linfa-linear = "0.7.1"
mappable-rc = { version = "0.1.1", default-features = false }
ndarray = "0.15.6" # based on what linfa supports
num-integer = { version = "0.1.46", default-features = false }
num-rational = { version = "0.4.2", default-features = false }
num-traits = { version = "0.2.19", default-features = false }
pest = { version = "2.7", default-features = false }
pest_derive = { version = "2.7", default-features = false }
pest_generator = { version = "2.7", default-features = false }
petgraph = { version = "0.8.1", default-features = false }
proc-macro2 = "1.0"
quote = "1.0"
rand = { version = "0.9.0", default-features = false }
serde = { version = "1.0", default-features = false }
serde_json = "1.0"
syn = "2.0"
tuple_list = "0.1.3"

[workspace.lints.rust]
bindings_with_variant_name = "allow"
type_alias_bounds = "allow"

missing_docs = "warn"

# allows for non-optimal indirection
# hidden as CFG because there is no use case for this
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(no_opt_indirect)'] }

[workspace.lints.clippy]
pedantic = "warn"