Crystal программалоо тилинин чыгарылышы 1.2

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

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

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

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

  • Башкы класстын элементине жалпы класстын субклассын ыйгаруу мүмкүнчүлүгү кошулду. класс Foo(T); акыркы класс Bar(T) < Foo(T); end x = Foo x = Bar
  • Макрос эми for циклиндеги мааниге көңүл бурбоо үчүн астын сызууну колдоно алат. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end%}
  • Макросторго “file_exists?” ыкмасы кошулду. файлдын бар экендигин текшерүү үчүн.
  • Стандарттык китепкана азыр 128 биттик бүтүн сандарды колдойт.
  • BitArray жана Deque сыяктуу коллекциялар үчүн өркүндөтүлгөн операцияларды ишке ашыруу менен Indexable::Mutable(T) модулу кошулду. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XMLден белгилүү бир аттар мейкиндигин алуу үчүн XML::Node#namespace_definition ыкмасы кошулду.
  • IO#write_utf8 жана URI.encode ыкмалары эскирди жана IO#write_string жана URI.encode_path менен алмаштырылышы керек.
  • 32-бит x86 архитектурасын колдоо экинчи деңгээлге жылдырылды (даяр пакеттер мындан ары түзүлбөйт). ARM64 архитектурасын колдоонун биринчи деңгээлине өтүү даярдалууда.
  • Windows платформасын толук колдоо үчүн иш уланууда. Windows розеткалары үчүн кошумча колдоо.
  • macOS үчүн универсалдуу пакет кошулду, ал x86 процессорлору бар түзмөктөрдө да, Apple M1 чиптери бар жабдууларда да иштейт.

Source: opennet.ru

Комментарий кошуу