Eisiúint na teanga ríomhchlárúcháin Crystal 1.5

Foilsíodh scaoileadh na teanga ríomhchlárúcháin Crystal 1.5, agus tá na forbróirí ag iarraidh áisiúlacht na forbartha sa teanga Ruby a chomhcheangal le tréith ardfheidhmíochta iarratais na teanga C. Tá comhréir Crystal gar do Ruby, ach níl sé ag luí go hiomlán leis, cé go ritheann roinnt clár Ruby gan mhodhnú. Tá an cód tiomsaitheora scríofa i Crystal agus a dháileadh faoi cheadúnas Apache 2.0.

Úsáideann an teanga seiceáil cineál statach, a chuirtear i bhfeidhm gan gá na cineálacha athróg agus argóintí modh a shonrú go sainráite sa chód. Déantar cláir chriostail a thiomsú i gcomhaid inrite, agus déantar macraí a mheasúnú agus gintear cód ag am tiomsaithe. I gcláir Crystal, is féidir ceangail scríofa i C a nascadh. Déantar comhthreomhaireacht ar fhorghníomhú an chóid ag baint úsáide as an eochairfhocal “sceite”, a ligeann duit tasc cúlra a rith go neamhshioncronach, gan bac a chur ar an bpríomhshnáithe, i bhfoirm snáitheanna éadroma ar a dtugtar snáithíní.

Soláthraíonn an leabharlann chaighdeánach sraith mhór feidhmeanna coitianta, lena n-áirítear uirlisí chun CSV, YAML, agus JSON a phróiseáil, comhpháirteanna chun freastalaithe HTTP a chruthú, agus tacaíocht WebSocket. Le linn an phróisis forbartha, tá sé áisiúil an t-ordú "súgradh criostail" a úsáid, a ghineann comhéadan gréasáin (localhost: 8080 de réir réamhshocraithe) chun cód a fhorghníomhú go hidirghníomhach sa teanga Crystal.

Athruithe móra:

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

Foinse: oscailtenet.ru

Add a comment