[package]
name = "subetha-cxc"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"
description = "MMF-backed cross-process IPC primitives for SubEtha: SharedRing, SharedHashMap, SharedRWLock, SharedSemaphore, SharedLRUCache, OwnerLease, HeartbeatTable, plus 30+ more. One byte layout serves cross-thread, cross-process, and disk-persistent."
[dependencies]
arc-swap = { workspace = true }
memmap2 = "0.9"
parking_lot = { workspace = true }
once_cell = { workspace = true }
subetha-core = { workspace = true }
subetha-sidecar = { workspace = true }
subetha-pointers = { workspace = true }
socket2 = "0.6"
quinn = { workspace = true, optional = true }
rcgen = { workspace = true, optional = true }
rustls = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
tokio-rustls = { workspace = true, optional = true }
zmq = { version = "0.10", optional = true }
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[target.'cfg(target_os = "linux")'.dependencies]
io-uring = { workspace = true }
xsk-rs = { version = "0.8", optional = true }
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.59", features = [
"Win32_Foundation",
"Win32_System_Memory",
"Win32_System_LibraryLoader",
"Win32_System_Performance",
"Win32_System_Threading",
"Win32_Security",
"Win32_NetworkManagement_WiFi",
"Win32_NetworkManagement_IpHelper",
"Win32_NetworkManagement_Ndis",
"Win32_Networking_WinSock",
"Win32_System_IO",
"Win32_Storage_FileSystem",
] }
[target.'cfg(not(any(target_os = "freebsd", target_os = "macos")))'.dependencies]
iceoryx2 = { workspace = true, optional = true }
[features]
default = []
quic-bridge = ["dep:quinn", "dep:rcgen", "dep:rustls", "dep:tokio", "tokio/net"]
tls = ["dep:rustls", "dep:rcgen"]
tcp-bridge = ["dep:tokio", "tokio/net", "tokio/io-util", "tokio/rt-multi-thread", "tokio/macros"]
tcp-tls-bridge = ["tcp-bridge", "tls", "dep:tokio-rustls"]
linux-futex-raw = []
wire-locale = ["dep:xsk-rs"]
zmq-bench = ["dep:zmq"]
iceoryx-bench = ["dep:iceoryx2"]
[dev-dependencies]
criterion = { workspace = true }
crossbeam-channel = { workspace = true }
crossbeam-deque = { workspace = true }
flume = "0.12"
rtrb = "0.3"
interprocess = { workspace = true }
ipc-channel = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
quinn = { workspace = true }
rcgen = { workspace = true }
tokio = { workspace = true }
rustls = { workspace = true }
[[bench]]
name = "shared_ring"
harness = false
[[bench]]
name = "shared_deque"
harness = false
[[bench]]
name = "shared_deque_khpd"
harness = false
[[bench]]
name = "shared_deque_loh"
harness = false
[[bench]]
name = "multi_thief"
harness = false
[[bench]]
name = "transport_indirection"
harness = false
[[bench]]
name = "concurrent_methods"
harness = false
[[bench]]
name = "umbra_port_ab"
harness = false
[[bench]]
name = "bloom_filter_ab"
harness = false
[[bench]]
name = "adaptive_send_specialized_ab"
harness = false
[[bench]]
name = "adaptive_ring_overhead"
harness = false
[[bench]]
name = "adaptive_ipc_overhead"
harness = false
[[bench]]
name = "async_overhead"
harness = false
[[bench]]
name = "async_fanout"
harness = false
[[bench]]
name = "adaptive_khl_batch"
harness = false
[[example]]
name = "dispatcher_demo"
path = "examples/dispatcher_demo.rs"
[[example]]
name = "mmf_dispatcher_demo"
path = "examples/mmf_dispatcher_demo.rs"
[[example]]
name = "auto_ipc_demo"
path = "examples/auto_ipc_demo.rs"
[[example]]
name = "adaptive_ipc_demo"
path = "examples/adaptive_ipc_demo.rs"
[[example]]
name = "adaptive_khl_e2e"
path = "examples/adaptive_khl_e2e.rs"
[[example]]
name = "udp_bridge_e2e"
path = "examples/udp_bridge_e2e.rs"
[[example]]
name = "cross_process_throughput"
path = "examples/cross_process_throughput.rs"
[[example]]
name = "stress_test"
path = "examples/stress_test.rs"
[[example]]
name = "cross_process_compare"
path = "examples/cross_process_compare.rs"
[[example]]
name = "quic_bridge_e2e"
path = "examples/quic_bridge_e2e.rs"
required-features = ["quic-bridge"]
[[example]]
name = "one_port_e2e"
path = "examples/one_port_e2e.rs"
required-features = ["quic-bridge"]
[[example]]
name = "one_port_tls_e2e"
path = "examples/one_port_tls_e2e.rs"
required-features = ["quic-bridge", "tls"]
[[example]]
name = "stuck_slot_recovery"
path = "examples/stuck_slot_recovery.rs"
[[example]]
name = "mpmc_shootout"
path = "examples/mpmc_shootout.rs"
[[example]]
name = "adaptive_ring_morph"
path = "examples/adaptive_ring_morph.rs"
[[example]]
name = "adaptive_ring_sidecar"
path = "examples/adaptive_ring_sidecar.rs"
[[example]]
name = "adaptive_ipc_pinned"
path = "examples/adaptive_ipc_pinned.rs"
[[example]]
name = "locale_morph"
path = "examples/locale_morph.rs"
[[example]]
name = "locale_shmfs"
path = "examples/locale_shmfs.rs"
[[example]]
name = "virtual_endpoint_lifecycle"
path = "examples/virtual_endpoint_lifecycle.rs"
[[example]]
name = "qos_driven_morph"
path = "examples/qos_driven_morph.rs"
[[example]]
name = "subscriber_restart"
path = "examples/subscriber_restart.rs"
[[example]]
name = "pubsub_fanout"
path = "examples/pubsub_fanout.rs"
[[example]]
name = "direct_file_round_trip"
path = "examples/direct_file_round_trip.rs"
[[example]]
name = "wire_veth_e2e"
path = "examples/wire_veth_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "wire_xdp_win_e2e"
path = "examples/wire_xdp_win_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "rlc_wire_e2e"
path = "examples/rlc_wire_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "wire_netmap_e2e"
path = "examples/wire_netmap_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "wire_feth_e2e"
path = "examples/wire_feth_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "dgram_wire_gate"
path = "examples/dgram_wire_gate.rs"
required-features = ["wire-locale"]
[[example]]
name = "direct_file_xproc"
path = "examples/direct_file_xproc.rs"
[[example]]
name = "fd_handoff_xproc"
path = "examples/fd_handoff_xproc.rs"
[[example]]
name = "tcp_bridge_e2e"
path = "examples/tcp_bridge_e2e.rs"
required-features = ["tcp-bridge"]
[[example]]
name = "blocking_ring_demo"
path = "examples/blocking_ring_demo.rs"
[[example]]
name = "async_ring_demo"
path = "examples/async_ring_demo.rs"
[[example]]
name = "condvar_xproc_notifier"
path = "examples/condvar_xproc_notifier.rs"
[[example]]
name = "condvar_xproc_waiter"
path = "examples/condvar_xproc_waiter.rs"
[[example]]
name = "blocking_locks_demo"
path = "examples/blocking_locks_demo.rs"
[[example]]
name = "blocking_tcp_bridge_e2e"
path = "examples/blocking_tcp_bridge_e2e.rs"
required-features = ["tcp-bridge"]
[[example]]
name = "large_pages_demo"
path = "examples/large_pages_demo.rs"
[[example]]
name = "qos_ordering_morph"
path = "examples/qos_ordering_morph.rs"
[[example]]
name = "ordering_xproc_producer"
path = "examples/ordering_xproc_producer.rs"
[[example]]
name = "ordering_xproc_consumer"
path = "examples/ordering_xproc_consumer.rs"
[[example]]
name = "ordering_modes_compare"
path = "examples/ordering_modes_compare.rs"
[[example]]
name = "bridge_lan"
path = "examples/bridge_lan.rs"
required-features = ["quic-bridge", "tcp-bridge"]
[[example]]
name = "monitor_wait_probe"
path = "examples/monitor_wait_probe.rs"
[[example]]
name = "cacheline_probe"
path = "examples/cacheline_probe.rs"
[[bench]]
name = "shared_deque_urd"
harness = false
[[bench]]
name = "shared_lift_trio"
harness = false
[[bench]]
name = "shared_handle_table"
harness = false
[[bench]]
name = "event_state_log"
harness = false
[[bench]]
name = "progress_task"
harness = false
[[bench]]
name = "shared_semaphore"
harness = false
[[bench]]
name = "priority_fanout"
harness = false
[[bench]]
name = "epoch_barrier"
harness = false
[[bench]]
name = "shared_fence_clock"
harness = false
[[bench]]
name = "shared_vec"
harness = false
[[bench]]
name = "shared_broadcast_ring"
harness = false
[[bench]]
name = "shared_hash_map"
harness = false
[[bench]]
name = "shared_hash_map_compact"
harness = false
[[bench]]
name = "shared_string_arena"
harness = false
[[bench]]
name = "shared_topology_map"
harness = false
[[bench]]
name = "shared_region"
harness = false
[[bench]]
name = "tagged_offset_ptr"
harness = false
[[bench]]
name = "shared_nan_value"
harness = false
[[bench]]
name = "shared_nan_tagged_value"
harness = false
[[bench]]
name = "shared_async_pointer"
harness = false
[[bench]]
name = "k_tower_cascade"
harness = false
[[bench]]
name = "shared_bit_vec"
harness = false
[[bench]]
name = "shared_bloom_filter"
harness = false
[[bench]]
name = "shared_blocked_bloom_filter"
harness = false
[[bench]]
name = "shared_btree_map"
harness = false
[[bench]]
name = "shared_rate_limiter"
harness = false
[[bench]]
name = "shared_histogram"
harness = false
[[bench]]
name = "shared_linked_list"
harness = false
[[bench]]
name = "shared_lru_cache"
harness = false
[[bench]]
name = "shared_rw_lock"
harness = false
[[bench]]
name = "shared_hyper_log_log"
harness = false
[[bench]]
name = "shared_count_min_sketch"
harness = false
[[bench]]
name = "shared_treiber_stack"
harness = false
[[bench]]
name = "shared_umbra_pointer"
harness = false
[[bench]]
name = "shared_universal"
harness = false
[[bench]]
name = "shared_reservoir_sampler"
harness = false
[[bench]]
name = "shared_graph"
harness = false
[[bench]]
name = "shared_atomic"
harness = false
[[bench]]
name = "shared_cell"
harness = false
[[bench]]
name = "shared_once_cell"
harness = false
[[bench]]
name = "shared_leader_election"
harness = false
[[bench]]
name = "failover"
harness = false
[[bench]]
name = "heartbeat"
harness = false
[[bench]]
name = "lazy_config"
harness = false
[[bench]]
name = "owner_lease"
harness = false
[[bench]]
name = "pass_registry"
harness = false
[[bench]]
name = "scheduler"
harness = false
[[bench]]
name = "shared_time_point"
harness = false
[[bench]]
name = "shared_versioned_chain"
harness = false
[[bench]]
name = "capacity_adaptive_ring"
harness = false
[[bench]]
name = "capacity_broadcast_ring"
harness = false
[[bench]]
name = "capacity_pubsub_ring"
harness = false
[[bench]]
name = "fec_gf_simd"
harness = false