[−][src]Crate bastion
Bastion: Fault-tolerant Runtime for Rust applications
Bastion is a highly-available, fault-tolerant runtime system with dynamic dispatch oriented lightweight process model. It supplies actor model like concurrency with primitives called lightproc and utilize all the system resources efficiently with at-most-once message delivery guarantee.
To have a quick start please head to: Bastion System Documentation.
Features
- Message-based communication makes this project a lean mesh of actor system.
- Without web servers, weird shenanigans, forced trait implementations, and static dispatch.
- Runtime fault-tolerance makes it a good candidate for distributed systems.
- If you want the smell of Erlang and the powerful aspects of Rust. That's it!
- Completely asynchronous runtime with NUMA-aware and cache-affine SMP executor.
- Exploiting hardware locality wherever it is possible. It is designed for servers.
- Supervision system makes it easy to manage lifecycles.
- Kill your application in certain condition or restart you subprocesses whenever a certain condition is met.
Guarantees
- At most once delivery for all the messages.
- Completely asynchronous system design.
- Asynchronous program boundaries with fort.
- Dynamic supervision of supervisors (adding a subtree later during the execution)
- Lifecycle management both at
futures
andlightproc
layers. - Faster middleware development.
- Above all "fault-tolerance".
Why Bastion?
If one of the questions below is answered with yes, then Bastion is just for you:
- Do I need fault-tolerance in my project?
- Do I need to write resilient middleware/s?
- I shouldn't need a webserver to run an actor system, right?
- Do I want to make my existing code unbreakable?
- Do I need an executor which is using system resources efficiently?
- Do I have some trust issues with orchestration systems?
- Do I want to implement my own application lifecycle?
Modules
children | Children are a group of child supervised under a supervisor Allows users to communicate with children through the mailboxes. |
context | A context allows a child's future to access its received messages, parent and supervisor. |
message | Dynamic dispatch oriented messaging system |
prelude | Prelude of Bastion |
supervisor | Supervisors enable users to supervise a subtree of children or other supervisor trees under themselves. |
Macros
msg | Matches a |
Structs
Bastion | A |
Callbacks | A set of methods that will get called at different states of
a |
Config | The configuration that should be used to initialize the
system using |