gitwtfhub

wtf is minilustre?

emersion/minilustre — explained in plain English

Analysis updated 2026-07-17 · repo last pushed 2019-01-07

7GoAudience · researcherComplexity · 4/5DormantSetup · moderate

TL;DR

A small Go-based compiler that translates a simplified version of the Lustre reactive programming language into LLVM IR.

Mindmap

mindmap
  root((minilustre))
    Inputs
      Lustre subset code
    Outputs
      LLVM IR
      Executable instructions
    Use Cases
      Learn how compilers work
      Study reactive programming
      Prototype a Lustre tool
    Tech Stack
      Go
      Lustre
      LLVM IR

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Study a small, readable end-to-end compiler as a teaching example for how compilers work.

REASON 2

Use this as a starting point for research into Lustre or reactive programming languages.

REASON 3

Learn how a parser builds a model of source code before converting it to LLVM IR.

REASON 4

Explore how a subset of a real-time reactive language compiles down to a lower-level format.

What's in the stack?

GoLLVM IRLustre

How it stacks up

emersion/minilustredemomanito/helperkelseyhightower/anthos-empathy-session
Stars777
LanguageGoGoGo
Last pushed2019-01-072023-03-072019-05-01
MaintenanceDormantDormantDormant
Setup difficultymoderateeasyhard
Complexity4/51/51/5
Audienceresearchergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 1h+

Requires familiarity with LLVM IR and the Lustre language to make sense of the compiler's output.

License is not stated in the available content.

Wtf does this do

Minilustre is a tiny compiler that translates a simplified version of the Lustre programming language into machine-readable instructions that can be executed. Think of it as a translator: you write code in a subset of Lustre, and the compiler converts it into a lower-level format called LLVM IR that computers can actually run. Lustre is an academic language designed for writing programs that need to react to inputs in real time, things like aircraft control systems or industrial automation software where timing is critical. Minilustre supports only a simplified version of the language, so it's easier to understand and build, but it covers the core ideas. The compiler uses a straightforward parsing approach that reads your code from left to right, building up a mental model of what you wrote before converting it down to LLVM IR, which is an intermediate format used by many programming tools. Someone learning how compilers work might use this project as a teaching example, it's small enough to read and understand end-to-end, but complete enough to do real compilation. A researcher exploring Lustre or reactive programming might use it as a starting point for a larger tool. Because the project is written in Go and only handles a subset of the language, it's not meant to replace full-scale Lustre compilers used in industry, but rather to be an accessible, minimal version that shows how the ideas work. The README doesn't go into detail about what specific language features are supported or what LLVM IR is, so if you want to use this you'd need to explore the code itself or have some familiarity with those concepts. It's the kind of project that's most useful if you're curious about how programming languages are built from the ground up.

Yoink these prompts

Prompt 1
Walk me through minilustre's parsing step and explain how it builds up a model of the source code.
Prompt 2
Explain how this compiler converts its simplified Lustre code into LLVM IR, with an example.
Prompt 3
Help me trace a small Lustre program through this compiler from source to LLVM IR output.
Prompt 4
What subset of the full Lustre language does this compiler support, based on the code?
Prompt 5
Use this project as a reference, help me sketch how I'd extend it to support one more Lustre feature.

Frequently asked questions

wtf is minilustre?

A small Go-based compiler that translates a simplified version of the Lustre reactive programming language into LLVM IR.

What language is minilustre written in?

Mainly Go. The stack also includes Go, LLVM IR, Lustre.

Is minilustre actively maintained?

Dormant — no commits in 2+ years (last push 2019-01-07).

What license does minilustre use?

License is not stated in the available content.

How hard is minilustre to set up?

Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.

Who is minilustre for?

Mainly researcher.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.