Compiler Internals
A guided map of the `souc` compiler: frontend, type checking, IRs, and backends.
Compiler Internals
Los docs del compilador siguen siendo útiles, pero la historia actual del compilador es self-hosted-first: el mapa de implementación activo vive principalmente bajo self-hosted/, con el artefacto verificado de souc actuando como la puerta de entrada ejecutable para usuarios y para la mayoría de la verificación de docs.
Verificado hoy
- La documentación del compilador se debe leer como un mapa de la implementación y del trabajo de diseño activo.
- El artefacto público verificado ejecuta la ruta nativa self-hosted por defecto (
bin/souc), que emite ELF estático Linux x86-64; el Cranelift JIT ya no se distribuye (CHANGELOG 2.1.0). - Trata los tests y los artefactos de gate como evidencia más fuerte que la prosa aspiracional o los nombres de directorio.
Caveats actuales
- Backends como LLVM, GPU y LSP deben confirmarse por artefacto, no inferirse a partir del árbol de fuentes.
- La especificación del lenguaje puede ir por delante de lo que el artefacto público actual realmente aplica.
Solución de problemas
- Desbordamiento de pila (Compilador Madaros): El compilador de expresiones recursivas puede generar marcos de pila extremadamente grandes (ej. ~4.85 MB por marco) cuando está muy anidado. Esto se solucionó recientemente en la lógica de codegen en vivo alineando el tamaño dinámico del marco con los recuentos de registros (
align16((*func).reg_count*8)). Sin embargo, si experimenta unSIGSEGVo un error de segmentación al compilar funciones grandes con operaciones booleanas anidadas, asegúrese de aumentar su límite de tamaño de pila:ulimit -s unlimited.