# Bastion Executor
Latest Release Crates.io
License Crates.io
Build Status Build Status
Downloads Crates.io
Discord
Bastion Executor is NUMA-aware SMP based Fault-tolerant Executor Bastion Executor is a highly-available, fault-tolerant, async communication oriented executor. Bastion's main idea is supplying a fully async runtime with fault-tolerance to work on heavy loads. Main differences between other executors are: * Uses SMP based execution scheme to exploit cache affinity on multiple cores and execution is equally distributed over the system resources, which means utilizing the all system. * Uses NUMA-aware allocation for scheduler's queues and exploit locality on server workloads. * Tailored for creating middleware and working with actor model like concurrency and distributed communication. **NOTE:** Bastion Executor is independent of it's framework implementation. It uses [lightproc](https://docs.rs/lightproc) to encapsulate and provide fault-tolerance to your future based workloads. You can use your futures with [lightproc](https://docs.rs/lightproc) to run your workloads on Bastion Executor without the need to have framework. ## Example Usage ```rust use bastion_executor::prelude::*; use lightproc::proc_stack::ProcStack; fn main() { let pid = 1; let stack = ProcStack::default() .with_pid(pid) .with_after_panic(move || println!("after panic {}", pid.clone())); let handle = spawn( async { panic!("test"); }, stack, ); let pid = 2; let stack = ProcStack::default().with_pid(pid); run( async { handle.await; }, stack.clone(), ); } ```