Lyx – Datentypen
Diese Seite gibt einen technischen Überblick über die aktuell unterstützten Datentypen in Lyx sowie deren Implementierungsstatus im Compiler (Stand v0.9.0).
Aktuell unterstützte Datentypen
1. Ganzzahl-Typen (signiert)
| Typ | Bits | Wertebereich | Status | Literale |
| int8 | 8 | -128 bis 127 | ✅ Full | 42i8 |
| int16 | 16 | -32,768 bis 32,767 | ✅ Full | 42i16 |
| int32 | 32 | -2,147,483,648 bis 2,147,483,647 | ✅ Full | 42i32 |
| int64 | 64 | -9,223,372,036,854,775,808 bis … | ✅ Full | 42 |
| int | 64 | Alias für int64 | ✅ Full | 42 |
2. Ganzzahl-Typen (unsigniert)
| Typ | Bits | Wertebereich | Status | Literale |
| uint8 | 8 | 0 bis 255 | ✅ Full | 42u8 |
| uint16 | 16 | 0 bis 65,535 | ✅ Full | 42u16 |
| uint32 | 32 | 0 bis 4,294,967,295 | ✅ Full | 42u32 |
| uint64 | 64 | 0 bis 18,446,744,073,709,551,615 | ✅ Full | 42u64 |
| Typ | Beschreibung | Status | Anmerkung |
| isize | Pointer-Größe (signiert) | ✅ Full | Geprüft auf x86_64, ARM64, RISC-V |
| usize | Pointer-Größe (unsigniert) | ✅ Full | Standard für Array-Indizes |
4. Fließkomma-Typen
| Typ | Bits | IEEE 754 | Status | Literale |
| f32 | 32 | single | ✅ Full | 3.14f32 |
| f64 | 64 | double | ✅ Full | 3.14 |
5. Komplexe Typen & Container
| Typ | Beschreibung | Status | Literale / Syntax |
| array<T> | Dynamisches Array (Heap) | ✅ Full | [1, 2, 3] |
| parallel Array<T> | SIMD-optimiertes Array | ✅ Full | parallel Array<int>(100) |
| Map<K, V> | Hash-Map (Assoziativ) | ✅ Full | {key: value} |
| type S = struct | Stack-allozierte Struktur | ✅ Full | S { x: 10 } |
| type C = class | Heap-allozierte Klasse | ✅ Full | new C() |
6. Zeichen- und String-Typen
| Typ | Beschreibung | Status | Literale |
| char | Ein ASCII-Zeichen | ✅ Full | 'a' |
| pchar | Nullterminierter String (Pointer) | ✅ Full | „hello“ |
7. Spezial-Typen
| Typ | Beschreibung | Status | Verwendung |
| bool | Wahrheitswert | ✅ Full | true, false |
| qbool | Probabilistischer Quanti-Typ | ✅ Full | 0.5q (50% true) |
| any | Typsichere Wildcard | ⚠️ Partial | Generics |
8. Range-Typen (Sicherheitskritisch)
Lyx unterstützt die Definition von Integer-Typen mit eingeschränkten Wertebereichen.
Zertifizierungs-Hinweis:
Range-Typen sind ein essenzielles Feature zur Erfüllung der
DO-178C Anforderungen. Sie verhindern ungültige Systemzustände durch strikte Werteprüfung zur Compile- und Laufzeit.
Details zur Implementierung finden Sie unter:
DO-178C Compliance.
Syntax
type Altitude = int64 range -1000..60000;
type Speed = int64 range 0..300;
Compile-Time Check: Literale, die außerhalb des Bereichs liegen, erzeugen einen Fehler.
Runtime Check: Nicht-konstante Zuweisungen werden durch IR-Checks überwacht; bei Verletzung wird ein panic ausgelöst.
Implementierungsdetails
Speicherverwaltung & Storage
| Keyword | Speicherort | Änderbar | Besonderheit |
| var | Stack / Data | Ja | Mutable Variable |
| let | Stack / Data | Nein | Immutable nach Init |
| co | Stack | Nein | Runtime-constant |
| con | - | Nein | Compile-time constant (Immediate) |
Typkonvertierung & Prüfung
Explizite Casts: Unterstützt via as-Operator (z.B. val as int32).
Null-Safety: pchar? (Nullable) mit Null-Coalescing Operator ??.
Linter: Der integrierte Linter prüft auf ungenutzte Variablen und riskante Typumwandlungen.
Status-Update: v0.9.0
Aerospace-Garantien: Range-Typen und @redundant-Variablen stabil integriert.
SIMD Support: parallel Array nutzt Hardware-Beschleunigung für Berechnungen.
Cross-Arch: Vollständige Unterstützung für x86_64, ARM64 und RISC-V.