[package]
name = "rune"
version = "0.14.0"
authors = ["John-John Tedro <udoprog@tedro.se>"]
edition = "2021"
rust-version = "1.81"
description = "The Rune Language, an embeddable dynamic programming language for Rust."
documentation = "https://docs.rs/rune"
readme = "README.md"
homepage = "https://github.com/rune-rs/rune"
repository = "https://github.com/rune-rs/rune"
license = "MIT OR Apache-2.0"
keywords = ["language", "scripting", "scripting-language"]
categories = ["parser-implementations"]

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(rune_nightly, rune_docsrs, rune_byte_code)'] }

[features]
default = ["emit", "std"]
tracing = ["tracing/enabled"]
emit = ["std", "codespan-reporting"]
bench = []
workspace = ["std", "toml", "semver", "relative-path", "serde-hashkey", "linked-hash-map"]
doc = ["std", "rust-embed", "handlebars", "pulldown-cmark", "pulldown-cmark-escape", "syntect", "sha2", "base64", "rune-core/doc", "relative-path"]
cli = ["std", "emit", "doc", "bincode", "tracing-subscriber", "clap", "webbrowser", "capture-io", "disable-io", "languageserver", "fmt", "similar", "rand"]
languageserver = ["std", "lsp", "ropey", "percent-encoding", "url", "serde_json", "tokio", "workspace", "doc", "fmt"]
byte-code = ["alloc", "musli/storage"]
capture-io = ["alloc", "parking_lot"]
disable-io = ["alloc"]
fmt = ["alloc"]
std = ["alloc", "num/std", "serde/std", "rune-core/std", "rune-alloc/std", "musli/std", "musli/std", "once_cell/std", "anyhow/std", "syntree/std"]
alloc = ["anyhow", "rune-alloc/alloc", "rune-core/alloc", "once_cell/alloc", "serde/alloc"]

[dependencies]
rune-macros = { version = "=0.14.0", path = "../rune-macros" }
rune-core = { version = "=0.14.0", path = "../rune-core", features = ["musli"] }
rune-alloc = { version = "0.14.0", path = "../rune-alloc", features = ["serde"], default-features = false }
tracing = { package = "rune-tracing", version = "0.14.0", path = "../rune-tracing" }

syntree = { version = "0.18.0", default-features = false, features = ["alloc"] }
futures-core = { version = "0.3.28", default-features = false }
futures-util = { version = "0.3.28", default-features = false, features = ["alloc"] }
itoa = "1.0.6"
num = { version = "0.4.0", default-features = false, features = ["alloc"] }
pin-project = "1.1.0"
ryu = "1.0.13"
serde = { version = "1.0.163", default-features = false, features = ["derive", "rc"] }
musli = { version = "0.0.124", default-features = false, features = ["alloc"] }
once_cell = { version = "1.18.0", default-features = false, features = ["critical-section"] }

anyhow = { version = "1.0.71", default-features = false, optional = true }
bincode = { version = "1.3.3", optional = true }
clap = { version = "4.2.7", features = ["derive"], optional = true }
codespan-reporting = { version = "0.11.1", optional = true }
handlebars = { version = "6.0.0", optional = true }
pulldown-cmark = { version = "0.12.2", optional = true }
pulldown-cmark-escape = { version = "0.11.0", optional = true }
relative-path = { version = "1.8.0", optional = true, features = ["serde"] }
rust-embed = { version = "6.8.1", optional = true }
semver = { version = "1.0.17", optional = true, features = ["serde"] }
serde-hashkey = { version = "0.4.5", optional = true }
syntect = { version = "5.0.0", optional = true }
tokio = { version = "1.28.1", features = ["rt-multi-thread", "fs", "macros", "sync", "io-std", "io-util"], optional = true }
toml = { version = "0.8.19", optional = true, features = ["parse"] }
tracing-subscriber = { version = "0.3.17", features = ["env-filter"], optional = true }
webbrowser = { version = "1.0.2", optional = true }
parking_lot = { version = "0.12.1", optional = true }
lsp = { version = "0.95.0", package = "lsp-types", optional = true }
ropey = { version = "1.6.0", optional = true }
percent-encoding = { version = "2.2.0", optional = true }
url = { version = "2.3.1", optional = true }
serde_json = { version = "1.0.96", optional = true }
linked-hash-map = { version = "0.5.6", optional = true }
similar = { version = "2.2.1", optional = true, features = ["inline", "bytes"] }
sha2 = { version = "0.10.6", optional = true }
base64 = { version = "0.22.0", optional = true }
rand = { version = "0.8.5", optional = true }
memchr = "2.7.4"
unicode-ident = "1.0.12"

[dev-dependencies]
tokio = { version = "1.28.1", features = ["full"] }
static_assertions = "1.1.0"
futures-executor = "0.3.28"
trybuild = "1.0.80"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "rune_docsrs"]
