On avaldanud programmeerimiskeele Crystal 1.2, mille arendajad üritavad liita Ruby keele arendamise mugavust rakenduste kõrge jõudlusega, mis on iseloomulik C keelele. Crystal'i süntaks on Ruby keelele sarnane, kuid ei ole täielikult ühilduv, hoolimata sellest, et mõned Ruby programmid töötavad ilma ülekoormuseta. Kompilaatori kood on kirjutatud Crystal keeles ja seda levitatakse Apache 2.0 litsentsi alusel.
Keele puhul rakendatakse staatilist tüübikontrolli, mis on ellu viidud ilma vajaduseta näidata selgelt muutujaid ja meetodi argumente koodis. Crystal keeles kirjutatud programmid kompileeruvad täidetavateks failideks, makrode arvutamise ja kodeerimise genereerimisega kompileerimise ajal. Crystal'i programmeeritud programmides on lubatud kasutada C keeles kirjutatud sidemeid. Koodi teostamine toimub 'spawn' võtmesõna abil, mis võimaldab käivitada taustülesande asünkroonilises režiimis, blokeerimata peamist voogu, mis on kergete lõngadena tuntud kui fiiberid (Fiber).
Standardraamatukogu pakub suurepärase komplekti tüüpilisi funktsioone, sealhulgas vahendeid CSV, YAML ja JSON töötlemiseks, komponente HTTP-serverite loomiseks ja WebSocket toetamiseks. Arendusprotsessis on mugav kasutada käsku „crystal play”, mis loob veebiliidese (vaikimisi localhost:8080) koodi interaktiivseks käitamiseks Crystal keeles.
Peamised muudatused:
- Lisatud võimalus määrata vanemklassile üldklassile alamklass. class Foo(T); end class Bar(T) < Foo(T); end x = Foo x = Bar
- Makros võimaldab nüüd ignoreerida väärtust tsüklis „for” kasutades allajoonet. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
- Makrosse on lisatud meetod „file_exists?” faili olemasolu kontrollimiseks.
- Standardraamatukogus on rakendatud 128-bitiste täisarvude tugi.
- Lisatud moodul Indexable::Mutable(T) koos laiendatud toimingute rakendamisega kogumitele, nagu BitArray ja Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
- Lisatud meetod XML::Node#namespace_definition spetsiifilise nimesüsteemi ekstraheerimiseks XML-ist.
- Rikastavad meetodid IO#write_utf8 ja URI.encode, mille asemel tuleks kasutada IO#write_string ja URI.encode_path.
- 32-bitise x86 arhitektuuri tugi on viidud teisele tasemele (valmis pakette enam ei loo). Töö käib ARM64 arhitektuuri esimeseks tasemeks toimetamiseks.
- Jätkatakse Windows platvormi täisväärtusliku toe tagamise tööd. Lisatud tugi Windowsi soketitele.
- macOS-ile on lisatud universaalne pakett, mis töötab nii x86 protsessoritega seadmetes kui ka Apple M1 kiibiga riistvaras.
Allikas: opennet.ru
