====== Lyx — Dokumentation ======
Lyx ist eine **systemnahe Programmiersprache** für eingebettete Systeme, sicherheitskritische Software (DO-178C) und Anwendungen, die nah an der Maschine bleiben sollen. Der Compiler ist selbst-hostend — er ist in Lyx geschrieben und übersetzt sich selbst — und erzeugt statisch gelinkte Binaries ohne Laufzeitumgebung.
unit main;
import std.io;
fn main(): int64 {
PrintLn("Hallo Lyx");
return 0;
}
lyxc hello.lyx -o hello && ./hello
Ergebnis: eine **statisch gelinkte ELF-Datei von rund 100 KB**, ohne dynamische Abhängigkeiten — kein Interpreter, keine libc-Pflicht, kein Garbage Collector.
----
===== Was Lyx ausmacht =====
^ Eigenschaft ^ Bedeutung im Alltag ^
| **Explizit statt implizit** | Keine impliziten Typumwandlungen, kein versteckter Kontrollfluss. Jede Umwandlung steht als ''as'' im Code. |
| **Ein Übersetzungsschritt** | ''lyxc'' ist Compiler und Linker zugleich — keine Objektdateien, keine Linker-Flags, keine Build-Datei nötig. |
| **Ohne Fremdabhängigkeiten** | Die Standardbibliothek ist vollständig in Lyx geschrieben oder ruft POSIX-Syscalls direkt. Externe Bibliotheken (OpenSSL, ALSA, mpg123, Qt5) sind optional und werden ausdrücklich eingebunden. |
| **Speicher von Hand** | Stack und Heap sind getrennt, ''new''/''dispose'' und ''alloc''/''free'' liegen beim Entwickler. Kein GC bedeutet vorhersagbare Laufzeit. |
| **Safety als Sprachmittel** | Range-Typen, ''limit(N)'' an Schleifen, ''@dal''-Stufen, ''@stack_limit'' und WCET-Nachweise gehören zur Sprache, nicht zu einer Bibliothek. |
| **Zero-Privilege-Modell** | ''@capabilities'' beschreibt, was ein Programm darf; daraus entsteht ein seccomp-Filter. Was nicht deklariert ist, geht nicht. |
| **Breite Standardbibliothek** | 421 Units — von Dateisystem und Netzwerk über Krypto, PDF und Bildformate bis Cloud-APIs, EDI, HL7 und PCI-Hardwarezugriff. |
----
===== Einstieg =====
| [[lyx_-_programmiersprache:erste-schritte|→ Erste Schritte]] | Installation, Hello World, erstes eigenes Programm, die Grundkonzepte in der richtigen Reihenfolge |
Wer schon programmieren kann und nur die Eigenheiten sucht: [[lyx_-_programmiersprache:sprache|Sprachreferenz]] beginnt mit „Lyx in zehn Sätzen".
----
===== Bereiche =====
^ Bereich ^ Umfang ^ Inhalt ^
| [[lyx_-_programmiersprache:sprache|Sprachreferenz]] | 25 Seiten | Syntax, Typsystem, Kontrollfluss, Module, OOP, Fehlerbehandlung, Speicher, Threads, FFI, Capabilities, ABI |
| [[lyx_-_programmiersprache:units|Standard Library]] | 421 Units | I/O, Netzwerk, Krypto, Datenbanken, PDF, SVG, Bild, Audio/Video, Hardware (GPIO, USB, Bluetooth, PCI), Cloud, EDI, HL7, KassenSichV, Blockchain … |
| [[lyx_-_programmiersprache:guides|Guides]] | 40 Guides | Aufgabenorientiert: Welche Unit? · Fehlersuche · Umstieg von Delphi · Netzwerk · Dateisystem & I/O · Datenbanken · Krypto · Medien · Cloud · Aerospace/DO-178C · RTOS |
| [[lyx_-_programmiersprache:tools|Tools & Compiler]] | 8 Seiten | Alle ''lyxc''-Flags, Compiler selbst bauen, ''lbfdump'', Paketmanager ''lpm'' samt Registry-Protokoll und Betrieb |
| [[lyx_-_programmiersprache:vega|Vega VCL]] | 153 Seiten | Oberflächen in Lyx: 54 Steuerelemente, 54 Unit-Referenzen, Backends (X11, Win32, Null), LFM-Formularformat, Themes, Werkzeuge — eigenes Repository ''lyx-vcl'' |
----
===== Schnellzugriff =====
**Ich will …**
* … anfangen → [[lyx_-_programmiersprache:erste-schritte|Erste Schritte]]
* … von Delphi umsteigen → [[lyx_-_programmiersprache:guides:delphi-umsteiger|Von Delphi nach Lyx]]
* … wissen, warum es abstürzt → [[lyx_-_programmiersprache:guides:fehlersuche|Fehlersuche]]
* … von C umsteigen → [[lyx_-_programmiersprache:guides:c-umsteiger|Von C nach Lyx]]
* … testen → [[lyx_-_programmiersprache:guides:testen|Testen]]
* … ein Programm ausliefern → [[lyx_-_programmiersprache:guides:ausliefern|Ausliefern]]
* … die richtige Unit finden → [[lyx_-_programmiersprache:guides:welche-unit|Welche Unit?]]
* … alle Units sehen → [[lyx_-_programmiersprache:units|Standard Library]]
* … wissen, was die Sprache anders macht → [[lyx_-_programmiersprache:sprache|Sprachreferenz]]
* … über das Netz sprechen (TCP, HTTP, TLS) → [[lyx_-_programmiersprache:guides:netzwerk|Netzwerk-Guide]]
* … Dateien, Verzeichnisse und I/O beherrschen → [[lyx_-_programmiersprache:guides:dateisystem-und-io|Dateisystem & I/O]]
* … ein PDF erzeugen oder lesen → [[lyx_-_programmiersprache:guides:pdf|PDF-Guide]]
* … Bilder laden und auswerten → [[lyx_-_programmiersprache:guides:image|Bildverarbeitung]]
* … Audio- oder Videodateien auswerten → [[lyx_-_programmiersprache:guides:audio-und-video|Audio & Video]]
* … mit Zeichenketten, Umlauten und Emoji arbeiten → [[lyx_-_programmiersprache:guides:text-und-unicode|Text & Unicode]]
* … Daten in einer Datenbank ablegen (SQLite, PostgreSQL, MySQL, Redis) → [[lyx_-_programmiersprache:guides:datenbanken|Datenbanken & SQL]]
* … Konfiguration lesen oder Daten serialisieren → [[lyx_-_programmiersprache:guides:daten-serialisierung|Daten & Serialisierung]]
* … Krypto verwenden → [[lyx_-_programmiersprache:guides:kryptographie|Kryptographie-Guide]]
* … Post-Quantum-Krypto → [[lyx_-_programmiersprache:units:crypto:pqc|std.crypto.pqc]]
* … Safety-kritischen Code schreiben → [[lyx_-_programmiersprache:guides:do-178c|DO-178C]]
* … ein Programm eindämmen (seccomp) → [[lyx_-_programmiersprache:sprache:capabilities|Capabilities]]
* … Hardware ansprechen (GPIO, USB, Bluetooth, PCI) → [[lyx_-_programmiersprache:guides:gpio|GPIO]] · [[lyx_-_programmiersprache:guides:usb|USB]] · [[lyx_-_programmiersprache:guides:bluetooth|Bluetooth]]
* … C-Bibliotheken einbinden → [[lyx_-_programmiersprache:sprache:ffi|FFI]]
* … für eine andere Plattform kompilieren → [[lyx_-_programmiersprache:guides:crosscompiling|Cross-Compilation]]
* … eine grafische Oberfläche bauen → [[lyx_-_programmiersprache:vega:guides:erste-anwendung|Vega: erste Anwendung]] · [[lyx_-_programmiersprache:vega:guides|alle Vega-Guides]] · [[lyx_-_programmiersprache:vega:controls|Steuerelemente]] · [[lyx_-_programmiersprache:vega:lfm|LFM-Formulare]]
* … AWS, DigitalOcean oder GCP ansprechen → [[lyx_-_programmiersprache:guides:cloud|Cloud-Guide]] · [[lyx_-_programmiersprache:units:cloud|std.cloud]]
* … Kassenbons TSE-signieren → [[lyx_-_programmiersprache:units:kassensichv|kassensichv]] · [[lyx_-_programmiersprache:units:kassensichv:manager|kassensichv.manager]]
* … den Compiler selbst bauen → [[lyx_-_programmiersprache:tools:lyx-compiler-selbst-kompilieren|Compiler kompilieren]]
----
===== Zum Umgang mit dieser Dokumentation =====
> **Die Warnkästen sind Messwerte.** Wo eine Seite ein fehlendes oder fehlerhaftes Verhalten beschreibt, wurde das gegen eine benannte Compiler-Fassung geprüft und trägt meist die Issue-Nummer. Steht dort „seit lyxc 1.0.17C", ist der Punkt behoben; ein Defekt ohne Versionsangabe gilt zum genannten Prüfstand noch. Beispiele sind übersetzt und ausgeführt, nicht abgeschrieben.
Verbindlich für die Sprache selbst ist die Grammatik ''ebnf.md'' im Compiler-Repository. Weicht eine Seite hier davon ab, gilt die Grammatik — und die Abweichung gehört gemeldet.
----
===== Struktur der Dokumentation =====
lyx_-_programmiersprache/
├── start.txt ← diese Seite
├── erste-schritte.txt ← Einstieg für neue Nutzer
├── sprache/ ← Sprachreferenz (25 Seiten)
├── units/ ← Standard Library (297 Referenzseiten)
├── guides/ ← Themenführer, aufgabenorientiert (30 + 4 DO-178C)
└── tools/ ← Compiler und Werkzeuge (6 Seiten)
Letzte Aktualisierung: 2026-08-30 · geprüfter Compilerstand: **lyxc 1.1.14A** — Schalter neu gemessen, Projektdatei ''*.lpf'' und ''std.theorem123'' aufgenommen
Codebeispiele geprüft: gegen **lyxc 1.2.5C** übersetzt (Prüflauf 2026-09-08 über die gesamte Doku: 574 Vollprogramme, 0 echte Fehler; zusätzlich 5159 Aufrufe gegen die ''pub fn''-Signaturen in ''aurum/std'' gehalten, 0 Abweichungen).