| Crates.io | rrppcc |
| lib.rs | rrppcc |
| version | 0.4.0 |
| created_at | 2023-08-09 12:41:14.974921+00 |
| updated_at | 2024-04-15 07:48:57.48816+00 |
| description | A high-performance userspace RDMA RPC engine. |
| homepage | |
| repository | https://github.com/IcicleF/rrppcc |
| max_upload_size | |
| id | 940026 |
| size | 209,680 |
rrppcc is an RDMA RPC library that serves academic research purposes.
There are some performant and useful userspace RPC engines in C++ (e.g., eRPC) with appealing features like zero-copy. However, when some system researchers originally familiar with those RPC engines start to use Rust, they may find no comparable Rust alternatives. Rust has memory safety, pervasive closures, and async/await. C++ RPC engines does not have memory safety, often do not allow closures, and seldomly have support for C++20 coroutines.
This library offers native Rust userspace RPC that is partly inspired by eRPC. Major features include:
To use this library, you must have an available RDMA NIC installed on your computer.
Mellanox's ConnectX adaptor series are the best;
others should also work as long as you have libibverbs installed, but they are not tested.
0.2: Use this version if you want to bind RPC handlers to Nexus, and can tolerate some unsoundness and counter-intuitive semantics
(the Send + Sync traits are implemented on the types, but they actually can only be used in one thread).0.3: Use this version if you want to bind RPC handlers to Rpc.