Kutolewa kwa lugha ya programu ya Crystal 1.0 kulifanyika. Toleo hili limetiwa alama kuwa toleo la kwanza muhimu, ambalo lilifanya muhtasari wa miaka 8 ya kazi na kuashiria uthabiti wa lugha na utayari wake kwa matumizi katika miradi ya kufanya kazi. Tawi la 1.x litadumisha upatanifu wa nyuma na kuhakikisha kuwa hakuna mabadiliko kwenye lugha au maktaba ya kawaida ambayo yanaathiri vibaya uundaji na uendeshaji wa msimbo uliopo.
Matoleo ya 1.0.y yatajumuisha marekebisho madogo tu, huku matoleo ya 1.x.0 yakianzisha utendaji kazi mpya na mabadiliko makubwa huku yakidumisha utangamano wa msimbo. Mawazo mapya na mabadiliko ambayo huenda hayaendani yatatengenezwa katika tawi tofauti, ambalo baadaye litakuwa msingi wa toleo la Crystal 2.0. Baadhi ya vipengele vya Crystal 1.0 vimetangazwa kuwa vya awali na, licha ya kuwepo katika tawi la 1.0, havijafunikwa na usaidizi rasmi. Vipengele hivi ni pamoja na uunganishaji wa nyuzi nyingi, usaidizi wa jukwaa, na Windows, tumia kwenye mifumo yenye vichakataji vya ARM.
Tukumbuke kwamba wasanidi programu wa Crystal wanajaribu kuchanganya urahisishaji wa maendeleo katika lugha ya Ruby na utendaji wa juu wa programu unaopatikana katika lugha ya C. Sintaksia ya Crystal iko karibu na, lakini haiendani kikamilifu na, Ruby, ingawa programu zingine za Ruby huendesha bila kubadilishwa. Nambari ya mkusanyaji imeandikwa kwa Crystal na kusambazwa chini ya leseni ya Apache 2.0.
Lugha hutumia ukaguzi wa aina tuli, unaotekelezwa bila hitaji la kutaja kwa uwazi aina za vigeuzo na hoja za mbinu katika msimbo. Programu za kioo zinajumuishwa katika faili zinazoweza kutekelezwa, na macros tathmini na kanuni zinazozalishwa kwa wakati wa kukusanya. Katika programu za Crystal, inawezekana kuunganisha vifungo vilivyoandikwa kwa C. Uwiano wa utekelezaji wa kanuni unafanywa kwa kutumia neno la msingi la "spawn", ambayo inakuwezesha kuendesha kazi ya nyuma kwa usawa, bila kuzuia thread kuu, kwa namna ya nyuzi nyepesi zinazoitwa nyuzi.
Maktaba ya kawaida hutoa seti kubwa ya vitendaji vya kawaida, ikijumuisha zana za kuchakata CSV, YAML, na JSON, vipengele vya kuunda seva za HTTP, na usaidizi wa WebSocket. Wakati wa mchakato wa ukuzaji, ni rahisi kutumia amri ya "kucheza kwa fuwele", ambayo hutengeneza kiolesura cha wavuti (localhost:8080 kwa chaguo-msingi) kwa utekelezaji mwingiliano wa msimbo katika lugha ya Kioo.
Mabadiliko kuu:
- Nakala huruhusu ufikiaji ulioorodheshwa kwa vipengee vya aina tofauti kwa sababu mkusanyaji anajua kila kipengele ni cha aina gani. Kwa mfano: tuple = {1, “hello”, 'x'} v = tuple[0..1] # itarudisha {1, “hello”} typeof(v) # => Tuple(Int32, String)
- Kamba na herufi halisi haziruhusu matumizi ya vifupisho mbadala katika mfuatano wa kutoroka wa Unicode kama vile "\uD834". Ili kusimba maadili ya kiholela, tumia nukuu ya "\x".
- Katika maktaba ya kawaida, sehemu kubwa ya ufafanuzi, makro, na mbinu ambazo hapo awali ziliwekwa alama kuwa hazitumiki zimeondolewa. Ikijumuisha mbinu Set, StaticArray#[], YAML.new, HTTP::Ombi, HTTP::WebSocket, Hash#delete_if, Process#ua, n.k.
- Geta na macros ya mali sasa zinahitaji aina ya kurudi kubainishwa.
- Mbinu chaguo-msingi ya kuzungusha imebadilishwa hadi TIES_EVEN ("mzunguko wa benki", hadi nambari kamili iliyo karibu zaidi, na kwa hali za mpaka hadi nambari sawia iliyo karibu). Kigezo cha Njia ya Kuzungusha kimeongezwa kwa Nambari# pande zote, kukuruhusu kuchagua mbinu ya kuzungusha. Mbinu zinazopatikana ni pamoja na: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
- Ehesabika#ramani_bapa na Iterator#flat_map hufanya kazi na vipengele vya aina mchanganyiko katika mikusanyiko.
- Ukusanyaji wa mfuatano wa Enum sasa unatumia uwakilishi wa kamba za mstari.
- Aina zilizofafanuliwa katika moduli ya XML zimehamishwa kutoka kwa kutumia muundo hadi darasa.
- Kwa sababu za kiusalama, usimbaji wa majina ya vidakuzi, pamoja na usimbaji na usimbaji wa thamani za vidakuzi, umesitishwa (usimbaji upya sasa ni jukumu la mifumo na programu). Mbinu ya HTTP::Cookies.from_headers imegawanywa katika aina mbili kwa ajili ya seva na wateja.
Chanzo: opennet.ru
