micro-LF v0.1.0 — First stable release of the micro-LF ecosystem
After roughly two years of development, we are very excited for our first release of micro-LF. This release marks the first stable snapshot of a runtime and language that brings the reactor model of computation to microcontrollers and deeply resource-constrained systems.
What is reactor-uc?
reactor-uc is the execution engine for programs written in micro-LF a slightly changed version of the Lingua Franca (https://lf-lang.org) language, targeting embedded systems. Programs are compiled from .ulf source files by ulfc (the micro-LF compiler) into pure C, then linked against this runtime. The result is a deterministic, event-driven application with no heap allocation at runtime and a well-defined model of time.
Features
Core Reactor Model
- micro-LF implements the full reactor MoC
- reactor-uc has a static memory footprint, we pre-allocate everything.
Scheduling
- Dynamic scheduler: flexible priority-queue-based execution for general use
Federated execution
- Distributed reactor programs across multiple nodes over a network
- Clock synchronization between federates
- Coordinated startup and shutdown
- Transient federates (nodes that can join and leave a federation)
- Configurable maxwait / tardy handler policies for late messages
Platform support
We provide template repositories for all platforms, the supported network protocols are listed in braces behind:
- Zephyr RTOS (TCP/IP)
- RIOT OS (TCP/IP and Coap over 6LoWPAN)
- FreeRTOS
- ESP-IDF
- Raspberry Pi Pico (RP2040) (UART)
- Patmos (time-predictable processor) (S4NoC)
- POSIX (Linux / macOS, for development and testing) (TCP/IP)
Language & tooling
- .ulf file extension for micro-LF source programs
- ulfc compiler with platform-aware code generation
- void-typed ports supported
- Action scheduling policies
- Annotations replacing legacy property syntax
Quality
- Unit, integration, and platform test suites
- CI across all supported platforms
- clang-format enforced style
See the documentation the full documentation here: https://micro-lf.org/
Thank You
I want to thank all the contributor, that added platforms, fixed bugs, and generally believed in this project.