Skip to main content
Processes mapping the same region access the same memory pages. Zinc adds no serialization or data copy to that access. Reads and writes still cost memory bandwidth, page faults, and cache coherence; notification adds synchronization costs.

Criterion benchmarks

The Linux notify/wait roundtrip target is under 5 microseconds. There are no checked-in results from the corrected ping-pong benchmark confirming that target. Measure it on the hardware and scheduling setup you plan to use. Criterion’s timing estimates are not per-message P50/P99 latency histograms. On macOS, the sleep fallback trades idle CPU use for scheduler-dependent wake latency. Its results should be measured separately from Linux futex results.

Verify shared access

The Rust/Python interop test creates a region in a Rust process, writes known bytes, and reads them from Python while the creator remains alive:
Virtual pointer addresses do not need to match across processes. Each process can map the same backing pages at a different virtual address. Shared mutations, rather than equal addresses, demonstrate that the views refer to the same storage.

Comparison examples

These programs compare selected data-access and transport workloads. They retain the fastest of five samples and alternate execution order. Warmup touches mapped pages before timing. Treat the fastest sample as a best observed run, not a guarantee or a tail-latency measurement. The shared-memory write loops fill the buffer and inspect one byte through another mapping in the same process. They do not measure a complete payload read in a second process. Socket and Redis paths move payload bytes, so their throughput numbers represent different work. The examples report a warmed-up thread notification roundtrip. The raw mmap example uses the core notification functions to compare the same wait protocol. The grpc example encodes protobuf over length-prefixed TCP. It does not implement HTTP/2, gRPC framing, or a gRPC client/server. The redis example needs a server on 127.0.0.1:6379. The first page contains the header and padding; usable data starts at the next page boundary. Region creation and mapping costs are excluded from the timed write loops.

Recorded example output

These images are historical runs on the MacBook Pro described by the original benchmark documentation. They predate the corrected Criterion latency benchmark and should not be used to claim its current latency.
Historical Zinc and Unix socket example output
Historical Zinc and raw mmap example output
Historical Zinc and protobuf-over-TCP example output
Historical Zinc and Redis example output
The pointer, capacity, notify, and wait paths contain no heap allocation in Zinc’s core implementation. Create and open allocate handles and make mapping syscalls. No heap-profiler results are checked in.