Code Generation
Backends and lowering: Cranelift, native, LLVM, GPU, and debug info.
Code Generation
La generación de código es donde Sounio muestra con más claridad que existen varios perfiles reales de compilador. La descripción correcta ya no es “el artefacto por defecto expone un solo camino”, sino “el repositorio publica artefactos versionados separados para JIT y GPU, y cada uno expone un contrato de backend distinto”.
Mapa actual del código fuente
self-hosted/native/cubre lowering nativo, codificacion, ABI, asignacion de registros y formatos de objeto.self-hosted/wasm/cubre lowering, codificacion y construccion de modulos para WASM.self-hosted/gpu/cubre PTX, SPIR-V, Metal, trabajo tensorial y lowering GPU.self-hosted/llvm/sigue presente como subarbol orientado a LLVM.
Lo que prueban los artefactos versionados
- Perfil JIT: Cranelift JIT habilitado; LLVM y GPU codegen deshabilitados.
- Perfil GPU: GPU codegen habilitado; JIT deshabilitado; emision PTX disponible mediante
build --backend gpu. - La documentacion debe distinguir entre comportamiento del perfil por defecto, comportamiento del perfil GPU y amplitud de implementacion en el arbol de fuentes.
Ruta nativa preview v2
El repositorio ahora tambien incluye una ruta preview publica native-v2 para
el programa de soberania del backend. El alias de compatibilidad
native-v2-shadow ya fue retirado. No es un nuevo backend estable para
usuarios finales.
- Sirve para fijar
RuntimeContext, la politica de registros por objetivo y las expectativas de Machine IR en un artefacto legible por maquina. - La ruta preview actual de
x86-64ahora baja por un camino real de Machine IR + legalizacion, emite ELFs nativosscalar_coreen la shell self-hosted, publicagc_statey una tabla de descriptores de objetos gestionados viaRuntimeContext, enruta los objetos heap de native-v2 por una tabla fija de handles para accesoalloc/field/index, incorpora un modelo ejecutable de GC mark-compact guiado por descriptores con escaneo preciso y reglas de pinning, y las familias de opcode fuera de ese subconjunto fallan de forma cerrada. AArch64ya esta definido en el contrato como politica, pero todavia no ha sido promovido como emisor nativo publicado.
Confirmar el conjunto activo de backends
export SOUC_BIN="$(pwd)/artifacts/omega/souc-bin/souc-linux-x86_64-jit"
"$SOUC_BIN" info
export SOUC_GPU_BIN="$(pwd)/artifacts/omega/souc-bin/souc-linux-x86_64-gpu"
"$SOUC_GPU_BIN" info
"$SOUC_GPU_BIN" build examples/kernel_vec_add.sio --backend gpu -o /tmp/kernel_vec_add.ptx
export SOUNIO_NATIVE_V2_CONTRACT_PATH=/tmp/native_backend_v2_contract.v1.json
"$SOUC_BIN" run self-hosted/compiler/main.sio -- --self-test
El artefacto canonico protegido por gates es artifacts/omega/native_backend_v2_contract.v1.json.
Como escribir docs de codegen sin que envejezcan
- Describe los directorios de backend cuando hables de arquitectura de implementacion.
- Describe el artefacto JIT versionado cuando hables de la experiencia publica por defecto.
- Describe el artefacto GPU versionado cuando hables de codegen GPU publico.
- Solo documenta rutas de ejecucion de backend que hayas validado con el artefacto y el comando exactos.