Skip to content

Lingua Franca Beta

Pre-release
Pre-release
Compare
Choose a tag to compare
@lhstrh lhstrh released this 02 Feb 07:19
· 8198 commits to master since this release
v0.1.0-beta
1ac2977

Full Changelog: v0.1.0-alpha...v0.1.0-beta

Compiler

  • Reduced size of generated C code when using banks and multiports (#759 and #875)
  • Significantly reduced memory footprint and compilation time (#759 and #875)
  • Ported the C++ code generator to Kotlin (#345)
  • Ported the TypeScript code generator to Kotlin (#431, #486)
  • Added enforcement of LF scoping rules in generated C++ code (#375)
  • Fixed support for generic reactors in the C++ target (#467)
  • Dropped the rebuild feature of lfc (#530)
  • Fixed after for various complex connection patterns (#541, #553, #593)
  • Improved error reporting in the standalone compiler (#543)
  • The C target now uses CMake to compile generated code (#402)

Dependencies

  • eclipse.core.resources 3.15.0 -> 3.16.0 (#829)
  • eclipse.core.runtime 3.22.0 -> 3.24.0 (#829)
  • exec-maven-plugin 1.6.0 -> 3.0.0 (#829)
  • gradle 6.5 -> 7.0 (#829)
  • junit 4.12 -> 4.13.2 (#829)
  • junit-jupiter-* 5.7.2 -> 5.8.2 (#829)
  • junit-platform-* 1.7.2 -> 1.8.2 (#829)
  • kotlin 1.4.10 -> 1.6.10 (#866)
  • lsp4j 0.10.0 -> 0.12.0 (#829)
  • shadowJar 6.0.0 -> 7.1.2 (#829)
  • xtext-gradle-plugin -> 2.0.8 -> 3.0.0 (#829)

Federation support

  • Added support for federated Python programs
  • Added support for federated TypeScript programs (#538, #596, #646, reactor-ts#71)
  • Enhanced support for Docker containers (including for federated programs) (#700, #750, #754)
  • Added built-in support for ROS 2 serialization (#449)
  • RTI is now a standalone application (#395)

Language

  • Introduced syntax for method definitions (currently only supported by the C++ target) (#382)
  • Added support for giving widths of banks and multiports as runtime parameters or target code in the C++ target (#387, #420)
  • Added syntax for interleaved connections (#416)
  • Created a new Rust target (#488, #628)
  • Added the CCpp target, which accepts C++ code but is supported by the C runtime (#513)

Platform support

  • LF programs with the TypeScript target can now be compiled on Windows (#850).
  • Added Windows support for the C and Python targets (#532)

Runtime

  • Implemented the Savina benchmark suite in the C, C++, and Rust target (modulo those that require mutations)
  • Improved performance of the C++ runtime considerably

Python

  • Multiports and banks are now iterable in the Python target (#713)
  • Fixed an issue where top-level custom Python classes were being serialized incorrectly
  • bank_index (useful for banks of reactors) is now a proper parameter (#424)
    that can be passed down the reactor hierarchy via parameter assignment.

Tool support

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)