Theta
An actor framework for Rust
Overview
Theta is an ergonomic yet minimal and performant application framework based on actor model.
- Async Actor
- An actor instance is a very thin wrapper around a
tokio::taskand two MPMC channels. ActorRefis just a single pointer(MPMC sender).
- An actor instance is a very thin wrapper around a
- Built-in remote
- Distributed actor system powered by P2P network,
iroh. - Even
ActorRefcould be passed across network boundary as regular data in message. - Available with feature
remote.
- Distributed actor system powered by P2P network,
- Built-in monitoring
- "Monitor" suggested by Carl Hewitt's Actor Model is implemented as (possibly remote) monitoring feature.
- Available with feature
monitor.
- Built-in persistence
- Seamless respawn of actor from snapshot on file system, AWS S3 etc.
- Available with feature
persistence.
- WASM support (WIP)
- Compile to WebAssembly for running in browser or other WASM environments.
Example
use ;
use *;
;
async
🚧 WIP
Theta is currently under active development and API is subject to change. Not yet recommended for any serious business.
Todo
- Core
- Make
Result::Errimplementingstd::fmt::Displayontellto be logged astracing::error!to prevent silent failure or code duplication - Use concurrent hashmap
- Fix duplicated removing disconnected peer message
- Make
- Macros
- Make
actormacro to take identifier asActorId
- Make
- Supervision
- Factor out supervision as a optional feature
- Remote
- Define lifetime behavior of exported actors (Currently, exported actor will never get dropped)
- Deduplicate simultanious connection attempt to each other
- Support full NodeAddr including Url format definition and sharing routing information between peers
- Persistence
- Cover partial persistence case; some could be stored in storage, but some data should be passed in runtime
- Have respawn API to take closure, not value.
- Actor pool
- Actor pool (task stealing with anonymous dynamic actors and MPMC)
License
Licensed under the MIT License.