Pass-Verlauf & Pipeline
Der VelinScript Compiler nutzt ein hochmodernes, Pass-basiertes System. Jede Phase der Kompilierung ist als isolierte Transformationseinheit konzipiert, die den CompilationContext verfeinert und für das finale Code-Target vorbereitet.
Pass Trait
Alle Compiler-Phasen implementieren ein einheitliches Trait, was maximale Modularität und einfache Erweiterbarkeit garantiert.
pub trait Pass {
fn name(&self) -> &str;
fn run(&self, context: &mut CompilationContext) -> Result<()>;
}CompilationContext
Der zentrale Datencontainer, der Metadaten, den AST und Fehler über alle Passes hinweg synchronisiert.
pub struct CompilationContext {
pub root_file: String,
pub source_map: HashMap<String, String>,
pub program: Option<Program>,
pub errors: Vec<CompilationError>,
pub semantic_metadata: SemanticMetadata,
}Die Sequenz (V3.1.0)
Die exakte Reihenfolge der Transformationen vom Quellcode bis zur nativen Binärdatei oder Zielplattform.
Pass 1: AutoFixPass
Always ActiveAnalysiert den Quellcode auf häufige Syntax-Fehler und korrigiert diese automatisch (z.B. unbalancierte Klammern, fehlende Signaturen).
Pass 2: ParserPass
Always ActiveLexikalische und Syntax-Analyse zur Erstellung des AST sowie rekursive Modul-Auflösung.
Pass 3: DesugaringPass
Always ActiveTransformiert syntaktischen Zucker (z.B. try-catch) in Standard-Syntax und normalisiert komplexe Ausdrücke.
Pass 4: CodeOrderingPass
Always ActiveAnalysiert Abhängigkeiten und sortiert Items topologisch. Erkennt zirkuläre Abhängigkeiten.
Pass 5: TypeCheckPass
Always ActiveStatische Typ-Inferenz, Validierung von Signaturen und intelligente Typ-Inferenz für Any-Typen und Result-Patterns.
Pass 6: ParallelizationAnalyzer
Always ActiveAnalysiert Datenabhängigkeiten und optimiert async Operationen durch automatische Parallelisierung (SIMD, GPU, Async).
Pass 7-12: KI-Passes
OptionalKI-gesteuerte Phasen für Semantik-Analyse, Bug-Detection, Code-Generierung, Reviews, Sandboxing und Optimierung.
Pass 13: CodegenPass
Always ActiveLetzter Schritt: Transformation des optimierten AST in die Intermediate Representation (IR) und Target-Code.
Der Codegen-Prozess
In Pass 13 wird der hochgradig optimierte AST in die finale Form überführt. VelinScript nutzt hierbei eine mehrstufige Strategie:
// Beispiel: Codegen für Rust Target
#[get("/api/users")]
async fn get_users() -> Result<Json<Vec<User>>, AppError> {
let users = db.find_all::<User>().await?;
Ok(Json(users))
}