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

Автор Сообщение
news_bot ®

Стаж: 7 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
25-Июл-2022 18:37

Опубликован релиз языка программирования Crystal 1.5, разработчики которого пытаются совместить удобство разработки на языке Ruby с высокой производительностью приложений, свойственной языку Си. Синтаксис Crystal близок к языку Ruby, но не полностью совместим с ним, несмотря на то, что без переработки выполняются некоторые ruby-программы. Код компилятора написан на языке Crystal и распространяется под лицензией Apache 2.0.
В языке применяется статическая проверка типов, реализованная без необходимости явного указания типов переменных и аргументов методов в коде. Программы на Crystal компилируются в исполняемые файлы, с вычислением макросов и генерацией кода во время компиляции. В программах на языке Crystal допускается подключение биндингов, написанных на языке Си. Распараллеливание выполнения кода осуществляется при помощи ключевого слова "spawn", которое позволяет запустить фоновую задачу в асинхронном режиме, не блокируя основной поток, в виде легковесных потоков, именуемых файберами (Fiber).
Стандартная библиотека предоставляет большой набор типовых функций, в том числе средства для обработки CSV, YAML, и JSON, компоненты для создания HTTP-серверов и поддержки WebSocket. В процессе разработки удобно использовать команду "crystal play" которая формирует web-интерфейс (по умолчанию localhost:8080) для интерактивного выполнения кода на языке Crystal.
Основные изменения:
  • В компилятор добавлена проверка соответствия
    имён аргументов в реализации абстрактного метода и в его определении. В случае несоответствия имён теперь выводится предупреждение:
    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, отключающая выделение цветом в выводе компилятора и интерпретатора.
  • Значительно улучшена работа в режиме интерпретатора.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_crystal
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 04-Май 18:18
Часовой пояс: UTC + 5