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

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

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

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

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

  • Тартибдиҳанда барои мувофиқати номҳои аргументҳо ҳангоми татбиқи усули абстрактӣ ва таърифи он чек илова кардааст. Агар номувофиқатии ном мавҷуд бошад, ҳоло огоҳӣ дода мешавад: синфи абстрактӣ FooAbstract абстракт def foo(рақам: Int32) : Нил охири синфи Foo < FooAbstract def foo(ном : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— Огоҳӣ: параметри мавқеъи 'ном' ба параметри 'рақам'-и усули аз нав муайяншуда FooAbstract#foo(рақам: Int32) мувофиқат мекунад, ки номи дигар дорад ва метавонад ба интиқоли аргументи номбаршуда таъсир расонад
  • Ҳангоми таъин кардани аргумент ба усули номатлуб ба арзиши тағирёбанда, аргумент ҳоло бо навъи он тағирёбанда маҳдуд мешавад. class Foo @x: Int64 def initialize(x) @x = x # параметри x чоп карда мешавад @x end end
  • Ба шумо имкон медиҳад, ки ба параметрҳои усулҳо ё макросҳо эзоҳҳо илова кунед. def foo(@[MaybeUnused] x); хотима # Хуб
  • Дастгирии иловашуда барои истифодаи доимӣ ҳамчун индексҳо ва номҳо дар наворҳо. KEY = "s" foo = {s: "String", n: 0} мегузорад foo[KEY].size
  • Усулҳои нави File#delete? ба File API барои нест кардани файлҳо ва директорияҳо илова карда шуданд. ва Dir#delete?, ки агар файл ё директория мавҷуд набошад, бардурӯғ бармегардонад.
  • Муҳофизати усули File.tempfile пурзӯр карда шуд, ки ҳоло он аломатҳои нулро дар сатрҳое, ки номи файлро ташкил медиҳанд, иҷозат намедиҳад.
  • Тағйирёбандаи муҳити NO_COLOR иловашуда, ки равшанкунии рангро дар баромади компилятор ва тарҷумон ғайрифаъол мекунад.
  • Кор дар режими тарчумон хеле бехтар гардид.

Манбаъ: opennet.ru

Илова Эзоҳ