Stand: 2026-05-23 · Verzeichnis: std/
Die Standardbibliothek von Lyx umfasst 170 Units in 22 Kategorien. Sie folgt dem Prinzip Zero-External-Dependencies: Jede Unit ist entweder vollständig in Lyx implementiert oder wrappet direkt POSIX-Syscalls – ohne weitere Laufzeitbibliotheken als Pflichtabhängigkeit. Ausnahmen (OpenSSL, libssh2, mpg123, ALSA, Qt5) sind explizit dokumentiert und optional.
| Kategorie | Units | Typischer Einsatz |
|---|---|---|
| Grundsystem | 16 | Speicher, Fehlerbehandlung, I/O, Threads, Prozesse |
| Datenstrukturen | 4 | Listen, Vektoren, Hash-Tabellen, Sortieren |
| Strings & Kodierung | 10 | Suchen, Ersetzen, JSON, XML, YAML, Regex, URLs |
| Mathematik & Wissenschaft | 12 | Geometrie, Statistik, SIMD, GPS, Farben |
| KI & Maschinelles Lernen | 4 | Regression, Clustering, FastText, probabilistische Logik |
| Kryptografie | 2 | AES, SHA-1 |
| Terminal & UI | 3 | ANSI-Farben, Raw-Input, X11 |
| Qt5-Bindings | 5 | Desktop-GUI, OpenGL, EGL |
| LyxVision (TUI-Framework) | 20 | Terminal-UI, Widgets, Dialoge |
| Netzwerk & Protokolle | 23 | HTTP, DNS, SMTP, MQTT, BGP, QUIC, interne Schichten |
| Datenbanken | 3 | MySQL, Redis (voll + minimal) |
| Audio | 4 | WAV, MP3, ALSA-Wiedergabe |
| PDF-Bibliothek | 18 | PDF erstellen, lesen, annotieren, komprimieren |
| SVG-Bibliothek | 12 | Vektorgrafiken, Animationen, Filter, Parser |
| LFD-Binärformat | 2 | LFD-Dateien lesen und schreiben |
| Validierung | 25 | IBAN, EAN, ISIN, VIN, Personalausweis, Sozialversicherung |
| Android | 16 | NDK, JNI, OpenGL ES, APK-Bau, Sensoren |
Units können einzeln oder als ganzer Namespace importiert werden:
// Einzelne Unit
import std.io;
import std.math;
// Mehrere Units aus demselben Namespace
import std.net.http;
import std.net.dns;
import std.crypto.aes;
// Wildcard: alle Units eines Namespace (praktisch für Entwicklung)
import std.audio.*;
// LyxVision (kein std.-Präfix)
import lyxvision.app;
import lyxvision.button;
Explizite Einzel-Imports sind für Produktionscode empfohlen: Der Compiler kann ungenutzte Symbole präziser warnen und das Linker-Ergebnis ist kleiner.
Units können mit dem Lyx-Compiler vorkompiliert werden. Das Ergebnis ist eine *.lyu-Datei (Lyx Unit, binär), die bereits in die interne Zwischendarstellung übersetzt wurde:
lyxc --compile-unit std/math/math.lyx
# erzeugt: std/math/math.lyu
Beim Import sucht der Compiler automatisch nach der vorkompilierten Version:
*.lyu vorhanden → wird bevorzugt importiert (kein erneutes Parsen/Compilieren der Quelle)*.lyx vorhanden → Quellcode wird beim Build direkt mitcompiliert
Die Standardbibliothek wird in der Regel mit fertigen *.lyu-Dateien ausgeliefert. Eigene Units bei häufiger Wiederverwendung ebenfalls vorkompilieren:
# Alle Units eines Projekts vorkompilieren
lyxc --compile-unit src/utils.lyx src/config.lyx src/protocol.lyx
Kern-Units, die von fast allen anderen Units als Basis verwendet werden. In sicherheitskritischem Code (@flight_crit, @dal(A/B)) sind std.alloc und std.result die primären Bausteine für kontrollierte Ressourcen- und Fehlerbehandlung.
| Unit | Beschreibung |
|---|---|
| std.alloc | Heap-Speicherverwaltung: malloc, calloc, realloc, free mit 8-Byte-Alignment; malloc_safe gibt ResultInt64 zurück; malloc_orpanic terminiert bei OOM |
| std.system | Kern-Typen: Handle und FD als benannte int64-Aliases für OS-Handles und Dateideskriptoren |
| std.error | POSIX-errno-Konstanten (1–133), GetErrorMessage, CheckSyscallError, GetSyscallErrorCode |
| std.result | ResultInt64, ResultBool, OptionInt64 u. a.; Unwrap, UnwrapOr, Expect, AndThen für verkettete Fehlerbehandlung ohne Exceptions |
import std.alloc;
import std.result;
fn AllocBuffer(size: int64): ResultInt64 {
var ptr := malloc_safe(size);
if (ResultInt64IsErr(ptr)) {
return ErrInt64(-1);
}
return ptr;
}
→ Details: Fehlerbehandlung – Result, Option, SafeArithmetic
Sieben Units für Ein-/Ausgabe, Betriebssystem-Interaktion und nebenläufige Programmierung. std.io ist die am häufigsten importierte Unit in Lyx-Programmen.
| Unit | Beschreibung |
|---|---|
| std.io | Ausgabefunktionen: PrintStr, PrintInt, PrintFloat, PrintBool; Printf-Varianten für 1–4 Argumente; FloatToStr, BoolToStr |
| std.fs | Datei-I/O über POSIX-Syscalls: FsOpen, FsRead, FsWrite, FsClose, FsDelete, FsExists, Pfad-Operationen |
| std.os | Betriebssystem-Schnittstelle: Sleep, GetPID, GetEnv, GetCWD, Exec, MemInfo, Pfadprüfungen |
| std.env | Kommandozeilenargumente aus argv parsen (–key=value-Format), GetArg, HasFlag |
| std.process | Prozessverwaltung: Fork, Exec, Spawn, Wait, Kill, Shell (Befehl als String ausführen) |
| std.thread | POSIX-Threads: ThreadCreate, ThreadJoin; Mutex, Bedingungsvariablen, Thread-Local Storage, Shared Memory, Atomic-Operationen, CAS — → Detailseite |
| std.log | Strukturiertes Logging: 5 Level (DEBUG, INFO, WARN, ERROR, FATAL), Callback-Handler, Sektionsmarkierungen, Zeitstempel |
import std.io;
import std.fs;
import std.log;
fn main(): int64 {
// Ausgabe
PrintStr("Starte Programm\n");
PrintInt(42);
// Datei lesen
var fd := FsOpen("config.ini", FS_READ);
var buf: [1024]uint8;
var n := FsRead(fd, ^buf[0], 1024);
FsClose(fd);
// Logging
log_info("Konfiguration geladen");
return 0;
}
Zwei komplementäre Units: std.time für Zeitwerte und hochauflösende Messungen, std.datetime für menschenlesbare Formatierung und Parsing.
| Unit | Beschreibung |
|---|---|
| std.time | Datum/Zeit-Typen, Unix-Zeitstempel (Sekunden und Mikrosekunden), hochauflösende Timer (TimeNowMicros), Zeitzonen-Offset |
| std.datetime | Formatierung (ISO 8601, RFC 2822, relative Zeitangaben) und Parsing von Datums-/Zeitstrings; FormatDate, ParseDate |
import std.time;
import std.datetime;
import std.io;
fn Benchmark() {
var start := TimeNowMicros();
HeavyComputation();
var elapsed := TimeNowMicros() - start;
PrintStr("Dauer: ");
PrintInt(elapsed);
PrintStr(" µs\n");
}
fn LogTimestamp() {
var ts := TimeNow();
PrintStr(FormatDate(ts, "ISO8601")); // "2026-05-22T14:30:00Z"
}
Fünf Units für alle Aspekte der Textverarbeitung – von einfachen String-Operationen über reguläre Ausdrücke bis zu URL-Parsing und Base64-Kodierung.
| Unit | Beschreibung |
|---|---|
| std.string | String-Operationen: StrLen, StrCopy, StrConcat, StrFind, StrReplace, StrTrim, StrSplit, ToUpper, ToLower; StringBuilder für effizientes Zusammensetzen |
| std.regex | Reguläre Ausdrücke: RegexMatch, RegexSearch, RegexReplace, Capture-Gruppen, Flags (case-insensitive, multiline) |
| std.html | HTML-Escape/Unescape, Tag-Erkennung, StripTags, Validierung der Tag-Balance |
| std.url | URL-Parsing nach RFC 3986: Schema, Host, Pfad, Query-Parameter; Prozent-Kodierung, UrlBuild |
| std.base64 | Base64-Kodierung/Dekodierung (Standard und URL-Safe), Basic-Auth-Header, Data-URLs |
import std.string;
import std.regex;
fn ExtractVersion(input: pchar): pchar {
// Suche nach "v1.2.3"-Muster
var match := RegexSearch(input, "v([0-9]+\\.[0-9]+\\.[0-9]+)");
if (match.found) {
return match.group[1]; // Capture-Gruppe 1
}
return "unbekannt";
}
fn Normalize(s: pchar): pchar {
return s |> StrTrim() |> ToLower();
}
Vier Units zum Lesen und Schreiben strukturierter Dateiformat – JSON und YAML für Web/Config, XML für Legacy-Systeme und Protokolle, INI für einfache Konfigurationsdateien.
| Unit | Beschreibung |
|---|---|
| std.json | JSON-Parser und -Serialisierer: JsonParse, JsonGet, JsonSet, JsonToStr; alle JSON-Typen (Objekt, Array, String, Zahl, Bool, null) |
| std.xml | XML-Parser und -Generator: Elemente, Attribute, Namespace, Pretty-Print, Basis-Validierung |
| std.yaml | YAML-Parser: Skalare, Sequenzen, Maps; pfadbasierter Zugriff (YamlGetPath), Datei-Load/Save |
| std.ini | INI-Konfigurationsdateien: Sektionen, typisierte Getter (IniGetStr, IniGetInt, IniGetBool), Datei-Load/Save |
import std.ini;
import std.io;
fn LoadConfig(): int64 {
var cfg := IniLoad("config.ini");
var port := IniGetInt(cfg, "server", "port", 8080);
var host := IniGetStr(cfg, "server", "host", "localhost");
var debug := IniGetBool(cfg, "app", "debug", false);
PrintStr(host);
PrintInt(port);
return 0;
}
Acht Units für Kernalgorithmen und Low-Level-Datenoperationen. Alle Units in dieser Kategorie sind vollständig in Lyx implementiert – keine externen Abhängigkeiten.
| Unit | Beschreibung |
|---|---|
| std.buffer | Byte-Buffer-Operationen: BufCopy, BufFill, BufFind, BufReverse, Hex-Kodierung/Dekodierung |
| std.list | Datenstrukturen für int64 und Vec2: dynamische Liste, StaticList (Stack-alloziert), Stack, Queue, RingBuffer |
| std.hash | Hash-Funktionen: FNV1a, MD5, SHA-256, SHA-3 (256/512), BLAKE3; Passwort-Hashing: bcrypt, Argon2, scrypt |
| std.sort | QuickSort für int64-Arrays (Median-of-Three-Pivot, Insertion-Sort-Fallback bei n ≤ 16) |
| std.stats | Array-Statistik: Sum, Min, Max, Avg, Median, Variance, StdDev |
| std.stats_batch | Batch-Statistik für 4 oder 8 direkt übergebene Werte (ohne Array-Allokation, SIMD-freundlich) |
| std.pack | Binäres Serialisieren/Deserialisieren: VarInt (LEB128), Int8–64, Float, String, Arrays; Little/Big-Endian |
| std.zlib | DEFLATE/zlib-Kompression (RFC 1950/1951): Compress, Decompress, LZ77, Adler-32, CRC32 |
import std.list;
import std.sort;
import std.stats;
fn AnalyzeSamples() {
var buf: [64]int64;
// … Werte befüllen …
QuickSort(buf, 64);
PrintFloat(Avg(buf, 64));
PrintFloat(Median(buf, 64));
PrintFloat(StdDev(buf, 64));
}
Sieben Units von 2D-Vektormathematik über GPS-Koordinaten bis zum direkten X11-Fensterzugriff.
| Unit | Beschreibung |
|---|---|
| std.vector | Vec2-Vektormathematik: Add, Sub, Scale, Dot, Cross, Normalize, Rotate, Lerp, Length |
| std.vector_batch | Batch-Operationen auf Vec2-Arrays: Summe, Skalierung, Normalisierung (SIMD-optimiert) |
| std.rect | Rechteck-Geometrie: Contains, Inflate, Union, Intersect, Clamp |
| std.circle | Kreis-Geometrie, 1D/2D-Bereichstypen (Range, Range2D), Überlappungsprüfung |
| std.color | RGBA-Farben (uint32-gepackt): Blend, ToHSL, FromHSL, Brighten, Saturate, Lerp |
| std.geo | GPS-Koordinaten (WGS-84): Haversine-Distanz, Bearing, Bounding-Boxes, Dezimal/DMS-Konvertierung |
| std.x11 | X11-Fenster-System (direkte Xcb/Xlib-Syscalls): Display öffnen, Fenster erstellen, Zeichnen, Tastatur-/Mausereignisse |
import std.vector;
import std.geo;
import std.io;
fn PathLength(points: [16]Vec2, count: int64): f64 {
var total: f64 := 0.0;
for i := 1 to count - 1 do {
var d := Sub(points[i], points[i - 1]);
total := total + Length(d);
}
return total;
}
fn DistanceKm(lat1: f64, lon1: f64, lat2: f64, lon2: f64): f64 {
return GeoHaversine(lat1, lon1, lat2, lon2); // in Metern / 1000
}
Zwei Units für die direkte Terminal-Steuerung: std.crt für Ausgabe mit ANSI-Farben und Cursor-Kontrolle, std.crt_raw für zeichenweises non-blocking Lesen im Raw-Modus.
| Unit | Beschreibung |
|---|---|
| std.crt | Terminal-Ausgabe: ANSI-Farben (16 Vordergrund-/Hintergrundfarben), Cursor-Positionierung, Bildschirm löschen, CrtGoto, CrtSetColor |
| std.crt_raw | Roh-Terminal-I/O: Raw-Modus via tcgetattr/tcsetattr, zeichenweises non-blocking Lesen, Escape-Sequenz-Erkennung |
import std.crt;
fn PrintHeader(title: pchar) {
CrtSetColor(CRT_GREEN, CRT_BLACK);
CrtGoto(1, 1);
PrintStr(title);
CrtSetColor(CRT_DEFAULT, CRT_DEFAULT);
}
→ Für vollständige TUI-Anwendungen: LyxVision-Framework
Vier Units für Audio-Verarbeitung und -Wiedergabe. std.audio.alsa und std.audio.mpg123 setzen die entsprechenden Systembibliotheken voraus.
| Unit | Abhängigkeit | Beschreibung |
|---|---|---|
| std.audio | keine | Audio-Basis: AudioInfo-Typ, WAV-Parser, WAV-Schreiben, PCM-Format-Konvertierung, MP3-Header-Erkennung |
| std.audio.alsa | libasound | ALSA-Soundkarte: direkte PCM-Wiedergabe und Aufnahme über Kernel-Interface, Buffer-Konfiguration |
| std.audio.mpg123 | libmpg123 | MP3-Dekodierung via mpg123-Bibliothek, Stream-basiert, automatisches Resampling |
| std.audio.playback | aplay/ALSA | Vereinfachte WAV-Wiedergabe: PlayWav(filename) ohne manuelle ALSA-Konfiguration |
import std.audio.playback;
fn PlayNotification() {
PlayWav("assets/notify.wav");
}
Zwei Units für kryptografische Grundoperationen. Für TLS/HTTPS-Verbindungen wird OpenSSL via std.net.tls genutzt.
| Unit | Beschreibung |
|---|---|
| std.crypto.aes | AES-128/256 im CBC-Modus: AesEncrypt, AesDecrypt, PKCS#7-Padding, zufälliger IV-Generator |
| std.crypto.sha1 | SHA-1 (160-Bit-Hash): Sha1Hash, Sha1HexStr; Legacy-Einsatz (MySQL Native Password, Git-Objekt-IDs) |
→ Stärkere Hash-Funktionen (SHA-256, BLAKE3) und Passwort-Hashing (Argon2): std.hash
Zwei Units für direkte Datenbankverbindungen ohne ORM-Schicht. Beide implementieren das jeweilige Protokoll nativ in Lyx.
| Unit | Port | Beschreibung |
|---|---|---|
| std.db.mysql | 3306 | MySQL-Client über Protokoll 41 (TCP): Verbindungsaufbau, Abfragen, Prepared Statements, Ergebnis-Iteration |
| std.db.redis | 6379 | Redis-Client via RESP-Protokoll (voll): Strings, Lists, Hashes, Sets, Sorted Sets, Pub/Sub, Expire, Pipelining |
| std.db.redis_simple | 6379 | Redis-Client (minimal): nur GET/SET/DEL/EXPIRE — für eingeschränkte Umgebungen ohne std.string-Abhängigkeit |
import std.db.mysql;
fn GetUserCount(): int64 {
var conn := MysqlConnect("localhost", "app", "secret", "mydb");
var result := MysqlQuery(conn, "SELECT COUNT(*) FROM users");
var count := MysqlGetInt(result, 0, 0);
MysqlClose(conn);
return count;
}
Drei Units für mathematische Grundfunktionen. std.math.constants ergänzt typisierte Konstanten. std.math_batch ist speziell für SIMD-optimierte Mehrfach-Operationen.
| Unit | Beschreibung |
|---|---|
| std.math | Ganzzahl- und Gleitkomma-Mathematik: Abs, Min, Max, Sqrt, Sin, Cos, Tan, Lerp, Map, Clamp, Pow, Atan2, Floor, Ceil, Round |
| std.math_batch | Batch-Min/Max/Clamp für 4 oder 8 Argumente gleichzeitig – ohne Array-Overhead, SIMD-freundlich |
| std.math.constants | Typisierte mathematische Konstanten: π, e, √2, φ (Goldener Schnitt), Tau; Grad-/Radiant-Konvertierung |
import std.math;
import std.math.constants;
fn CircleArea(r: f64): f64 {
return PI * r * r;
}
fn NormalizeAngle(deg: f64): f64 {
return Clamp(deg, 0.0, 360.0) |> DegToRad();
}
21 Units in vier Gruppen: Transportschicht (Sockets, TLS), Anwendungsprotokolle, Verzeichnisdienste und Netzwerk-Management. Die Units bauen aufeinander auf: HTTP nutzt Socket, HTTPS nutzt TLS.
| Unit | Gruppe | Beschreibung |
|---|---|---|
| std.net.socket | Transport | TCP, UDP, Unix, Raw-Sockets, ICMP, ARP; Poll, Select für non-blocking I/O |
| std.net.types | Transport | Socket-Adresstypen (SockAddr4, SockAddr6), IP-Hilfsfunktionen (IpFromStr, IpToStr) |
| std.net.tls | Transport | TLS/SSL-Verbindungen (via OpenSSL): Handshake, Zertifikat-Prüfung, Lesen/Schreiben |
| std.net.syscalls | Transport | Portable POSIX-Socket-Syscall-Wrapper (unterste Schicht; selten direkt verwendet) |
| std.net.dns | Protokolle | DNS-Auflösung: A, AAAA, MX, NS, TXT, SOA, SRV, CAA, DNSKEY, DS, PTR |
| std.net.http | Protokolle | HTTP/1.1-Client: GET, POST, PUT, DELETE; Header, Chunked-Transfer, Redirect-Follow |
| std.net.https | Protokolle | HTTPS-Client (baut auf std.net.tls auf); identische API wie std.net.http |
| std.net.smtp | Protokolle | SMTP-Mailversand (Ports 25/587/465): vollständiger Dialog, STARTTLS, AUTH LOGIN |
| std.net.imap | Protokolle | IMAP4rev1-Postfachzugriff: SELECT, LIST, FETCH, SEARCH, tagged Responses |
| std.net.ssh | Protokolle | SSH-Verbindung: Passwort- und Key-Auth, Remote-Befehlsausführung, Output-Capture |
| std.net.mqtt | Protokolle | MQTT 3.1.1: Connect, Publish, Subscribe, QoS 0/1/2 – für IoT-Geräte |
| std.net.ntp | Protokolle | NTP v3: Zeitabfrage via UDP Port 123, Offset-Berechnung |
| std.net.quic | Protokolle | QUIC (RFC 9000): UDP-basiert, TLS 1.3 integriert, Grundlage für HTTP/3-Transport |
| std.net.sip | Protokolle | SIP (RFC 3261): REGISTER, INVITE, OPTIONS; 1xx–6xx-Statusklassen (VoIP) |
| std.net.telnet | Protokolle | Telnet (RFC 854): Option-Negotiation, Legacy-Gerätekommunikation (Switches, PLCs) |
| std.net.whois | Protokolle | WHOIS (RFC 3912): Auto-Routing zu Registry-Servern (.com/.de/.eu/IP) |
| std.net.ldap | Verzeichnis | LDAP (RFC 4511): Bind, Search, Modify, Add, Delete, SASL-Auth (Active Directory / OpenLDAP) |
| std.net.bgp | Routing | BGP-4 (RFC 4271): FSM IDLE→ESTABLISHED, AS-Routing, UPDATE-Messages, Path-Attribute |
| std.net.snmp | Management | SNMPv1/v2c: OID-basierter Geräteparameter-Zugriff (GET/SET/WALK) |
| std.net.asn1 | Management | ASN.1/BER-Encoding für SNMP-PDUs (interne Hilfsbibliothek, selten direkt verwendet) |
| std.net.mongo | Datenbank | MongoDB Wire Protocol: BSON-Dokumente, Insert/Find/Update/Delete, SCRAM-SHA-1-Auth |
std.net.internal.syscalls_linux | Intern | Linux-spezifische Socket-Syscall-Wrapper — wird automatisch von std.net.syscalls gezogen |
std.net.internal.types | Intern | Interne Networking-Typ-Aliases — nicht direkt importieren |
import std.net.https;
import std.json;
fn FetchWeather(city: pchar): f64 {
var resp := HttpsGet("api.example.com", "/weather?city=" + city);
var data := JsonParse(resp.body);
return JsonGetFloat(data, "temperature");
}
25 Units für Prüfziffern und internationale Identifikationsnummern. Alle Units folgen dem gleichen Muster: Normalisierung → Validierung → Fehlercode. Keine externen Abhängigkeiten — vollständig in Lyx implementiert.
→ Details: std.validate Übersicht
| Unit | Beschreibung |
|---|---|
| std.validate.ean | EAN-8/13/14, UPC-A Barcode-Validierung mit Prüfziffer-Berechnung und Länder-Präfix-Erkennung |
| std.validate.iban | IBAN-Validierung (Mod-97-Algorithmus, 30+ Länder), Bankleitzahl- und Kontonummer-Extraktion |
| std.validate.isbn | ISBN-10/13-Validierung, bidirektionale Konvertierung (10↔13), ISSN-Support |
| std.validate.luhn | Luhn-Algorithmus: Kreditkarten (Typ-Erkennung: Visa/MC/Amex/…), IMEI, deutsche Steuer-ID |
| std.validate.vat | EU-Umsatzsteuer-ID-Validierung für alle 26 EU-Mitgliedstaaten (Muster + Prüfziffer) |
| Unit | Beschreibung |
|---|---|
| std.validate.de_personal | MRZ, Steuer-ID, Rentenversicherungsnummer (RVNR), eGK-Versichertennummer |
| std.validate.de_numbers | PZN (Arzneimittel), WKN (Wertpapiere), AGS (Gemeindeschlüssel), Zählpunktbezeichnung |
| Unit | Beschreibung |
|---|---|
| std.validate.isin | ISIN (ISO 6166) — weltweite Wertpapierkennung, Luhn auf erweiterter Ziffernkette |
| std.validate.lei | LEI (ISO 17442) — Legal Entity Identifier, Mod-97 wie IBAN |
| std.validate.bic | BIC/SWIFT-Code (ISO 9362) — strukturelle Bankidentifikation |
| std.validate.us_cusip | CUSIP — US/kanadische Wertpapierkennung, gewichtetes Mod-10 |
| Unit | Beschreibung |
|---|---|
| std.validate.vin | VIN/FIN (FMVSS 565, ISO 3779) — Fahrzeugidentifikationsnummer, Mod-11 |
| std.validate.iso6346 | ISO 6346 — Schiffscontainer-Nummer, Zweierpotenzen Mod-11 |
| std.validate.uic | UIC-Fahrzeugnummer — Eisenbahnfahrzeuge, Luhn Mod-10 |
| std.validate.iata | IATA-Ticketnummer und Air Waybill — Mod-7 |
| std.validate.mmsi | MMSI — Seefunk-Identifikation, ITU MID strukturell |
| Unit | Beschreibung |
|---|---|
| std.validate.issn | ISSN (ISO 3297) — Zeitschriften, Mod-11 |
| std.validate.ismn | ISMN (ISO 10957) — Notendrucke, EAN-13-Profil Präfix 9790 |
| std.validate.isrc | ISRC (ISO 3901) — Tonaufnahmen, strukturell CC-XXX-YY-NNNNN |
| std.validate.orcid | ORCID iD — Wissenschaftler-ID, ISO/IEC 7064 MOD 11-2 |
| std.validate.cas | CAS-Nummer — chemische Verbindungen, rechtsseitig gewichtetes Mod-10 |
| Unit | Beschreibung |
|---|---|
| std.validate.nl_bsn | NL BSN (Burgerservicenummer) — 9-Proef Mod-11 |
| std.validate.ch_ahv | CH AHV-Nummer — EAN-13 Mod-10, Präfix 756 |
| std.validate.us_ssn | US SSN (Social Security Number) — strukturell, bekannte Muster ausgeschlossen |
| std.validate.ewc | EWC/AVV-Abfallschlüssel — EU-Abfallkatalog, strukturell |
import std.validate.iban;
import std.validate.vin;
import std.io;
fn ValidatePayment(iban_str: pchar, card: pchar): bool {
var norm: pchar := IBANNormalize(iban_str);
if (IBANValidate(norm) != IBAN_OK) {
PrintStr("Ungültige IBAN");
return false;
}
if (LuhnValidate(card) != LUHN_OK) {
PrintStr("Ungültige Kartennummer");
return false;
}
return true;
}
Drei Units für ML-Algorithmen, Worteinbettungen und probabilistische Logik. Alle vollständig in Lyx implementiert – kein Python, kein TensorFlow.
| Unit | Beschreibung |
|---|---|
| std.ml | ML-Kern: lineare Regression, logistische Regression, KNN, K-Means, Naive Bayes; Normalisierung (MinMax, Z-Score); Metriken (MSE, MAE, R², Accuracy) |
| std.ml_full | ML-Vollversion: alle std.ml-Algorithmen plus Entscheidungsbäume (Gini/Entropy/Chi²), Random Forest, Gradient Boosting, SVM (linear) |
| std.fasttext | FastText-Worteinbettungen: Skip-gram/CBOW-Training (SGD), FindNearest, Analogien, Klassifikation, Save/Load |
| std.qbool | Probabilistischer Boolean (qbool): Wahrscheinlichkeits-basierte Logik-Operationen, fuzzy Entscheidungen mit Observe(), QBoolAnd, QBoolOr |
→ Details mit vollständigen Beispielen: ML – Detaildokumentation
import std.ml;
fn PredictHousePrice(sqm: f64, rooms: f64): f64 {
var X: [3][2]f64;
var y: [3]f64;
// Trainingsdaten befüllen …
var model := LinearRegression(X, y, 3);
var features: [2]f64;
features[0] := sqm;
features[1] := rooms;
return Predict(model, features);
}
Fünf allgemeine Hilfs-Units für häufig benötigte Querschnittsaufgaben.
| Unit | Beschreibung |
|---|---|
| std.conv | Zahlensystemkonvertierung: Hex, Binär, Oktal; Bitmanipulation (SetBit, ClearBit, TestBit); Endian-Umwandlung (SwapU16, SwapU32, SwapU64) |
| std.country | ISO 3166-1-Länderdatenbank (249 Länder): Code ↔ Name, Währung, TLD, Telefon-Präfix, Region/Subregion |
| std.uuid | UUID-Generierung v4 (zufällig, RFC 4122) und v7 (zeitbasiert, monoton sortierbar, RFC 9562); UuidToStr, UuidFromStr |
| std.systeminfo | Systeminformationen aus /proc: CPU-Kerne, RAM-Gesamt/Frei, Load-Average (1/5/15 min), Uptime, Hostname |
| std.units | Physikalische Einheitentypen (Meter, Kilogramm, Sekunde, …) und Konvertierungen (km/h ↔ m/s, °C ↔ °F, …) |
import std.uuid;
import std.conv;
import std.io;
fn GenerateToken(): pchar {
return UuidToStr(UuidV4()); // "550e8400-e29b-41d4-a716-446655440000"
}
fn PrintBitmask(val: int64) {
PrintStr(IntToBin(val)); // "00101010"
PrintStr(IntToHex(val)); // "2A"
}
LyxVision ist das integrierte Text-UI-Framework für terminalbasierte Anwendungen. Es ist nach dem Vorbild der klassischen Turbo Vision-Architektur aufgebaut: Ereignis-gesteuerte Widgets, Gruppen-/View-Hierarchie, modaler Dialog-Stack.
import lyxvision.app;
import lyxvision.tapplication;
import lyxvision.button;
import lyxvision.dialog;
fn main(): int64 {
var app := TApplicationCreate("Meine App");
var win := TWindowCreate(10, 5, 60, 20, "Hauptfenster");
var btn := TButtonCreate(5, 10, "OK", CMD_OK);
TGroupInsert(win, btn);
TApplicationRun(app);
TApplicationDestroy(app);
return 0;
}
| Unit | Gruppe | Beschreibung |
|---|---|---|
| lyxvision.main | Kern | Framework-Einstiegspunkt, Terminal-Helper-Funktionen |
| lyxvision.app | Kern | TProgram – Anwendungsschleife, Ereignis-Dispatch |
| lyxvision.tapplication | Kern | TApplication, TDesktop, Menü- und Statusleiste |
| lyxvision.drivers | Kern | Low-Level Terminal-Treiber (ANSI, xterm, Linux-Konsole) |
| lyxvision.types | Typen | TEvent, TPoint, TRect, Ereigniskonstanten (Maus, Tastatur, Befehl) |
| lyxvision.consts | Typen | Farben (16 Paare), View-Flags, State-Flags, Draw-Flags, Cursor-Stile |
| lyxvision.view | Views | TView – Basis-Darstellungsobjekt; Draw, HandleEvent, SetState |
| lyxvision.group | Views | TGroup – Container für Views; Insert, Delete, Broadcast |
| lyxvision.window | Views | TWindow – Rahmenfenster mit Titelleiste, Zoom, Resize |
| lyxvision.dialog | Views | TDialog – modaler Dialog; ExecView, Ergebnis-Handling |
| lyxvision.frame | Views | TFrame – Rahmenzeichnung (einfach/doppelt), Schatten |
| lyxvision.button | Widgets | TButton – Schaltfläche mit Befehl, Tastaturkürzel, Focus |
| lyxvision.cluster | Widgets | TCluster – Radio-Button- und Checkbox-Gruppe |
| lyxvision.inputline | Widgets | TInputLine – Texteingabefeld mit Validierungs-Callback |
| lyxvision.listview | Widgets | TListView – scrollbare Listenansicht, selektierbare Einträge |
| lyxvision.menu | Widgets | TMenu, TMenuBar, TSubMenu – vollständiges Menüsystem |
| lyxvision.statictext | Widgets | TStaticText – statische Textanzeige, mehrzeilig |
| lyxvision.staticline | Widgets | TStaticLine – horizontale/vertikale Trennlinie |
| lyxvision.terminal | Widgets | TTerminal – eingebetteter ANSI-Terminal-Emulator |
| lyxvision.textdevice | Widgets | TTextDevice – scrollbarer Textpuffer für Log-Ausgaben |
Fünf Units für Desktop-GUI-Anwendungen mit Qt5. Die Bindings wrappen Qt5-C++-Funktionen über FFI und ermöglichen nativen OpenGL-Zugriff über EGL und GLX. Voraussetzung: Qt5 muss auf dem Zielsystem installiert sein.
| Unit | Beschreibung |
|---|---|
| std.qt5_app | Qt5-Anwendungslebenszyklus: QApplication initialisieren, Event-Loop starten und beenden |
| std.qt5_core | Qt5 Core-Modul: QString, QVariant, Signale/Slots-Infrastruktur |
| std.qt5_egl | Qt5 EGL-Surface-Bindings für Embedded-Linux und Wayland-Targets |
| std.qt5_gl | Qt5 OpenGL-Bindings: QOpenGLContext, QOpenGLFunctions, Shader |
| std.qt5_glx | Qt5 GLX-Bindings für X11-OpenGL (klassisches Desktop-Linux) |
import std.qt5_app;
import std.qt5_core;
fn main(): int64 {
var app: QApp := QAppCreate();
QAppSetTitle(app, "Lyx-Qt5-Fenster");
QAppRun(app);
QAppDestroy(app);
return 0;
}
18 Units für vollständige PDF-Erstellung und -Analyse direkt aus Lyx — ohne externe Bibliotheken. Erzeugt Standard-konforme PDFs (PDF 1.7) mit Text, Grafiken, Bildern, Annotationen, Lesezeichen und Formularfeldern. Interne Kompression über std.pdf.compress (zlib/DEFLATE).
| Unit | Beschreibung |
|---|---|
| std.pdf | Öffentliche PDF-API: PdfNew, PdfSave, PdfAddPage — Einstiegspunkt für alle PDF-Operationen |
| std.pdf.objects | Primitive für PDF-Buffer: Byte-Schreiboperationen, Objekt-Nummerierung |
| std.pdf.builder | Dokument-Builder: Cross-Reference-Tabelle, Trailer, Objekt-Flattening |
| std.pdf.page | Seitenverwaltung: PdfAddPage, PdfSetLandscape, Seitengrößen (A4, Letter …) |
| std.pdf.fonts | Standard-14-Schriftarten-Konstanten und AFM-Metrik-Tabellen |
| std.pdf.graphics | Content-Stream: Text ausgeben, Pfade zeichnen, Farben setzen, Transformationen |
| std.pdf.compress | zlib/DEFLATE-Kompression für PDF-Streams (intern genutzt) |
| std.pdf.image | Rasterbilder: PdfAddImage (JPEG/RGB), PdfDrawImage mit Positionierung |
| std.pdf.meta | Dokument-Metadaten: Titel, Autor, Thema, Schlüsselwörter, Erstellungsdatum |
| std.pdf.annot | Annotationen: URI-Links, GoTo-Links, Text-Notizen |
| std.pdf.reader | PDF-Lesen: PdfOpen, Seitenanzahl, Metadaten-Extraktion |
| std.pdf.outline | Outlines (Lesezeichen): PdfOutlineAdd, verschachtelte Hierarchie |
| std.pdf.pagelabels | Seitenbeschriftung: römisch, dezimal, alphabetisch |
| std.pdf.transition | Seitenübergänge: Dissolve, Wipe, Push, Split (Präsentation) |
| std.pdf.viewprefs | Viewer-Einstellungen: Toolbar ausblenden, Vollbild, Öffnungs-Action |
| std.pdf.namedest | Benannte Sprungziele für interne Links und Outline-Verweise |
| std.pdf.attach | Eingebettete Dateianhänge: PdfAttachFile |
| std.pdf.layer | Optional-Content-Groups (Layer/OCG): sichtbare/ausblendbare Ebenen |
import std.pdf;
import std.pdf.graphics;
import std.pdf.meta;
fn CreateReport(): void {
var doc: Pdf := PdfNew();
PdfSetTitle(doc, "Lyx Report 2026");
PdfSetAuthor(doc, "Andreas Röne");
var page: PdfPage := PdfAddPage(doc);
PdfSetFont(page, "Helvetica", 14);
PdfDrawText(page, 72.0, 720.0, "Lyx PDF-Bibliothek — Beispiel");
PdfSave(doc, "report.pdf");
}
Zwei Units für das Lyx File Data-Format (LFD) — ein strukturiertes Binärformat für effizienten Datenaustausch zwischen Lyx-Programmen.
| Unit | Beschreibung |
|---|---|
| std.lfd_parser | LFD-Binärdateien lesen: LfdOpen, LfdReadRecord, Feld-Iteration |
| std.lfd_factory | LFD-Binärdateien schreiben: LfdCreate, LfdWriteRecord, LfdClose |
12 Units für programmatische Vektorgrafik-Erzeugung: Grundformen, Pfade, Text, Farbverläufe, Filter, Animationen und Einlesen vorhandener SVG-Dateien. Erzeugt standard-konforme SVG 1.1-Dateien ohne externe Abhängigkeiten.
→ Details und Architektur: std.svg Übersicht
import std.svg;
var svg: Svg := SvgNew(800.0, 600.0);
SvgCircle(svg, 400.0, 300.0, 100.0, "fill:royalblue;stroke:navy;stroke-width:2");
SvgTextAt(svg, 400.0, 300.0, "Hallo SVG", "font-size:24;text-anchor:middle;fill:white");
SvgSave(svg, "ausgabe.svg");
SvgFree(svg);
| Unit | Gruppe | Beschreibung |
|---|---|---|
| std.svg | API | Öffentliche Einstiegs-API: SvgNew, SvgSave, SvgFree, SvgToString |
| std.svg.builder | Infrastruktur | Dokumentlebenszyklus, Gruppen (<g>), Viewport, viewBox |
| std.svg.xml | Infrastruktur | Interner XML-Schreiber: Puffer, Zahlenformatierung, Escaping |
| std.svg.style | Querschnitt | Fill, Stroke, Opacity, Transforms, Dash-Muster, Farb-Utilities |
| std.svg.elements | Inhalt | Grundformen: rect, circle, ellipse, line, polyline, polygon |
| std.svg.path | Inhalt | Pfad-Builder: moveTo, lineTo, Bezier-Kurven, Bögen, close |
| std.svg.text | Inhalt | Text: SvgTextAt, tspan, Text auf Pfad, Rotation, Font-Styling |
| std.svg.defs | Inhalt | Definitionen: Farbverläufe, Muster, Symbole, Marker, Clips |
| std.svg.filter | Inhalt | Filter: Gaussian Blur, Schlagschatten, Graustufen, feComposite |
| std.svg.image | Inhalt | Bilder: JPEG/PNG einbetten, Base64-URI, RGB→PNG-Konvertierung |
| std.svg.anim | Inhalt | SMIL-Animation: animate, animateTransform, Keyframes, animateMotion |
| std.svg.parser | Lesen | SVG-Reader: SvgOpen, DOM-Traversierung, SvgAttrStr, SvgFindById |
16 Units für native Android-Entwicklung über das NDK (Native Development Kit). Ermöglichen vollständige Android-Apps in Lyx ohne Java-Schicht: JNI-Typen, OpenGL ES 2.0, Sensoren, Asset-Manager, APK-Bau und Logcat-Logging.
| Unit | Beschreibung |
|---|---|
| std.android.apk_builder | APK-Builder: PKZIP-Archive für Android-Pakete zusammenstellen |
| std.android.app_glue | NativeActivity-Worker-Thread-Glue-Schicht (android_app-Struktur) |
| std.android.asset | NDK-Asset-Manager: Typen und Konstanten für AAssetManager |
| std.android.gles2 | OpenGL ES 2.0 Core-Bindings: Shader, Texturen, Framebuffer |
| std.android.input | NDK-Eingabe-Events: Typen und Konstanten für AInputEvent |
| std.android.ioctl | ioctl-Nummernkatalog für ASHMEM, ALSA und V4L2 |
| std.android.jni | JNI 1.6 Typ-Aliases: JNIEnv, JavaVM, jclass, jobject |
| std.android.log | Logcat-Logging: Ausgabe auf stderr/fd 2 mit Priority-Level |
| std.android.looper | ALooper-Ereignis-Dispatch-Primitiv für native Event-Loops |
| std.android.manifest_gen | AndroidManifest.xml-Generator für native Activities |
| std.android.native_activity | ANativeActivity-Struct und Callback-Tabelle |
| std.android.native_window | NDK-Native-Window: Typen und Pixelformat-Konstanten |
| std.android.random | Kryptografische Zufallszahlen via /dev/urandom |
| std.android.restrictions | Katalog der unter SELinux/Bionic gesperrten Syscalls |
| std.android.sensor | NDK-Sensor-Typen: Beschleunigungsmesser, Gyroskop, Magnetometer |
| std.android.zip_writer | PKZIP-Writer für gespeicherte Einträge (Grundlage für APK-Build) |
import std.android.jni;
import std.android.log;
import std.android.gles2;
fn Java_com_example_Main_init(env: JNIEnv, obj: jobject): void {
AndroidLog(ANDROID_LOG_INFO, "MyApp", "Native init gestartet");
GLViewport(0, 0, 1920, 1080);
GLClearColor(0.1, 0.1, 0.1, 1.0);
}
Letzte Aktualisierung: 2026-05-23