Programmeerimiskeele Crystal 1.0 väljaanne on toimunud. Väljaanne tähistab esimest olulisemat versiooni, mis kokku võtab 8 aasta töö ja kuulutab keele stabiliseerumise ning valmiduse kasutamiseks töös projektides. Haru 1.x toetab tagurpidi ühilduvust ning garanteerib, et keele ja tavakogu muutused ei kahjusta olemasoleva koodi koostamist ja toimimist.
Väljaanded 1.0.y sisaldavad vaid parandavaid uuendusi, samas kui versioonid 1.x.0 pakuvad uusi funktsioone ja olulisi muudatusi, säilitades samal ajal ühilduvuse koodiga. Uued ideed ja potentsiaalselt mitteühilduvad muudatused arendatakse eraldi harus, mille baasil hiljem luuakse Crystal 2.0 versioon. Mõned Crystal 1.0 omadused on kuulutatud eelversioniks ja kuigi need on olemas 1.0 harus, ei kuulu need ametliku toe alla. Selliste omaduste hulka kuuluvad ühesuunaline töötamine, töö Windows platvormil ja kasutamine ARM-protsessoritega süsteemides.
Külastame, et Crystal arendajad püüavad ühendada Ruby keele arendamise mugavuse ja C keelele omase rakenduste kõrge jõudluse. Crystal süntaks on sarnane Ruby keelele, kuid mitte täielikult ühilduv, kuigi mõned Ruby programmid töötavad ilma muutmisteta. Kompilaatori kood on kirjutatud Crystal keeles ja levitatakse litsentsi Apache 2.0 all.
Keeles kasutatakse staatilist tüübikontrolli, mis on rakendatud ilma muutuja- ja meetodiargumendi tüüpide selge määratlemise vajaduseta. Crystal keeles kirjutatud programmid kompileeritakse käivitatavateks failideks, makrode arvutamise ja koodi genereerimisega kompileerimise ajal. Crystal keeles lubatakse kasutada C keeles kirjutatud sidumisi. Koodi paralleelse täitmise tagab 'spawn' märksõna, mis võimaldab käivitada taustülesande asünkroonselt, blokeerimata põhivoo, luues kergkaalulisi vooge, tuntud kui kiud (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:
- Tupelites on lubatud indekseeritud juurdepääs erinevat tüüpi elementidele, kuna kompilaatoril on teave iga elementi tüübi kohta. Näiteks: tuple = {1, "hello", 'x'} v = tuple[0..1] # tagastab {1, "hello"} typeof(v) # => Tuple(Int32, String)
- Stringide ja sümbolite literaalides on keelatud kasutada surrogaatlühendeid Unicode'i escape-järjestustes, nagu "\uD834". Juhuslike väärtuste kodeerimiseks tuleks kasutada notatsiooni "\x".
- Standardraamatukogust on eemaldatud suur hulk määratlusi, makrosid ja meetodeid, mis olid varem märgitud vananenuks. Sealhulgas meetodid Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill jms.
- Makrosse, getteritesse ja property'desse on nüüd kohustuslik märkida tagastatava tüübi määramine.
- Vaikimisi ümardamismeetod on muudetud TIES_EVEN-iks ("panganduse ümardamine", lähima täisarvuni, ja piirjuhtumite korral lähima paarisnumbrini). Number#round metoodile on lisatud parameeter RoundingMode, mis võimaldab valida ümardamismeetodi. Saadaval olevate meetodite seas on: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
- Kogudes on tagatud Enumerable#flat_map ja Iterator#flat_map töö segatüüpi elementidega.
- Enum'i järjestuste serialiseerimisel kasutatakse nüüd alamjoontega stringide esitusvormi.
- XML moodulis määratud tüübid on muudetud struct'ilt class'ile.
- Turvalisuse kaalutlustel on lõpetatud küpsiste nimede dekodeerimine ning küpsiste väärtuste kodeerimine ja dekodeerimine (üksteise ülekodeerimine on pandud raamistikute ja rakenduste õlgadele). HTTP::Cookies.from_headers meetod on jagatud kaheks variandiks klientide jaoks. serverite ja klientide jaoks.
Allikas: opennet.ru
