Vrystelling van die Crystal-programmeertaal 1.2

Die vrystelling van die Crystal 1.2-programmeertaal is gepubliseer, waarvan die ontwikkelaars probeer om die gemak van ontwikkeling in die Ruby-taal te kombineer met die hoë toepassingsprestasie-kenmerk van die C-taal. Crystal se sintaksis is naby, maar nie ten volle versoenbaar met, Ruby nie, alhoewel sommige Ruby-programme sonder verandering loop. Die samestellerkode is in Crystal geskryf en onder die Apache 2.0-lisensie versprei.

Die taal gebruik statiese tipe kontrolering, geïmplementeer sonder dat dit nodig is om die tipe veranderlikes en metode-argumente in die kode uitdruklik te spesifiseer. Kristalprogramme word saamgestel in uitvoerbare lêers, met makro's wat geëvalueer en kode gegenereer word tydens samestelling. In Crystal-programme is dit moontlik om bindings wat in C geskryf is, te verbind. Parallellisering van kode-uitvoering word uitgevoer met behulp van die "spawn"-sleutelwoord, wat jou toelaat om 'n agtergrondtaak asynchroon uit te voer, sonder om die hoofdraad te blokkeer, in die vorm van liggewig drade wat vesels genoem word.

Die standaardbiblioteek bied 'n groot stel algemene funksies, insluitend gereedskap vir die verwerking van CSV, YAML en JSON, komponente vir die skep van HTTP-bedieners, en WebSocket-ondersteuning. Tydens die ontwikkelingsproses is dit gerieflik om die "crystal play"-opdrag te gebruik, wat 'n webkoppelvlak genereer (localhost:8080 by verstek) vir interaktiewe uitvoering van kode in die Crystal-taal.

Belangrikste veranderinge:

  • Het die vermoë bygevoeg om 'n subklas van 'n generiese klas aan 'n element van 'n ouerklas toe te wys. klas Foo(T); eindklas Bar(T) < Foo(T); einde x = Foo x = Bar
  • Makro's kan nou 'n onderstreep gebruik om 'n waarde in 'n for-lus te ignoreer. {% vir _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Bygevoeg "file_exists?"-metode by makro's. om die bestaan ​​van 'n lêer na te gaan.
  • Die standaard biblioteek ondersteun nou 128-bis heelgetalle.
  • Bygevoeg Indexable::Mutable(T) module met implementering van gevorderde bewerkings vir versamelings soos BitArray en Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Bygevoeg XML::Node#namespace_definition metode om 'n spesifieke naamruimte uit XML te onttrek.
  • Die IO#write_utf8 en URI.encode metodes is afgekeur en moet vervang word deur IO#write_string en URI.encode_path.
  • Ondersteuning vir 32-bis x86-argitektuur is na die tweede vlak geskuif (klaargemaakte pakkette word nie meer gegenereer nie). 'n Oordrag na die eerste vlak van ondersteuning vir die ARM64-argitektuur word voorberei.
  • Werk gaan voort om volle ondersteuning vir die Windows-platform te verseker. Bygevoeg ondersteuning vir Windows-voetstukke.
  • 'n Universele pakket is bygevoeg vir macOS, wat beide werk op toestelle met x86-verwerkers en op toerusting met die Apple M1-skyfie.

Bron: opennet.ru

Voeg 'n opmerking