Dalja e gjuhës së programimit Crystal 1.2

ËshtĂ« publikuar lĂ«shimi i gjuhĂ«s sĂ« programimit Crystal 1.2, zhvilluesit e sĂ« cilĂ«s pĂ«rpiqen tĂ« kombinojnĂ« lehtĂ«sinĂ« e zhvillimit nĂ« gjuhĂ«n Ruby me performancĂ«n e lartĂ« tĂ« aplikacioneve, tipike pĂ«r gjuhĂ«n C. Sintaksa e Crystal Ă«shtĂ« e ngjashme me atĂ« tĂ« Ruby, por nuk Ă«shtĂ« nĂ« pĂ«rputhje tĂ« plotĂ« me tĂ«, ndonĂ«se disa programe ruby ekzekutohen pa rishikim. Kodi i kompilatorit Ă«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:

  • ËshtĂ« shtuar mundĂ«sia e caktimit tĂ« njĂ« nĂ«nklase tĂ« klasĂ«s gjenerike njĂ« elementi tĂ« klasĂ«s prind. class Foo(T); end class Bar(T) < Foo(T); end x = Foo x = Bar
  • NĂ« makros, pĂ«r tĂ« injoruar vlerĂ«n nĂ« ciklin "for", tani mund tĂ« pĂ«rdoret simboli i nĂ«nvizimit. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • NĂ« makros Ă«shtĂ« shtuar metoda "file_exists?" pĂ«r tĂ« kontrolluar ekzistencĂ«n e njĂ« skedari.
  • NĂ« bibliotekĂ«n standarde Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r numra tĂ« tĂ«rĂ« 128-bitĂ«sh.
  • ËshtĂ« shtuar moduli Indexable::Mutable(T) me implementimin e operacioneve tĂ« avancuara pĂ«r koleksione, tĂ« tilla si BitArray dhe Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • ËshtĂ« shtuar metoda XML::Node#namespace_definition pĂ«r tĂ« nxjerrĂ« hapĂ«sirĂ«n specifike tĂ« emrave nga XML.
  • JanĂ« shpallur tĂ« vjetĂ«ruara metodat IO#write_utf8 dhe URI.encode, pĂ«r tĂ« cilat duhet tĂ« pĂ«rdoren IO#write_string dhe URI.encode_path.
  • MbĂ«shtetja pĂ«r arkitekturĂ«n 32-bit x86 Ă«shtĂ« zhvendosur nĂ« nivelin e dytĂ« (paket e gatshme nuk formohen mĂ«). Po pĂ«rgatitet kalimi nĂ« nivelin e parĂ« tĂ« mbĂ«shtetjes pĂ«r arkitekturĂ«n ARM64.
  • Ka vazhduar puna pĂ«r tĂ« siguruar mbĂ«shtetje tĂ« plotĂ« pĂ«r platformĂ«n Windows. ËshtĂ« shtuar mbĂ«shtetje pĂ«r soketat nĂ« Windows.
  • PĂ«r macOS Ă«shtĂ« shtuar njĂ« paketĂ« universale, e cila funksionon si nĂ« pajisjet me procesorĂ« x86, ashtu edhe nĂ« pajisjet me çipin Apple M1.

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