Rilaxx tal-lingwa ta' programmar Crystal 1.5

Ġie ppubblikat ir-rilaxx tal-lingwa ta 'programmar Crystal 1.5, li l-iżviluppaturi tagħha qed jippruvaw jgħaqqdu l-konvenjenza tal-iżvilupp fil-lingwa Ruby mal-karatteristika ta' prestazzjoni għolja tal-applikazzjoni tal-lingwa C. Is-sintassi ta' Crystal hija qrib, iżda mhux kompatibbli b'mod sħiħ ma', Ruby, għalkemm xi programmi Ruby jaħdmu mingħajr modifika. Il-kodiċi tal-kompilatur huwa miktub fi Crystal u mqassam taħt il-liċenzja Apache 2.0.

Il-lingwa tuża verifika tat-tip statiku, implimentata mingħajr il-ħtieġa li tispeċifika b'mod espliċitu t-tipi ta 'varjabbli u argumenti tal-metodu fil-kodiċi. Il-programmi Crystal huma kkompilati f'fajls eżekutibbli, b'macros evalwati u kodiċi ġġenerat fil-ħin tal-kompilazzjoni. Fil-programmi Crystal, huwa possibbli li tikkonnettja rbit miktuba f'Ċ. Il-parallelizzazzjoni tal-eżekuzzjoni tal-kodiċi titwettaq bl-użu tal-kelma prinċipali "spawn", li tippermettilek tmexxi kompitu fl-isfond b'mod asinkroniku, mingħajr ma timblokka l-ħajt prinċipali, fil-forma ta 'ħjut ħfief imsejħa fibri.

Il-librerija standard tipprovdi sett kbir ta 'funzjonijiet komuni, inklużi għodod għall-ipproċessar ta' CSV, YAML, u JSON, komponenti għall-ħolqien ta 'servers HTTP, u appoġġ WebSocket. Matul il-proċess ta 'żvilupp, huwa konvenjenti li tuża l-kmand "plays tal-kristall", li jiġġenera interface tal-web (localhost:8080 b'mod awtomatiku) għall-eżekuzzjoni interattiva tal-kodiċi fil-lingwa Crystal.

Bidliet ewlenin:

  • В компилятор добавлена проверка соответствия имён аргументов в реализации абстрактного метода и в его определении. В случае несоответствия имён теперь выводится предупреждение: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— Warning: positional parameter ‘name’ corresponds to parameter ‘number’ of the overridden method FooAbstract#foo(number : Int32), which has a different name and may affect named argument passing
  • При присвоении аргументу нетипизированного метода значения переменной, данный аргумент теперь ограничивается типом этой переменной. class Foo @x : Int64 def initialize(x) @x = x # параметр x получит тип @x end end
  • Разрешено добавление аннотаций в параметры методов или макросов. def foo(@[MaybeUnused] x); end # OK
  • Добавлена поддержка использования констант в качестве индексов и имён в кортежах. KEY = «s» foo = {s: «String», n: 0} puts foo[KEY].size
  • В API File для удаления файлов и каталогов добавлены новые методы File#delete? и Dir#delete?, возвращающие false в случае отсутствия файла или каталога.
  • Усилена защита метода File.tempfile, который теперь не допускает нулевые символы в стоках, формирующих имя файла.
  • Добавлена переменная окружения NO_COLOR, отключающая выделение цветом в выводе компилятора и интерпретатора.
  • Значительно улучшена работа в режиме интерпретатора.

Sors: opennet.ru

Żid kumment