Vollständige Referenz der Sprache: Lexik und Syntax, Typsystem, Kontrollfluss, Modulaufbau, Speichermodell, Nebenläufigkeit und die systemnahen Ebenen bis hinunter zum ABI. 26 Seiten in fünf Themenfeldern.
→ Übersicht · Erste Schritte · Standard Library · Guides
as im Code.== vergleicht, := weist zu. Ein einzelnes = setzt den Vorgabewert eines Parameters; in jeder anderen Stellung wird es abgewiesen (#1575 behoben).int64, gelesen und geschrieben wird mit peek8/16/32/64 und poke8/16/32/64. ^ ist ausschließlich XOR.int8…int64 und uint8…uint64, jeweils mit einer Kurzform (i8…i64, u8…u64). Ein blankes int existiert nicht.dispose, es gibt keinen Garbage Collector.Result-/Option-Typen, Fehlercodes) — try/catch existiert, panic ist bewusst nicht abfangbar.limit(N) an Schleifen, @dal-Stufen und @stack_limit sind Sprachmittel, keine Bibliothek.@capabilities beschreibt, was ein Programm darf, und erzeugt daraus einen seccomp-Filter.
Die verbindliche Grammatik steht in ebnf.md im Compiler-Repository. Weicht eine Seite hier davon ab, gilt die Grammatik — und die Abweichung gehört gemeldet.
Der Einstieg, in dieser Reihenfolge lesbar.
| Seite | Inhalt |
|---|---|
| Syntax | Programmaufbau, Kommentare, Bezeichner, Literale, vollständige Operatortabelle mit Präzedenz, Speicherklassen var/let/co/con |
| Variablen | Deklaration, die vier Speicherklassen in der Praxis, Startwerte, Typableitung, Gültigkeitsbereich und Verdecken, Variablen auf Modulebene, Lebensdauer |
| Datentypen | Alle Integer-Typen samt Kurzformen, f32/f64, bool, char, pchar, Arrays, Map, Range-Typen, Implementierungsstatus |
| Funktionen | fn, Parameter mit Vorgabewerten, benannte Argumente, Tupel-Rückgabe, Funktionstypen, anonyme Funktionen, Pipe-Operator |> |
| Bedingungen | if/else if/else, if als Ausdruck, Vergleichs- und Logikoperatoren, fehlender Short-Circuit, MC/DC |
| Schleifen | while, for … to/downto, repeat … until, limit(N) als Terminierungsnachweis, break/continue |
| Arrays & Maps | Feste Arrays [N]T und zwei Dimensionen, dynamische array<T>, Map<K,V> mit ganzzahligen Schlüsseln, Bereichsprüfung |
| Enums | Enum-Deklaration, explizite Werte, Zugriff mit ::, Bit-Flags, Zusammenspiel mit match |
| Seite | Inhalt |
|---|---|
| Typaliase & Typumwandlung | type-Aliase, Range-Typen mit Compile- und Laufzeitprüfung, as-Umwandlungstabelle, is-Typtest |
| Generics & Interfaces | Generische Funktionen (Monomorphisierung), interface + implements; kein trait/impl, keine generischen Typen |
| Pattern Matching | match mit Wert-, Bereichs- und Alternativmustern, when-Wächter, Erschöpfungsprüfung, Destrukturierung |
| Rekursion | Endrekursion und automatische TCO, Stack-Tiefe nachweisen, @stack_limit, ARM64-Prolog-Falle |
| Seite | Inhalt |
|---|---|
| Module & Importe | unit/import/pub, Suchreihenfolge, vorkompilierte .lyu-Units, Symbolkollisionen und wie man sie vermeidet |
| OOP | struct vs. class, Methoden, Konstruktor und Destroy, Vererbung mit extends, virtual/override, interface |
| Fehlerbehandlung | Result- und Option-Typen aus std.result, try/catch/finally, defer, panic (nicht abfangbar) |
| Exit-Codes | Rückgabewert von main, exit(), reservierte Bereiche, eigene Codes entwerfen, Signaltod eines Kindprozesses |
| Seite | Inhalt |
|---|---|
| Memory Management | Stack vs. Heap, new/dispose, alloc/free vs. malloc/free_mem, Lebensdauer, DO-178C-Regeln |
| Rohspeicher | Adressen als int64, peek/poke, Struct-Layout von Hand über Offsets, Ausrichtung |
| Handles & FD | Kernel-Deskriptor vs. Userspace-Handle, wem die Freigabe gehört, typische Leck-Muster |
| Fehlerkonventionen der Stdlib | Wann <0, wann ==0, zweistufige Prüfung (PostgreSQL), Fehlercodes nachschlagen |
| Threads & Nebenläufigkeit | ThreadCreate/ThreadJoin, Mutex, Atomics, TLS, Speichermodell und Barrieren |
| Seite | Inhalt |
|---|---|
| Low-Level: Speicherzugriff & Pragmas | Systemprogrammierung ohne Zeigertypen: MMIO, Registerzugriff, was es an Pragmas wirklich gibt |
| Attributes & Pragmas | Die tatsächlich vorhandenen Attribute — @flight_crit, @dal, @stack_limit, @wcet, @redundant, @big_endian, @export |
| FFI | extern fn mit pflichtiger link-Klausel, Typabbildung nach C, Grenzen (zwei pchar-Parameter), Sicherheitsregeln |
| Capabilities (LCBS) | @capabilities auf Modulebene, grant/restrict am Import, erzeugter seccomp-Filter, was durchgesetzt wird und was nicht |
| ABI & Calling Conventions | System V AMD64 und AAPCS64, Parameter- und Rückgaberegister, Stack-Layout, Aufrufkonvention für fn-Zeiger |
| Ziel | Reihenfolge |
|---|---|
| Sprache lernen | Erste Schritte → Syntax → Variablen → Datentypen → Funktionen → Bedingungen → Schleifen → Arrays |
| Größeres Programm strukturieren | Module & Importe → OOP → Fehlerbehandlung → Exit-Codes |
| Systemnah arbeiten | Rohspeicher → Handles & FD → Low-Level → FFI → ABI |
| Sicherheitskritisch entwickeln | Datentypen (Range-Typen) → Schleifen (limit) → Rekursion (@stack_limit) → Attributes & Pragmas → DO-178C |
| Programm eindämmen | Capabilities → FFI → Netzwerk-Guide |
Warnkästen auf diesen Seiten sind Messwerte, keine Vermutungen. Jeder beschreibt Verhalten, das gegen eine benannte Compiler-Fassung geprüft wurde, und nennt in der Regel die Issue-Nummer. Steht dort „seit lyxc 1.0.17C„, ist der Punkt behoben; steht dort ein Defekt ohne Versionsangabe, gilt er zum genannten Prüfstand noch.
Letzte Aktualisierung: 2026-08-12 — neue Seite „Variablen“ aufgenommen; Einordnung „Lyx in zehn Sätzen„, Lesepfade und Abschnittsgliederung ergänzt; sämtliche Kurzbeschreibungen gegen den Seiteninhalt und lyxc 1.0.17E berichtigt (unter anderem float64 → f32/f64, pub/priv → pub, „Trait-Bounds“ → interface/implements, „Inline-Zeiger„ → zeigerfreier Speicherzugriff, Map-Iteration entfernt).