[package]
edition = "2021"
rust-version = "1.70"
name = "maillon"
version = "0.1.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A concurrent intrusive list for building synchronization primitives."
homepage = "https://github.com/wyfo/maillon"
readme = "README.md"
keywords = [
"atomic",
"lock-free",
"no-std",
"async",
]
categories = [
"concurrency",
"data-structures",
"no-std",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/wyfo/maillon"
[package.metadata.docs.rs]
all-features = true
[features]
default = ["std"]
lock_api = ["dep:lock_api"]
parking_lot = [
"dep:parking_lot",
"dep:parking_lot_core",
"lock_api",
]
portable-atomic = ["dep:portable-atomic"]
pthread = ["dep:libc"]
std = ["atomic-backoff/std"]
[lib]
name = "maillon"
path = "src/lib.rs"
[[example]]
name = "notify"
path = "examples/notify.rs"
[[example]]
name = "semaphore"
path = "examples/semaphore.rs"
[[test]]
name = "list"
path = "tests/list.rs"
[[test]]
name = "loom_notify"
path = "tests/loom_notify.rs"
[[test]]
name = "loom_semaphore"
path = "tests/loom_semaphore.rs"
[[test]]
name = "miri_notify"
path = "tests/miri_notify.rs"
[[test]]
name = "miri_semaphore"
path = "tests/miri_semaphore.rs"
[[test]]
name = "notify"
path = "tests/notify.rs"
[[test]]
name = "notify_owned"
path = "tests/notify_owned.rs"
[[test]]
name = "semaphore"
path = "tests/semaphore.rs"
[[test]]
name = "semaphore_owned"
path = "tests/semaphore_owned.rs"
[[test]]
name = "wait_list"
path = "tests/wait_list.rs"
[[bench]]
name = "async_channel"
path = "benches/async_channel/main.rs"
harness = false
[[bench]]
name = "asyncband"
path = "benches/asyncband/main.rs"
harness = false
[[bench]]
name = "futures_intrusive"
path = "benches/futures_intrusive/main.rs"
harness = false
[[bench]]
name = "notify"
path = "benches/notify.rs"
harness = false
[[bench]]
name = "notify_lazy_linked"
path = "benches/notify_lazy_linked.rs"
harness = false
[[bench]]
name = "saa"
path = "benches/saa/main.rs"
harness = false
[[bench]]
name = "semaphore"
path = "benches/semaphore.rs"
harness = false
[[bench]]
name = "semaphore_lazy_linked"
path = "benches/semaphore_lazy_linked.rs"
harness = false
[[bench]]
name = "tokio_notify"
path = "benches/tokio_notify.rs"
harness = false
[[bench]]
name = "tokio_semaphore"
path = "benches/tokio_semaphore.rs"
harness = false
[dependencies.atomic-backoff]
version = "0.1.1"
default-features = false
[dependencies.cfg-if]
version = "1"
[dependencies.lock_api]
version = "0.4"
optional = true
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.parking_lot_core]
version = "0.9"
optional = true
[dependencies.portable-atomic]
version = "1"
features = ["require-cas"]
optional = true
default-features = false
[dev-dependencies.futures]
version = "0.3.32"
[dev-dependencies.rstest]
version = "0.27.0"
[dev-dependencies.tokio]
version = "1.49.0"
features = ["full"]
[dev-dependencies.tokio-test]
version = "0.4.5"
[target.'cfg(any(target_os = "linux", target_os = "android", target_os = "freebsd", target_os = "macos", target_os = "ios", target_os = "watchos", windows))'.dependencies.atomic-wait]
version = "1"
[target."cfg(loom)".dependencies.const_fn]
version = "0.4.12"
[target."cfg(loom)".dependencies.loom]
version = "0.7.2"
[target."cfg(loom)".dev-dependencies.loom]
version = "0.7.2"
features = ["futures"]
[target."cfg(not(loom))".dev-dependencies.async-channel]
version = "2.5.0"
[target."cfg(not(loom))".dev-dependencies.async-event]
version = "0.2"
[target."cfg(not(loom))".dev-dependencies.asyncband]
version = "0.7"
features = [
"event",
"semaphore",
]
[target."cfg(not(loom))".dev-dependencies.concurrent-queue]
version = "2.5"
[target."cfg(not(loom))".dev-dependencies.criterion]
version = "0.8.2"
[target."cfg(not(loom))".dev-dependencies.divan]
version = "0.1.21"
[target."cfg(not(loom))".dev-dependencies.event-listener]
version = "5.4"
[target."cfg(not(loom))".dev-dependencies.futures-intrusive]
version = "0.5"
[target."cfg(not(loom))".dev-dependencies.saa]
version = "5.6"
[target."cfg(unix)".dependencies.libc]
version = "0.2"
optional = true
[lints.clippy]
dbg_macro = "warn"
semicolon_if_nothing_returned = "warn"
[lints.rust]
unsafe_op_in_unsafe_fn = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(nightly)",
"cfg(loom)",
"cfg(skip_single_threaded)",
"cfg(maillon_notify_fetch_max)",
]