Notika par Crystal programmēšanas valodas 1.0 iznākšanu. Šis izlaidums tiek uzskatīts par pirmo nozīmīgo iznākumu, kas apkopo astoņu gadu darbu un iezīmē valodas stabilizāciju un gatavību izmantošanai darba projektos. 1.x versijā tiks nodrošināta atpakaļsaderība un garantēts, ka valodas un standarta bibliotēkas izmaiņas negatīvi neietekmēs esošā koda kompilāciju un darbību.
1.0.y izlaidumi iekļaus tikai labojumus, bet 1.x.0 versijas piedāvās jaunas funkcionalitātes un būtiskas izmaiņas, saglabājot saderību ar kodu. Jaunas idejas un potenciāli nesaderīgas izmaiņas tiks attīstītas atsevišķā zarā, uz kura pamata turpmāk tiks veidots Crystal 2.0 izlaidums. Dažas iespējas Crystal 1.0 ir izsludinātas kā priekšlaicīgas, un, neskatoties uz to, ka tās atrodas 1.0 versijā, tās nav oficiāli atbalstītas. Starp šādām iespējām ir vienlaicīga darbība, darbs Windows platformā un izmantošana ARM procesoru sistēmās.
Atgādinām, ka Crystal izstrādātāji cenšas apvienot Ruby izstrādes ērtumu ar augstu veiktspēju, kas raksturīga C valodai. Crystal sintakse ir līdzīga Ruby, taču tā nav pilnībā saderīga, neskatoties uz to, ka dažas Ruby programmas darbojas bez pārrakstīšanas. Kompilatora kods ir uzrakstīts Crystal valodā un tiek izplatīts saskaņā ar Apache 2.0 licenci.
Valodā tiek izmantota statiska tipu pārbaude, kas tiek īstenota bez nepieciešamības skaidri norādīt tipu mainīgajiem un metožu argumentiem kodā. Programmas, kas rakstītas Crystal, tiek kompilētas izpildāmās failēs, ar makro aprēķinu un koda ģenerēšanu kompilācijas laikā. Crystal valodas programmās ir atļauts izmantot saišu bibliotēkas, kas uzrakstītas C valodā. Koda izpildes paralelizācija tiek veikta, izmantojot atslēgvārdu "spawn", kas ļauj palaist fonisku uzdevumu asinxronā režīmā, nekavējot galveno pavedienu, izmantojot vieglus pavedienus, ko sauc par šķiedrām (Fiber).
Standarta bibliotēka nodrošina plašu tipisku funkciju kopumu, tostarp līdzekļus CSV, YAML un JSON apstrādei, komponentes HTTP serveru izveidei un WebSocket atbalstam. Izstrādes procesā ērti izmantot komandu "crystal play", kas veido tīmekļa interfeisu (pa noklusējumu localhost:8080) interaktīvai koda izpildei Crystal valodā.
Galvenās izmaiņas:
- Kārtu tipiem ir atļauts indeksa piekļuvi dažāda veida elementiem, jo kompilators ir informēts par katra elementa tipu. Piemēram: tuple = {1, "hello", 'x'} v = tuple[0..1] # atgriezīs {1, "hello"} typeof(v) # => Tuple(Int32, String)
- Virknēs un simbolu literālos ir aizliegts izmantot stūru saīsinājumus Unicode escape secībās, piemēram, "\uD834". Gadījumiem, kad jākodē nejauši vērtības, jāizmanto notācija "\x".
- Standarta bibliotēkā ir noņemta ievērojama daļa definīciju, makro un metožu, kas iepriekš bija atzīmēti kā novecojuši. Izņemot metodes Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill utt.
- Makrosos getter un property tagad obligāti jānorāda atgriezeniskā tipa.
- Noklusējuma noapaļošanas metode ir mainīta uz TIES_EVEN ("bankiera noapaļošana", līdz tuvākajam vesela skaitļa, bet robežsituācijās līdz tuvākajam pāra skaitlim). Number#round ir pievienots参数 RoundingMode, kas ļauj izvēlēties noapaļošanas metodi. Pieejamās metodes ir: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
- Kolekcijās ir nodrošināta Enumerable#flat_map un Iterator#flat_map darbība ar sajauktiem elementu tipiem.
- Sekvencēs Enum seriālizācija tagad izmanto simbolu reprezentāciju ar pasvītrojumus.
- Tipi, kas definēti XML modulī, ir pārcelti no struct uz class.
- Drošības apsvērumu dēļ ir pārtraukta Cookie nosaukumu dekodēšana, kā arī Cookie vērtību kodēšana un dekodēšana (pārkodēšanu uzņemas ietvari un lietojumprogrammas). HTTP::Cookies.from_headers metode ir sadalīta divos veidos. serveriem un klientiem.
Avots: opennet.lv
