Scala 3 en 2026: estado del ecosistema, versión 3.6 y qué ha cambiado desde Scala 2

Scala 3 lleva ya varios años sobre la mesa y, a estas alturas, la pregunta ya no es si merece la pena dar el salto desde Scala 2, sino cuándo y cómo hacerlo. Con la versión 3.6 en circulación y la 3.3.x consolidada como la primera LTS real del lenguaje, el ecosistema ha madurado bastante más de lo que algunos esperaban.

De Scala 2 a Scala 3: qué cambió de verdad

Scala 3.0 llegó en mayo de 2021 con un reescritura del compilador (Dotty), una nueva sintaxis basada en indentación opcional y un puñado de cambios que rompían la compatibilidad con Scala 2 de formas muy concretas. El más llamativo fue el sistema de given y using, que reemplaza a los implicit de Scala 2. No es un cambio cosmético: obliga a repensar cómo se pasan dependencias y contextos.

Los extension methods pasaron a ser ciudadanos de primera clase, sin el truco de las clases implícitas. Y los opaque types permiten crear alias de tipo que no tienen coste en tiempo de ejecución pero que el compilador trata como tipos distintos, algo muy útil para modelar dominio sin sacrificar rendimiento.

También llegaron los union types (A | B) y los intersection types (A & B), que dan mucho más margen para expresar relaciones de tipos sin necesidad de sealed traits intermedios.

Scala 3.3 LTS: la versión que la comunidad estaba esperando

Septiembre de 2023 trajo la primera versión con soporte a largo plazo de Scala 3: la 3.3.x. Hasta entonces, muchas empresas preferían esperar antes de migrar proyectos grandes. Con el LTS encima de la mesa, esa excusa desapareció.

La 3.3 introdujo también boundary y break para control de flujo, una alternativa más limpia a los viejos trucos con excepciones o variables mutables para salir de bucles. Y con las capturas de contexto (capture checking), el compilador puede razonar sobre el uso de recursos mutables de forma más precisa.

Scala 3.5 y 3.6: lo más reciente

Las versiones 3.5 y 3.6, publicadas a lo largo de 2024 y 2025, se han centrado en dos frentes: rendimiento del compilador y ergonomía. La compilación incremental con Zinc ha mejorado bastante, lo que se nota en proyectos medianos que antes tardaban más de lo razonable en recompilar.

Scala 3.6, de noviembre de 2024, añadió los Named Tuples, algo que llevaba tiempo pidiendo mucha gente. Ahora puedes escribir (name: String, age: Int) y acceder a los campos por nombre, no por posición. Parece pequeño, pero elimina una fuente habitual de errores difíciles de depurar.

// Named Tuples en Scala 3.6
val person: (name: String, age: Int) = (name = "Ana", age = 32)
println(person.name)  // "Ana"
println(person.age)   // 32

Scala 2 y la migración pendiente

Scala 2.13.x sigue siendo la última línea estable de Scala 2, y el EOL oficial estaba previsto para 2025. La biblioteca scala-collection-compat facilita mucho la transición porque permite usar la API de colecciones de Scala 2.13 en código que compilará también con Scala 3.

La migración no es trivial para proyectos grandes, pero las herramientas han mejorado. El compilador de Scala 3 puede consumir JARs de Scala 2.13 mediante TASTy reader, lo que permite mezclar dependencias de ambas versiones durante la transición.

El ecosistema en 2026

La gran mayoría de librerías importantes ya tienen versiones para Scala 3. ZIO 2, Cats Effect 3, Akka Typed (y su fork Apache Pekko), Spark, Play Framework, Doobie, http4s... la lista es larga. Hace dos años todavía había huecos notables; ahora cuesta encontrar librerías activas que no soporten Scala 3.

Las herramientas de build también han evolucionado. SBT sigue siendo el estándar de facto en proyectos grandes, pero Scala CLI se ha convertido en el runner oficial desde Scala 3.3 y es la opción preferida para scripts, proyectos pequeños y aprendizaje. Si vienes de Python o de Node, Scala CLI te resultará mucho más familiar que SBT.

Si trabajas en la JVM y buscas un lenguaje con un sistema de tipos sólido, programación funcional sin compromisos y buen rendimiento, Scala 3 está en muy buen momento. No es un lenguaje de nicho: proyectos como Apache Spark, que sigue siendo el motor de procesamiento de datos más usado en el mundo empresarial, están escritos en Scala. Y lenguajes vecinos como Kotlin o Java 25 LTS con sus nuevas features de records y sealed classes beben de ideas que Scala lleva años refinando.

Para los que vienen de lenguajes funcionales puros como Elixir, Scala puede parecer más verboso, pero la ventaja es el ecosistema JVM completo y la integración con Java sin fricciones.

Por dónde empezar

Si arrancas desde cero, Scala CLI es la forma más rápida de tener un entorno funcional:

// Instala Scala CLI y crea tu primer programa
// $ scala-cli run hello.scala

@main def hello(): Unit =
  println("Hola desde Scala 3")

La documentación oficial en docs.scala-lang.org cubre bien la migración desde Scala 2 y hay un Scala Book gratuito actualizado para Scala 3. La comunidad en Discord es bastante activa y los mensajes de error del compilador han mejorado mucho respecto a versiones anteriores.

Imagen: Pexels / Antonio Batini?

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP