Crystal 1.0 программалоо тили жеткиликтүү

Crystal 1.0 программалоо тилин чыгаруу болуп өттү. Чыгаруу 8 жылдык иштин жыйынтыгын чыгарган жана тилдин стабилдешүүсүн жана жумушчу долбоорлордо колдонууга даярдыгын белгилеген биринчи олуттуу релиз катары белгиленет. 1.x бутагы артка шайкештикти сактап, тилге же стандарттык китепканага эч кандай өзгөртүүлөр болбошун камсыздайт, алар учурдагы коддун түзүлүшүнө жана иштешине терс таасирин тийгизет.

1.0.y версияларынын чыгарылыштарында анча чоң эмес оңдоолор гана болот, ал эми 1.x.0 версияларында коддордун шайкештигин сактоо менен жаңы функциялар жана олуттуу өзгөрүүлөр киргизилет. Жаңы идеялар жана мүмкүн болгон шайкеш келбеген өзгөртүүлөр өзүнчө тармакта иштелип чыгат, ал кийинчерээк Crystal 2.0 чыгарылышынын негизин түзөт. Crystal 1.0дин кээ бир функциялары алдын ала жарыяланган жана 1.0 тармагында болгонуна карабастан, расмий колдоо менен камтылбайт. Бул функцияларга көп агымдуу башкаруу, платформаны колдоо жана башкалар кирет. Windows, ARM процессорлору бар системаларда колдонулат.

Эске салсак, Crystal иштеп чыгуучулары Ruby тилиндеги иштеп чыгуунун ыңгайлуулугун Си тилине мүнөздүү жогорку колдонмо көрсөткүчтөрү менен айкалыштырууга аракет кылып жатышат. Кристаллдын синтаксиси Rubyге жакын, бирок толугу менен шайкеш келбейт, бирок кээ бир Ruby программалары өзгөртүүсүз иштейт. Компилятордун коду Crystal тилинде жазылган жана Apache 2.0 лицензиясы боюнча таратылган.

Бул тилде өзгөрмөлөрдүн түрлөрүн жана коддогу метод аргументтерин так көрсөтүүнүн зарылдыгы жок ишке ашырылган статикалык типти текшерүү колдонулат. Кристалл программалары аткарылуучу файлдарга компиляцияланат, макростор бааланат жана компиляция учурунда код түзүлөт. Crystal программаларында С тилинде жазылган байланыштарды кошууга болот. Коддун аткарылышын параллелдештирүү "spawn" ачкыч сөзүнүн жардамы менен жүзөгө ашырылат, ал негизги жипти блокировкалоосуз, була деп аталган жеңил жиптер түрүндө фондук тапшырманы асинхрондуу аткарууга мүмкүндүк берет.

Стандарттык китепкана жалпы функциялардын чоң топтомун, анын ичинде CSV, YAML жана JSON менен иштөө куралдарын, HTTP серверлерин куруу үчүн компоненттерди жана WebSocket колдоосун камсыз кылат. Иштеп чыгуу процессинде Crystal тилинде интерактивдүү кодду аткаруу үчүн веб-интерфейстин (демейки боюнча localhost:8080) түзүүчү “кристалл ойнотуу” буйругун колдонуу ыңгайлуу.

Негизги өзгөрүүлөр:

  • Кортеждер ар кандай типтеги элементтерге индекстелген кирүүгө мүмкүндүк берет, анткени компилятор ар бир элементтин кандай түрү экенин билет. Мисалы: tuple = {1, “салам”, 'x'} v = tuple[0..1] # {1, “салам”} typeof(v) # => Tuple(Int32, String) кайтарат
  • Сап жана тамга литералдары "\uD834" сыяктуу Юникоддон качуу ырааттуулугунда суррогат аббревиатураларды колдонууга жол бербейт. Каалаган маанилерди коддоо үчүн "\x" белгисин колдонуңуз.
  • Стандарттык китепканада мурда эскирген деп белгиленген аныктамалардын, макростордун жана методдордун чоң бөлүгү алынып салынган. Анын ичинде Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill ж.б.у.с.
  • Алуучу жана мулк макролору эми кайтаруу түрүн көрсөтүүнү талап кылат.
  • Демейки тегеректөө ыкмасы TIES_EVEN ("банкирдин тегеректөөсү", эң жакын бүтүн санга жана чек арадагы жагдайлар үчүн жуп санга чейин) өзгөртүлдү. RoundingMode параметри Number#roundга кошулуп, тегеректөө ыкмасын тандоого мүмкүндүк берет. Жеткиликтүү ыкмаларга төмөнкүлөр кирет: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • Enumerable#flat_map жана Iterator#flat_map коллекциялардагы аралаш типтеги элементтер менен иштейт.
  • Enum ырааттуулугун сериялаштыруу азыр астын сызылган сап көрсөтүүлөрдү колдонот.
  • XML модулунда аныкталган типтер структураны колдонуудан класска жылдырылды.
  • Коопсуздук максатында, кукилердин аталыштарын декоддоо, ошондой эле кукилердин маанилерин коддоо жана декоддоо токтотулду (кайра коддоо эми фреймворктордун жана тиркемелердин милдети). HTTP::Cookies.from_headers методу эки вариантка бөлүндү: серверлер жана кардарлар.

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster