AOT – Compilación Ahead‑Of‑Time a Nativo
Archivo: src/aot.rs
¿Por qué existe?
Permite pre‑compilar programas Forja a binarios nativos estáticos antes de la ejecución, eliminando por completo la necesidad de la VM en tiempo de ejecución. Ideal para distribuir aplicaciones Forja como ejecutables independientes sin dependencias externas.
Arquitectura
El AOT compila el AST de Forja a código nativo a través de dos backends posibles:
- Backend ASM (
compiler_asm.rs): Genera código assembly x86-64/ARM64 que luego se ensambla con GCC/MSVC. - Backend LLVM (
compiler_llvm.rs): Genera IR de LLVM que se compila a nativo conllc.
Pipeline AOT
- Parseo: El archivo
.fase parsea a AST. - Análisis semántico: Borrow checker, resolución de nombres y tipado.
- Generación: Se genera bytecode, assembly o LLVM IR.
- Compilación nativa: Se invoca al ensamblador/compilador externo (GCC, MSVC,
llc). - Enlace: Se genera un binario ejecutable estático.
API Pública
| Función | Descripción |
|---|---|
compilar_aot(origen) -> Result<PathBuf> | Compila un archivo .fa a binario nativo estático |
compilar_aot_con_asm(origen) -> Result<PathBuf> | Compila usando el backend ASM (x86-64/ARM64) |
compilar_aot_con_llvm(origen) -> Result<PathBuf> | Compila usando el backend LLVM IR |
¿Cuándo se usa?
Cuando se necesita un ejecutable independiente para distribución. El AOT es útil para:
- Distribuir aplicaciones Forja sin requerir el runtime de Forja
- Maximizar rendimiento en producción (código nativo optimizado)
- Integrar Forja en sistemas embebidos o con restricciones de recursos