Developer documentation
Move bytes between processes with a shared-memory queue. Pick the API that fits your language; every implementation speaks the same v3 protocol.
Choose your language
cargo add cloudtoid-interprocess
Node.js & TypeScriptBuffers, promises, and AbortSignal.npm install @cloudtoid/interprocess
GoByte slices, context cancellation, and cgo.go get github.com/cloudtoid/interprocess/src/go/v3@latest
CA small ABI with explicit buffer ownership.#include <interprocess.h>
PythonBytes, timeouts, and context managers. Build from source.from cloudtoid_interprocess import Publisher
.NETSpans, reusable memory, and CancellationToken.dotnet add package Cloudtoid.Interprocess
Your first queue
- Install the package for your language. Go also needs the C SDK.
- Choose a short queue name and a capacity, such as
65536bytes. On Unix, choose an explicit shared directory when processes use different runtimes. - Open a subscriber and a publisher using the same identity and capacity.
- Send bytes. Check the result: a full queue needs an application-level retry or backpressure policy.
- Receive bytes and close each endpoint when its work is finished.
Which receive should I use?
Use a nonblocking receive when your application already controls scheduling. Use a waiting receive when you want the library to wait for work. Reuse caller-owned buffers in Rust, Go, C, or .NET to avoid allocating a result buffer on each receive.
| Language | Try once | Wait for work |
|---|---|---|
| Rust | try_recv() | recv() / recv_timeout(Duration) |
| Node.js | tryReceive() | await receive({ signal }) |
| Go | TryReceive() | Receive(ctx) |
| C | cip_receive(handle, 0, &buffer) | cip_receive(handle, timeout_ms, &buffer) |
| Python | try_receive() | receive(timeout=seconds) |
| .NET | TryDequeue(out message) | Dequeue(cancellation) |
Platforms and compatibility
The protocol targets little-endian, 64-bit Linux, macOS, and Windows on x86-64 and ARM64. Prebuilt package availability varies: check your language's installation section. All connected processes must use protocol v3. Package versions can differ while remaining compatible with that protocol.
Rust provides the native core behind C, Node.js, Python, and Go. .NET implements the same protocol independently. See queue concepts for delivery guarantees and benchmarks for measured throughput and latency.