GALA: un lenguaje estilo Scala que compila a Go manteniendo el ecosistema Go

Fuentes: GALA: a Scala-style language that transpiles to Go with full Go interop

GALA es un lenguaje de programación de tipado estático y orientación funcional, creado como proyecto open source en GitHub, que se transpila a Go. Su objetivo es incorporar en Go el sistema de tipos que muchos desarrolladores echan en falta, especialmente quienes proceden de Scala, Kotlin, F# u OCaml. El nombre es el acrónimo de "Go Alternative LAnguage".

¿Por qué importa? Porque añade a Go un conjunto de herramientas que hoy deben resolverse a mano: tipos sellados (sealed types) con pattern matching exhaustivo controlado por el compilador, las mónadas Option, Either, Try, Future e IO para sustituir comprobaciones de nil y retornos desnudos de error, colecciones inmutables por defecto (List, Array, HashMap, HashSet, TreeSet, TreeMap) y enlaces read-only (ConstPtr[T]). El compilador rechaza los matches incompletos en tiempo de build, por lo que lo que en Go sería un panic en producción se traduce en un error de compilación.

GALA mantiene la interoperabilidad total con cualquier paquete Go de terceros sin necesidad de ficheros de declaración; los tipos de retorno se infieren del SDK de Go y los retornos (T, error) se envuelven automáticamente en Try[T]. El sistema JSON Codec[T] funciona sin reflection ni struct tags gracias a la intrínseca StructMeta[T] generada por el compilador, y sirve además como extractor para pattern matching. Entre las utilidades sintácticas destacan la notación do-notation mediante bind/- y also, funciones expresión, argumentos con nombre y valores por defecto, interpolación de cadenas, expresiones regulares integrables en matches, tuplas con destructuring e inferencia de tipos en lambdas.

Para usarlo se descarga un binario desde la sección Releases, se requiere Go 1.25+ en el PATH y existen plugins oficiales para GoLand/IntelliJ y un servidor LSP para VS Code y Neovim, con caché de transpilación que mantiene rápidos los rebuilds de proyectos grandes. La herramienta incluye subcomandos gala mod init, gala run, gala build y gala test.