Lëshimi i gjuhës programuese Crystal 1.2

Është publikuar lëshimi i gjuhës së programimit Crystal 1.2, zhvilluesit e së cilës po përpiqen të kombinojnë komoditetin e zhvillimit në gjuhën Ruby me performancën e lartë të aplikacionit karakteristik të gjuhës C. Sintaksa e Crystal është afër, por jo plotësisht e pajtueshme me Ruby, megjithëse disa programe Ruby funksionojnë pa modifikuar. Kodi i përpiluesit është shkruar në Crystal dhe shpërndahet nën licencën Apache 2.0.

Gjuha përdor kontrollin statik të tipit, i zbatuar pa nevojën për të specifikuar në mënyrë eksplicite llojet e variablave dhe argumentet e metodës në kod. Programet kristal përpilohen në skedarë të ekzekutueshëm, me makro të vlerësuara dhe kod të gjeneruar në kohën e përpilimit. Në programet Crystal, është e mundur të lidhni lidhjet e shkruara në C. Paralelizimi i ekzekutimit të kodit kryhet duke përdorur fjalën kyçe "spawn", e cila ju lejon të ekzekutoni një detyrë në sfond në modalitetin asinkron pa bllokuar fillin kryesor, në formën e fijeve të lehta të quajtura fibra.

Biblioteka standarde ofron një grup të madh funksionesh të zakonshme, duke përfshirë mjete për përpunimin e CSV, YAML dhe JSON, komponentë për krijimin e serverëve HTTP dhe mbështetje WebSocket. Gjatë procesit të zhvillimit, është i përshtatshëm të përdoret komanda "luaj me kristal", e cila gjeneron një ndërfaqe në internet (localhost:8080 si parazgjedhje) për ekzekutimin ndërveprues të kodit në gjuhën Crystal.

Ndryshimet kryesore:

  • U shtua aftësia për të caktuar një nënklasë të një klase gjenerike në një element të një klase mëmë. klasa Foo(T); klasa fundore Bar(T) < Foo(T); fund x = Foo x = Bar
  • Tani makro mund të përdorin një nënvizim për të injoruar një vlerë në një cikli for. {% për _, v, i në {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% fund %}
  • U shtua metoda “file_ekziston?” në makro. për të kontrolluar ekzistencën e një skedari.
  • Biblioteka standarde tani mbështet numra të plotë 128-bit.
  • U shtua moduli Indexable::Mutable(T) me zbatimin e operacioneve të avancuara për koleksione si BitArray dhe Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = e vërtetë # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • U shtua metoda XML::Node#namespace_definition për të nxjerrë një hapësirë ​​specifike emri nga XML.
  • Metodat IO#write_utf8 dhe URI.encode janë zhvlerësuar dhe duhet të zëvendësohen nga IO#write_string dhe URI.encode_path.
  • Mbështetja për arkitekturën 32-bit x86 është zhvendosur në nivelin e dytë (paketat e gatshme nuk gjenerohen më). Një transferim në nivelin e parë të mbështetjes për arkitekturën ARM64 është duke u përgatitur.
  • Puna vazhdon për të siguruar mbështetje të plotë për platformën Windows. Mbështetje e shtuar për bazat e Windows.
  • Është shtuar një paketë universale për macOS, që funksionon si në pajisjet me procesorë x86 ashtu edhe në pajisjet me çipin Apple M1.

Burimi: opennet.ru

Shto një koment