RSIS is a highly experimental Julia/Rust scheduling framework designed for building non real-time, and soft real-time simulations. Supporting hard real-time simulations is a long term goal. Users develop models in Rust, while configuring their simulations in Julia.
Rust is a relatively new systems engineering language focusing heavily on speed and memory safety. The real-time simulation world is dominated by C & C++, and I want to help expose this world to Rust.
Julia is similar to Python, but with a heavy focus on scientific computation. This naturally lends itself to handling simulation configuration.
This framework is experimental and in development. This road map will exist until the first release.
- Add full Fortran language support
- Refactor port exposure
- Refactor model definition files from YAML to TOML, with enum-like support
- Add multidimensional port arrays
- Add variable length one dimensional arrays
- Allow Custom Components in Model Interface
- Add Thread Generation
- Add Non Real-Time Scheduling
- Add multi threaded NRT Scheduling
- Add Logging Capability
- Add Data Replay Capability
- Add Save Load Feature
- Add Project Environment Handling
- Add MacOS Soft Real-Time Scheduling
- Add Ubuntu Soft Real-Time Scheduling
- Add GUI
- Add MonteCarlo Capability
- Add Code Autogeneration
The basic idea behind RSIS is that models developed by the user are scheduled one after another on threads, all handled via the Julia REPL. The core scheduler is developed in Rust, with the Julia wrapper handling the calls to the core library and also performing configuration validation.
See DevelopingModels for more details on building models.
Simulink is based on a visual programming style, with users defining blocks and their connections. All inputs to RSIS are text-based, with a read-only GUI provided for ease of use.
Also, Simulink is proprietary. RSIS is not.
Trick is an open-source C based framework developed by NASA.