El desarrollador Hajime Hoshi, autor del motor 2D Ebitengine, logró compilar un programa escrito en Go directamente en un binario nativo para Nintendo Switch, sin pasar por WebAssembly como intermediar io. Hasta ahora, su método consistía en transformar el código Go en Wasm y luego en C++; esa vía, aunque estable y portátil, lastraba el rendimiento y disparaba los tiempos de compilación, además de sufrir pausas por la recolección de basura en un único hilo.
El nuevo enfoque sustituye las llamadas de sistema del runtime y de la biblioteca estándar de Go por funciones de la libc y de pthread, y ajusta el formato ELF generado por el compilador de Go (GOOS=linux, GOARCH=arm64, -buildmode=c-archive) para enlazarlo con las herramientas oficiales de Switch. Para reescribir los archivos del runtime sin bifurcarlos, Hoshi recurrió a la opción -overlay del comando go build, que acepta un JSON indicando qué ficheros reemplazar.
Con el fin de generar ese JSON de forma mantenible entre versiones de Go, creó el paquete de código abierto Hitsumabushi, que define un formato de parches propio (marcado con //--from y //--to) y una API, GenOverlayJSON, capaz de producir la configuración de overlay a partir de las opciones indicadas. El nombre es un juego de palabras con libc (りぶしー en japonés).
El artículo describe el reto técnico con detalle: reescribir llamadas de sistema una a una probando en hardware real, adaptar el formato binario y mantener la portabilidad del proyecto. Hoshi advierte que el contenido se basa solo en información pública y se desliga de cualquier consulta a Nintendo.
