Die DO-178C ist der primäre Standard der Luftfahrtbehörden (EASA, FAA) zur Zertifizierung von Software in fliegenden Systemen. Lyx wurde entwickelt, um die Einhaltung dieses Standards durch native Sprachfeatures und Compiler-Garantien zu unterstützen.
Der Standard teilt Software nach der Kritikalität der Auswirkungen eines Fehlers in Stufen ein. Lyx ermöglicht die Annotation dieser Stufen direkt im Quellcode über das Pragma @dal(Level).
| Level | Kritikalität | Beschreibung in Lyx |
|---|---|---|
| A | Katastrophal | Höchstes Sicherheitslevel. Erfordert zwingend @critical und meist @integrity. |
| B | Gefährlich | Hohe Anforderungen an Testabdeckung und Determination. |
| C | Major | Moderate Sicherheitsanforderungen. |
| D | Minor | Niedrigste zertifizierungsrelevante Stufe. |
Ein Kernaspekt von DO-178C ist die Vorhersehbarkeit (Determinisitik). Lyx erzwingt dies durch:
Schleifen in sicherheitskritischen Sektionen müssen ein festes Iterationslimit haben, um die Berechnung der WCET (Worst-Case Execution Time) zu ermöglichen.
while (sensor_data == null) limit(100) {
poll_sensor();
}
Das Attribut @flight_crit garantiert ein konsistentes Rundungsverhalten der FPU (Floating Point Unit) und deaktiviert unsichere Optimierungen wie Constant Folding für Fließkommazahlen.
Lyx-Funktionen können mit spezifischen Metadaten annotiert werden, die der Compiler gegen die Zielarchitektur validiert:
extern fn aufrufen.Um ungültige Zustände (Out-of-Bounds) zu vermeiden, nutzt Lyx Range-Typen. Diese erlauben die Definition von aeronautischen Wertebereichen mit strikter Prüfung:
type Altitude = int64 range -1000..60000; // Meter über MSL type Speed = int64 range 0..300; // Knoten
panic.DO-178C fordert Mechanismen gegen Hardware-Ausfälle. Lyx implementiert hierfür:
@redundant.