Meson Language Design: Construction and Automatic Checking of a Meson-Object Classification

Meson is a multi language build system that gets more and more users in various open source products. For example, some important software like systemd, gstreamer and most of GNOME is built with meson.

Meson build files are written in a domain specific language (DSL) that is Python oriented but more simplistic. One declared goal of Meson is to stay Turing incomplete to simplify parsing and reasoning. To achieve this, Meson predefine functions and modules within the DSL that deal with common but complicated tasks. They are connected via concepts like files, dependencies, build targets and some common basic data structures. However, some of these concepts don't behave consistently. For example, a file created by configure_file lacks a full_path() function while a file created by executable() has one. These consistency errors are often implicit (undocumented) since the Meson DSL lacks a complete classification.

Your goal with this thesis is to create such a classification of concepts within the meson DSL. Furthermore, you should develop a tool that can check whether meson fulfils this classification.

Topics covered by this thesis:
Meson, Compiler, Programming language design, Python

Further Reading

Tracker bug for Meson consistency