Lëshimi i gjuhës së programimit Crystal 1.5

ËshtĂ« publikuar versioni 1.5 i gjuhĂ«s sĂ« programimit Crystal, e cila pĂ«rpiqet tĂ« kombinojĂ« lehtĂ«sinĂ« e zhvillimit nĂ« gjuhĂ«n Ruby me performancĂ«n e lartĂ« tĂ« aplikacioneve qĂ« i Ă«shtĂ« tipike gjuhĂ«s C. Sintaksa e Crystal-it Ă«shtĂ« e ngjashme me atĂ« tĂ« Ruby-t, por nuk Ă«shtĂ« plotĂ«sisht e pĂ«rshtatshme me tĂ«, megjithatĂ« disa programe ruby ekzekutohen pa ndonjĂ« ndryshim. Kodi i kompajlerit Ă«shtĂ« shkruar nĂ« gjuhĂ«n Crystal dhe shpĂ«rndahet nĂ«n licencĂ«n Apache 2.0.

Gjuha përdor kontroll të tipave në mënyrë statike, e implementuar pa nevojën për ta specifikuar qartë tipin e variablave dhe argumenteve të metodave në kod. Programet në Crystal kompilohen në skedarë ekzekutivë, me llogaritjen e makros dhe gjenerimin e kodit gjatë kompilimit. Në programet në gjuhën Crystal, është e mundur të lidhen binde të shkruara në gjuhën C. Parallelizimi i ekzekutimit të kodit bëhet me ndihmën e fjalës kyçe "spawn", e cila lejon ekzekutimin e një detyre sfondore në mënyrë asinkrone, pa bllokuar rrjedhën kryesore, në formën e rrjedhave të lehta, të njohura si fibera (Fiber).

Biblioteka standarde ofron një grup të gjerë funksionesh të zakonshme, duke përfshirë mjete për procesimin e CSV, YAML, dhe JSON, komponente për krijimin e serverëve HTTP dhe mbështetje për WebSocket. Gjatë zhvillimit, është e dobishme të përdorësh komandën "crystal play" e cila formon një ndërfaqe web (në mënyrë të parazgjedhur localhost:8080) për ekzekutimin interaktiv të kodit në gjuhën Crystal.

Ndryshimet kryesore:

  • Kompajleri ka marrĂ« njĂ« verifikim tĂ« emrave tĂ« argumenteve nĂ« zbatimin e metodĂ«s abstrakte dhe nĂ« definimin e saj. NĂ« rast tĂ« njĂ« mos pĂ«rputhje emrash tani shfaqet njĂ« paralajmĂ«rim: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— ParalajmĂ«rim: parametri pozicional ‘name’ pĂ«rputhet me parametrin ‘number’ tĂ« metodĂ«s sĂ« tejkaluar FooAbstract#foo(number : Int32), e cila ka njĂ« emĂ«r tjetĂ«r dhe mund tĂ« ndikojĂ« nĂ« kalimin e argumenteve tĂ« emĂ«ruara.
  • Kur i atribuohet njĂ« argumenti tĂ« njĂ« metode pa tip, ky argument tani kufizohet nga tipi i kĂ«tij variabili. class Foo @x : Int64 def initialize(x) @x = x # parametri x do tĂ« marrĂ« tipin e @x end end
  • Lejohet shtimi i annotations nĂ« parametrat e metodave ose makrosave. def foo(@[MaybeUnused] x); end # OK
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rdorimin e constanteve si indekse dhe emra nĂ« tuple. KEY = «s» foo = {s: «String», n: 0} puts foo[KEY].size
  • NĂ« API-nĂ« File pĂ«r fshirjen e skedarĂ«ve dhe katalogĂ«ve janĂ« shtuar metoda tĂ« reja File#delete? dhe Dir#delete?, tĂ« cilat kthejnĂ« false nĂ«se skedari ose katalogu nuk ekziston.
  • MBrojtja e metodĂ«s File.tempfile Ă«shtĂ« forcuar, e cila tani nuk lejon karaktere zero nĂ« stringjet qĂ« formojnĂ« emrin e skedarit.
  • ËshtĂ« shtuar njĂ« variabĂ«l ambienti NO_COLOR, qĂ« ndalon ndriçimin me ngjyrĂ« nĂ« daljen e kompajlerit dhe interpretuesit.
  • Kozullimi i punĂ«s nĂ« modalitetin interpretues Ă«shtĂ« pĂ«rmirĂ«suar ndjeshĂ«m.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster