====== 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).