Выпуск языка программирования Crystal 1.5

Опубликован релиз языка программирования Crystal 1.5, разработчики которого пытаются совместить удобство разработки на языке Ruby с высокой производительностью приложений, свойственной языку Си. Синтаксис Crystal близок к языку Ruby, но не полностью совместим с ним, несмотря на то, что без переработки выполняются некоторые ruby-программы. Код компилятора написан на языке Crystal и распространяется под лицензией Apache 2.0.

Keele puhul rakendatakse staatilist tüübikontrolli, mis on ellu viidud ilma vajaduseta näidata selgelt muutujaid ja meetodi argumente koodis. Crystal keeles kirjutatud programmid kompileeruvad täidetavateks failideks, makrode arvutamise ja kodeerimise genereerimisega kompileerimise ajal. Crystal'i programmeeritud programmides on lubatud kasutada C keeles kirjutatud sidemeid. Koodi teostamine toimub 'spawn' võtmesõna abil, mis võimaldab käivitada taustülesande asünkroonilises režiimis, blokeerimata peamist voogu, mis on kergete lõngadena tuntud kui fiiberid (Fiber).

Standardraamatukogu pakub suurepärase komplekti tüüpilisi funktsioone, sealhulgas vahendeid CSV, YAML ja JSON töötlemiseks, komponente HTTP-serverite loomiseks ja WebSocket toetamiseks. Arendusprotsessis on mugav kasutada käsku „crystal play”, mis loob veebiliidese (vaikimisi localhost:8080) koodi interaktiivseks käitamiseks Crystal keeles.

Peamised muudatused:

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

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster