Releases: lf-lang/lingua-franca
Lingua Franca Nightly
Commits
- bf8a007: Typo (Edward A. Lee) #1548
- 8affa95: Set keepalive to true to suppress warning (Edward A. Lee) #1548
- 7de97e9: Generalize Print test reactor to support multiple runs (Edward A. Lee) #1548
- e6035e5: Moved logic from code generator to reactor-c (Edward A. Lee) #1548
- a5bdd58: Test with multiple run with tokens (Edward A. Lee) #1548
- 6be4e9d: Merge branch 'master' into token-payload-free (Edward A. Lee) #1548
- 377d813: Suppress warning about print types (Edward A. Lee) #1548
- 275fe92: Add size parameter (Edward A. Lee) #1548
- 6c2384e: Enable use with multiple run (Edward A. Lee) #1548
- 5e3cf52: Enable use with multiple runs (Edward A. Lee) #1548
- 9828efb: Added documentation (Edward A. Lee) #1548
- 702af24: Used library reactors (Edward A. Lee) #1548
- a87318b: Reorganized token tests (Edward A. Lee) #1548
- 8f647c7: Start of major refactoring of token handling (Edward A. Lee) #1548
- a9ce5ab: Interrim checkin. First compiling (Edward A. Lee) #1548
- 92a6452: Merge branch 'master' into token-payload-free (Edward A. Lee) #1548
- 0de1dcd: Updated to use lf_set_token, as required in docs (Edward A. Lee) #1548
- 0b6732e: Avoid reference to a token_type_t that is on the stack (Edward A. Lee) #1548
- 321fce8: Fix compilation error with template reference (Edward A. Lee) #1548
- 5f72e5d: Added detector for failure to fire (Edward A. Lee) #1548
- 3af220f: Expanded token rework to actions (Edward A. Lee) #1548
- 848b590: Align with reactor-c (Edward A. Lee) #1548
- 75c7642: Removed spurious print statements (Edward A. Lee) #1548
- bed2f32: Correct and test token types sent to contained reactors (Edward A. Lee) #1548
- bac00e4: Added test for reacting to contained token source (Edward A. Lee) #1548
- 559cc06: Renamed variables (Edward A. Lee) #1548
- 5c640c1: Align reactor-c (Edward A. Lee) #1548
- 8fecd42: Align reactor-c (Edward A. Lee) #1548
- bdc159d: Set keepalive to true to silence warning (Edward A. Lee) #1548
- 7492518: Replace token properly (Edward A. Lee) #1548
- 149ec94: Align reactor-c (Edward A. Lee) #1548
- 53f3645: Set timeout and fast (Edward A. Lee) #1548
- ac98475: Set timeout and fast (Edward A. Lee) #1548
- 6f41952: Corrected delay generator code (Edward A. Lee) #1548
- f042304: Added bank versions of token tests (Edward A. Lee) #1548
- 6e5dabc: Removed debug logging (Edward A. Lee) #1548
- 95eba23: Align reactor-c (Edward A. Lee) #1548
- 5e6edcc: Moved some token tests into subdirectory (Edward A. Lee) #1548
- 3f56adb: Moved dependencies into token directory (Edward A. Lee) #1548
- 736e963: Replace deprecated API (Edward A. Lee) #1548
- 519917e: Replace deprecated API (Edward A. Lee) #1548
- a9a9b61: Better messages (Edward A. Lee) #1548
- 5b79103: Added actionRef method (Edward A. Lee) #1548
- 736797a: Put lf_action_base_t objects in action table rather than trigger_t objects (Edward A. Lee) #1548
- c6a146e: Align with merged reactor-c (Edward A. Lee) #1548
- 1de7d91: Merged master into token-payload-free (Edward A. Lee) #1548
- cb01605: Align with token-payload-free branch of reactor-c (Edward A. Lee) #1548
- 8ab64a6: Another attempt to merge submodule (Edward A. Lee) #1548
- e483686: Align reactor-c (Edward A. Lee) #1548
- f6e508b: Aligned with latest reactor-cpp, reactor-c-py, and reactor-rs (Edward A. Lee) #1548
- 091b679: Merge branch 'master' into token-payload-free (Edward A. Lee) #1548
- 5d3db63: Fix indirection on multiport accesses (Edward A. Lee) #1548
- 052411b: Small attempt to get formatting tests to pass (Edward A. Lee) #1548
- 16904fc: Small attempt to get formatting tests to pass (Edward A. Lee) #1548
- 3bfbf2d: Update delay body generator to new token API (Edward A. Lee) #1548
- 3e9abaf: Align with reactor-c-py (Edward A. Lee) #1548
- dd20f3c: Replaced 'template' with 'tmplt' because template is a C++ keyword (Edward A. Lee) #1548
- a64ab8b: Align reactor-c and reactor-c-py (Edward A. Lee) #1548
- f48fb38: Align reactor-c and reactor-ts with token-payload-free branch (Edward A. Lee) #1548
- f2f9403: Align with reactor-c (Edward A. Lee) #1548
- 707fd63: Merge branch 'master' into token-payload-free (Edward A. Lee) #1548
- 0a89371: Adapt to changed trigger_t structure (Edward A. Lee) #1548
- ebbfee8: Align reactor-c-py (Edward A. Lee) #1548
- fcab81f: Merge master into token-payload-free and resolve conflicts (Marten Lohstroh) #1548
- f5f3424: Further fix merge artifacts (Edward A. Lee) #1548
- ea3403b: Apply spotless formatting (Edward A. Lee) #1548
- 9a7a15b: Correct token type error (Edward A. Lee) #1548
- d09cab8: Fix warning with printf (Edward A. Lee) #1548
- fb7f57b: Align reactor-c and reactor-c-py (Edward A. Lee) #1548
- 3e5834f: Removed debug flag in target (Edward A. Lee) #1548
- edfb520: Fixed printfs (Edward A. Lee) #1548
- c3b642a: Pass port to lf_writable_copy (Edward A. Lee) #1548
- 0751c72: Align with reactor-c (Edward A. Lee) #1548
- 0a5ee83: Merge branch 'master' into token-payload-free (Edward A. Lee) #1548
- 1214e82: Align reactor-c (Edward A. Lee) #1548
- 4ab13bb: Align reactor-c (Edward A. Lee) #1548
- 6e623b1: Align reactor-c again (Edward A. Lee) #1548
- 1157a89: aligned to reactor-c (Edward A. Lee) #1548
- aadca8b: Align reactor-c and reactor-c-py (Edward A. Lee) #1548
- 8d2e55d: Align reactor-c and reactor-c-py with respective mains (Edward A. Lee)
Lingua Franca 0.3.0
v0.3.0 (2022-07-22)
Highlights
This release adds broader support for methods (C and Python), syntax for annotations similar those in Java, an adaptive scheduler in the C runtime, and a new platform
target property to furnish support for specialized execution platforms.
- Support for C methods #1215 (edwardalee)
- Support for Python methods #1230 (Soroosh129)
- Adaptive scheduler for C target #1207 (petervdonovan)
- Platform target property #1246 (Soroosh129)
- Annotations #977 (lsk567)
- New handling of startup/shutdown/reset reactions in modes #1169 (a-sr)
- Diagram layout improvements #1206 (a-sr)
- History transitions are now indicated using the
history
keyword #1247 (a-sr) - Compile warnings are fixed and clang-tidy is ran when compiling C++ tests in CI #1259 (cmnrd)
- New design for reset symbols in diagrams #1241 (a-sr)
- Improvements of mode diagram layout #1282 (a-sr)
- [cpp] Additional checks to determine whether a subdirectory should be included in compilation #1283 (cmnrd)
- [cpp] CLI parser errors are caught and a print help message is printed #1288 (cmnrd)
- [ts] Handling of physical action-triggered outputs in federated execution (previously handled by TAN - Time Advance Notice) #1275 (hokeun)
- TAN messages no longer used and in-transit messages recorded in the RTI #1074 (Soroosh129)
- [c] A deadline of
0
is no longer interpreted as an absent deadline but one that can never be met #1217 (billy-bao) - Fix for deadlock in federated execution #1189 (Soroosh129)
- [c] Removal of STP violation inheritance mechanism #1251 (Soroosh129)
- Fix for properly handling paths with spaces in lfc launch script #1257 (cmnrd)
- Fix that repairs the ability to execute commands with Bash in case command is not found on path #1265 (petervdonovan)
- Fix to not include downstream reactions in highlighted cycles #1270 (edwardalee)
- Correction of misplacement of self loops in diagrams #1274 (a-sr)
- Fix that silences spurious error messages from Pylint #1280 (petervdonovan)
- Patch that avoids NullPointerException in
CompileActionHandler
#1267 (lhstrh) - Do not minimize the shadow jar #1285 (cmnrd)
- Fix for
ASTUtils.width()
returnning-1
even when the width can be inferred from connections #1287 (hokeun) - Fix banks of modal reactors #1279 (a-sr)
- Ensure that reactions consistently trigger banks #1289 (edwardalee)
- Cpp: fix triggering of reactions in multiple nested reactors #1286 (cmnrd)
- Fix to ensure the ordering of reactions relative to modes is correct #1303 (a-sr)
- Machine-applicable refactorings #1224 (petervdonovan)
- Inclusion of reactor-rs as a submodule #1296 (cmnrd)
Submodule lf-lang/reactor-c
- New handling of startup/shutdown/reset reactions in modes #79 (a-sr)
- STP violations now result in error messages #82 (edwardalee)
- Removal of TAN messages and new capability to record in-transit messages in the RTI #61 (Soroosh129)
Submodule lf-lang/reactor-cpp
- Nix tooling expanded with cachegrind, callgrind, and memtest #13 (revol-xut)
- Relocation of
unistd.h
andexecinfo.h
includes to void namespace pollution #14 (erlingrj) - Fixes that addresses warnings reported by clang-tidy #15 (cmnrd)
- Optimized port communication for scalar types #17 (cmnrd)
Submodule lf-lang/reactor-rs
- No Changes
Submodule lf-lang/reactor-ts
Lingua Franca 0.2.1
v0.2.1 (2022-06-01)
Highlights:
This release includes bug fixes related to IDE tooling and federated execution. Various code cleanups and refactoring efforts have also been included in this release.
Implemented enhancements:
- Introduce a thread-safe logging API for Rust #1138
- Turn warning for absence of main reactor into an informational message #1113
- Adjusted build to fall back to
python
command ifpython3
is not available #1197 (Soroosh129) - Add more suitable default template for LF projects to Epoch #1180 (lhstrh)
- Add support for the STP handler to the Python target #1176 (Soroosh129)
- Add federated docker file generation for TS target #1165 (housengw)
- Smarter default number of workers in C runtime #1139 (erlingrj)
- Add support for interleaved operator to Rust target #1133 (jhaye)
- Change TS generator to support serialization of communication in federated execution #1125 (CloverCho)
Fixed bugs:
- Default template for "New LF Project" is federated program #1172
- Stop time is not handled correctly with decentralized coordination #1166
- Federated feedback with delay falsely detects cycles #1086
- Repair LSP tests #1199 (petervdonovan)
- Fix segfault for internally disconnected output ports #1195 (Soroosh129)
- Restore the ability to put the RTI on a remote machine #1164 (edwardalee)
- Fix segfault in python target argument handling #1161 (housengw)
- Fixed a few calls to deprecated functions that were missed #1131 (edwardalee)
Closed issues:
- GitHub Actions unable to install Java due to problems with Cloudflare CDN #1196
- Maven build failing on MacOS #1153
- "Required target resource not found" in Epoch 0.2.0 #1142
Merged pull requests:
- Augmented ErrorReporter API with informational messages #1192 (zekailin00)
- Update path to new documentation website in generated Dockerfile #1187 (erlingrj)
- Improve warning message when zero reactions in program #1186 (erlingrj)
- Fix white space issues in Lingua Franca test code #1185 (petervdonovan)
- Fix whitespace in tests #1183 (petervdonovan)
- Fix LSP test in expressions branch #1182 (petervdonovan)
- Address LSP test failures. #1179 (petervdonovan)
- Logging cleanups for VS Code #1174 (petervdonovan)
- Added federated tests for TypeScript target #1159 (suyourice)
- Update deprecated API in ui examples and tests #1155 (housengw)
- Remove trailing whitespace in C and Python generators #1154 (housengw)
- Have Epoch welcome page point to website rather than wiki page #1152 (edwardalee)
- Major refactor of the docker generators #1150 (housengw)
- Update references to deprecated APIs in
C
ui examples #1144 (housengw) lf_
prefix more functions and reorganize files inC
target #1143 (housengw)- Refactor
doGenerate
inC
generator and parts of Python and Typescript docker generators #1141 (housengw) - Disable pylint
c-extension-no-member
warning #1140 (housengw) - Check for Java 17 in lfc scripts and properly exit on error #1136 (cmnrd)
- Let
package_lfc
script put files in appropriately named directory #1135 (lhstrh) - Update references to deprecated print APIs in python target #1134 (housengw)
- Drop
PermSize
andMaxPermSize
options as they are not supported by Java 17 #1132 (cmnrd) - Do not create the temporary dependency link if a connection between f… #1085 (edwardalee)
- Replace Value with Expression in the grammar #1023 (cmnrd)
- Scale back LSP tests #944 (petervdonovan)
Lingua Franca 0.2.0
v0.2.0 (2022-05-01)
Highlights:
This release brings the minimum version requirement of Java to 17, which is a long-term support version that is also broadly supported by newer platforms (e.g., Apple silicon). Other changes included in this release are: a refactoring of the user-facing API of reactor-c, various bugfixes and enhancements of Rust, TypeScript, and C target, and minor improvements of the diagram synthesis.
Implemented enhancements:
- The Rust target should support the 'workers' and 'threading' target properties #991
- Optionally suppress the red No Main Reactor icon #1089 (edwardalee)
Fixed bugs:
- Segfault when calling
_lf_check_deadline
#1123 - In generated Rust code, logical actions in main reactors aren't mutable, making them not schedulable #1110
- Add categories explicitly to the diagram synthesis options #1119 (soerendomroes)
Closed issues:
- User facing utility functions such as
info_print
should also havelf_
prefix #1124 - Tracking the renaming of APIs in C and Python target #1108
- Remove logic for handling examples from testing framework #1079
Merged pull requests:
- Prefix print functions with
lf_
#1127 (housengw) - Fix set executing_reaction in self struct #1126 (housengw)
- Remove references to deprecated APIs in the code generator #1122 (housengw)
- Update Python target APIs to match the C target updates #1116 (housengw)
- Update
SET
, schedule and tag APIs in the C target #1103 (housengw) - Remove redundant struct and related code in python target #1102 (housengw)
- Allow bank_index in initializers #1101 (edwardalee)
- Added support for state variables in diagrams #1100 (a-sr)
- Support inline code arguments on main reactor for Rust target #1099 (jhaye)
- Add support for threading compiler flag to Rust target #1098 (jhaye)
- Update
SET
,schedule
andtag
APIs in the C target #1097 (housengw) - Java configuration bumped to version 17 #1094 (lhstrh)
- Add validation tests for ports in main or federated reactor #1091 (housengw)
- Update and add federated execution tests for TypeScript target #1062 (hokeun)
Lingua Franca 0.1.0
v0.1.0 (2022-04-11)
Highlights:
This is the first stable release of Lingua Franca. Aside from numerous bugfixes, a number of new features have been introduced since v0.1.0-beta, including: generation of ROS2 nodes directly from LF code (C++); improved error handling; support for multiports and banks (TypeScript); modular support for runtime schedulers (C); and modal reactors (C and Python). Finally, a major refactoring has been performed in which all remaining Xtend code was ported to Java.
Implemented enhancements:
- Add a
-v
/--version
flag tolfc
#927 - Produce informative message when
lfc
is run on non-LF files #919 - Make Docker generation compatible with the
files
target property #887 - Preconfigure Epoch with example projects #374
- In banks of reactors, make
bank_index
a proper parameter #343 - Align the meaning of the
threads
target property across targets #290 - Improve Stability of Positioning Edges connected to Reactions in Diagrams #1040 (a-sr)
- Improve layout options #1015 (soerendomroes)
- Support modal models in Python #1009 (edwardalee)
- Replace the 'threads' target property with the 'workers' and 'threading' properties #993 (cmnrd)
- Docker files property #987 (housengw)
- Enable generation of ROS2 nodes directly from C++ code #984 (cmnrd)
- Added
--version
flag tolfc
and improved error messages #979 (cmnrd) - Improve warning message for unrecognized target parameters #964 (cmnrd)
- Add bank & multiport support in TypeScript code generator with > 30 multiport tests. #942 (hokeun)
- Added support for modular scheduler in C runtime #743 (Soroosh129)
- Added support for Modal Models #501 (a-sr)
Fixed bugs:
- Tracing does not get enabled in all files of reactor-c #1067
- C benchmark PingPong is broken #1058
- Command line argument -w does not work. #1056
- Maven build is broken #1033
- FilterBank benchmark in C++ has cycles #1031
- EclipseErrorReporter reports errors in the wrong file #1030
- Dependency cycle detection does not seem to work #1024
- Spurious warnings in Epoch #1016
- Error reporting in Epoch is broken #994
- Epoch fails to highlight errors on codegen #966
- Some cargo errors are not reported in LF #936
- Files without main don't compile if they have imports #913
- Invalid time literal causees IllegalArgumentException #908
- Reactor extending itself causes StackOverflowError #907
- Having multiple unnamed main reactors causes nullPointerException #905
- Catch errors from the TS type checker in the
examples
category #405 - Fixed an issue with bank_index #1087 (Soroosh129)
- Fix bug where tracing does not get fully enabled #1068 (hokeun)
- Fix errors in tracing util. #1043 (hokeun)
- Properly recognize network message actions in TypeScript generator #1042 (hokeun)
- [error reporting] Correct bugs reported on Epoch #1038 (petervdonovan)
- Fix handling of ganged connections #1037 (edwardalee)
- Broaden a pylint ignore. #1029 (petervdonovan)
- Fixed causality loop detection bug #1026 (edwardalee)
- Suppress line-too-long warnings in the Python target. #1018 (petervdonovan)
- [C] do not generate code without main reactor #1000 (housengw)
- Check for null reactor to avoid NPE #998 (edwardalee)
- Fix eclipse error reporting #995 (cmnrd)
- Epoch error reporting #967 (edwardalee)
- Detect and flag and as error multiple mains #965 (edwardalee)
- Inheritance cleanups #962 (edwardalee)
- Fixes #768 #952 (housengw)
- Report raw, unparsed error streams as a last resort. #941 (petervdonovan)
Closed issues:
- Epoch fails on valid file #1027
- List modal reactor tests in own test category #1020
- Merge
JavaAstUtils
andASTUtils
#1003 - Kotlin classes do not get build by
buildLfc
task (unless theclean
task is also run) #930 - Navigate to imported reactors in diagrams #889
- Port Xtend classes to Java #838
- Use the same implementation of deque accross all C benchmarks #765
- Use the BenchmarkRunner reactor in all C benchmarks #764
- Build both Epoch with maven and lfc with gradle in our CI workflow #575
- Declutter repo and move into separate Github Organization #347
- C syntax for referencing parameters and state variables #82
Merged pull requests:
- Switched to building the Python extension module in-place #1088 (Soroosh129)
- Remove example directory #1077 (lhstrh)
- Remove experimental directory #1076 (lhstrh)
- Accommodations for automated version changes #1071 (lhstrh)
- Enable tycho-versions-plugin to manage versioning #1070 (lhstrh)
- Commented out annotation of outputs on transitions #1065 (edwardalee)
- Fixed Problem with Mode Transitions and Edges in VS Code #1063 (a-sr)
- Fix network sender reaction multiport #1061 (Soroosh129)
- Fix missing
-w
command line argumen...
Lingua Franca Beta
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
Utilities
Lingua Franca Alpha
This is a preliminary release of the Lingua Franca Compiler (lfc
), a command-line code generator 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
)
System Requirements
- Java 11 or up (download from Oracle)
- Various target-specific dependencies, documented here
IDE Features
- 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