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.