Release van de Crystal-programmeertaal 1.2

De release van de programmeertaal Crystal 1.2 is gepubliceerd, waarvan de ontwikkelaars proberen het gemak van ontwikkeling in de Ruby-taal te combineren met de hoge applicatieprestaties die kenmerkend zijn voor de C-taal. De syntaxis van Crystal komt dicht in de buurt van, maar is niet volledig compatibel met, Ruby, hoewel sommige Ruby-programma's zonder aanpassingen kunnen worden uitgevoerd. De compilercode is geschreven in Crystal en gedistribueerd onder de Apache 2.0-licentie.

De taal maakt gebruik van statische typecontrole, geïmplementeerd zonder de noodzaak om expliciet de typen variabelen en methodeargumenten in de code te specificeren. Crystal-programma's worden gecompileerd in uitvoerbare bestanden, waarbij macro's worden geëvalueerd en code wordt gegenereerd tijdens het compileren. In Crystal-programma's is het mogelijk om bindingen te verbinden die in C zijn geschreven. Parallellisatie van de code-uitvoering wordt uitgevoerd met behulp van het trefwoord "spawn", waarmee u een achtergrondtaak asynchroon kunt uitvoeren, zonder de hoofdthread te blokkeren, in de vorm van lichtgewicht threads die vezels worden genoemd.

De standaardbibliotheek biedt een groot aantal algemene functies, waaronder tools voor het verwerken van CSV, YAML en JSON, componenten voor het maken van HTTP-servers en WebSocket-ondersteuning. Tijdens het ontwikkelingsproces is het handig om de opdracht “crystal play” te gebruiken, die een webinterface genereert (standaard localhost:8080) voor interactieve uitvoering van code in de Crystal-taal.

Grote veranderingen:

  • De mogelijkheid toegevoegd om een ​​subklasse van een generieke klasse toe te wijzen aan een element van een bovenliggende klasse. klasse Foo(T); eindklasse Bar(T) < Foo(T); einde x = Foo x = Bar
  • Macro's kunnen nu een onderstrepingsteken gebruiken om een ​​waarde in een for-lus te negeren. {% voor _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% einde %}
  • Methode “file_exists?” toegevoegd aan macro's. om het bestaan ​​van een bestand te controleren.
  • De standaardbibliotheek ondersteunt nu gehele getallen van 128 bits.
  • Indexable::Mutable(T)-module toegevoegd met implementatie van geavanceerde bewerkingen voor verzamelingen zoals BitArray en Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML::Node#namespace_definition-methode toegevoegd om een ​​specifieke naamruimte uit XML te extraheren.
  • De methoden IO#write_utf8 en URI.encode zijn verouderd en moeten worden vervangen door IO#write_string en URI.encode_path.
  • Ondersteuning voor 32-bit x86-architectuur is verplaatst naar het tweede niveau (er worden geen kant-en-klare pakketten meer gegenereerd). Een overdracht naar het eerste ondersteuningsniveau voor de ARM64-architectuur wordt voorbereid.
  • Er wordt verder gewerkt aan het garanderen van volledige ondersteuning voor het Windows-platform. Ondersteuning toegevoegd voor Windows-sockets.
  • Voor macOS is een universeel pakket toegevoegd, dat zowel werkt op apparaten met x86-processors als op apparatuur met de Apple M1-chip.

Bron: opennet.ru

Voeg een reactie