Ukukhutshwa kolwimi lwenkqubo yeCrystal 1.5

Ukukhutshwa kweCrystal 1.5 ulwimi lwenkqubo luye lwapapashwa, abaphuhlisi abazama ukudibanisa ukulungelelaniswa kophuhliso ngolwimi lwesiRuby kunye neempawu eziphezulu zokusebenza kolwimi lweC. I-syntax yeCrystal isondele, kodwa ayihambelani ngokupheleleyo ne-Ruby, nangona ezinye iinkqubo zeRuby zisebenza ngaphandle kokuguqulwa. Ikhowudi yokudibanisa ibhalwe kwiCrystal kwaye isasazwe phantsi kwelayisensi ye-Apache 2.0.

Ulwimi lusebenzisa ukujonga uhlobo lwe-static, luphunyezwe ngaphandle kwesidingo sokucacisa ngokucacileyo iindidi zeendlela kunye neengxabano zendlela kwikhowudi. Iiprogram zeCrystal zihlanganiswe kwiifayile eziphunyezwayo, kunye ne-macros evavanyiweyo kunye nekhowudi eyenziwe ngexesha lokuqokelela. Kwiinkqubo zeCrystal, kuyenzeka ukudibanisa izibophelelo ezibhalwe kwiC. Ukuhambelana kokusetyenziswa kwekhowudi kuqhutyelwa ngokusebenzisa igama elingundoqo elithi "spawn", elikuvumela ukuba uqhube umsebenzi wangemva ngokulandelelana, ngaphandle kokuthintela intambo ephambili, ngendlela yeentambo ezilula ezibizwa ngokuba yi-fibers.

Ilayibrari eqhelekileyo ibonelela ngesethi enkulu yemisebenzi eqhelekileyo, kubandakanywa nezixhobo zokucubungula i-CSV, i-YAML, kunye ne-JSON, amacandelo okudala iiseva ze-HTTP, kunye nenkxaso yeWebSocket. Ngethuba lenkqubo yophuhliso, kukulungele ukusebenzisa umyalelo "we-crystal play", ovelisa i-interface yewebhu (localhost: 8080 ngokungagqibekanga) ekusebenzeni ngokubambisana kwekhowudi ngolwimi lweCrystal.

Utshintsho oluphambili:

  • В компилятор добавлена проверка соответствия имён аргументов в реализации абстрактного метода и в его определении. В случае несоответствия имён теперь выводится предупреждение: 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, отключающая выделение цветом в выводе компилятора и интерпретатора.
  • Значительно улучшена работа в режиме интерпретатора.

umthombo: opennet.ru

Yongeza izimvo