v0.1.0-beta (02-01-2022)
- 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)
- 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)
- 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)
- 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)
- LF programs with the TypeScript target can now be compiled on Windows (#850).
- Added Windows support for the C and Python targets (#532)
- Implemented the Savina benchmark suite in the C, C++, and Rust target (modulo those that require mutations)
- Improved performance of the C++ runtime considerably
- 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.
- Created an Language and Diagram Server that enables our new 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.
- Added compile button as an alternative to the Eclipse automatic build feature (#848)
- Added terminal window support (#509)
- Updated icons
- Added tools for exporting dependency information from the C++ runtime (#788)
- Added tracing support for the Python target (#568)
- Added a script for conveniently running benchmarks (#243)
- Added version bump script (#829)
v0.1.0-alpha (06-04-2021)
This is a preliminary release of the Lingua Franca Compiler (lfc
), a command-line compiler that translates Lingua Franca programs into target language programs, and an Eclipse-based IDE (integrated development environment) that provides a sophisticated editor as well as a code generator. This release supports four target languages: C, C++, Python, and Typescript. See documentation. Of the four target languages, C is the most complete. It supports all documented language features including an experimental implementation of federated execution.
The IDE is suitable for the following platforms:
- Linux (
lingua-franca-rca-0.1.0-alpha-linux.gtk.x86_64.tar.gz
) - MacOS (
lingua-franca-rca-0.1.0-alpha-macosx.cocoa.x86_64.tar.gz
)- IMPORTANT NOTE: MacOS will report that
lflang.app
is broken because it was not signed. To execute it, please runxattr -cr lflang.app
first on the command line. Eventually, we will provide a signed download.
- IMPORTANT NOTE: MacOS will report that
- Windows (
lingua-franca-rca-0.1.0-alpha-win32.x86_64.zip
)
The lfc
command line application is suitable for:
- Linux, MacOS (
lfc-0.1.0-alpha.tar.gz
) - Windows (
lfc-0.1.0-alpha.zip
)
- Java 11 or up (download from Oracle)
- Various target-specific dependencies, documented here
- code generation
- diagram synthesis
- error forwarding from target compiler
- validation
Language Features (see language specification)
- imports
- banks
- multiports
- list-valued parameters
- target properties
- time type