¡El lenguaje de progamación Crystal alcanzó la versión 1.0! El Pull Request #10500 lo confirmó ayer en GitHub.

Lenguaje de programación Crystal

Estabilidad

En el blog de Crystal nos cuentan qué esperar con este hito. El lenguaje va a seguir evolucionando, pero esta primera versión estable determina algunas cosas. El lenguaje se va a mantener más estable, en el sentido en que no se van a quitar ni cambiar características en versiones futuras de manera que rompa código que compila y funciona en esta versión. A partir de ahora, cualquier código escrito en la versión 1.0, va a seguir compilando y funcionando sin incompatibilidades en las siguientes versiones menores de la rama 1.x. La biblioteca estándar puede ser enriquecida, pero siempre teniendo en cuenta la compatibilidad hacia atrás. Todos los cambios nuevos que rompan la compatibilidad se van a empezar a desarrollar en una rama aparte, empezando lo que algún día se convertiría en Crystal 2.0.

Plan de desarrollo

El desarrollo va a seguir el versionado semántico. Los lanzamientos de mantenimiento (arreglos de bugs) van a ser versiones patch, 1.0.1 va a incluir únicamente arreglos para características existentes. Cualquier característica nueva (siempre manteniendo la compatibilidad hacia atrás), va a ser publicada en versiones menores 1.x. Todavía no hay consenso en cuántas versiones menores van a mantenerse en paralelo, pero por ahora afirman que al menos dos. Lo que implica que si publican la versión 1.1, la versión 1.0 puede seguir recibiendo versiones patch. La actualización a versiones menores de código en producción debería ser fácil y sin problemas, pero de todas formas se van a incluir planes de migración con cada nueva versión.

Características preliminares

Hay algunas características disponibles en Crystal que no tienen soporte oficial todavía. El plan es seguir mejorándolas hasta que el equipo de desarrollo sienta confianza en su estabilidad. Van a seguir estando disponibles en todas las versiones y eventualmente serán migradas a estable en alguna versión 1.x en el futuro.

  • Soporte para Windows - Se ha trabajado mucho en este aspecto, pero todavía no está listo.
  • Multihilos - Usar Crystal en varios núcleos es una característica preliminar disponible mediante un flag -Dpreview_mt, pero quedan muchas mejoras para garantizar el rendimiento y calidad en un ambiente multi-core. Además de habilitar ese flag para habilitar que el código se ejecute en paralelo, se tienen que escribir guías para asegurar una migración sana a ambientes multihilo.
  • ARM - Se ha progresado bastante en soportar la arquitectura ARM, incluso las ejecuciones de Integración Contínua corren en servidores ARM, pero todavía queda trabajo por hacer para marcar el soporte como "listo para producción".

Los cambios en la versión 1.0 respecto a la versión anterior 0.36.1 se enfocaron más que nada en pulir, pero hubo algunos cambios generales del lenguaje. Vale la pena revisar la lista completa de cambios y los detalles en el post original para conocer estos cambios. Entre otras cosas, se eliminaron la mayoría de las definiciones obsoletas de la biblioteca estándar, se agregaron más opciones de redondeo del tipo Number, y mejores en Collections, cambios en serialización y manejo de cookies.

Instalar y usar Crystal

Podemos instalar Crystal 1.0 de varias maneras. Hay paquetes para muchos sistemas operativos populares como Ubuntu, Debian, RedHat, OpenSUSE, ArchLinux, Fedora y más. Y una vez instalado, no queda más que aprender 🙂

Mi único proyecto en Crystal -por ahora- es ci_uy.cr, un shard para validar números de cédula de identidad Uruguaya (port de ci_uy en Ruby). Ayer mismo reemplacé Travis CI con GitHub Actions y agregué soporte para Crystal 1.0. Parece que es un buen momento para volver a jugar con Crystal...

Crystal 1.0.0

No hay comentarios en este post

Feed de comentarios

Dejar un comentario

Toasty!