Lf Lang Lingua Franca Versions Save

Intuitive concurrent programming in any language

nightly

2 weeks ago

Commits

  • ea6a491: Added tests for instance-in-mode bug (Edward A. Lee) #2270
  • 6d057c7: Include instantiations in modes (Edward A. Lee) #2270
  • c234ef7: Spotless (Edward A. Lee) #2270
  • fe9b1cf: Merge branch 'master' into instance-in-mode (Edward A. Lee) #2270
  • 04917ac: Update core/src/main/java/org/lflang/graph/InstantiationGraph.java (Marten Lohstroh) #2270

v0.6.0

3 months ago

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 and workers 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 in TimeValue 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 from reactor-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 named network #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

8 months ago

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

8 months ago

v0.5.0 (2023-09-01)

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)
  • Equals initializer syntax #1580 (@oowekyala)
  • --json and --json-file CLI args add to lfc #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)
  • Enclave connections and enclave coordination in the C++ target #1665 (@cmnrd)
  • 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)
  • Generic params allowed as generic arguments in C target #1804 (@petervdonovan)
  • New --check flag for lff #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)
  • Validator rules to check if target supports federation or inheritance #1726 (@cmnrd)
  • 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 language server "Build and Run" command #1619 (@petervdonovan)
  • 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)
  • Clean Correspondence tags out of generated C code #1737 (@petervdonovan)
  • 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)
  • Multiple fixes for federated programs with TypeScript target #1752 (@byeong-gil)
  • Fix for race condition in uniqueName #1815 (@petervdonovan)
  • Bugfix in integration tests and fixed ROS2 tests #1841 (@cmnrd)
  • 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)
  • Fixed path issue in generated docker-compose.yml for federations #1983 (@lhstrh)

๐Ÿšง 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 and buildLfc 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)
  • 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 of Present #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)
  • Updated README for the federate trace visualizer #1735 (@ChadliaJerad)

๐Ÿงช 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)
  • 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)
  • [C-Generics] Helper Macros #190 (@mkhubaibumer)
  • 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)
  • Updated Makefile and docs for fedsd utility #262 (@ChadliaJerad)

๐Ÿšง 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 made extern instead of static #236 (@erlingrj)
  • Refactoring of obsolete gethostbyname() in connect_to_rti() #220 (@siljesu)
  • No more use of unordered reactions in federated programs #191 (@arengarajan99)
  • Fewer warnings #258 (@edwardalee)
  • Tracing utils moved into reactor-c #259 (@erlingrj)

๐Ÿ“– 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

๐Ÿ”ง Fixes

  • Fix use of multiport as reaction source #43 (@oowekyala)

๐Ÿšง Maintenance and Refactoring

  • Use Cargo workspaces to directly include vecmap dependency #40 (@jhaye)
  • Fixes for current Clippy version #45 (@jhaye)

โฌ†๏ธ Updated Dependencies

  • Dependencies bumped to avoid vulnerability in smallvec #44 (@oowekyala)

v0.4.0

1 year ago

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)

  • Improved CMake configuration #137 (@erlingrj)

  • Changes to accommodate restructuring code generation of federated programs #117 (@lhstrh)

  • Relative paths in lf_types.h #147 (@gundralaa)

  • 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

  • Support for synchronous scheduling of physical actions #30 (@oowekyala)

โœจ 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

  • Clippy fixes #27 (@jhaye)
  • Fix problem with merging of reaction plans #28 (@oowekyala)

v0.3.0

1 year ago

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.

Full Changelog

๐Ÿš€ 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

  • Upgrade to Xtext 2.27.0 and Lsp4j 0.14.0 #1234 (@lhstrh)
  • Bump Klighd version to 2.2 #1297 (@a-sr)

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

  • Patch to ensure that deadlines with zero delay are never met #86 (@billy-bao)

Submodule lf-lang/reactor-cpp

โœจ Enhancements

  • Nix tooling expanded with cachegrind, callgrind, and memtest #13 (@revol-xut)
  • Relocation of unistd.h and execinfo.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

  • Fix to allow ports to have both triggers and further bindings #16 (@cmnrd)

Submodule lf-lang/reactor-rs

  • No Changes

Submodule lf-lang/reactor-ts

๐Ÿš€ New Features

  • JSON serialization #99 (@CloverCho)

๐Ÿงช Tests

  • Increased coverage of unit tests in bank.ts, multiport.ts and port.ts #100 (@goekberk)

v0.2.1

1 year ago

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.

Full Changelog

Implemented enhancements:

  • Introduce a thread-safe logging API for Rust #1138 (@cmnrd)
  • Turn warning for absence of main reactor into an informational message #1113 (@edwardalee)
  • Adjusted build to fall back to python command if python3 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 (@lhstrh)
  • Stop time is not handled correctly with decentralized coordination #1166 (@Soroosh129)
  • Federated feedback with delay falsely detects cycles #1086 (@edwardalee)
  • 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 (@Soroosh129)
  • Maven build failing on MacOS #1153 (@edwardalee)
  • "Required target resource not found" in Epoch 0.2.0 #1142 (@erlingrj)

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 in C target #1143 (@housengw)
  • Refactor doGenerate in C 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 and MaxPermSize 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

2 years ago

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.

Full Changelog

Implemented enhancements:

  • The Rust target should support the 'workers' and 'threading' target properties #991 (@jhaye)
  • Optionally suppress the red No Main Reactor icon #1089 (@edwardalee)

Fixed bugs:

  • Segfault when calling _lf_check_deadline #1123 (@housengw)
  • In generated Rust code, logical actions in main reactors aren't mutable, making them not schedulable #1110 (@jhaye)
  • Add categories explicitly to the diagram synthesis options #1119 (@soerendomroes)

Closed issues:

  • User facing utility functions such as info_print should also have lf_ prefix #1124 (@housengw)
  • Tracking the renaming of APIs in C and Python target #1108 (@housengw)
  • Remove logic for handling examples from testing framework #1079 (@lhstrh)

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 and tag 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

2 years ago

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.

Full Changelog

Implemented enhancements:

  • Add a -v / --version flag to lfc #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 to lfcand 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 and ASTUtils #1003
  • Kotlin classes do not get build by buildLfc task (unless the clean 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 into ASTUtils #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 of GeneratorBase #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

2 years ago

Full Changelog: https://github.com/lf-lang/lingua-franca/compare/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

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

  • 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)