Нашри забони барномасозии Crystal 1.2

Нашри забони барномасозии Crystal 1.2 нашр шуд, ки таҳиягарони он кӯшиш мекунанд, ки роҳати таҳияи забони рубиро бо хосиятҳои баланди иҷрои барномаҳо ба забони Си муттаҳид созанд. Синтаксиси Crystal ба Ruby наздик аст, аммо комилан мувофиқ нест, гарчанде ки баъзе барномаҳои Ruby бидуни тағир кор мекунанд. Рамзи компилятор дар Crystal навишта шудааст ва таҳти иҷозатномаи Apache 2.0 паҳн карда мешавад.

Забон санҷиши навъи статикиро истифода мебарад, ки бидуни зарурати ба таври возеҳ муайян кардани намудҳои тағирёбандаҳо ва аргументҳои метод дар код амалӣ карда мешавад. Барномаҳои кристаллӣ ба файлҳои иҷрошаванда тартиб дода мешаванд, ки макросҳо баҳо дода мешаванд ва код дар вақти тартибдиҳӣ тавлид карда мешавад. Дар барномаҳои Crystal, пайваст кардани пайвандҳои бо C навишташуда имконпазир аст. Параллелизатсияи иҷроиши код бо истифода аз калимаи калидии "spawn" амалӣ карда мешавад, ки ба шумо имкон медиҳад, ки вазифаи пасзаминаро ба таври асинхронӣ, бидуни бастани риштаи асосӣ, дар шакли риштаҳои сабук, ки нах ном доранд, иҷро кунед.

Китобхонаи стандартӣ маҷмӯи васеи вазифаҳои умумиро таъмин мекунад, аз ҷумла асбобҳо барои коркарди CSV, YAML ва JSON, ҷузъҳо барои эҷоди серверҳои HTTP ва дастгирии WebSocket. Дар ҷараёни таҳия, истифодаи фармони "crystal play" қулай аст, ки барои иҷрои интерактивии код бо забони кристалл интерфейси веб (localhost:8080) тавлид мекунад.

Тағйироти асосӣ:

  • Имконияти таъини зеркласси синфи умумӣ ба унсури синфи волидайн илова карда шуд. синфи Foo (T); синфи охири Bar(T) < Foo(T); охири x = Foo x = Бар
  • Макросҳо акнун метавонанд барои нодида гирифтани арзиш дар даври for зерхатро истифода баранд. {% барои _, v, i дар {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

Илова Эзоҳ