ĂshtĂ« publikuar rrethi i gjuhĂ«s sĂ« programimit Crystal 1.6, zhvilluesit e tĂ« cilit po pĂ«rpiqen tĂ« bashkojnĂ« lehtĂ«sinĂ« e zhvillimit nĂ« gjuhĂ«n Ruby me performancĂ«n e lartĂ« tĂ« aplikacioneve, qĂ« Ă«shtĂ« karakteristike pĂ«r gjuhĂ«n C. Sintaksa e Crystal Ă«shtĂ« afĂ«r gjuhĂ«s Ruby, por nuk Ă«shtĂ« plotĂ«sisht e pĂ«rshtatshme pĂ«r tĂ«, megjithatĂ«, disa programe ruby ekzekutohen pa modifikime. 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:
- Logjika e ngarkesĂ«s Ă«shtĂ« ndryshuar â kur ngarkohet bashkimi i tipave, tani shqyrtohen mĂ« parĂ« tipet individuale. PĂ«r shembull, ekzekutimi i kodit qĂ« vijon do tĂ« kthejĂ« vlerĂ«n true, dhe jo âaâ, siç ishte nĂ« versionet e kaluara. module Foo(T) end class Bar1 include Foo(Int32) end class Bar2 include Foo(Int32) end def foo(x : Foo(Int32)) âaâ end def foo(x : Bar1 | Bar2) true end foo(Bar1.new)
- Metodat #system_echo dhe #system_raw janë implementuar për të gjitha platformat, çka ka lejuar që makrosët e klasës FileDescriptor «cooked_from_tc_mode!», «noecho_from_tc_mode!» dhe «raw_from_tc_mode!» tani të konsiderohen të vjetra, ndërsa metodat #noecho! dhe #raw! tani kthejnë nil në vend të vlerës LibC.tcsetattr.
- API i File është përmirësuar, i cili tani kthen objektin e brendshëm (kthehet File::Info në vend të Crystal::System::FileInfo).
- Puna në modin e interpreterit është përmirësuar. Për të aktivizuar mbështetje për interpreterin, mund të përdorni komandën «make interpreter = 1».
- Optimizaciónet e reja të performancës janë përfshirë në kompilator dhe bibliotekën standarde.
- Mbështetje e përmirësuar për platformën Windows në kompilator, duke përfshirë mundësinë për të ndërtuar interpreterin dhe mbështetje për Mutex.
- Mbështetje për Unicode 15.0 është e sapo shtuar dhe është implementuar API për normalizimin e sekuencave Unicode.
Burimi: opennet.ru
