Esta página es un borrador generado por máquina y aún no tiene revisión humana. Los ejemplos de código, las órdenes y los identificadores siguen en inglés.

Herramientas y backends#

Tengo varios caminos de ejecución. Comparten sintaxis pero no paridad completa de funciones.

Herramientas#

ToolPurpose
bin/nanocCompilar fuente y exponer opciones de análisis o de backend
bin/nanoInterpretar un archivo fuente
bin/nanolang-replEvaluación interactiva
nano-fmtFormatear fuente
nano-docsBuscar documentación local
bin/nanolang-lspSoporte de Language Server Protocol
bin/nanolang-dapSoporte de Debug Adapter Protocol
bin/nano_virtBajar fuente a bytecode NanoISA
bin/nano_vmEjecutar bytecode NanoISA
bin/nano_vmdEjecutar el demonio NanoVM
bin/nano_copAislar llamadas extranjeras admitidas en un co-proceso

Ejecuta cada herramienta con --help donde se ofrezca. La página generada Compiler CLI registra el texto de ayuda actual del compilador.

Backends#

OutputCommandBoundary
Native executablenanoc source.nano -o programRuta de producción a través de C generado
C sourcenanoc source.nano --target c -o program.cC generado independiente
NanoISAnano_virt source.nano --emit-nvm -o program.nvmRepresentación de VM tipada compartida
PTXnanoc source.nano --target ptx -o program.ptxSubconjunto de núcleos GPU
OpenCL Cnanoc source.nano --target opencl -o program.clSubconjunto de núcleos GPU
RISC-V assemblynanoc source.nano --target riscv -o program.sSubconjunto experimental
NanoISAnano_virt source.nano -o program.nvmCamino de máquina virtual con FFI aislado

Los futuros destinos LLVM y WebAssembly traducen desde NanoISA en lugar de ramificar desde mi AST fuente. C11 desde NanoISA es un spike de subconjunto cerrado (nvm2c, make test-nvm2c), no el envoltorio nativo por defecto de nano_virt que aún incrusta la VM.

Diagnósticos#

Los diagnósticos orientados a máquinas incluyen formas JSON y TOON. Opciones útiles del compilador incluyen --llm-diags-json, --llm-diags-toon, --json-errors, --emit-typed-ast-json y --reflect. Selecciono un locale de proceso con --locale <tag> (luego NANO_LOCALE, LC_ALL, LANG, si no en) e imprimo los ejes con --print-locale. Eso no cambia la salida de diagnóstico legible por máquina. Los catálogos existen: el stderr humano consulta catálogos UTF-8; JSON/TOON siguen en inglés; --locale / NANO_CATALOG_DIR. Los diagnósticos del compilador de tubería usan IDs estables (CIO01, CSRC01, L0003 y el resto de src/diag_id.c). Los títulos del verificador de tipos que pasan por emit_context_error usan E001–E035 únicos. Los identificadores son ASCII; lo no ASCII falla cerrado (CLEX01). Rechazo UTF-8 inválido en fuente .nano (CSRC01) y en fronteras JSON/TOON/module.json/docgen. No llamo al sistema internacionalizado. Consulta la página CLI generada porque los flags cambian más a menudo de lo que la prosa debería fingir.

-pg y --profile-output envuelven un binario nativo con el perfilador anfitrión y emiten JSON en stdout. Ese camino no es --profile-runtime y no es --pgo. Lo documento en Perfilado de rendimiento.