cargo-features = ["profile-rustflags"]
[package]
edition = "2024"
name = "datex-core"
version = "0.0.10"
authors = [
"Benedikt Strehle <benedikt@unyt.org>",
"Jonas Strehle <jonas@unyt.org>",
"Norbert Brzezinski <norbert@unyt.org>",
]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "The DATEX Core Rust implementation"
readme = "README.md"
license-file = "LICENSE"
[features]
allow_unsigned_blocks = []
ast = []
compiler = [
"ast",
"parser",
"dep:ariadne",
"dep:pretty",
]
crypto_enabled = []
decompiler = ["ast"]
default = [
"no_std",
"dep:async-timer",
]
embassy_runtime = [
"dep:embassy-executor",
"dep:embassy-time",
"dep:embassy-futures",
]
full = [
"compiler",
"decompiler",
]
lsp = ["dep:realhydroper-lsp"]
lsp_tokio = [
"lsp",
"realhydroper-lsp/runtime-tokio",
]
lsp_wasm = [
"lsp",
"realhydroper-lsp/runtime-agnostic",
]
macro_utils = [
"dep:quote",
"dep:syn",
"dep:proc-macro2",
]
no_std = [
"dep:hashbrown",
"dep:async-unsync",
"dep:spin",
]
parser = ["dep:logos"]
std = [
"dep:internment",
"serde/std",
"serde_with/std",
"serde_json/std",
"indexmap/std",
"log/std",
"futures-util/std",
"futures-core/std",
"futures/std",
"url/std",
"num/std",
"num-traits/std",
"num-bigint/std",
"num-integer/std",
"bigdecimal/std",
"ordered-float/std",
"num_enum/std",
"strum/std",
"binrw/std",
"thiserror/std",
"hex/std",
"bytes/std",
"ringmap/std",
"macro_utils",
]
syntax_highlighting_legacy = ["dep:syntect"]
target_esp32 = [
"no_std",
"embassy_runtime",
"dep:datex-crypto-esp32",
"allow_unsigned_blocks",
]
target_native = [
"std",
"tokio_runtime",
"dep:datex-crypto-native",
"crypto_enabled",
"dep:dotenvy",
]
target_wasm = [
"std",
"wasm_runtime",
"crypto_enabled",
]
tokio_runtime = [
"dep:tokio",
"futures/std",
]
wasm_runtime = [
"dep:wasm-bindgen-futures",
"dep:gloo-timers",
"dep:tsify",
"dep:wasm-bindgen",
"dep:web-time",
"dep:datex-crypto-web",
]
webrtc = ["dep:webrtc"]
[lib]
name = "datex_core"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
[[test]]
name = "mod"
path = "tests/mod.rs"
[[test]]
name = "protocol_structures"
path = "tests/protocol_structures.rs"
[[test]]
name = "runtime"
path = "tests/runtime.rs"
[[bench]]
name = "mod"
path = "benches/mod.rs"
harness = false
[[bench]]
name = "runtime"
path = "benches/runtime.rs"
[dependencies.ariadne]
version = "0.5.1"
optional = true
[dependencies.async-select]
version = "0.3.0"
[dependencies.async-timer]
version = "1.0.0-beta.15"
optional = true
default-features = false
[dependencies.async-trait]
version = "0.1.87"
[dependencies.async-unsync]
version = "0.3.0"
features = ["alloc"]
optional = true
default-features = false
[dependencies.bigdecimal]
version = "0.4.8"
default-features = false
[dependencies.binrw]
version = "0.15.0"
default-features = false
[dependencies.bytes]
version = "1"
default-features = false
[dependencies.cfg-if]
version = "1.0.1"
[dependencies.datex-crypto-esp32]
version = "0.0.2"
optional = true
[dependencies.datex-crypto-facade]
version = "0.0.2"
[dependencies.datex-crypto-native]
version = "0.0.2"
optional = true
[dependencies.datex-crypto-web]
version = "0.0.2"
optional = true
[dependencies.datex-macros-internal]
version = "0.0.1"
[dependencies.dotenvy]
version = "0.15.7"
optional = true
[dependencies.embassy-executor]
version = "0.9.1"
optional = true
[dependencies.embassy-futures]
version = "0.1.2"
optional = true
default-features = false
[dependencies.embassy-time]
version = "0.5.0"
optional = true
[dependencies.foldhash]
version = "0.2.0"
default-features = false
[dependencies.futures]
version = "0.3"
features = ["alloc"]
default-features = false
[dependencies.futures-core]
version = "0.3.31"
features = ["alloc"]
default-features = false
[dependencies.futures-util]
version = "0.3"
features = [
"async-await-macro",
"alloc",
]
default-features = false
[dependencies.gloo-timers]
version = "0.3.0"
features = ["futures"]
optional = true
[dependencies.hashbrown]
version = "0.16.0"
features = ["serde"]
optional = true
[dependencies.hex]
version = "0.4.3"
features = ["alloc"]
default-features = false
[dependencies.indexmap]
version = "2.9.0"
default-features = false
[dependencies.internment]
version = "0.8.6"
optional = true
[dependencies.itertools]
version = "0.14.0"
features = ["use_alloc"]
default-features = false
[dependencies.log]
version = "0.4"
features = ["serde"]
default-features = false
[dependencies.logos]
version = "0.15.0"
optional = true
[dependencies.modular-bitfield]
version = "0.13.0"
[dependencies.num]
version = "0.4.3"
features = [
"alloc",
"libm",
]
default-features = false
[dependencies.num-bigint]
version = "0.4"
default-features = false
[dependencies.num-integer]
version = "0.1"
default-features = false
[dependencies.num-traits]
version = "0.2.19"
default-features = false
[dependencies.num_enum]
version = "0.7.4"
default-features = false
[dependencies.ordered-float]
version = "5.0.0"
default-features = false
[dependencies.pretty]
version = "0.12.5"
optional = true
[dependencies.proc-macro2]
version = "1.0"
features = ["span-locations"]
optional = true
[dependencies.quote]
version = "1.0"
optional = true
[dependencies.realhydroper-lsp]
version = "0.22.0"
features = ["proposed"]
optional = true
default-features = false
[dependencies.ringmap]
version = "0.1.3"
default-features = false
[dependencies.serde]
version = "1.0.219"
features = [
"derive",
"alloc",
]
default-features = false
[dependencies.serde-big-array]
version = "0.5.1"
[dependencies.serde_json]
version = "1.0.140"
features = ["alloc"]
default-features = false
[dependencies.serde_with]
version = "3.12.0"
features = [
"macros",
"schemars_1",
"chrono",
"alloc",
]
default-features = false
[dependencies.spin]
version = "0.10.0"
features = [
"spin_mutex",
"mutex",
"lock_api",
]
optional = true
default-features = false
[dependencies.strum]
version = "0.27.1"
features = ["derive"]
default-features = false
[dependencies.strum_macros]
version = "0.27.1"
[dependencies.syn]
version = "2.0"
features = ["full"]
optional = true
[dependencies.syntect]
version = "5.2.0"
features = ["default-fancy"]
optional = true
default-features = false
[dependencies.thiserror]
version = "2.0.11"
default-features = false
[dependencies.tokio]
version = "1.43.0"
features = [
"sync",
"macros",
"io-util",
"rt",
"time",
]
optional = true
default-features = false
[dependencies.tsify]
version = "0.5.6"
features = ["js"]
optional = true
[dependencies.url]
version = "2.5.7"
default-features = false
[dependencies.wasm-bindgen]
version = "=0.2.112"
optional = true
[dependencies.wasm-bindgen-futures]
version = "0.4.61"
optional = true
[dependencies.web-time]
version = "1.1.0"
optional = true
[dependencies.webrtc]
version = "0.13.0"
optional = true
[dev-dependencies.criterion]
version = "0.6.0"
features = ["html_reports"]
[dev-dependencies.flexi_logger]
version = "0.31.8"
[dev-dependencies.indoc]
version = "2.0.6"
[dev-dependencies.json-syntax]
version = "0.12.5"
[dev-dependencies.lazy_static]
version = "1.4.0"
[dev-dependencies.ntest_timeout]
version = "0.9.3"
[dev-dependencies.tokio]
version = "1.43.0"
features = [
"sync",
"macros",
"io-util",
"rt",
"time",
]
default-features = false
[lints.clippy]
alloc_instead_of_core = "deny"
std_instead_of_alloc = "deny"
std_instead_of_core = "deny"
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
strip = true