Выпуск мовы праграмавання Crystal 1.2

Апублікаваны рэліз мовы праграмавання Crystal 1.2, распрацоўшчыкі якога спрабуюць сумясціць зручнасць распрацоўкі на мове Ruby з высокай прадукцыйнасцю прыкладанняў, уласцівай мове Сі. Сінтаксіс Crystal блізкі да мовы Ruby, але не цалкам сумяшчальны з ім, нягледзячы на ​​тое, што без перапрацоўкі выконваюцца некаторыя ruby-праграмы. Код кампілятара напісаны на мове Crystal і распаўсюджваецца пад ліцэнзіяй Apache 2.0.

У мове прымяняецца статычная праверка тыпаў, рэалізаваная без неабходнасці відавочнага ўказання тыпаў зменных і аргументаў метадаў у кодзе. Праграмы на Crystal кампілююцца ў выкананыя файлы, з вылічэннем макрасаў і генерацыяй кода падчас кампіляцыі. У праграмах на мове Crystal дапушчаецца падлучэнне біндзінгаў, напісаных на мове Сі. Распаралельванне выканання кода ажыццяўляецца пры дапамозе ключавога слова "spawn", якое дазваляе запусціць фонавую задачу ў асінхронным рэжыме, не блакуючы асноўны струмень, у выглядзе легкаважных струменяў, названых файберамі (Fiber).

Стандартная бібліятэка дае вялікі набор тыпавых функцый, у тым ліку сродкі для апрацоўкі CSV, YAML, і JSON, кампаненты для стварэння HTTP-сервераў і падтрымкі WebSocket. У працэсе распрацоўкі зручна выкарыстоўваць каманду "crystal play" якая фармуе web-інтэрфейс (па змаўчанні localhost:8080) для інтэрактыўнага выканання кода на мове Crystal.

Асноўныя змены:

  • Дададзена магчымасць прызначэння падкласа абагульненага класа элементу бацькоўскага класа. class Foo(T); end class 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-разрадных цэлых лікаў.
  • Дададзены модуль Indexable::Mutable(T) з рэалізацыяй пашыраных аперацый для калекцый, такіх як BitArray і Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Дададзены метад XML::Node#namespace_definition для вымання спецыфічнай прасторы імёнаў з XML.
  • Аб'яўлены састарэлымі метады IO#write_utf8 і URI.encode, замест якіх варта выкарыстоўваць IO#write_string і URI.encode_path.
  • На другі ўзровень перамешчаная падтрымка 32-разраднай архітэктуры x86 (гатовыя пакеты больш не фармуюцца). Рыхтуецца пераклад на першы ўзровень падтрымкі архітэктуры ARM64.
  • Прадоўжана праца па забеспячэнні паўнавартаснай падтрымай платформы Windows. Дададзена падтрымка Windows-сокетаў.
  • Для macOS дададзены ўніверсальны пакет, якія працуюць як на прыладах з працэсарамі x86, так і на абсталяванні з чыпам Apple M1.

Крыніца: opennet.ru

Дадаць каментар