xRPC-rs
High-performance local IPC library for Rust with seamless transport flexibility.
Designed for multi-process applications on the same machine. Start with in-process channels for development, scale to shared memory for production IPC, and extend to TCP for network deployment—all with the same interface. No IDL files, no code generation, just Rust types with serde. Future support for cross-language bindings (Python, Java) is planned.
Status: Very early prototype - It is working but not production-ready.
Architecture
xRPC follows a layered architecture:
| Layer | Trait/Module | Description | Status |
|---|---|---|---|
| Layer 1 | Transport |
Low-level byte transmission (TCP, Unix, SharedMemory, Channel) | completed |
| Layer 2 | MessageTransport |
Message-aware transport with compression | completed |
| Layer 3 | RpcClient/RpcServer |
RPC with method dispatch, streaming, request/response correlation | implementing |
| Layer 4 | Advanced | Batching, service discovery, load balancing | not implemented |
Application
↓
RpcClient/RpcServer (Layer 3)
↓
MessageTransport (Layer 2) with compression
↓
Transport (Layer 1) raw bytes with framing
↓
Network/IPC
Documentation
- Message Protocol - Binary message format specification
Examples
Byte-level Transports
Layer 1 transports (Channel, TCP, RawTransport, TypedChannel):
MessageTransport with SharedMemory
Local RPC using Message protocol over shared memory:
# Terminal 1: Start server
# Terminal 2: Run client
RPC Client/Server
High-level RPC client and server with typed handlers:
# Terminal 1: Start server
# Terminal 2: Run client
Future Plans
Completed
- Add support for streaming & compression on message
- Transport layer abstraction
- Local Channel Transport implementation
- SharedMemory Transport implementation
- Heartbeat abstraction for transport reliability
- RawTransport (skip Message protocol overhead)
- ArcTransport (Arc-based, no serialization)
Refactoring Tasks
- Module reorganization: Split
protocol.rsintomessagemodule. - Codec trait abstraction: Decouple serialization format
- Relocate
TypedChannel
Planned Features
- Network transports (TCP, Unix socket)
- MessageTransport (Layer 2) - Message-aware transport adapter
- Examples for Transports
- High-level Client/Server architecture (Layer 3)
- Streaming support
- Connection pooling
- Batching support
- Service Discovery & Load Balancing
License
This project is licensed under the MIT License - see the LICENSE file for details.