Lëshimi i gjuhës programuese Crystal 1.5

Është publikuar lëshimi i gjuhës së programimit Crystal 1.5, 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:

  • Përpiluesi ka shtuar një kontroll për korrespondencën e emrave të argumenteve në zbatimin e një metode abstrakte dhe në përkufizimin e saj. Nëse ka një mospërputhje emri, tani lëshohet një paralajmërim: klasa abstrakte FooAbstract abstrakt def foo(numri : Int32) : Klasa e fundit e zero Foo < FooAbstract def foo(emri: Int32) : Nil p emri fundi fundi 6 | def foo(emri: Int32) : Nil ^— Paralajmërim: parametri pozicional "emri" korrespondon me parametrin "numër" të metodës së anashkaluar FooAbstract#foo(numri: Int32), i cili ka një emër të ndryshëm dhe mund të ndikojë në kalimin e argumentit të emërtuar
  • Kur caktoni një argument në një metodë të pashtypshme në vlerën e një ndryshoreje, argumenti tani kufizohet në llojin e asaj ndryshore. class Foo @x : Int64 def inicialize(x) @x = x # parametri x do të shtypet @x fundi fundi
  • Ju lejon të shtoni shënime në parametrat e metodave ose makrove. def foo(@[Ndoshta e papërdorur] x); fundi # OK
  • Mbështetje e shtuar për përdorimin e konstantave si indekse dhe emra në tupa. KEY = "s" foo = {s: "String", n: 0} vendos foo[KEY].size
  • Metodat e reja File#delete? janë shtuar në File API për fshirjen e skedarëve dhe drejtorive. dhe Dir#delete?, të cilat kthejnë false nëse skedari ose drejtoria mungon.
  • Është forcuar mbrojtja e metodës File.tempfile, e cila tani nuk lejon karaktere null në rreshtat që formojnë emrin e skedarit.
  • U shtua ndryshorja e mjedisit NO_COLOR, e cila çaktivizon theksimin e ngjyrave në daljen e përpiluesit dhe interpretuesit.
  • Puna në modalitetin e përkthyesve është përmirësuar ndjeshëm.

Burimi: opennet.ru

Shto një koment