Acerca de Wren

Descubre qué hace único a Wren


Wren es un lenguaje de scripting pequeño, rápido, basado en clases y concurrente. Piensa en Smalltalk en un paquete del tamaño de Lua, con una pizca de Erlang y envuelto en una sintaxis moderna y familiar.

  • Pequeño. La máquina virtual son menos de 4000 puntos y coma de C legible y comentado con cariño.

  • Rápido. Un compilador inteligente de una sola pasada produce bytecode compacto y eficiente.

  • Basado en clases. Las clases y los objetos son los protagonistas.

  • Concurrente. Las fibras ligeras están integradas en el lenguaje.

  • Scripting. Se puede incrustar, no tiene dependencias, incluye una pequeña biblioteca estándar y una API de C fácil de usar.

La máquina virtual

El corazón de Wren es la máquina virtual. La máquina virtual de Wren es el núcleo del lenguaje y ejecuta todo el código fuente de Wren. No es más que una biblioteca, no una aplicación independiente. Está diseñada para incrustarse en una aplicación anfitriona más grande.

Puedes encontrar Wren incrustado en proyectos como:

  • TIC-80: un ordenador de fantasía para crear, jugar y compartir juegos diminutos (similar a PICO8).
  • DOME: un framework multiplataforma para crear juegos.
  • luxe: un motor de juegos multiplataforma y de desarrollo rápido para crear juegos.
  • Wren Console: un REPL y una CLI de Wren escritos en gran parte en el propio Wren.

Incluso puedes incrustar Wren dentro de tus propios proyectos. A efectos de Exercism, la aplicación anfitriona que usaremos es Wren Console, lo que nos permite ejecutar y probar nuestros scripts de Wren desde el terminal.

¿Por qué Wren?

Wren fue creado originalmente por Bob Nystrom, conocido por Crafting Interpreters. Tiene más de unos cuantos lenguajes a sus espaldas, pero explica concretamente qué le llevó a crear Wren:

Hay unos cuantos lenguajes de scripting que se usan para incrustarlos en aplicaciones. Lua es el principal. TCL lo era antes. También está Guile, cada vez más JavaScript, y algunas aplicaciones incrustan Python. Soy exdesarrollador de videojuegos, así que cuando pienso en «scripting», tiendo a pensar en «scripting de juegos».

Lua está bien: es pequeño, sencillo y rápido. Pero (y no lo digo como crítica) también resulta raro si estás acostumbrado a lenguajes como C++ y Java. La sintaxis es distinta. La semántica, sobre todo el modelo de objetos, es poco habitual. Cualquiera se acostumbra a los índices que empiezan en 1, pero cosas como las metatablas dejan claro que los objetos se añadieron a Lua a posteriori.

Creo que hay sitio para un lenguaje tan sencillo como Lua, pero que resulte natural para alguien con experiencia en POO. Wren es mi intento de lograrlo.

Probarlo

Puedes probarlo rápidamente en tu navegador web (sin instalar nada). Si quieres experimentar con Wren envuelto en una interfaz vistosa, echa un vistazo a Wren Playground.