https://github.com/brson/burst
Realtime programming for Rust
https://github.com/brson/burst
Last synced: 4 months ago
JSON representation
Realtime programming for Rust
- Host: GitHub
- URL: https://github.com/brson/burst
- Owner: brson
- Created: 2016-02-27T01:29:10.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-02-28T09:29:46.000Z (over 10 years ago)
- Last Synced: 2024-12-15T17:51:16.648Z (over 1 year ago)
- Language: Rust
- Homepage:
- Size: 57.6 KB
- Stars: 28
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Realtime programming for Rust
**BuRSt** is a framework for writing realtime software in the Rust
programming language. It enforces static and dynamic guarantees about
the latency of operations. It runs in tiny environments and does not
depend on the Rust standard library.
*NOTE: BuRSt is a proof-of-concept. It is not ready for use.*
## About BuRSt
BuRSt enforces a two-phase programming model, wherein work with
unpredicatble latency is performed in the initial setup phase,
followed by a realtime phase where operations must have known
latencies. All allocation is performed in the setup phase.
It replaces the Rust standard library with a minimal set of
platform-independent components optimized for realtime programming,
including realtime-suitable replacements for the common collection
and synchronization types.
It further offers a selection of platform-specific, and
platform-independent, components built on `burst-core` that are
designed to encourage best practices. It runs on Linux, but is
intended to be compatible with other real-time environments.
[See the example](examples/example1.rs).
No BuRSt crates depend on `std`. The BuRSt framework is a
replacement for `std` for embedded systems.
BuRSt only runs on Rust nightly.
## BuRSt core
`burst-core` defines the BuRSt programming model along with a
number of platform-independent data structures suitable for realtime
programming.
A burst program begins by calling `burst::begin_setup` to retrieve the
singleton *setup token*, `St`. The setup token is passed to all
functions that might allocate, have unpredicatble latency, or might
otherwise cause unpredictable system behavior.
`burst-core` defines the standard box and collection types, including
`Box`, `Rc`, `Arc`, `Vec`, and `HashMap`. These are generally identical
to the `std` types of the same name, except that all operations which
might allocate take a reference to `&St`.
`Vec` and `HashMap`, though their capacities are frozen after the
setup phase, may still be mutated during the realtime phase.
The core has few platform dependencies, mainly the allocator, the
random number generator, and platform-specific facilities for ensuring
real-time operation such as `mlockall`. All platform-specific code is
abstracted into the `burst-core-pal-linux` crate for future
portability.
## BuRSt framework
TODO
## License
MIT/Apache-2.0