Bastion v0.3.0
·
256 commits
to master
since this release
Getting Started | Examples | API documentation
Bastion 0.3.0 is here, and it is a huge milestone for the project.
Features were added, the API was upgraded, the code was cleaned up, bugs were smashed but
most importantly, Bastion is more powerful than it has ever been.
Don't forget to check out our examples directory and especially getting_started.rs
What's new
- Bastion uses
std::future::Future. - Children execute a
std::future::FuturewithResult<(), ()>as an output to
indicate whether they stopped or faulted. - Messages can be sent to children directly, which can receive and eventually answer to
them (usingmsg!andanswer!). - Messages can be broadcasted to the whole system, a supervisor's supervised elements
or a children group's elements (usingBastion,SupervisorRefandChildrenRef). - The system, supervisors, children groups and children can be stopped or killed remotely
(usingBastion,SupervisorRef,ChildrenRefandChildRef). - Supervisors can supervise others supervisors (they can still supervise children groups
when doing so). - Supervisors can get asked to supervise new children groups and supervisors after being
created (usingSupervisorRef). - Supervisors' supervision strategy can be changed after being created (using
SupervisorRef). - Callbacks can be defined for children groups and supervisors to execute code on some
of their lifecycle events (before_start,before_restart,after_restartand
after_stop). - Children contexts allow to access the child, children group or supervisor (using
.current(),.parent()or.supervisor()). - Bastion uses its own executor (
bastion-executor) and processes abstraction
(lightproc). - Bastion supports using a NUMA-aware allocator (with a fallback on systems not
supporting it) via theunstablefeature.