Vyšla nová verzia Crystal, kompilovaného programovacieho jazyka so syntaxou Ruby. Medzi hlavné vlastnosti patrí runtime s "vstavaným" event loopom, v ktorom sú všetky operácie vstupu a výstupu asynchrónne, podpora viacerých vlákien (aktivačná vlajka pri kompilácii) a mimoriadne jednoduchá a pohodlná práca s knižnicami v C.
Od verzie 0.34.0 jazyk oficiálne začína stabilne postupovať smerom k prvému skutočnému vydaniu (t.j. verzii 1.0).
V novej verzii Crystal sú možné nasledujúce zmeny a vylepšenia podľa ich dôležitosti:
Do API bola pridaná nová knižnica pre spracovanie logov Log, ktorá, na rozdiel od starej, dokáže smerovať správy do rôznych backendov a filtruje tieto správy rôznymi spôsobmi v závislosti od "zdroja".
Rudimenty zo sveta vývoja v C, Errno a WinError, používané na primitívne vstupy a výstupy, odchádzajú do minulosti vďaka hierarchii výnimiek IO::Error (avšak nikoho zatiaľ nezakazuje používať Errno).
Bola odstránená automatická substitúcia else nil z operátora case/when/else. Toto sa robí na to, aby sa vylúčila náhodná strata jednej z vetiev programátorom when pri zhodovaní na determinované prípady ako enumy a prechodu typmi z Unionu. Jednoducho povedané, takýto kód už nebude fungovať bez ďalšieho when (when Char) alebo pridania else-vetvy:
a = 1 || ‘x’ || "foo"
case a
when Int32
# …
when String
# …
end
Možnosť kompilátora disable_overflow už nie je dostupná. Pre operácie s pretečením používajte metódy &+, &-, &*.
Array#fill teraz letí rýchlejšie ako guľka, vďaka nahradeniu nemotorného cyklu jednoduchým memsetom;
Správca shardov (balíkov), ktorý sa paradoxne nazýva shards, teraz používa rýchlejší a efektívnejší algoritmus na uspokojenie závislostí Molinillo, okopírovaný z CocoaPods (Swift) a Builder (Ruby).
Pridaná podpora LLVM 10, čo by nám malo teoreticky priniesť určitý nárast výkonu, stability, atď.
… a množstvo ďalších, podľa môjho subjektívneho názoru, menej zásadných vylepšení.
Rád by som poznamenal, že Crystal je jazyk postavený na LLVM, ktorý umožňuje písanie aplikácií niekedy rýchlejšie, jednoduchšie a stručnejšie ako jeho interpretované "príbuzné", pričom na výstupe dosahuje celkom rýchly binárny súbor. V porovnaní s Golang vystupuje ako plnohodnotný objektovo orientovaný jazyk, podporuje generiká a má veľmi jednoduchú a zrozumiteľnú syntaxu. Vo svojich funkciách je do veľkej miery analógom jazyka Nim, ale zároveň je jasne orientovaný na praktické aplikácie "tu a teraz", čo mu umožňuje disponovať v svojom API mnohými dobre zdokumentovanými, pohodlnými a kvalitnými nástrojmi podporovanými vývojármi jazyka a preto veľmi stabilnými.
Zdroj: linux.org.ru
