Lingua Franca Beta
Pre-release
Pre-release
Full Changelog: v0.1.0-alpha...v0.1.0-beta
Compiler
- Reduced size of generated C code when using banks and multiports (#759 and #875)
- Significantly reduced memory footprint and compilation time (#759 and #875)
- Ported the C++ code generator to Kotlin (#345)
- Ported the TypeScript code generator to Kotlin (#431, #486)
- Added enforcement of LF scoping rules in generated C++ code (#375)
- Fixed support for generic reactors in the C++ target (#467)
- Dropped the rebuild feature of lfc (#530)
- Fixed
after
for various complex connection patterns (#541, #553, #593) - Improved error reporting in the standalone compiler (#543)
- The C target now uses CMake to compile generated code (#402)
Dependencies
- eclipse.core.resources
3.15.0
->3.16.0
(#829) - eclipse.core.runtime
3.22.0
->3.24.0
(#829) - exec-maven-plugin
1.6.0
->3.0.0
(#829) - gradle
6.5
->7.0
(#829) - junit
4.12
->4.13.2
(#829) - junit-jupiter-*
5.7.2
->5.8.2
(#829) - junit-platform-*
1.7.2
->1.8.2
(#829) - kotlin
1.4.10
->1.6.10
(#866) - lsp4j
0.10.0
->0.12.0
(#829) - shadowJar
6.0.0
->7.1.2
(#829) - xtext-gradle-plugin ->
2.0.8
->3.0.0
(#829)
Federation support
- Added support for federated Python programs
- Added support for federated TypeScript programs (#538, #596, #646, reactor-ts#71)
- Enhanced support for Docker containers (including for federated programs) (#700, #750, #754)
- Added built-in support for ROS 2 serialization (#449)
- RTI is now a standalone application (#395)
Language
- Introduced syntax for method definitions (currently only supported by the C++ target) (#382)
- Added support for giving widths of banks and multiports as runtime parameters or target code in the C++ target (#387, #420)
- Added syntax for interleaved connections (#416)
- Created a new Rust target (#488, #628)
- Added the CCpp target, which accepts C++ code but is supported by the C runtime (#513)
Platform support
- LF programs with the TypeScript target can now be compiled on Windows (#850).
- Added Windows support for the C and Python targets (#532)
Runtime
- Implemented the Savina benchmark suite in the C, C++, and Rust target (modulo those that require mutations)
- Improved performance of the C++ runtime considerably
Python
- Multiports and banks are now iterable in the Python target (#713)
- Fixed an issue where top-level custom Python classes were being serialized incorrectly
bank_index
(useful for banks of reactors) is now a proper parameter (#424)
that can be passed down the reactor hierarchy via parameter assignment.
Tool support
- Created an Language and Diagram Server that enables our new VS Code extension
VS Code extension
- Generated code is now validated when an LF file is saved for all targets except C (#828). Generated C code is only validated when it is fully compiled.
Epoch
- Added compile button as an alternative to the Eclipse automatic build feature (#848)
- Added terminal window support (#509)
- Updated icons