Inhaltsverzeichnis

Lyx – Units & Standard Library

Lyx bietet eine umfangreiche Standardbibliothek (std), die modular aufgebaut ist. Jede Unit muss explizit importiert werden, sofern es sich nicht um einen Compiler-Builtin handelt.

1) Kern-Units (Basis-System)

Diese Units bilden das Fundament für jedes Lyx-Programm und kapseln die direkten Syscalls der Zielplattform.

Unit Beschreibung Highlights
std.IO Standard Ein-/Ausgabe Print, Printf, ReadLn, WriteLn
std.FS Dateisystem-Operationen Stat, MkDir, Unlink, Rename, DirIter
std.Env Laufzeit-Umgebung Zugriff auf Command-Line Argumente (Args)
std.Time Zeit & Datum Zeitstempel, Kalenderfunktionen, Delays

2) Mathematik & Geodaten

Optimiert für Performance und teilweise mit Fixed-Point-Arithmetik für Systeme ohne FPU (v0.4.0).

Unit Beschreibung Highlights
std.Math Erweiterte Mathematik Trigonometrie (Sin/Cos), Power, Fixed-Point
std.Geo Geolocation & Navigation DistanceM, BoundingBox, DMS Parsing
std.Vector Lineare Algebra Vec2, Rotation, Normalisierung
std.Rect / std.Circle Geometrische Formen Kollisionstests, Flächenberechnungen

3) Datenstrukturen & Algorithmen

Lyx bietet typsichere Container und effiziente Sortieralgorithmen.

std.List: Dynamische Listen, Stacks, Queues und RingBuffer.

std.Sort: Hybrid-QuickSort (Median-of-Three) kombiniert mit InsertionSort für kleine Partitionen.

std.Result: Implementierung des Result/Option-Patterns für modernes Error-Handling ohne Exceptions.

4) Netzwerk & Protokolle (std.Net)

Eine der mächtigsten Komponenten von Lyx v0.5.7. Sie bietet RFC-konforme Implementierungen für:

Kategorie Protokolle
Web & Mail HTTP/S, SMTP, IMAP, DNS
IoT & Messaging MQTT, SNMP, SIP
Sicherheit SSH, TLS-Abstraktion
Routing BGP

5) Hilfsmittel & Systemnahes

Unit Beschreibung
std.Hash Kryptographie: SHA-256, CRC32, FNV-1a, DJB2.
std.Conv Bit-Manipulation, Endianness-Konvertierung, Int-to-Str.
std.Color RGBA, HSL und Hex-Farbkonvertierung.
std.CRT ANSI-Terminal-Steuerung (Farben, Cursor-Positionierung).

6) Import-Mechanismen

Lyx unterstützt verschiedene Wege, Units effizient einzubinden:

Einzel-Import

Der Standardfall für gezielte Abhängigkeiten.

import std.IO;
import std.Math as M; // Mit Alias

Wildcard-Import (v0.5.2+)

Um ganze Bibliotheksgruppen (z.B. den Netzwerk-Stack) zu laden, kann der Sternchen-Operator verwendet werden. Dies lädt alle Units in der angegebenen Ebene.

import std.Net.*; // Importiert Http, Dns, Mqtt, etc.

Beispiel: Einbindung mehrerer Units

unit NetworkTool;
 
import std.IO;
import std.Net.*; // Wildcard-Import für alle Protokolle
import std.Time;
 
pub fn Main(): int64 {
PrintStr("Starte Request um: ");
Time.Now() |> Time.Print();
 
// Http ist durch den Wildcard-Import verfügbar
var response := Http.Get("[http://api.seolizer.de/status](http://api.seolizer.de/status)");
 
if (response.StatusCode == 200) {
    PrintStr("Erfolg!");
}
 
return 0;
}