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;
}
