Avalikustatud on programmeerimiskeele Crystal 1.6 versioon, mille arendajad püüavad ühendada Ruby arendamise mugavust ning C keele kõrget rakenduste jõudlust. Crystal'i süntaks sarnaneb Ruby’le, kuid ei ole temaga täielikult ühilduv, kuigi ilma ümberkirjutamiseta töötab mõni Ruby programm. Kompilaatori kood on kirjutatud Crystal’is 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:
- Ülekoormuse loogika on muutunud — tüübiühenduste ülekoormust vaadates arvestatakse nüüd enne üksikute tüüpidega. Näiteks käivitamine allolevat kooditükki väljastab nüüd väärtuse true, mitte 'a', nagu varasemates väljaannetes. 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)
- Küsimus #system_echo ja #system_raw meetodite realiseerimisega on muutunud kõigis platvormides, mis on võimaldanud makrode FileDescriptor „cooked_from_tc_mode!“, „noecho_from_tc_mode!“ ja „raw_from_tc_mode!“ ümber klassifitseerida vananenud osaks, ning meetodid #noecho! ja #raw! tagastavad nüüd nil väärtuse, mitte LibC.tcsetattr väärtuse.
- File API-d on parendatud, nüüd tagastatakse sisemine objekt (tagastatakse File::Info asemel Crystal::System::FileInfo).
- Tõlgendaja režiimi töö on paranenud. Tõlgendaja toe lubamiseks saate kasutada käsku „make interpreter = 1“.
- Kompilaatorisse ja standardteeki on lisatud uusi jõudluse optimeerimisi.
- Windowsi platvormi toetust on kompilaatoris parendatud, sealhulgas Windowsile on lisatud interpreteri koostamise võimalus ja Mutex'i tugi.
- Unicode 15.0 tugi on lisatud ja Unicode järjestuste normaliseerimiseks on rakendatud API.
Allikas: opennet.ru
