minikotlin es un compilador de Kotlin escrito desde cero en C que genera bytecode de WebAssembly GC a mano, sin JVM, sin LLVM, sin Binaryen y sin Gradle. El propio compilador se compila a WASM, de forma que el código fuente entra por un extremo y por el otro sale un módulo .wasm en ejecución, todo dentro de la pestaña del navegador.
¿Qué ofrece? El front-end incluye lexer, analizador sintáctico y análisis semántico (denominado mkf), que entrega el resultado a dos IR propios antes de escribir WASM-GC manualmente. Las clases se convierten en tipos struct con campos reales y la reserva de memoria usa struct.new; los métodos abiertos y sobrescritos pasan por una vtable por clase con call_ref para el despacho dinámico; las comprobaciones con is y los brazos de when se reducen a ref.test y ref.cast, lo que hace que el smart-casting sea casi gratuito; y los puntos de suspensión de las corrutinas se compilan como CPS sobre clausuras, sin Asyncify, JSPI ni hilos, apoyándose en setTimeout cuando hay un delay.
El lenguaje cubierto no es un subconjunto mínimo: incluye interfaces con métodos por defecto, data class con equals, hashCode y copy generados, enums, sealed con when exhaustivo, objetos nombrados, companion y anónimos, operadores, funciones de extensión, corrutinas con launch, delay y coroutineScope, además de colecciones, math y funciones de ámbito como let o apply. El proyecto se ejecuta como una pequeña consola en el navegador que colorea el código con su propio lexer y ejecuta el WASM resultante al pulsar Run, sin instalar toolchain. Es un ejemplo de cómo bajar un lenguaje moderno complejo directamente al sistema de tipos de WASM-GC sin atajos interpretativos.
