Lanzamiento del lenguaje de programación Crystal 1.5

Se ha publicado el lanzamiento del lenguaje de programación Crystal 1.5, cuyos desarrolladores están tratando de combinar la conveniencia del desarrollo en lenguaje Ruby con el alto rendimiento de las aplicaciones característico del lenguaje C. La sintaxis de Crystal es similar a la de Ruby, pero no es totalmente compatible, aunque algunos programas de Ruby se ejecutan sin modificaciones. El código del compilador está escrito en Crystal y distribuido bajo la licencia Apache 2.0.

El lenguaje utiliza verificación de tipos estáticos, implementada sin la necesidad de especificar explícitamente los tipos de variables y argumentos del método en el código. Los programas Crystal se compilan en archivos ejecutables, con macros evaluadas y código generado en tiempo de compilación. En los programas Crystal, es posible conectar enlaces escritos en C. La paralelización de la ejecución del código se lleva a cabo utilizando la palabra clave "spawn", que le permite ejecutar una tarea en segundo plano de forma asincrónica, sin bloquear el hilo principal, en forma de hilos livianos llamados fibras.

La biblioteca estándar proporciona un gran conjunto de funciones comunes, incluidas herramientas para procesar CSV, YAML y JSON, componentes para crear servidores HTTP y compatibilidad con WebSocket. Durante el proceso de desarrollo, es conveniente utilizar el comando “crystal play”, que genera una interfaz web (localhost:8080 por defecto) para la ejecución interactiva de código en lenguaje Crystal.

Cambios importantes:

  • El compilador ha añadido una comprobación de la correspondencia de los nombres de los argumentos en la implementación de un método abstracto y en su definición. Si hay una discrepancia en el nombre, ahora se emite una advertencia: clase abstracta FooAbstract abstract def foo(número: Int32) : Nil end class Foo < FooAbstract def foo(name: Int32) : Nil p nombre end end 6 | def foo(nombre: Int32): Nil ^— Advertencia: el parámetro posicional 'nombre' corresponde al parámetro 'número' del método anulado FooAbstract#foo(número: Int32), que tiene un nombre diferente y puede afectar el paso de argumentos con nombre
  • Al asignar un argumento a un método sin tipo al valor de una variable, el argumento ahora está restringido al tipo de esa variable. clase Foo @x: Int64 def inicializar(x) @x = x # el parámetro x se escribirá @x end end
  • Le permite agregar anotaciones a parámetros de métodos o macros. def foo(@[Quizás no utilizado] x); final # Aceptar
  • Se agregó soporte para el uso de constantes como índices y nombres en tuplas. CLAVE = "s" foo = {s: "Cadena", n: 0} pone foo[CLAVE].tamaño
  • Se han agregado nuevos métodos File#delete? a File API para eliminar archivos y directorios. y Dir#delete?, que devuelven falso si falta el archivo o directorio.
  • Se ha reforzado la protección del método File.tempfile, que ahora no permite caracteres nulos en las líneas que forman el nombre del archivo.
  • Se agregó la variable de entorno NO_COLOR, que deshabilita el resaltado de color en la salida del compilador y del intérprete.
  • Se ha mejorado significativamente el trabajo en modo intérprete.

Fuente: opennet.ru

Añadir un comentario