Skip to main content
Version: Nightly 🚧

Glossary

Glossary of terms used in the Lingua Franca (LF) documentation.

LF File​

A source file with the .lf or .ulf extension, representing a Lingua Franca (LF) program. The .ulf extension is used for micro-LF programs, and the .lf extension is used for all other LF programs.

Library File​

An LF file containing one or more reactors intended for reuse, designed to be imported into other LF files.

Package​

A collection of LF source files and directories. Every package must include a src/ directory containing LF source files and a src/lib/ directory containing library files. To use the package with the Lingo package manager, a Lingo.toml manifest file that defines the package configuration is required.

Package Manager​

A software tool that automates the installation, configuration, and management of packages. In the LF ecosystem, you can manage packages manually using git by cloning packages into an lf-packages directory in your project, or you can use the Lingo package manager to manage LF packages and dependencies.

Package Root​

The package root is the top-level directory of a package where the src/ directory resides. This directory can also contain a Lingo.toml file, which guides the Lingo package manager, and/or a lf-packages directory, which contains the packages that are manually included in the project.

Project​

Another term for a package that is under development. Each LF file is assumed to reside in a project, meaning it is located somewhere within a directory called src, which is within some directory that serves as the (package root)[#package-root].

Project Structure​

The structure of an LF project should follow the directory layout below:

├── .
│ ├── bin/ # Directory with generated binary executables
│ ├── build/ # Directory created by the Lingo Package Manager
│ │ ├── lfc_include/ # Directory with packages imported using Lingo
│ │ │ └── <Package Name>/ # Directory containing a package installed by Lingo
│ │ │ │ ├── src/ # Directory with LF source files (package demos)
│ │ │ │ │ └── lib/ # Directory with library files
│ ├── fed-gen/ # Directory with generated code for federated programs
│ ├── include/ # Directory with generated header files
│ ├── lf-packages/ # Directory with manually included packages
│ │ │ └── <Package Name>/ # Directory with the package
│ │ │ │ ├── src/ # Directory with LF source files (package demos)
│ │ │ │ │ └── lib/ # Directory with library files
│ ├── src/ # Directory with LF source files
│ │ ├── lib/ # Directory with reusable reactors
│ ├── src-gen/ # Directory with generated code for single-process programs
└── └── Lingo.toml # Configuration file for Lingo Package Manager
  • Automatically Generated Directories:
    • bin/: Created during the build process to store binary executables.
    • build/: Generated automatically when installing packages managed by the Lingo Package Manager.
    • fed-gen/: Generated automatically for federated programs.
    • include/: Autogenerated to store header files.
    • src-gen/: Autogenerated to store generated code for single-process programs.

This directory structure is essential for enabling the Package Explorer feature in the VS Code Extension, streamlining project management and development processes.