evering 0.1.0

Typed shared-memory communication across processes
[package]
name = "evering"
version = "0.1.0"
authors = ["Nostalgia <Nostalume@outlook.com>"]
license = "MIT OR Apache-2.0"
edition = "2024"
description = "Typed shared-memory communication across processes"
repository = "https://github.com/nostalume/evering"
readme = "README.md"
publish = true
keywords = ["ipc", "shared-memory", "lock-free", "runtime"]
categories = ["concurrency", "data-structures", "no-std"]
include = [
    "/src/**", "/examples/**", "/tests/**", "/docs/**", "/Cargo.toml", "/Cargo.lock",
    "/README.md", "/LICENSE-*", "/rust-toolchain.toml",
]

[features]
default = ["std"]
std = []
map = ["std", "dep:nix", "nix/fs", "nix/mman", "dep:windows-sys",
    "windows-sys/Win32_Foundation", "windows-sys/Win32_System_Memory"]
notify = ["std", "dep:nix", "nix/event", "dep:windows-sys",
    "windows-sys/Win32_Foundation", "windows-sys/Win32_Security",
    "windows-sys/Win32_System_Threading"]
process = [
    "map", "nix/process", "nix/signal", "nix/socket", "nix/uio",
    "windows-sys/Win32_Security", "windows-sys/Win32_System_IO",
    "windows-sys/Win32_Storage_FileSystem", "windows-sys/Win32_System_Pipes",
    "windows-sys/Win32_System_Threading",
]
os = ["map", "notify", "process"]
evidence = ["std", "dep:blake3", "dep:serde", "dep:serde_json"]
benchmark = ["evidence", "os", "tokio", "local-socket"]
local-socket = ["process", "tokio", "dep:tempfile"]
plot = ["benchmark", "dep:plotters"]
tokio = ["std", "notify", "dep:tokio"]
tracing = ["std", "dep:tracing"]

[dependencies]
bitflags = "2.10.0"
blake3 = { version = "1.8.2", optional = true }
crossbeam-utils = { version = "0.8", default-features = false }
serde = { version = "1.0.228", optional = true, features = ["derive"] }
serde_json = { version = "1.0.145", optional = true }
tokio = { version = "1.47.1", optional = true, default-features = false, features = ["net", "rt", "sync", "time"] }
tracing = { version = "0.1", optional = true }
plotters = { version = "0.3.7", optional = true, default-features = false, features = ["svg_backend"] }

[target.'cfg(unix)'.dependencies]
nix = { version = "0.30.1", optional = true, default-features = false }
tempfile = { version = "3.20.0", optional = true }

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61.2", optional = true, default-features = false }

[dev-dependencies]
fastrand = "2.3.0"
hdrhistogram = "7.5.4"
socket2 = "0.6.1"
tokio = { version = "1.47.1", features = ["macros", "rt-multi-thread", "sync", "time"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

[[bench]]
name = "ipc"
path = "benches/ipc/main.rs"
harness = false
test = false
required-features = ["benchmark"]

[[test]]
name = "ipc-study"
path = "benches/ipc/test_main.rs"
required-features = ["benchmark"]

[[example]]
name = "index"
path = "examples/index.rs"
required-features = ["os", "tokio"]

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

[profile.bench]
opt-level = 3
debug = false
strip = true
lto = true
codegen-units = 1