Llançament del llenguatge de programació Crystal 1.2

S'ha publicat el llançament del llenguatge de programació Crystal 1.2, els desenvolupadors del qual intenten combinar la comoditat del desenvolupament en el llenguatge Ruby amb l'alt rendiment de l'aplicació característica del llenguatge C. La sintaxi de Crystal és propera a Ruby, però no és totalment compatible, encara que alguns programes Ruby s'executen sense modificacions. El codi del compilador està escrit en Crystal i es distribueix sota la llicència Apache 2.0.

El llenguatge utilitza la verificació de tipus estàtica, implementada sense necessitat d'especificar explícitament els tipus de variables i els arguments del mètode al codi. Els programes Crystal es compilen en fitxers executables, amb macros avaluades i codi generat en temps de compilació. Als programes Crystal, és possible connectar enllaços escrits en C. La paral·lelització de l'execució del codi es realitza mitjançant la paraula clau "spawn", que permet executar una tasca en segon pla de manera asíncrona, sense bloquejar el fil principal, en forma de fils lleugers anomenats fibres.

La biblioteca estàndard ofereix un gran conjunt de funcions comunes, incloses eines per processar CSV, YAML i JSON, components per crear servidors HTTP i suport WebSocket. Durant el procés de desenvolupament, és convenient utilitzar l'ordre "crystal play", que genera una interfície web (localhost:8080 per defecte) per a l'execució interactiva de codi en el llenguatge Crystal.

Principals canvis:

  • S'ha afegit la possibilitat d'assignar una subclasse d'una classe genèrica a un element d'una classe pare. classe Foo(T); classe final Bar(T) < Foo(T); final x = Foo x = Bar
  • Les macros ara poden utilitzar un guió baix per ignorar un valor en un bucle for. {% per a _, v, i a {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% final %}
  • S'ha afegit el mètode "file_exists?" a les macros. per comprovar l'existència d'un fitxer.
  • La biblioteca estàndard ara admet nombres enters de 128 bits.
  • S'ha afegit el mòdul Indexable::Mutable(T) amb implementació d'operacions avançades per a col·leccions com BitArray i Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • S'ha afegit el mètode XML::Node#namespace_definition per extreure un espai de noms específic de XML.
  • Els mètodes IO#write_utf8 i URI.encode han quedat obsolets i s'han de substituir per IO#write_string i URI.encode_path.
  • El suport per a l'arquitectura x32 de 86 bits s'ha mogut al segon nivell (ja no es generen paquets preparats). S'està preparant una transferència al primer nivell de suport per a l'arquitectura ARM64.
  • Es continua treballant per garantir el suport total per a la plataforma Windows. S'ha afegit suport per a sòcols de Windows.
  • S'ha afegit un paquet universal per a macOS, que funciona tant en dispositius amb processadors x86 com en equips amb el xip Apple M1.

Font: opennet.ru

Afegeix comentari