Stand und Plan
Stand: November 2026. Der Compiler hat rund 4 500 Zeilen Python und 298 Tests, die alle durchlaufen.
Phase 1: der komplette Durchstich ✅
Ziel war, vom eigenen Quelltext bis zum Programm auf dem Arduino Uno zu kommen, lieber mit einer winzigen Sprache, die durchgängig funktioniert.
| Teil | Stand |
|---|---|
Integer-Typen und bool, let / let mut mit Typableitung, const |
✅ |
Rechnen, Vergleiche, Logik, Bits, as |
✅ |
if / elif / else, while, loop, break, continue, return |
✅ |
Funktionen, extern fn zur Anbindung an C |
✅ |
| lesbare Fehlermeldungen mit Zeile, Spalte und Hinweis (20 Testprogramme) | ✅ |
| Blink-Beispiel für den Uno: 776 Byte Flash, 0 Byte RAM | ✅ |
Phase 2: Daten und Aktoren 🚧
| Teil | Stand | Anmerkung |
|---|---|---|
| structs mit Methoden | ✅ | Arrays als Felder fehlen noch |
Enums mit Daten, match mit Vollständigkeitsprüfung |
✅ | |
Result[T, E] und ? |
✅ | ein nicht beachtetes Ergebnis wird noch nicht gemeldet |
Arrays fester Größe, for i in 0..N |
✅ | mit Bereichsprüfung; for x in arr fehlt |
str und strbuf[N] |
🟡 | Strings im Flash des AVR noch nicht durchgängig |
repeat / until |
✅ | |
Aktoren mit Mailbox, ->>, Mailbox-Regeln |
✅ | |
| Timer und serielle Schnittstelle als Aktoren | 🟡 | laufen auf dem PC; auf dem Uno fehlt noch ein Baustein |
| Board-Datei | 🟡 | Format TOML |
| Zephyr als zweites Zielsystem | ⏳ | noch nicht begonnen |
Als Nächstes
- Board-Datei auf dem Uno: Die Einstellungen aus der Board-Datei kommen auf dem AVR noch nicht an. Danach laufen Timer-Aktoren auch auf echter Hardware. Dazu ein Test, der jedes Beispiel wirklich mit avr-gcc baut.
- Kein Ergebnis darf still verloren gehen: Ein
Result, das niemand prüft, wird ein Fehler beim Übersetzen. - Ausgabe: Senden über die serielle Schnittstelle und Zahlen mit Vorzeichen in Strings.
- Mehrere Timer,
for x in arr, Arrays in structs. - Danach Zephyr als zweites Zielsystem, zuerst auf dem Teensy 4.1.
Später
- Phase 3: Zustandsmaschinen. Der Compiler verwandelt eine Funktion, die wartet, in eine
Zustandsmaschine. Dann darf ein Aktor-Handler
wait_ms(100)schreiben, ohne die anderen aufzuhalten. - Phase 4: Module und Standardbibliothek.
import, eine kleine Bibliothek in MARLA selbst, und der Compiler übernimmt nur, was wirklich benutzt wird.
Die Gründe hinter jeder Entscheidung stehen in der Sprachreferenz.
Inhalt
Erstellt: 05.11.2026