whatisgithub

What is minilustre?

emersion/minilustre — explained in plain English

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

7GoAudience · researcherComplexity · 4/5DormantSetup · moderate

In one sentence

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

What do people build with it?

USE CASE 1

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

USE CASE 2

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

USE CASE 3

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

USE CASE 4

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

What is it built with?

GoLLVM IRLustre

How does it compare?

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 get it running?

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.

So what is it?

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.

Copy-paste 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

What 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.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.