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

Ka është publikuar një version i ri të gjuhës së programimit Crystal 1.16, ku zhvilluesit përpiqen të kombinojnë lehtësinë e zhvillimit në gjuhën Ruby me performancën e lartë të aplikacioneve të karakteristique prÚ njohur si gjuhë C. Sintaksa e Crystal është e ngjashme me atë të Ruby, por nuk është plotësisht e përputhshme me të, pavarësisht se disa programe Ruby ekzekutohen pa modifikime. Kodi i kompilatorit është shkruar në Crystal dhe shpërndahet nën licencën Apache 2.0.

Gjuha përdor kontrollin statik të tipeve, i implementuar pa nevojën e specifikimit të qartë të tipeve të variablave dhe argumenteve të metodave në kod. Programet në Crystal kompilohet në skedarë ekzekutues, duke llogaritur makros dhe duke gjeneruar kod gjatë kompilimit. Në programet e gjuhës Crystal, është e mundur të lidhen lidhje të shkruara në gjuhën C. Ndërprerja e ekzekutimit të kodit bëhet me anë të fjalës kyçe "spawn", e cila lejon ekzekutimin e një detyre në sfond në mënyrë asinhrone, pa bllokuar linjën kryesore, si fibra të lehta, të njohur si fibers.

Biblioteka standarde ofron një grup funksionesh tipike, përfshirë mjete për përpunimin e CSV, YAML, dhe JSON, komponente për krijimin e serverëve HTTP dhe mbështetje për WebSocket. Gjatë zhvillimit, është e mundur të përdoret komanda "crystal play", e cila krijon një ndërfaqe web (me default localhost:8080) për ekzekutimin interaktiv të kodit në gjuhën Crystal.

Ndryshimet kryesore:

  • ËshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r ekzekutimin e fibĂ«rave nĂ« kontekste tĂ« veçanta ekzekutimi (Execution Contexts), e cila lejon arritjen e ekzekutimit mĂ« efikas tĂ« detyrave — bllokimi i fibĂ«rave nĂ« njĂ« kontekst nuk ndalon ekzekutimin nĂ« kontekste tĂ« tjera. mt_context = Fiber::ExecutionContext::MultiThreaded.new("worker-threads", 4) 10.times do mt_context.spawn do do_something end end gtk = Fiber::ExecutionContext::Isolated.new("Gtk") do Gtk.main end gtk.wait
  • NĂ« metodĂ«n Slice.literal Ă«shtĂ« siguruar dalja e tipit tĂ« elementeve tĂ« pĂ«rfshira nĂ« sllajd (slice), dhe Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r funksionimin nĂ« interpreter.
  • NĂ« makrosĂ«t sizeof dhe alignof Ă«shtĂ« siguruar ofrimi i informacionit mbi tipet stabile.
  • NĂ« bibliotekĂ«n standarde janĂ« shtuar metoda tĂ« reja: Indexable#find, #find!, EventLoop#wait_readable dhe #wait_writable.
  • NĂ« kompilator Ă«shtĂ« shtuar njĂ« variant i gjatĂ« i opsionit "-o" — "--output" dhe Ă«shtĂ« realizuar mundĂ«sia e specifikimit tĂ« njĂ« katalogu nĂ« vend tĂ« njĂ« skedari (emri i skedarit do tĂ« zgjidhet nĂ« pĂ«rputhje me emrin e skedarit me kodin).
  • NĂ« dokumentacionin e gjenerimit Ă«shtĂ« shtuar mundĂ«sia e pĂ«rfshirjes nĂ« dokumentacion tĂ« objekteve private dhe tĂ« mbrojtura, si dhe objekteve nĂ« lidhjet e bibliotekĂ«s (lib, fun, union, cstruct, external, type).
  • NĂ« metodĂ«n "File.match?" Ă«shtĂ« angazhuar njĂ« algoritem i ri pĂ«r pĂ«rputhjen e rrugĂ«ve tĂ« skedave, duke eliminuar disa probleme dhe kufizime. PĂ«r shembull, tani korrekt Ă«shtĂ« pĂ«rpunuar evazimi i simboleve (nĂ«n maskĂ«n "\\t" bĂ«n pjesĂ« "\t", jo simboli "t"), ndarjen e rrugĂ«ve (maskĂ« "a**" pĂ«rfshin "ab", por nuk funksionon pĂ«r "ab\/c", ndĂ«rsa maska "**\/a" pĂ«rfshin "a"), modelet e ndĂ«rlidhura (maskĂ« "{[}]" pĂ«rfshin "}", dhe intervalet (maskĂ« "[a-]" pĂ«rfshin "-").
  • NĂ« emrat e parametrave tĂ« pĂ«rcaktimeve (defs), makrosĂ«ve dhe blloqeve janĂ« shpallur tĂ« vjetĂ«ruar sufikset "?" dhe "!".
  • NĂ« metodat Enumerable#sum dhe #product Ă«shtĂ« hequr pĂ«rcaktimi automatik i tipit tĂ« vlerĂ«s sĂ« kthyer, nĂ«se tipi i elementeve Ă«shtĂ« union. Kur thirren kĂ«to metoda, tani duhet tĂ« specifikohet qartĂ« tipi, pĂ«r shembull, nĂ« vend tĂ« "[1, 10000000000_u64].sum" duhet tĂ« shkruhet "[1, 10000000000_u64].sum(0_u64)".
  • NĂ« HTTP::Request Ă«shtĂ« siguruar analizimi korrekt i pjesĂ«ve tĂ« URL.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r grupin e kompilatorĂ«ve LLVM 20.
  • ËshtĂ« shpallur tĂ« vjetĂ«ruar thirrjet LLVM::ABI dhe LLVM::TargetMachine#abi.

    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