[package]
name = "ruci"
version = "0.9.0"
description = "A UCI (Universal Chess Interface) crate."
categories = ["parser-implementations", "game-development", "no-std"]
keywords = ["chess", "uci", "parser"]
include = ["src", "README.md", "LICENSE"]
edition = "2021"
authors = ["Leonard D. <tigerros.gh@gmail.com>"]
license = "GPL-3.0"
repository = "https://github.com/tigerros/ruci"
rust-version = "1.81.0"

[dependencies]
tokio = { workspace = true, optional = true, features = ["io-util", "process"] }
serde = { workspace = true, optional = true, features = ["derive"] }
paste = { workspace = true }
shakmaty = { workspace = true }
dry-mods = { workspace = true }

[features]
# No features are turned on by default.
default = []
# Enables serde support for most types. All implementations are derived with no parameters. Requires `std`.
serde = ["dep:serde", "shakmaty/serde"]
# Adds the `Engine` struct for communicating with an engine. Requires `std`.
engine-sync = []
# Enables the `engine-sync` feature and adds the `EngineAsync` struct for communicating with an engine using tokio.
engine-async = ["dep:tokio"]

[dev-dependencies]
tokio = { workspace = true, features = ["full"] }
pretty_assertions = { version = "1", features = ["unstable"] }
criterion = { version = "~0.5", features = ["html_reports"] }
shakmaty-uci = { version = "~0.1" }
vampirc-uci = { version = "~0.11" }

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

[workspace]
members = ["examples/go-std", "examples/go-tokio", "examples/no-std"]

[workspace.dependencies]
ruci = { version = "0.9.0", path = "." }
tokio = { version = "1", default-features = false }
serde = { version = "1", default-features = false }
paste = { version = "1", default-features = false }
shakmaty = { version = "~0.27", default-features = false }
anyhow = { version = "1", default-features = false }
dry-mods = { version = "~0.1", default-features = false }