Desde la última vez que escribí sobre Gleam: el lenguaje de programación funcional estáticamente tipado en BEAM (la máquina virtual de Erlang) han habido muchas mejoras en el lenguaje y su ecosistema.

Lenguaje de programación Gleam

En Abril se presentó el índice de paquetes Gleam, un sitio web para explorar paquetes escritos con Gleam en el repositorio Hex. Hex cuenta con miles de paquetes, y Gleam puede usar paquetes escritos en Elixir o Erlang, por eso la necesidad de este índice para buscar paquetes exclusivamente escritos con Gleam. En este post hay más información súper interesante sobre cómo fue desarrollado el sitio.

Con la versión 0.29 del lenguaje, publicada en Mayo de 2023, una de las mejoras incluidas fue mejorar el autocompletado mediante LSP. LSP es un motor que proporciona ayudas a IDEs que lo implementen (VSCode, Vim, Emacs, etc.). Más recientemente se publicó la versión 0.30. Entre las características nuevas se encuentra la opción de determinar dependencias locales. Gleam soporta Hex, el repositorio de paquetes del ecosistema Erlang. Pero ahora también se pueden agregar dependencias locales, para trabajar con código que no ha sido publicado en el repositorio.

Casi inmediatamente se publicó 0.30.1 que corrige un bug con LSP.

También se mejoró la forma de llamar a funciones externas con FFI. Gleam puede usar funciones escritas en otros lenguajes como Erlang, Elixir, JavaScript y TypeScript. Con Gleam 0.30, se rediseño la FFI para poder escribir un código más conciso:

// Anterior:
pub fn halt(code: Int) -> Nil {
  native_halt(code)
}

if erlang {
  external fn native_halt(Int) -> Nil =
    "erlang" "halt"
}

// v0.30.0
@external(erlang, "erlang", "halt")
pub fn halt(code: Int) -> Nil

Las palabras clave todo y panic -usadas en Gleam para crashear el programa- tienen una sintaxis nueva para evitar confusiones con funciones a las que podrían asignarse valores. La nueva sintaxis cambia:

pub fn main() {
  todo("Tarea pendiente")
}

// v0.30.0
pub fn main() {
  todo as "Tarea pendiente"
}

Otra de las novedades es que podemos declarar una versión mínima de Gleam en el archivo gleam.toml. Si intentamos instalar un paquete con una versión que no cumpla con la condición, Gleam emitirá un error.

Gleam es de esos lenguajes que me resultan súper interesantes y uso cada tanto para programar alguna cosa chica. Vengo siguiendo su desarrollo desde hace un buen tiempo, y creo que tiene mucho potencial. Pero realmente me gustaría probarlo para algún proyecto más completo, ya tendré oportunidad...

Podemos aprender más sobre Gleam en gleam.run.

No hay comentarios en este post

Feed de comentarios

Dejar un comentario

Toasty!