Tiny: un lenguaje de programación concurrente con compilador JIT

Fuentes: Tiny: a lightweight concurrent language with JIT compilation in Go

Tiny es un lenguaje de programación y sistema de tiempo de ejecución de alto rendimiento, concurrente y escrito en Go. Combina la agilidad de un lenguaje dinámico con un motor de ejecución multihilo, y está dirigido a desarrolladores que necesitan prototipar con rapidez sin renunciar a velocidad de procesamiento.

El flujo de trabajo parte de archivos fuente que el compilador transforma en bytecode compacto basado en pila (extensión .tbc). Ese bytecode corre sobre una máquina virtual optimizada con almacenamiento local basado en slots. El motor de ejecución opera en dos niveles: un intérprete eficiente para la lógica general y un compilador JIT (Just-In-Time) que traduce a código nativo las rutas de bytecode más utilizadas, acelerando bucles y funciones críticas. Como destino intermedio, Tiny emplea WebAssembly, lo que facilita la portabilidad y la interoperabilidad.

El lenguaje es dinámicamente tipado por defecto, aunque admite anotaciones de tipo opcionales en variables, parámetros y valores de retorno, con soporte para uniones y genéricos. Incorpora tipado estructural, coincidencia de patrones con guardas (match), desestructuración de objetos y arrays, composición mediante la palabra clave embed, y la cláusula defer para limpieza al salir de un ámbito. Para concurrencia, ofrece la palabra clave spawn, que crea hilos a nivel del sistema operativo, junto con bloques lock y mutexes para coordinar estado compartido, con liberación automática del cerrojo.

Tiny también permite integrar bloques de código Go directamente en el archivo fuente mediante native fn, compilados con TinyGo a WebAssembly y cargados en tiempo de ejecución. Se distribuye como binarios precompilados para Windows, Linux y macOS en Apple Silicon, e incluye un servidor de lenguaje (LSP) integrado y extensiones nativas para WebAssembly. La documentación completa está disponible en tiny-lang-docs.github.io.