real-time C++ actor micro-framework for embedded systems, supervisable

Ivan Baidakou fad061b55b update docs %!s(int64=2) %!d(string=hai) anos
docs e5507dd462 moar docs %!s(int64=2) %!d(string=hai) anos
examples 7e33393d8a update readme %!s(int64=2) %!d(string=hai) anos
include 7884a2ad76 moar docs %!s(int64=2) %!d(string=hai) anos
src dcfbe0ca15 minor fixes %!s(int64=2) %!d(string=hai) anos
tests 90c20a6ab0 moar docs %!s(int64=2) %!d(string=hai) anos
CMakeLists.txt 7444698577 moar docs %!s(int64=2) %!d(string=hai) anos
LICENSE 7d3d5124b4 add license %!s(int64=2) %!d(string=hai) anos
README.md fad061b55b update docs %!s(int64=2) %!d(string=hai) anos

README.md

rotor-light is real-time platform-neutral, C++ actor micro-framework for embedded systems with supervising capabilities.

rotor-light is built with the concurrency in the mind, i.e. independent entities (actors) interact each other via messages.

rotor-light is adoption of rotor framework for embedded systems. The framework has no platform-dependent code, so, it can, however, be used as is on host system, if you cautiously care about thread-safety.

docs

Tutorial, concepts and API reference can be found here

features

  • erlang-like hierarchical supervisors

  • asynchronous messaging with priorities

  • plaform-agnostic code (including timers)

  • C++17

  • no thread-safety

  • no allocations, no exceptions, no RTTI

  • non-intrusiveness

  • compile-time actor hierarchies

ping-pong messaging performance & .text section size

messages/second binary size
host (1) ~64.4M 10379 bytes
STM32-H743ZI ~2.8M 14330 bytes
stm32f407g-discovery ~0.52M 4336 bytes
Arduino Uno R3 (2) ~29.5K 5714 bytes
xilinx microblaze (3) ~58.8K 42868 byes

All examples can be measured with examples/ping-pong-throughput.cpp, compiled with CMAKE_BUILD_TYPE=MinSizeRel and the stripped

(1) Setup: Intel Core i7-8550U, Void Linux 5.15.

(2) Build with -DROTOR_LIGHT_ACTOR=uint8_t

(2) Zynq xc7z020clg400-1, QMTECH development board. Microblaze standard config, hw mul/div instr. enabled, clocking is 50Mhz.

The performance numbers are approximate and they are not constant. Actually message delivery depends on many factrors like number of queues, number of actors, number of supervisors, number of subscriptions.

license

MIT