v0.6.0 (2024-01-26)
Highlights
This release improves the federated execution capability, makes the handling of target properties more modular and robust, and provides various bugfixes and small enhancements.
🚀 New Features
- Usage of high-resolution counter device on Zephyr boards. Update to v3.4.0 #2007 (@erlingrj)
- Bracket list expression for initialization without escaping #2003 (@oowekyala)
- [C] Self struct made available to initializers of state variables, parameters #2014 (@OmerMajNition)
- New
--no-source-mapping
switch to disable line directives #2092 (@lhstrh) - Ability to specify rti image for dockerized federated programs #2144 (@lhstrh)
✨ Enhancements
- Show reaction names in diagrams #2030 (@cmnrd)
- Generate default values for the user-configurable CMake flags #2036 (@erlingrj)
- Fix to generate launch script for TS target and print informational message #2090 (@hokeun)
- Use more explicit include guards for Arduino #2102 (@petervdonovan)
- Better placement of line directives #2101 (@petervdonovan)
- String literal allowed as property name #2136 (@oowekyala)
- Various bugfixes and cleanups in the support for federated programs #2140 (@edwardalee)
🔧 Fixes
- Handling of unconnected outputs to avoid segmentation fault #2011 (@edwardalee)
- Fixed timeout and shutdown in C++ #2012 (@cmnrd)
- Stabilized LSP diagram genenation and added default expansion option #2018 (@cmnrd)
- Avoid null pointer exception in diagrams with bodyless reactions #2020 (@cmnrd)
- Removed "Reaction level" diagram synthesis option #2019 (@cmnrd)
- Fixed error reporting in the verifier #2031 (@cmnrd)
- Fixed trimming of the recorded test output #2040 (@cmnrd)
- Fix problems with assignment serialization in diagrams #2038 (@a-sr)
- Fixed bug in the C++ reaction dependency analysis #2050 (@cmnrd)
- Handling of unknown width for multiports #2057 (@edwardalee)
- Fixed race-condition in
_lf_replace_template_token
#2082 (@erlingrj) - Output path specified in JSON used correctly #2088 (@lhstrh)
- Fix bug in C decentralized execution with small after delays #2032 (@petervdonovan)
- Use more explicit include guards for Arduino #2102 (@petervdonovan)
- Fixed mistake in code-generated reaction preamble #2105 (@erlingrj)
- Fix undetected
scheduler
andworkers
properties #2110 (@lsk567) - Fix bug: set length on incoming token #2122 (@edwardalee)
- Type check error turned into warning #2111 (@lhstrh)
- Fix minimum spacing of actions and reference to freed event #2128 (@edwardalee)
- Bugfix for TypeScript in dev mode #2130 (@lhstrh)
- Parallel compilation disabled to avoid triggering deadlock in concurrent invocations of CMake #2145 (@edwardalee)
- Python docker parent image fixed at version
3.10
#2151 (@petervdonovan) - Fix for cycle detection issue #2112 (@lhstrh)
- Fixed
hashCode()
implementation inTimeValue
class #2157 (@lhstrh) - Various bugfixes and cleanups in the support for federated programs #2140 (@edwardalee)
- Removal of image-specific commands in case base image is specified #2158 (@lhstrh)
- Fix some zephyr build issues #2160 (@erlingrj)
- Fix for #2087 #2147 (@a-sr)
- Fixed parameter forwarding for non-trivial types in C++ #2164 (@cmnrd)
- Fixed generation of preambles for unused imports #2165 (@cmnrd)
🚧 Maintenance and Refactoring
- Apply spotbugs plugin #2005 (@cmnrd)
- Cleaned up test code to fix all test related spotbugs warnings #2006 (@cmnrd)
- Remove deprecated C schedulers++ #2037 (@erlingrj)
- Removal of
ulog
fromreactor-ts
, code generator updated to allow this change #2052 (@axmmisaka) - Refactoring of target properties and their validation #2008 (@lhstrh)
- The 'threading' CLI option/build param/target property changed to 'single threaded' #1817 (@patilatharva)
- Minimal changes to merge reactor-c enclaves #2095 (@erlingrj)
- Fix file structure for future
networks
option #2070 (@Jakio815) - Fix minimum spacing of actions and reference to freed event #2128 (@edwardalee)
📖 Documentation
- Updated .github/workflows/README.md #2076 (@Jakio815)
🧪 Tests
- Fixed error reporting in the verifier #2031 (@cmnrd)
- Fixed trimming of the recorded test output #2040 (@cmnrd)
- Adjustment to test output to show progress #2137 (@lhstrh)
- Time limits imposed on integration tests #2141 (@lhstrh)
⬆️ Updated Dependencies
- Bumped Gradle and Gradle plugin versions #2024 (@lhstrh)
Submodule lf-lang/reactor-c
🚀 New Features
- Scheduling enclaves #242 (@erlingrj)
✨ Enhancements
- Use real-time sockets in federated execution #274 (@erlingrj)
- Progress towards Python 3.11 support #255 (@cmnrd)
- Use env command rather than /usr/bin/python3 #297 (@edwardalee)
- Priority queue refactoring #306 (@edwardalee)
- Detect ZDC in RTI and issue PTAG only for nodes in ZDC #311 (@edwardalee)
- Add an option for specifying the time interval of showing messages to the tracing visualizer #320 (@byeong-gil)
- Various bugfixes and cleanups in the support for federated programs #323 (@edwardalee)
🔧 Fixes
- Removal of the "waiting for tag" field #266 (@petervdonovan)
- Mixed microsteps and time #269 (@petervdonovan)
- Fedsd fix self_id #271 (@ChadliaJerad)
- Guard against unconnected outputs #275 (@edwardalee)
- Fixed argparse for
fedsd
#273 (@erlingrj) - Fixed
GEDF_NP
and removal of deprecated schedulers #282 (@erlingrj) - Fixed overflow bug affecting 32-bit Linux platforms #288 (@erlingrj)
- Zephyr: default thread stack size updated to 2KB #299 (@erlingrj)
- Bugfix in C decentralized execution with small after delays #280 (@petervdonovan)
- Added return for non-void return function for arduino support #309 (@chacalnoir)
- Handle messages arriving during initial STA wait #316 (@edwardalee)
- Fix minimum spacing of actions and reference to freed event #318 (@edwardalee)
- Fix LF_ASSERT #324 (@erlingrj)
- Various bugfixes and cleanups in the support for federated programs #323 (@edwardalee)
- Fix compiler warning in adaptive scheduler #335 (@petervdonovan)
- Fix for silly bug in pretty printing time #336 (@edwardalee)
🚧 Maintenance and Refactoring
- Do not link with thread library when we are compiling for Zephyr #272 (@erlingrj)
- Minor cleanups #279 (@edwardalee)
- Fixed
GEDF_NP
and removal of deprecated schedulers #282 (@erlingrj) - Zephyr timing implementation refactored into two separate files #294 (@erlingrj)
- Clean up warnings and associated docs #296 (@edwardalee)
- Use env command rather than /usr/bin/python3 #297 (@edwardalee)
- Mentions of "unthreaded" replaced with "single-threaded" #250 (@patilatharva)
- Priority queue refactoring #306 (@edwardalee)
- Make new directory under
federated
namednetwork
#292 (@Jakio815) - Update lingua-franca-ref.txt to point to master #315 (@edwardalee)
- Fix minimum spacing of actions and reference to freed event #318 (@edwardalee)
- LF_ASSERT: Cast to void to avoid unused warnings #326 (@erlingrj)
Submodule lf-lang/reactor-cpp
✨ Enhancements
- Timeout implemented so that shutdown is invoked only once #53 (@cmnrd)
🔧 Fixes
- Timeout implemented so that shutdown is invoked only once #53 (@cmnrd)
- Build the dependency graph only after establishing all connections #54 (@cmnrd)
Submodule lf-lang/reactor-rs
- No Changes
v0.5.1 (2023-09-12)
Highlights
This release addresses several issues in the C code generator and fixes Docker support for federations.
✨ Enhancements
- Avoid squeezing reaction, method, or preamble bodies onto a single line #1984 (@petervdonovan)
🔧 Fixes
- Fix for setting federates' bank index #1989 (@petervdonovan)
- Default hostname for RTI in dockerized federation changed from "localhost" to "rti" #1993 (@byeong-gil)
- Fix for unconnected multiport and bank reactor bug #1953 (@OmerMajNition)
🚧 Maintenance and Refactoring
- Gradlew not longer used to run dev version of lf cli tools #1988 (@axmmisaka)
- More robust dev scripts and removed util directory #1995 (@cmnrd)
🧪 Tests
- Tests for
lf_set_array
and persistent inputs #1987 (@edwardalee) - Minor fixes for C++ tests #1979 (@revol-xut)
Submodule lf-lang/reactor-c
- No Changes
Submodule lf-lang/reactor-cpp
- No Changes
Submodule lf-lang/reactor-rs
- No Changes
v0.5.0 (2023-08-30)
Highlights
This release introduces new syntax for initializers, includes a renovation of the C backend to let it generate more modular code, and brings new features like a watchdog construct, support for generics in C, support for SMT-solver-based formal verification using UCLID-5, and bare-iron support for the Raspberry Pi Pico platform.
🚀 New Features
- Types allowed in reactor type args #1639 (@oowekyala)
- Tracing of federate interactions #1632 (@edwardalee)
- Equals initializer syntax #1580 (@oowekyala)
--json
and--json-file
CLI args add tolfc
#1686 (@patilatharva)- Generated structs exposed in header files, reactions linkable from separate source files, and updated C target preamble visibility #1599 (@petervdonovan)
- Preprocessor definition for
LF_PACKAGE_DIRECTORY
#1720 (@edwardalee) - Mechanism for printing execution statistics #1743 (@cmnrd)
- Watchdog support for the C target #1730 (@Benichiwa)
- Automatically generated .vscode/settings.json file #1759 (@edwardalee)
- C Generics #1681 (@mkhubaibumer)
USER_THREADS
specifiable in platform options #1721 (@siljesu)- Generic params allowed as generic arguments in C target #1804 (@petervdonovan)
- New
--check
flag forlff
#1822 (@cmnrd) - Environments in the C target #1772 (@erlingrj)
lfd
binary for generating diagrams from the command line #1713 (@cmnrd)fedsd
utility updated to make the RTI optional and support enclaves visualization #1870 (@ChadliaJerad)- C math lib always linked for C target #1894 (@cmnrd)
- Critical sections enabled outside of the context of a reactor #1901 (@edwardalee)
- Uclid5-based LF Verifier #1271 (@lsk567)
- Python launch scripts #1914 (@cmnrd)
- Raspberry Pi Pico target support #1831 (@gundralaa)
- Handling cyclic dependencies for TypeScript federated execution #1925 (@byeong-gil)
✨ Enhancements
- Keeplive natively inferred in the C++ runtime #1630 (@cmnrd)
- File access #1715 (@edwardalee)
- Faster building of TypeScript #1611 (@lhstrh)
- Revised mechanism for handling the
files
target property #1700 (@lhstrh) - Validator rules to check if target supports federation or inheritance #1726 (@cmnrd)
- Optimized Gradle configuration for faster building #1774 (@axmmisaka)
- Adjustable port sides for reactors #1807 (@a-sr)
- No more space inserted after
interleaved
keyword by formatter #1846 (@cmnrd) - More natural syntax for reaction declarations #1853 (@lhstrh)
- Fix for extra whitespace around info messages #1879 (@oowekyala)
- TypeScript runtime bumped to
v0.5.0
#1927 (@byeong-gil) - Support for named and bodyless reactions in C++ #1933 (@cmnrd)
- Added @layout annotation to add arbitrary layout options an elements #1951 (@soerendomroes)
🔧 Fixes
- Physical connections implemented as AST transformation #1596 (@erlingrj)
- Fix for passing of command line options from lfc to the generator #1631 (@cmnrd)
- Fix for validation of target properties #1629 (@cmnrd)
- Fix in validation so that warnings are not reported as errors #1643 (@petervdonovan)
- Fix for NPE in lfc error reporting #1655 (@cmnrd)
- Upstream connection delays now properly handled in the TypeScript federates #1607 (@byeong-gil)
- Fix for authenticated federation #1698 (@Jakio815)
- Bugfixes in handling of
files
target property #1725 (@lhstrh) - Preambles properly inherited from superclasses #1732 (@edwardalee)
- Reactor classes in the same file with the same name, up to case differences, are prohibited #1741 (@petervdonovan)
- Fix for ROS serialization #1755 (@petervdonovan)
- Improved line adjustment logic for federated programs #1760 (@petervdonovan)
- Fixed race condition in C++ enclave coordination #1778 (@cmnrd)
- Fix for error reporting bug #1787 (@lhstrh)
- Fix warnings reported on CliBase. #1793 (@petervdonovan)
- Fix to allow CLI args to be passed to federates #1798 (@petervdonovan)
- Multiple fixes for federated programs with TypeScript target #1752 (@byeong-gil)
- Fix for race condition in
uniqueName
#1815 (@petervdonovan) - Fedsd compatibility with pandas 2.0 #1836 (@ChadliaJerad)
- Formatter fixes #1840 (@petervdonovan)
- Adjustments for running the LF compiler in Epoch #1844 (@a-sr)
- More formatter fixes #1850 (@petervdonovan)
- More formatter fixes #1851 (@petervdonovan)
- Fix for naming collision when generic reactor is instantiated with different parameters #1864 (@petervdonovan)
- Fix for inheritance problem exposed in examples #1891 (@lhstrh)
- Fix verifier error when there is no main reactor #1916 (@lsk567)
- No more use of unordered reactions in federated programs; fix for deadlocks in some federated programs #1684 (@arengarajan99)
- Keyword
extends
added to tokens allowed in reaction bodies #1926 (@lhstrh) - Fix for edge case in which comments are dropped #1924 (@petervdonovan)
- Fix for IllegalArgumentException in diagram synthesis #1932 (@petervdonovan)
- Fix for STP violation #1935 (@petervdonovan)
- Fix for after delays that use user-provided declarations #1959 (@petervdonovan)
- Bugfix for when top-level multiport width in federation depends on parameter #1956 (@petervdonovan)
- Fix compilation error in code for reset state variables with time type #1964 (@a-sr)
🚧 Maintenance and Refactoring
- Migration of Epoch into separate repository #1482 (@a-sr)
- Improved CLI argument handling using
picocli
#1534 (@patilatharva) - Compile definitions no longer hardcoded in generated CMakeLists.txt #1622 (@petervdonovan)
- Remove unchecked compilation warnings #1638 (@oowekyala)
- Refactoring of part of the federated package #1663 (@lhstrh)
- Removal of the use of non-API global variables in tests #1696 (@edwardalee)
- Gradle bumped to version 8 #1691 (@lhstrh)
- Removal of deprecated
build-lfc
script andbuildLfc
Gradle task #1714 (@cmnrd) - Delete unnecessary complexity from
build-lf-cli
#1745 (@petervdonovan) - C files for Python support retrieved from reactor-c repo #1757 (@lhstrh)
- Google autoformatter applied to all files #1766 (@lhstrh)
- Struct refactoring for actions and ports #1756 (@edwardalee)
- Redesign of the repository layout and gradle configuration #1779 (@cmnrd)
- Removal of odd mechanism for loading target generators dynamically #1813 (@cmnrd)
- Default line length set to 100 for LF files #1389 (@petervdonovan)
- KlighD bumped to
2.3.0
and now retrieved from Maven Central #1823 (@cmnrd) - Refactor error reporter #1527 (@oowekyala)
- Unknown port types handled with
unknown
instead ofPresent
#1857 (@lhstrh) - TS code generator adjusted to appease
eslint
#1878 (@lhstrh) - Minor fixes for the README in the test directory #1903 (@lsk567)
- Declarative Port Graph in C++ Runtime #1848 (@revol-xut)
- No more use of unordered reactions in federated programs; fix for deadlocks in some federated programs #1684 (@arengarajan99)
- Tracing utils and Zephyr run scripts moved from
util
folder #1948 (@erlingrj)
📖 Documentation
- Documentation about LSP tests in
README.md
#1587 (@petervdonovan)
🧪 Tests
- TypeScript tests for federates with physical connections #1623 (@byeong-gil)
- Zephyr tests pinned to particular version of docker image #1648 (@erlingrj)
- Test for the support of delayed physical connections in the TypeScript target #1676 (@byeong-gil)
- Test for parsing CLI arguments in
lfc
#1668 (@patilatharva) - Zephyr regression tests executed on QEMU #1678 (@erlingrj)
- CodeCov reporting for CLI tests #1688 (@lhstrh)
- Test to help ensure that level-based scheduling does not cause deadlock #1703 (@edwardalee)
- Flaky tests adjusted #1764 (@edwardalee)
- Spurious dependency example #1707 (@petervdonovan)
- Added test of documented STP_offset parameter #1786 (@edwardalee)
SimpleFederatedAuthenticated.lf
test passing #1776 (@Jakio815)- CI updates #1814 (@petervdonovan)
- Parallel execution of round trip tests #1845 (@oowekyala)
- Tests for
lf_request_stop
with enclaves and federates #1871 (@edwardalee) - Fixed code coverage aggregation and reporting #1868 (@cmnrd)
- New job for building
epoch
in CI #1974 (@lhstrh)
⬆️ Updated Dependencies
- Update to Zephyr v3.3.0 and SDK v0.16.1 #1825 (@erlingrj)
- Reactor-ts bumped to v0.4.0 #1749 (@lhstrh)
- Gradle Wrapper bumped to
8.1.1
#1890 (@lhstrh) - Eclipse-related dependencies bumped to latest releases #1889 (@a-sr)
- TypeScript runtime bumped to
v0.5.0
#1927 (@byeong-gil)
Submodule lf-lang/reactor-c
🚀 New Features
- New tracepoint for deadline misses #169 (@erlingrj)
- Compile definitions for federated programs #179 (@petervdonovan)
- Tracing federate interactions #178 (@edwardalee)
- CMake definition to find
FEDERATED_AUTHENTICATED
#196 (@Jakio815) - Memory reporting #201 (@edwardalee)
- Added
LF_PACKAGE_DIRECTORY
#204 (@edwardalee) - Runtime support for watchdogs #177 (@Benichiwa)
- Environments #212 (@erlingrj)
- Enclave request stop #244 (@edwardalee)
- Critical sections enabled outside of the context of a reactor #249 (@edwardalee)
- Rp2040 Target Support #253 (@gundralaa)
- Platform support for Raspberry Pi Pico #233 (@gundralaa)
✨ Enhancements
- Removal of unnecessary TAG messages #175 (@byeong-gil)
- Cleaner namespace #189 (@petervdonovan)
- File access and doc fixes #198 (@edwardalee)
- Improvements of support for watchdogs #209 (@edwardalee)
- Switch to more general thread creation in Zephyr support #194 (@siljesu)
- Minor improvements to Zephyr platform #187 (@erlingrj)
- Output error when trying to use --auth (-a) for RTI built without -DAUTH=ON #222 (@hokeun)
- Change nanosleep to lf_sleep in federate and RTI code #219 (@siljesu)
- RTI exit while saving the trace file #228 (@ChadliaJerad)
- Less namespace pollution #240 (@erlingrj)
- Enclaves tuning #243 (@edwardalee)
- If clock sync is on, link math #252 (@petervdonovan)
- No more use of unordered reactions in federated programs #191 (@arengarajan99)
🔧 Fixes
- Fix for definition of
LF_TIME_BUFFER_LENGTH
#197 (@edwardalee) - Scheduler leak fix #200 (@edwardalee)
- Fix for Arduino to avoid duplicate definition of
timespec
#195 (@arengarajan99) - Suppression of "no symbols" warnings emitted by ranlib #214 (@petervdonovan)
- Segfault fix #218 (@petervdonovan)
- Zephyr fixes on thread creation and deletion #223 (@erlingrj)
- Minor fix of the federate id in the tracepoint #245 (@ChadliaJerad)
- Fix protocol of HMAC authentication to start from federate. #231 (@Jakio815)
- Use of correct federate ID in tracing of absent messages #248 (@ChadliaJerad)
- Memory leak in Python target fixed #246 (@jackykwok2024)
- Fix for fatal error raised during shutdown when decrementing a tag barrier that is zero #251 (@petervdonovan)
- Fix for STP violation #257 (@petervdonovan)
🚧 Maintenance and Refactoring
- Functions of rti.c moved to rti_lib.c to enable reuse #172 (@Jakio815)
- Code in
rti.c
made available as library #174 (@Jakio815) - Documentation and code cleanup #193 (@edwardalee)
- Platform abstraction layer for the RTI #213 (@siljesu)
- C files from reactor-c-py moved back into the reactor-c repo #217 (@lhstrh)
- Struct refactoring for actions and ports #216 (@edwardalee)
- Refactoring of the RTI implementation #224 (@ChadliaJerad)
_lf_count_token_allocations
madeextern
instead ofstatic
#236 (@erlingrj)- Refactoring of obsolete
gethostbyname()
inconnect_to_rti()
#220 (@siljesu) - No more use of unordered reactions in federated programs #191 (@arengarajan99)
- Fewer warnings #258 (@edwardalee)
📖 Documentation
- Documentation and code cleanup #193 (@edwardalee)
Submodule lf-lang/reactor-cpp
🚀 New Features
- Enclave connections and enclave coordination #44 (@cmnrd)
- Simple mechanism for collecting statistics during execution #47 (@cmnrd)
- Port graph #51 (@revol-xut)
✨ Enhancements
- Keep track of input actions in the environment #42 (@cmnrd)
- Factored event queue into its own class and fixed race condition between multiple starting enclaves #45 (@cmnrd)
🔧 Fixes
- Fix race condition in time barriers #49 (@cmnrd)
- Fix validate method and fix incorrect phase checks #50 (@cmnrd)
Submodule lf-lang/reactor-rs
- Use Cargo workspaces to directly include vecmap dependency #40 (@jhaye)
- Fixes for current Clippy version #45 (@jhaye)
- chore: Bump dependencies to avoid vulnerability in smallvec #44 (@oowekyala)
- Fix use of multiport as reaction source #43 (@oowekyala)
v0.4.0 (2023-03-01)
Highlights
This release includes substantial changes under the hood and brings a lot of new features and enhancements, ranging from performance improvements to the support of new platforms like Zephyr, Arduino, and MBED in the C target. In the C++ target, it is now also straightforward to interact with ROS2 packages using the ros2-dependencies
target property.
🚀 New Features
- Multiport iterator for more efficient access to sparse inputs #1298 (edwardalee)
- Inference of logical execution times of reactions #1292 (lhstrh)
- Custom icons for reactors in diagrams #1300 (a-sr)
- Support for Arduino platforms #1272 (arengarajan99)
- Automatic LF code formatter #1227 (petervdonovan)
- Option of using OpenSSL for authentication between RTI and federates #1432 (Jakio815)
- Safe handling of physical actions in single-threaded C runtime #1348 (lhstrh)
- Initial support for childref multiports #1228 (jhaye)
- Epoch built for M1 Mac #1530 (hokeun)
- Proper handling of asynchronous interactions in Rust #1459 (oowekyala)
- Support for basic scheduling enclaves in the C++ target #1513 (cmnrd)
- Zephyr support for the C target #1536 (erlingrj)
- Support for Arduino CLI #1532 (arengarajan99)
- Arduino MBED RTOS Support #1581 (arengarajan99)
✨ Enhancements
- Added advance-message-interval option and more federated tests for TypeScript #1293 (hokeun)
- Improved layout for error message node #1324 (a-sr)
- C++ target performance optimizations #1330 (cmnrd)
- Improved error messaging for mode validation #1349 (a-sr)
- New target property for specifying additional ROS dependencies #1355 (cmnrd)
- Support for passthrough connections in the C++ target #1361 (cmnrd)
- Support scheduling physical actions synchronously #1367 (oowekyala)
- Automatic code formatting using Spotless #1374 (petervdonovan)
- Optimized access to sparse multiports in the C++ target #1312 (revol-xut)
- Augmented support for Arduino #1384 (arengarajan99)
- New lff autoformatter for Lingua Franca files #1422 (cmnrd)
- Protection from code modifying the multiport container in C++ #1420 (revol-xut)
- Empty bracket pairs properly tokenized #1439 (oowekyala)
- Switched to Gradle for language and diagram server build #1469 (a-sr)
- Better multiport support for Rust #1406 (oowekyala)
- Reduction of disk usage in the Rust target #1476 (oowekyala)
- Native implementation of timeout in C++ #1507 (cmnrd)
- Less verbose CMake output via suppressed install messages #1517 (cmnrd)
- Preservation of time units when formatting LF code #1518 (cmnrd)
- Check for update Rust runtime #1546 (oowekyala)
- Bugfixes and improvements in token-based memory management in C #1548 (edwardalee)
- Use of delayed and physical connections as provided by the C++ runtime #1583 (cmnrd)
🔧 Fixes
- Removal of error reporting markers from parameter types #1310 (Wonseo-C)
- Quick fix to adjust upstreamFedDelays as never tag #1334 (byeong-gil)
- Fixed tracing in the C++ target #1350 (cmnrd)
- Reactor runtime module excluded from the Rust test modules #1351 (oowekyala)
- Problem with child dependencies in Rust fixed #1352 (oowekyala)
- Adjustment of code generator to address #1368 #1370 (lsk567)
- Removal of PyDev and Kotlin plugin dependencies from Epoch #1371 (lhstrh)
- Repair of Windows diagnostic reporting #1391 (petervdonovan)
- Fix of flaky timedwait on Windows #1402 (lhstrh)
- Use of paths not URIs in line-directives #1412 (erlingrj)
- NPE in Epoch fixed #1425 (petervdonovan)
- JavaDoc and NPE on toString fixed #1445 (edwardalee)
- Avoid reading the same input stream twice #1490 (cmnrd)
- Tracing tools Makefile fixed #1485 (lsk567)
- MalleableStrings made human readable #1500 (petervdonovan)
- Fix for broken deadline propagation mechanism #1451 (erlingrj)
- Fix of CMake policy CMP0068 warning #1523 (cmnrd)
- rs/AsyncCallback: Join thread before creating new one #1542 (oowekyala)
- Bugfix for port access to contained generic reactors in C++ #1547 (cmnrd)
- Fixed validation of icon paths #1572 (cmnrd)
- Useful error message upon encountering missing runtime sources #1573 (cmnrd)
- [ts] Bugfix that re-enables the use of custom configuration files #1575 (lhstrh)
- Fix to let relative include helper ignore non-C files #1578 (lhstrh)
- Fix failing building of tracing tools #1589 (erlingrj)
- Fixes in relative include helper for arduino-cli #1586 (arengarajan99)
- CLI args propagated to federates #1604 (lhstrh)
- [ts] Missing types pulled from npm #1609 (lhstrh)
🚧 Maintenance and Refactoring
- Use HTTPS for Rust reactor runtime submodule #1308 (jhaye)
- Switch from Rust nightly to Rust stable #1218 (jhaye)
- Tests in TypeScript for requesting stop in federated execution #1302 (hokeun)
- More portable way to suppress unused variable warnings #1317 (edwardalee)
- Reduced verbosity in reported output #1323 (petervdonovan)
- Reference reactor-ts as module #1322 (lhstrh)
- Removal of unnecessary build dependency to address security exceptions #1365 (cmnrd)
- Simplification of grammar that encodes mutations with the same productions as reactions #1318 (Wonseo-C)
- Removal of "No CMake" build option #1299 (petervdonovan)
- Usage of a published version of reactor-ts #1426 (petervdonovan)
- Differentiation between multi-threaded and single-threaded preprocessor directives in C #1411 (erlingrj)
- TypeScript generator cleanups #1457 (oowekyala)
- Clean up AttributeUtils #1470 (cmnrd)
- Infrastructure for AST transformations and factored out delay transformation #1508 (cmnrd)
- Cleanup initializer grammar #1441 (oowekyala)
- Serialization of compile definitions #1529 (erlingrj)
- Fix and reformat javadoc @author tag #1486 (axmmisaka)
- Restructuring of mechanism for compiling federated programs #1221 (lhstrh)
- Removal of .c file includes in federated programs #1601 (arengarajan99)
🧪 Tests
- Only record tests in test/*/src #1358 (oowekyala)
- Test for Rust main parameters #1366 (oowekyala)
- Add CLI unit tests #1467 (oowekyala)
- Correct reporting of assertion errors and exceptions during code generation #1498 (cmnrd)
- Removal of uses of deprecated reactor-c API in tests #1566 (erlingrj)
⬆️ Updated Dependencies
- Bump Rust runtime #1357 (jhaye)
- Xtext to 2.18.0, LSP4J to 0.15.0, and Guice to 5.1.0 #1364 (lhstrh)
- Gradle bumped to version 7.5.1 #1408 (lhstrh)
- Upgrade to Gradle v7.6.1 #1608 (lhstrh)
Submodule lf-lang/reactor-c
🚀 New Features
- Adaptive scheduler #85 (petervdonovan)
- Support for Arduino platforms #89 (arengarajan99)
- Basic authentication using HMAC for federates joining a federation #105 (hokeun)
- Platform support for Embedded targets #106 (lhstrh)
- Changes to facilitate arduino-cli support #138 (arengarajan99)
- Zephyr support #134 (erlingrj)
- Critical section functions as part of the public API #142 (edwardalee)
- Preliminary multi-board support for Arduino #141 (arengarajan99)
- Add hi-res timing support for imxrt1170evk #149 (erlingrj)
- Threading support for Arduino MBED/coupling of mutexes and condition variables #153 (arengarajan99)
✨ Enhancements
- C support for multiport iterator for sparse inputs #95 (edwardalee)
- Fewer warnings #101 (edwardalee)
- Initial style guide #103 (petervdonovan)
- Memory management improvements and bugfixes #144 (edwardalee)
- Improved CMake configuration #156 (arengarajan99)
- Small fixes to get Zephyr target compiling with threaded runtime #155 (erlingrj)
🔧 Fixes
- Fixed memory leaks in RTI #113 (erlingrj)
- Fix of flaky timedwait on Windows #115 (cmnrd)
- Token payload freed with after delay #124 (edwardalee)
- Consistent way of handling entry and exit of critical section #136 (erlingrj)
- Scheduling preprocessing fix #154 (erlingrj)
- Fix problem with threaded Zephyr and overflow handling in QEMU emulation #159 (erlingrj)
- Intended tag printed instead of last-seen tag in debug message #160 (byeong-gil)
- Zephyr timing fix #166 (erlingrj)
- Fixed compilation of RTI without
-DAUTH
and CI job for building the RTI #171 (cmnrd)
🚧 Maintenance and Refactoring
-
Removal of "No CMake" build option #97 (petervdonovan)
-
Changes to accommodate restructuring code generation of federated programs #117 (lhstrh)
-
Federated support without C include reliance #164 (arengarajan99)
Submodule lf-lang/reactor-cpp
🚀 New Features
- Support passthrough connections #29 (cmnrd)
- Enable multiple environments and schedulers to run at the same time #37 (cmnrd)
- Native runtime implementation of delayed and physical connections #38 (revol-xut)
✨ Enhancements
- Optimization of value pointers for trivially copyable types #22 (cmnrd)
- Avoid locking when scheduling actions #23 (cmnrd)
- Optimized Multiports #24 (revol-xut)
- Protect multiports from accidental modification by restricting Multiport and introducing new class ModifyableMultiport #33 (revol-xut)
- Native timeout implementation, sync_shutdown made threadsafe, and is_present added for timers #36 (cmnrd)
- Optimization: use std::string_view in validation functions #41 (cmnrd)
- Native runtime implementation of delayed and physical connections #38 (revol-xut)
🔧 Fixes
- Fixed compilation with tracing support #25 (cmnrd)
- Fix race condtions related to the scheduling of physical actions #31 (cmnrd)
- Fix compilation on 32-Bit machines #40 (cmnrd)
Submodule lf-lang/reactor-rs
🚀 New Features
✨ Enhancements
- Replace level assignment algo #31 (oowekyala)
- Switched from Rust Nightly to Rust Stable #32 (jhaye)
- Use of stable toolchain for lints in CI #35 (oowekyala)
- Simplified access to ports and port banks #29 (oowekyala)
- Use of external verified VecMap crate #39 (jhaye)
- Removal of scoped threads for physical actions #34 (oowekyala)
🔧 Fixes
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.
🚀 New Features
- 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)
✨ Enhancements
- 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)
🔧 Fixes
- 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)
🚧 Maintenance and Refactoring
- Machine-applicable refactorings #1224 (petervdonovan)
- Inclusion of reactor-rs as a submodule #1296 (cmnrd)
⬆️ Updated Dependencies
Submodule lf-lang/reactor-c
✨ Enhancements
- 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)
🔧 Fixes
Submodule lf-lang/reactor-cpp
✨ Enhancements
- 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)
🔧 Fixes
Submodule lf-lang/reactor-rs
- No Changes
Submodule lf-lang/reactor-ts
🚀 New Features
🧪 Tests
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)
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)
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 argument #1060 (housengw) - Improved Support for Imported Reactors in Diagrams #1055 (a-sr)
- The files target property: Add support for directories #1053 (Soroosh129)
- Removed all Xtend dependencies #1051 (housengw)
- Removed broken dependency on
org.eclipse.xpand.feature.group
#1050 (lhstrh) - Port
CGenerator.xtend
to Java #1049 (housengw) - Replace all tabs with spaces in the
org.lflang.diagrams
package #1047 (a-sr) - Partial refactoring of
CGenerator.xtend
#1045 (housengw) - Another refactoring of
CGenerator.xtend
#1035 (housengw) - ASTUtils cleanup #1022 (cmnrd)
- Bump Xtext from 2.25.0 to 2.26.0 #1021 (lhstrh)
- Removed unnecessary
xtend-gen
folder from classpath #1014 (soerendomroes) - Added ROS2 serialization tests #1012 (Soroosh129)
- Refactor
CGenerator.xtend
#1011 (housengw) - Grammar cleanup #1008 (cmnrd)
- Merge
JavaAstUtils
intoASTUtils
#1004 (housengw) - Move benchmarks to separate repository #1001 (cmnrd)
- Add FPS and update README of YOLO demo #989 (housengw)
- Carla intersection refactoring #982 (housengw)
- FileConfig cleanups #978 (cmnrd)
- Add invoke_deadline_handler parameter to AnytimePrime.lf. #976 (hokeun)
- Port
GeneratorBase.xtend
to Java #974 (housengw) - Add reactor-cpp as a submodule and reorganize the C++ build process #971 (cmnrd)
- Simplify conditional fed codegen #970 (edwardalee)
- Fix port type mismatch in AnytimePrime.lf #968 (hokeun)
- FileConfig cleanup #963 (cmnrd)
- Validator cleanups #961 (edwardalee)
- Add C code generation to store currently executed reaction, add AnytimePrime.lf as a demo for check_deadline(). #960 (hokeun)
- Ported
PythonGenerator.xtend
to Java and started refactoring ofGeneratorBase
#958 (housengw) - Clean up the file writing mechanism #956 (cmnrd)
- Port
org.lflang.federated
to java #950 (housengw) - Fixed bug in centralized coordination related to time advancement #949 (housengw)
- Update reactor-cpp version #946 (cmnrd)
- Ported Xtend code in diagram package to Java #940 (housengw)
- Refactoring: Purge code generators of IFileSystemAccess2. #938 (petervdonovan)
- Fix gradle setup by setting kotlin version to 1.4.30 #934 (cmnrd)
- Fixes #932 #933 (Soroosh129)
- Carla intersection updates #901 (Soroosh129)
- Ported
LFValidator.xtend
to Java #886 (housengw) - Added AlarmClock example #780 (revol-xut)
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 that can be passed down the reactor hierarchy via parameter assignment (#424).
- 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