Skip to content

RPC / IPC over SHM, for Rust - good for plugins and such

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

bearcove/rapace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rapace

Coverage Status crates.io documentation MIT/Apache-2.0 licensed Discord

A high-performance RPC framework for Rust with support for shared memory, TCP, WebSocket, and in-process transports.

Features

  • Multiple transports: Choose the right transport for your use case

    • Shared memory (SHM): Ultra-low latency for local processes
    • TCP/Unix sockets: Network communication
    • WebSocket: Browser and web clients
    • In-memory: Testing and single-process RPC
  • Streaming: Full support for server and client streaming

  • Code generation: Write your service interface once with #[rapace::service]

  • Type-safe: Compile-time verification of RPC calls

  • Cross-platform: Linux, macOS, Windows, and WebAssembly

Quick Start

use rapace::service;
use rapace::RpcSession;
use rapace_transport_mem::MemTransport;

#[rapace::service]
pub trait Calculator {
    async fn add(&self, a: i32, b: i32) -> i32;
}

// Implement your service...
struct MyCalculator;
impl Calculator for MyCalculator {
    async fn add(&self, a: i32, b: i32) -> i32 {
        a + b
    }
}

// Use it with any transport
let (client_transport, server_transport) = MemTransport::pair();
let session = RpcSession::new(client_transport);
let client = CalculatorClient::new(session);

Documentation

See the crate documentation and examples.

Crates

  • rapace: Main framework (re-exports transports)
  • rapace-core: Core types and protocols
  • rapace-macros: Service macro
  • rapace-registry: Service metadata
  • Transports:
    • rapace-transport-mem
    • rapace-transport-stream (TCP/Unix)
    • rapace-transport-websocket
    • rapace-transport-shm
  • rapace-explorer: Dynamic service discovery
  • rapace-testkit: Transport conformance tests

Sponsors

Thanks to all individual sponsors:

GitHub Sponsors Patreon

...along with corporate sponsors:

AWS Zed Depot

...without whom this work could not exist.

Special thanks

The facet logo was drawn by Misiasart.

License

Licensed under either of:

at your option.

About

RPC / IPC over SHM, for Rust - good for plugins and such

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages