Compiler Pipeline

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 Active
compiler/src/passes/autofix.rs

Analysiert den Quellcode auf häufige Syntax-Fehler und korrigiert diese automatisch (z.B. unbalancierte Klammern, fehlende Signaturen).

Input: Raw Source (String)
Output: Corrected Source (String)

Pass 2: ParserPass

Always Active
compiler/src/passes/parser.rs

Lexikalische und Syntax-Analyse zur Erstellung des AST sowie rekursive Modul-Auflösung.

Input: Source Code (String)
Output: AST (Program)

Pass 3: DesugaringPass

Always Active
compiler/src/passes/desugar.rs

Transformiert syntaktischen Zucker (z.B. try-catch) in Standard-Syntax und normalisiert komplexe Ausdrücke.

Input: AST (Sugar)
Output: Normalized AST

Pass 4: CodeOrderingPass

Always Active
compiler/src/passes/code_order.rs

Analysiert Abhängigkeiten und sortiert Items topologisch. Erkennt zirkuläre Abhängigkeiten.

Input: Unsorted AST
Output: Sorted AST

Pass 5: TypeCheckPass

Always Active
compiler/src/passes/type_check.rs

Statische Typ-Inferenz, Validierung von Signaturen und intelligente Typ-Inferenz für Any-Typen und Result-Patterns.

Input: AST
Output: Typed AST

Pass 6: ParallelizationAnalyzer

Always Active
compiler/src/optimizer/parallelization.rs

Analysiert Datenabhängigkeiten und optimiert async Operationen durch automatische Parallelisierung (SIMD, GPU, Async).

Input: Typed AST
Output: Parallelized AST

Pass 7-12: KI-Passes

Optional
compiler/src/passes/ai/*.rs

KI-gesteuerte Phasen für Semantik-Analyse, Bug-Detection, Code-Generierung, Reviews, Sandboxing und Optimierung.

Input: AST / Context
Output: Enhanced AST

Pass 13: CodegenPass

Always Active
compiler/src/passes/codegen.rs

Letzter Schritt: Transformation des optimierten AST in die Intermediate Representation (IR) und Target-Code.

Input: Optimized AST
Output: Target Code (String)

Der Codegen-Prozess

In Pass 13 wird der hochgradig optimierte AST in die finale Form überführt. VelinScript nutzt hierbei eine mehrstufige Strategie:

Schritt A
AST → IR Builder
Schritt B
IR Optimizer
Schritt C
Target Generator
// 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))
}