# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.90.0"
name = "dtact"
version = "0.2.5"
authors = ["Xinyu Yang <xinyu.yang@apich.org>"]
build = "build.rs"
exclude = [
    "benchmark_results.md",
    "web/*",
]
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Dtact: A non-preemptive, stackful coroutine runtime featuring a lock-free context arena, P2P mesh scheduling, and architecture-specific assembly switchers. Designed for hardware-level control and non-blocking heterogeneous orchestration."
documentation = "https://docs.rs/dtact"
readme = "README.md"
keywords = [
    "async",
    "futures",
    "non-blocking",
    "runtime",
    "concurrency",
]
categories = [
    "asynchronous",
    "concurrency",
]
license = "MIT or Apache-2.0"
repository = "https://github.com/Apich-Organization/dtact"

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

[package.metadata.docs.rs.dtact-macros]
path = "dtact-macros"

[features]
default = []
hw-acceleration = []
hypervisor = []
kernel = []
security-hardened = []
windows-root = []

[lib]
name = "dtact"
crate-type = [
    "cdylib",
    "rlib",
    "staticlib",
]
path = "src/lib.rs"

[[example]]
name = "rust_async"
path = "examples/rust_async.rs"

[[test]]
name = "c_ffi_integration"
path = "tests/c_ffi_integration.rs"

[[test]]
name = "concurrency"
path = "tests/concurrency.rs"

[[test]]
name = "e2e"
path = "tests/e2e.rs"

[[test]]
name = "fiber_lifecycle"
path = "tests/fiber_lifecycle.rs"

[[test]]
name = "future_bridge_edge"
path = "tests/future_bridge_edge.rs"

[[test]]
name = "load_balance"
path = "tests/load_balance.rs"

[[test]]
name = "loom_test"
path = "tests/loom_test.rs"

[[test]]
name = "panic_safety"
path = "tests/panic_safety.rs"

[[test]]
name = "resource_exhaustion"
path = "tests/resource_exhaustion.rs"

[[test]]
name = "scheduler"
path = "tests/scheduler.rs"

[[bench]]
name = "io_performance"
path = "benches/io_performance.rs"
harness = false

[[bench]]
name = "scheduler_efficiency"
path = "benches/scheduler_efficiency.rs"
harness = false

[dependencies.dtact-macros]
version = "0.1"

[dependencies.libc]
version = "0.2"

[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]

[dev-dependencies.dtact-io]
version = "0.1"

[dev-dependencies.loom]
version = "0.7"

[dev-dependencies.proptest]
version = "1.6"

[dev-dependencies.serial_test]
version = "3.0"

[dev-dependencies.tokio]
version = "1.52"
features = ["full"]

[build-dependencies.cbindgen]
version = "0.29"

[target."cfg(loom)".dependencies.loom]
version = "0.7"

[target."cfg(windows)".dependencies.windows-sys]
version = "0.61"
features = [
    "Win32_System_Diagnostics",
    "Win32_System_Memory",
    "Win32_System_Threading",
    "Win32_System_Diagnostics_Debug",
    "Win32_System_SystemInformation",
]

[profile.bench]
opt-level = 3
lto = true
codegen-units = 1
debug = 0
debug-assertions = false
overflow-checks = false
incremental = true
strip = true

[profile.dev]
opt-level = 0
lto = false
debug = 2

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
debug = 0
debug-assertions = false
panic = "abort"
overflow-checks = false
incremental = true
strip = true

[profile.release.package.dtact-fuzz]
debug = 2
strip = false

[profile.release.package.dtact-web]
opt-level = "z"
codegen-units = 1
