kay is a...
- High-performance actor system for Rust
- suitable for simulating millions of entities in realtime
- which only communicate using asynchronous messages
kay can be transparently and trivially scaled onto...
- multiple cores
- multiple networked computers
- browser clients with
wasm
andcargo web
It offers...
- Actor
ID
s identifying- Instances of an Actor Type
- Broadcasts to all instances of an Actor Type
- Specific-type-erased Actor Trait IDs
- Actor instances across networked computers
- A
Recipient<Message>
trait in which a user implements message handling for each message type that an Actor can receive -
Swarm
s - collections of large numbers of instances of identical behaviour- Compact and efficiently managed memory storage for dynamically-sized instance state, supplied by
chunky
- Dispatch of messages to individual instances
- Very efficient broadcasting of a message to all instances
- Compact and efficiently managed memory storage for dynamically-sized instance state, supplied by
- Serialisation-free persistence, snapshotting and loading of actor and system state using memory-mapped files, implemented by
chunky
- Future-like abstractions for awaiting and aggregating asynchronous responses from other actors
- "Essential" message types that are handled even after a panic occurs in an Actor, allowing interactive inspection of the whole panicked system
It internally uses...
- A message queue per Actor Type that is
- unbounded
- multi-writer, single-reader
- lock-free
- The experimental
TypeId
feature, to tag message blobs with their type id for runtime message handling function dispatch - A Slot Map in
Swarm
s to assign uniqueID
s to instances, while always keeping them in continous memory chunks. This makes iterating over them for broadcast messages very fast.
kay is inspired by Data-Oriented Game Development, Erlang and the original ideas behind Object-Orientedness. It is thus named after Alan Kay.