-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture Module Resolution
GitHub Actions edited this page Jan 25, 2026
·
2 revisions
Version: 2.5.0
Status: ✅ Vollständig implementiert
VelinScript unterstützt modulare Projekte mit automatischer Modul-Auflösung. Module können andere Module importieren, und der Compiler löst alle Abhängigkeiten automatisch auf.
// Importiert ein Modul aus einer .velin Datei
use models;
use services;
use security;
// models.velin
struct User {
id: string,
name: string,
email: string,
}
struct Product {
id: string,
name: string,
price: number,
}
Der ParserPass scannt den AST nach use Statements:
use models; // Sucht nach models.velin
Der Compiler sucht automatisch nach .velin Dateien:
- Im gleichen Verzeichnis wie die aktuelle Datei
- Rekursiv für verschachtelte Module
- Die gefundenen Module werden geparst
- Der AST wird in den globalen
ProgramAST eingefügt - Rekursive Auflösung für verschachtelte Imports
Der Type Checker hat Zugriff auf alle Definitionen aus allen Modulen.
my-project/
├── main.velin
├── models.velin
├── services.velin
└── security.velin
use models;
use services;
use security;
@GET("/api/users")
@Auth
fn getUsers(): List<User> {
return services.getAllUsers();
}
struct User {
id: string,
name: string,
email: string,
}
use models;
fn getAllUsers(): List<User> {
return db.findAll(User);
}
// Security-Middleware und Auth-Logik
Module können andere Module importieren:
// main.velin
use services; // Lädt services.velin
// services.velin
use models; // Lädt models.velin (rekursiv)
use security; // Lädt security.velin (rekursiv)
Der Compiler löst alle Abhängigkeiten automatisch auf.
Datei: compiler/src/passes/parser.rs
Methode: resolve_imports()
Features:
- Sammelt alle
useStatements - Sucht nach entsprechenden
.velinDateien - Parst Module rekursiv
- Fügt geparste Module in den AST ein
- Verhindert zirkuläre Abhängigkeiten
- Klare Modul-Struktur: Ein Modul pro Datei
- Vermeide zirkuläre Abhängigkeiten: Module sollten nicht sich gegenseitig importieren
- Konsistente Namensgebung: Modul-Namen sollten Dateinamen entsprechen
- Separation of Concerns: Models, Services, Security in separate Module
Wenn ein Modul nicht gefunden wird:
- Der Compiler gibt eine Warnung aus
- Die Kompilierung wird fortgesetzt
- Type-Checking-Fehler werden gemeldet
Letzte Aktualisierung: 2026-01-30
Version: 2.5.0
- Compiler Architecture
- Pass-Verlauf
- Type Inference
- Code Ordering
- IR Representation
- Borrow Checker
- Code Generation
- Multi-Target Compilation
- Module Resolution
- Framework Integration
- Parallelization
- AI Compiler Passes
- Prompt Optimizer
- System Generation
- Basics
- APIs
- Security
- Database
- Validation
- Authentication
- ML/LLM
- Intelligence Features
- Type Inference
- ML Training
- Pattern Matching
- Closures
- Collections
- HTTP Client
- String Interpolation
- Debugger
- Vektor-Datenbanken
- CLI Reference
- API Keys Setup
- Advanced
- Backend
- Security Best Practices
- AI/ML
- Auto Imports
- Plugin Development