Wyvern ist eine general-purpose Programmiersprache von Jonathan Aldrich (Carnegie Mellon University) und Alex Potanin (Victoria University of Wellington bzw. Australian National University) für die Entwicklung von Web- und Mobile-Anwendungen mit Sicherheit und Nachweisbarkeit („high-assurance applications“) als oberster Priorität. Die Sprache wird seit 2013 aktiv als Forschungsprojekt entwickelt.

Leitidee: typspezifische Sprachen

Wyverns erste Innovation sind type-specific languages: Für einen Typ lässt sich eine eigene, zur Domäne passende Syntax definieren. Ein Wert vom Typ SQLQuery wird dadurch direkt in SQL geschrieben, ein RegExp als regulärer Ausdruck — der Compiler prüft den eingebetteten Code statisch und typisiert. Das verbindet die Ausdrucksstärke von domänenspezifischen Sprachen mit der Sicherheit eines statischen Typsystems.

Kernkonzepte

  • Einfaches Objektmodell mit guter Unterstützung für objektorientierte und funktionale Programmierung.
  • Statische Typsicherheit mit starker Lokalitätsanalyse (Alias-Kontrolle) — Datenfluss wird so eingeschränkt, dass Sicherheitseigenschaften beweisbar bleiben.
  • Modularität durch typspezifische Sprachen und modules, die als Werte erster Klasse behandelt werden.

Werkzeuge

bin/wyvern               # Interpreter für .wyv-Dateien
bin/wypy                 # Wyvern → Python-Compiler (Prototyp)
wyvern rosetta/hello.wyv # Beispiel direkt ausführen

Syntax-Beispiel

def main():
    var greeting = "Hallo Welt"
    println(greeting)

// Typspezifische Sprache: SQL-Literal für einen SQLQuery-Typ
def queryUsers(): SQLQuery
    return sql: select * from users where active = true

Praxis-Tipps

  • Wyvern ist ein Forschungsprojekt: Releases liegen als ZIP auf der Projektseite, nach dem Entpacken direkt bin/wyvern nutzen.
  • Die examples-Ordner im Repository sind der schnellste Einstieg — sie zeigen typspezifische Sprachen, Objekte und sichere Datenbankzugriffe.
  • Konzeptionell interessant ist die Kombination mit statisch geprüften eingebetteten DSLs — ein Vorbild für sichere Web-/DB-Zugriffe.

Verwandte Grundlagen: Java-Befehle, Kotlin-Befehle, Rust-Befehle, TypeScript-Befehle, Oz-Befehle, Opa-Befehle.