[package]
edition = "2024"
rust-version = "1.96"
name = "subetha-cxc"
version = "0.1.12"
authors = ["Markus Newton"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
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."
readme = "README.md"
keywords = [
"ipc",
"shared-memory",
"mmf",
"cross-process",
"kernel-bypass",
]
categories = [
"concurrency",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/Variably-Constant/SubEtha"
resolver = "2"
[features]
default = []
iceoryx-bench = ["dep:iceoryx2"]
linux-futex-raw = []
quic-bridge = [
"dep:quinn",
"dep:rcgen",
"dep:rustls",
"dep:tokio",
"tokio/net",
]
tcp-bridge = [
"dep:tokio",
"tokio/net",
"tokio/io-util",
"tokio/rt-multi-thread",
"tokio/macros",
]
tcp-tls-bridge = [
"tcp-bridge",
"tls",
"dep:tokio-rustls",
]
tls = [
"dep:rustls",
"dep:rcgen",
]
wire-locale = ["dep:xsk-rs"]
zmq-bench = ["dep:zmq"]
[lib]
name = "subetha_cxc"
path = "src/lib.rs"
[[example]]
name = "adaptive_growth_xproc"
path = "examples/adaptive_growth_xproc.rs"
[[example]]
name = "adaptive_ipc_demo"
path = "examples/adaptive_ipc_demo.rs"
[[example]]
name = "adaptive_ipc_pinned"
path = "examples/adaptive_ipc_pinned.rs"
[[example]]
name = "adaptive_khl_e2e"
path = "examples/adaptive_khl_e2e.rs"
[[example]]
name = "adaptive_passthrough"
path = "examples/adaptive_passthrough.rs"
[[example]]
name = "adaptive_ring_frames"
path = "examples/adaptive_ring_frames.rs"
[[example]]
name = "adaptive_ring_hugepage"
path = "examples/adaptive_ring_hugepage.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 = "async_ring_demo"
path = "examples/async_ring_demo.rs"
[[example]]
name = "async_subscriber_scale"
path = "examples/async_subscriber_scale.rs"
[[example]]
name = "auto_ipc_demo"
path = "examples/auto_ipc_demo.rs"
[[example]]
name = "auto_order_xproc"
path = "examples/auto_order_xproc.rs"
[[example]]
name = "bench_throughput"
path = "examples/bench_throughput.rs"
[[example]]
name = "blocked_bloom_compare"
path = "examples/blocked_bloom_compare.rs"
[[example]]
name = "blocking_locks_demo"
path = "examples/blocking_locks_demo.rs"
[[example]]
name = "blocking_ring_demo"
path = "examples/blocking_ring_demo.rs"
[[example]]
name = "blocking_tcp_bridge_e2e"
path = "examples/blocking_tcp_bridge_e2e.rs"
required-features = ["tcp-bridge"]
[[example]]
name = "bridge_lan"
path = "examples/bridge_lan.rs"
required-features = [
"quic-bridge",
"tcp-bridge",
]
[[example]]
name = "cacheline_probe"
path = "examples/cacheline_probe.rs"
[[example]]
name = "cap_morph_sidecar_e2e"
path = "examples/cap_morph_sidecar_e2e.rs"
[[example]]
name = "capacity_broadcast_morph_matrix"
path = "examples/capacity_broadcast_morph_matrix.rs"
[[example]]
name = "capacity_morph_e2e"
path = "examples/capacity_morph_e2e.rs"
[[example]]
name = "capacity_morph_matrix"
path = "examples/capacity_morph_matrix.rs"
[[example]]
name = "capacity_morph_xproc"
path = "examples/capacity_morph_xproc.rs"
[[example]]
name = "capacity_morph_xproc_producer"
path = "examples/capacity_morph_xproc_producer.rs"
[[example]]
name = "capacity_pubsub_morph_matrix"
path = "examples/capacity_pubsub_morph_matrix.rs"
[[example]]
name = "channel_async"
path = "examples/channel_async.rs"
[[example]]
name = "competitor_matrix"
path = "examples/competitor_matrix.rs"
[[example]]
name = "compound_morph_probe"
path = "examples/compound_morph_probe.rs"
[[example]]
name = "compressed_sharded_lan"
path = "examples/compressed_sharded_lan.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 = "construction_cost"
path = "examples/construction_cost.rs"
[[example]]
name = "contract_guard_probe"
path = "examples/contract_guard_probe.rs"
[[example]]
name = "cross_process_compare"
path = "examples/cross_process_compare.rs"
[[example]]
name = "cross_process_throughput"
path = "examples/cross_process_throughput.rs"
[[example]]
name = "dgram_iouring_demo"
path = "examples/dgram_iouring_demo.rs"
[[example]]
name = "dgram_wire_gate"
path = "examples/dgram_wire_gate.rs"
required-features = ["wire-locale"]
[[example]]
name = "direct_file_round_trip"
path = "examples/direct_file_round_trip.rs"
[[example]]
name = "direct_file_xproc"
path = "examples/direct_file_xproc.rs"
[[example]]
name = "dispatcher_demo"
path = "examples/dispatcher_demo.rs"
[[example]]
name = "encode_bench"
path = "examples/encode_bench.rs"
[[example]]
name = "fd_handoff_xproc"
path = "examples/fd_handoff_xproc.rs"
[[example]]
name = "fence_clock_xproc"
path = "examples/fence_clock_xproc.rs"
[[example]]
name = "frame_payload_sweep"
path = "examples/frame_payload_sweep.rs"
[[example]]
name = "gso_probe"
path = "examples/gso_probe.rs"
[[example]]
name = "host_vm_loopback_xproc"
path = "examples/host_vm_loopback_xproc.rs"
[[example]]
name = "kernel_async_ring_demo"
path = "examples/kernel_async_ring_demo.rs"
[[example]]
name = "large_page_ring"
path = "examples/large_page_ring.rs"
[[example]]
name = "large_pages_demo"
path = "examples/large_pages_demo.rs"
[[example]]
name = "link_probe"
path = "examples/link_probe.rs"
[[example]]
name = "locale_migrate_sidecar_e2e"
path = "examples/locale_migrate_sidecar_e2e.rs"
[[example]]
name = "locale_morph"
path = "examples/locale_morph.rs"
[[example]]
name = "locale_shmfs"
path = "examples/locale_shmfs.rs"
[[example]]
name = "loss_burst_probe"
path = "examples/loss_burst_probe.rs"
[[example]]
name = "mmf_dispatcher_demo"
path = "examples/mmf_dispatcher_demo.rs"
[[example]]
name = "monitor_wait_probe"
path = "examples/monitor_wait_probe.rs"
[[example]]
name = "morph_exactly_once_repro"
path = "examples/morph_exactly_once_repro.rs"
[[example]]
name = "morph_latency_probe"
path = "examples/morph_latency_probe.rs"
[[example]]
name = "mpmc_contention_bench"
path = "examples/mpmc_contention_bench.rs"
[[example]]
name = "mpmc_sharded_compare"
path = "examples/mpmc_sharded_compare.rs"
[[example]]
name = "mpmc_shootout"
path = "examples/mpmc_shootout.rs"
[[example]]
name = "net_async_ring"
path = "examples/net_async_ring.rs"
[[example]]
name = "offset_frame_xproc_e2e"
path = "examples/offset_frame_xproc_e2e.rs"
[[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 = "open_shmfs_attach_e2e"
path = "examples/open_shmfs_attach_e2e.rs"
[[example]]
name = "ordering_modes_compare"
path = "examples/ordering_modes_compare.rs"
[[example]]
name = "ordering_race_proof"
path = "examples/ordering_race_proof.rs"
[[example]]
name = "ordering_reorder_experiment"
path = "examples/ordering_reorder_experiment.rs"
[[example]]
name = "ordering_xproc_consumer"
path = "examples/ordering_xproc_consumer.rs"
[[example]]
name = "ordering_xproc_producer"
path = "examples/ordering_xproc_producer.rs"
[[example]]
name = "payload_entropy"
path = "examples/payload_entropy.rs"
[[example]]
name = "phase_lock_probe"
path = "examples/phase_lock_probe.rs"
[[example]]
name = "phase_lock_xproc"
path = "examples/phase_lock_xproc.rs"
[[example]]
name = "policy_thrash_probe"
path = "examples/policy_thrash_probe.rs"
[[example]]
name = "pubsub_fanout"
path = "examples/pubsub_fanout.rs"
[[example]]
name = "qos_driven_morph"
path = "examples/qos_driven_morph.rs"
[[example]]
name = "qos_ordering_morph"
path = "examples/qos_ordering_morph.rs"
[[example]]
name = "quic_bridge_e2e"
path = "examples/quic_bridge_e2e.rs"
required-features = ["quic-bridge"]
[[example]]
name = "ring_async_executor"
path = "examples/ring_async_executor.rs"
[[example]]
name = "rlc_transport_e2e"
path = "examples/rlc_transport_e2e.rs"
[[example]]
name = "rlc_wire_e2e"
path = "examples/rlc_wire_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "schema_bridge_demo"
path = "examples/schema_bridge_demo.rs"
[[example]]
name = "sparse_mesh_repro"
path = "examples/sparse_mesh_repro.rs"
[[example]]
name = "spsc_shootout"
path = "examples/spsc_shootout.rs"
[[example]]
name = "stress_test"
path = "examples/stress_test.rs"
[[example]]
name = "stuck_slot_recovery"
path = "examples/stuck_slot_recovery.rs"
[[example]]
name = "subscriber_restart"
path = "examples/subscriber_restart.rs"
[[example]]
name = "tcp_bridge_e2e"
path = "examples/tcp_bridge_e2e.rs"
required-features = ["tcp-bridge"]
[[example]]
name = "tokio_interop"
path = "examples/tokio_interop.rs"
[[example]]
name = "txtime_pace_probe"
path = "examples/txtime_pace_probe.rs"
[[example]]
name = "udp_bridge_e2e"
path = "examples/udp_bridge_e2e.rs"
[[example]]
name = "udp_xhost"
path = "examples/udp_xhost.rs"
[[example]]
name = "unified_fastshift_probe"
path = "examples/unified_fastshift_probe.rs"
[[example]]
name = "unified_flame"
path = "examples/unified_flame.rs"
[[example]]
name = "unified_policy_probe"
path = "examples/unified_policy_probe.rs"
[[example]]
name = "uso_loopback"
path = "examples/uso_loopback.rs"
[[example]]
name = "virtual_endpoint_lifecycle"
path = "examples/virtual_endpoint_lifecycle.rs"
[[example]]
name = "waker_intra_process_e2e"
path = "examples/waker_intra_process_e2e.rs"
[[example]]
name = "waker_xproc_consumer"
path = "examples/waker_xproc_consumer.rs"
[[example]]
name = "waker_xproc_producer"
path = "examples/waker_xproc_producer.rs"
[[example]]
name = "wire_feth_e2e"
path = "examples/wire_feth_e2e.rs"
required-features = ["wire-locale"]
[[example]]
name = "wire_netmap_e2e"
path = "examples/wire_netmap_e2e.rs"
required-features = ["wire-locale"]
[[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 = "xproc_async_ring"
path = "examples/xproc_async_ring.rs"
[[bench]]
name = "adaptive_ipc_overhead"
path = "benches/adaptive_ipc_overhead.rs"
harness = false
[[bench]]
name = "adaptive_khl_batch"
path = "benches/adaptive_khl_batch.rs"
harness = false
[[bench]]
name = "adaptive_ring_overhead"
path = "benches/adaptive_ring_overhead.rs"
harness = false
[[bench]]
name = "adaptive_send_specialized_ab"
path = "benches/adaptive_send_specialized_ab.rs"
harness = false
[[bench]]
name = "async_fanout"
path = "benches/async_fanout.rs"
harness = false
[[bench]]
name = "async_overhead"
path = "benches/async_overhead.rs"
harness = false
[[bench]]
name = "bloom_filter_ab"
path = "benches/bloom_filter_ab.rs"
harness = false
[[bench]]
name = "capacity_adaptive_ring"
path = "benches/capacity_adaptive_ring.rs"
harness = false
[[bench]]
name = "capacity_broadcast_ring"
path = "benches/capacity_broadcast_ring.rs"
harness = false
[[bench]]
name = "capacity_pubsub_ring"
path = "benches/capacity_pubsub_ring.rs"
harness = false
[[bench]]
name = "concurrent_methods"
path = "benches/concurrent_methods.rs"
harness = false
[[bench]]
name = "epoch_barrier"
path = "benches/epoch_barrier.rs"
harness = false
[[bench]]
name = "event_state_log"
path = "benches/event_state_log.rs"
harness = false
[[bench]]
name = "failover"
path = "benches/failover.rs"
harness = false
[[bench]]
name = "fec_gf_simd"
path = "benches/fec_gf_simd.rs"
harness = false
[[bench]]
name = "heartbeat"
path = "benches/heartbeat.rs"
harness = false
[[bench]]
name = "k_tower_cascade"
path = "benches/k_tower_cascade.rs"
harness = false
[[bench]]
name = "lazy_config"
path = "benches/lazy_config.rs"
harness = false
[[bench]]
name = "multi_thief"
path = "benches/multi_thief.rs"
harness = false
[[bench]]
name = "owner_lease"
path = "benches/owner_lease.rs"
harness = false
[[bench]]
name = "pass_registry"
path = "benches/pass_registry.rs"
harness = false
[[bench]]
name = "priority_fanout"
path = "benches/priority_fanout.rs"
harness = false
[[bench]]
name = "progress_task"
path = "benches/progress_task.rs"
harness = false
[[bench]]
name = "scheduler"
path = "benches/scheduler.rs"
harness = false
[[bench]]
name = "shared_async_pointer"
path = "benches/shared_async_pointer.rs"
harness = false
[[bench]]
name = "shared_atomic"
path = "benches/shared_atomic.rs"
harness = false
[[bench]]
name = "shared_bit_vec"
path = "benches/shared_bit_vec.rs"
harness = false
[[bench]]
name = "shared_blocked_bloom_filter"
path = "benches/shared_blocked_bloom_filter.rs"
harness = false
[[bench]]
name = "shared_bloom_filter"
path = "benches/shared_bloom_filter.rs"
harness = false
[[bench]]
name = "shared_broadcast_ring"
path = "benches/shared_broadcast_ring.rs"
harness = false
[[bench]]
name = "shared_btree_map"
path = "benches/shared_btree_map.rs"
harness = false
[[bench]]
name = "shared_cell"
path = "benches/shared_cell.rs"
harness = false
[[bench]]
name = "shared_count_min_sketch"
path = "benches/shared_count_min_sketch.rs"
harness = false
[[bench]]
name = "shared_deque"
path = "benches/shared_deque.rs"
harness = false
[[bench]]
name = "shared_deque_khpd"
path = "benches/shared_deque_khpd.rs"
harness = false
[[bench]]
name = "shared_deque_loh"
path = "benches/shared_deque_loh.rs"
harness = false
[[bench]]
name = "shared_deque_urd"
path = "benches/shared_deque_urd.rs"
harness = false
[[bench]]
name = "shared_fence_clock"
path = "benches/shared_fence_clock.rs"
harness = false
[[bench]]
name = "shared_graph"
path = "benches/shared_graph.rs"
harness = false
[[bench]]
name = "shared_handle_table"
path = "benches/shared_handle_table.rs"
harness = false
[[bench]]
name = "shared_hash_map"
path = "benches/shared_hash_map.rs"
harness = false
[[bench]]
name = "shared_hash_map_compact"
path = "benches/shared_hash_map_compact.rs"
harness = false
[[bench]]
name = "shared_histogram"
path = "benches/shared_histogram.rs"
harness = false
[[bench]]
name = "shared_hyper_log_log"
path = "benches/shared_hyper_log_log.rs"
harness = false
[[bench]]
name = "shared_leader_election"
path = "benches/shared_leader_election.rs"
harness = false
[[bench]]
name = "shared_lift_trio"
path = "benches/shared_lift_trio.rs"
harness = false
[[bench]]
name = "shared_linked_list"
path = "benches/shared_linked_list.rs"
harness = false
[[bench]]
name = "shared_lru_cache"
path = "benches/shared_lru_cache.rs"
harness = false
[[bench]]
name = "shared_nan_tagged_value"
path = "benches/shared_nan_tagged_value.rs"
harness = false
[[bench]]
name = "shared_nan_value"
path = "benches/shared_nan_value.rs"
harness = false
[[bench]]
name = "shared_once_cell"
path = "benches/shared_once_cell.rs"
harness = false
[[bench]]
name = "shared_rate_limiter"
path = "benches/shared_rate_limiter.rs"
harness = false
[[bench]]
name = "shared_region"
path = "benches/shared_region.rs"
harness = false
[[bench]]
name = "shared_reservoir_sampler"
path = "benches/shared_reservoir_sampler.rs"
harness = false
[[bench]]
name = "shared_ring"
path = "benches/shared_ring.rs"
harness = false
[[bench]]
name = "shared_rw_lock"
path = "benches/shared_rw_lock.rs"
harness = false
[[bench]]
name = "shared_semaphore"
path = "benches/shared_semaphore.rs"
harness = false
[[bench]]
name = "shared_string_arena"
path = "benches/shared_string_arena.rs"
harness = false
[[bench]]
name = "shared_time_point"
path = "benches/shared_time_point.rs"
harness = false
[[bench]]
name = "shared_topology_map"
path = "benches/shared_topology_map.rs"
harness = false
[[bench]]
name = "shared_treiber_stack"
path = "benches/shared_treiber_stack.rs"
harness = false
[[bench]]
name = "shared_umbra_pointer"
path = "benches/shared_umbra_pointer.rs"
harness = false
[[bench]]
name = "shared_universal"
path = "benches/shared_universal.rs"
harness = false
[[bench]]
name = "shared_vec"
path = "benches/shared_vec.rs"
harness = false
[[bench]]
name = "shared_versioned_chain"
path = "benches/shared_versioned_chain.rs"
harness = false
[[bench]]
name = "tagged_offset_ptr"
path = "benches/tagged_offset_ptr.rs"
harness = false
[[bench]]
name = "transport_indirection"
path = "benches/transport_indirection.rs"
harness = false
[[bench]]
name = "umbra_port_ab"
path = "benches/umbra_port_ab.rs"
harness = false
[dependencies.arc-swap]
version = "1.7"
[dependencies.memmap2]
version = "0.9"
[dependencies.once_cell]
version = "1.19"
[dependencies.parking_lot]
version = "0.12"
[dependencies.quinn]
version = "0.11"
features = [
"log",
"platform-verifier",
"runtime-tokio",
"rustls-ring",
"bloom",
]
optional = true
default-features = false
[dependencies.rcgen]
version = "0.13"
optional = true
[dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
]
optional = true
default-features = false
[dependencies.socket2]
version = "0.6"
[dependencies.subetha-core]
version = "0.1.12"
[dependencies.subetha-pointers]
version = "0.1.12"
[dependencies.subetha-sidecar]
version = "0.1.12"
[dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"time",
]
optional = true
[dependencies.tokio-rustls]
version = "0.26"
features = ["ring"]
optional = true
default-features = false
[dependencies.zmq]
version = "0.10"
optional = true
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.crossbeam-channel]
version = "0.5"
[dev-dependencies.crossbeam-deque]
version = "0.8"
[dev-dependencies.flume]
version = "0.12"
[dev-dependencies.interprocess]
version = "2.2"
[dev-dependencies.ipc-channel]
version = "0.22"
[dev-dependencies.quinn]
version = "0.11"
features = [
"log",
"platform-verifier",
"runtime-tokio",
"rustls-ring",
"bloom",
]
default-features = false
[dev-dependencies.rcgen]
version = "0.13"
[dev-dependencies.rtrb]
version = "0.3"
[dev-dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
]
default-features = false
[dev-dependencies.serde]
version = "1"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"time",
]
[target.'cfg(not(any(target_os = "freebsd", target_os = "macos")))'.dependencies.iceoryx2]
version = "0.9"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.io-uring]
version = "0.7"
[target.'cfg(target_os = "linux")'.dependencies.xsk-rs]
version = "0.8"
optional = true
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[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",
]