Skip to content

meet 2024 05 10

Marten Lohstroh edited this page May 10, 2024 · 1 revision

Packaging meeting May 10, 2024

  • Attendees: Marten Lohstroh, Tassilo Tanneberger, Edward A. Lee, Vincenzo Barbuto

These are rough notes. Ideally, some of the things written here would be edited and formulated as requirements.

User story

I have a program Foo.lf that imports Baz from Bar.lf. Bar.lf is in a separate package. Assume that it has a TypeScript target, and the implementation of Baz, uses an npm module called http. This is specified in a package.json in that other project. Now, I want to build Foo.lf. How is this going to work?

Ideas

  • Merge package.json files (difficult)
  • Bring dependencies into Lingo.toml (generate a package.json, amend package.json if one exists already)
    • Workflow: maintainer of Bar.lf adds http dependencies to Lingo.toml, making the compilation of Foo.lf aware of the dependency. The package.json created for the importing package will include dependencies from the imported package.
    • Open question: Syntax for specifying target dependencies in Lingo.toml
  • Compile independently (also difficult, hard to generalize)
    • Interface information has to be kept separate so the LF compiler knows what to do with the unit and preserve semantics
    • Needed:
      • Ports and types
      • Causality interface
      • Inheritance information

Challenge problem: MQTTSubscriber

Paho library needs to be build; use cmake for this; importer needs to be aware of cmake-include target property in MQTTSubscriber.lf (or the Lingo.toml in the package).

Handling target properties across packages

What policy to follow? Merge? Override? In lfc, the policy is property specific.