Izašla je nova verzija Crystal, kompajliranog programskog jezika sa sintaksom Ruby, čije su glavne karakteristike runtime sa "ugraženim" event loop-om, u kojem su sve operacije ulaza/izlaza asinhrone, podrška za višestruko izvršavanje (za sada se uključuje zastavicom pri kompajliranju) i izuzetno jednostavno i praktično korišćenje biblioteka u C-u.
Počevši od verzije 0.34.0, jezik zvanično počinje da se čvrsto kreće ka prvom pravom izdanju (tj. verziji 1.0).
U novoj verziji Crystala može se primetiti sledeće promene i poboljšanja redom po važnosti:
U API-ju je dodata nova biblioteka za logovanje Log, koja, za razliku od stare, može usmeriti poruke u različite backend-e i filtrirati te poruke na različite načine u zavisnosti od "izvora".
Rudimenti iz sveta razvoja u C-u, Errno i WinError, koji su se koristili za primitive ulaza/izlaza, odlaze u prošlost zahvaljujući hijerarhiji izuzetaka IO::Error (međutim, korišćenje Errno još niko nije zabranio).
Automatsko umetanje else nil iz operatora case/when/else. Ovo je učinjeno da bi se isključilo slučajno preskakanje jedne od grana od strane programera when prilikom usklađivanja sa determinisanim slučajevima sličnim enum-ima i prolaza kroz tipove iz Unije. Drugim rečima, ovakav kod više neće raditi bez navođenja još jednog when (when Char) ili definisanja else-grane:
a = 1 || ‘x’ || "foo"
case a
when Int32
# …
when String
# …
kraj
Opcija kompajlera disable_overflow više nije dostupna. Za operacije s prelivanjem koristite metode &+, &-, &*.
Array#fill sada leti brže od metka, zahvaljujući zameni glupog ciklusa sa jednim jednostavnim memset;
Menadžer šardova (paketa), koji se, koliko to paradoxno zvučalo, zovu shards, sada koristi brži i efikasniji algoritam za zadovoljenje zavisnosti Molinillo, posuđen iz CocoaPods (Swift) i Builder (Ruby).
Dodana podrška LLVM 10, što bi u teoriji trebalo da donese određeni porast performansi, stabilnosti itd.
… i mnoge druge, po mom subjektivnom mišljenju, manje značajne poboljšanja.
Treba napomenuti da je Crystal jezik izgrađen na LLVM-u koji omogućava pisanje aplikacija ponekad brže, jednostavnije i sažetije nego na njegovim interpretiranim "rođacima", a pritom generira prilično brzu binarnu datoteku. U usporedbi s Golangom, Crystal se ističe kao potpuno funkcionalan objektno-orijentirani jezik, s podrškom za generičke tipove i vrlo jednostavnom i razumljivom sintaksom. Svojim namjenama u mnogočemu je sličan Nimu, ali je jasno orijentiran na praktičnu primjenu "ovdje i sada", zbog čega u svom API-ju ima mnoštvo dobro dokumentiranih, korisnih i kvalitetnih alata, koje podržavaju sami developeri jezika i stoga su vrlo stabilni.
Izvor: linux.org.ru
