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

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3214
Зарегистрирован: 20.08.2022

#

Выпуск языка программирования Crystal 1.6
Дата публикации:Mon, 17 Oct 2022 13:53:23 +0300


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


В языке применяется статическая проверка типов, реализованная без необходимости явного указания типов переменных и аргументов методов в коде. Программы на Crystal компилируются в исполняемые файлы, с вычислением макросов и генерацией кода во время компиляции. В программах на языке Crystal допускается подключение биндингов, написанных на языке Си. Распараллеливание выполнения кода осуществляется при помощи ключевого слова "spawn", которое позволяет запустить фоновую задачу в асинхронном режиме, не блокируя основной поток, в виде легковесных потоков, именуемых файберами (Fiber).



Стандартная библиотека предоставляет большой набор типовых функций, в том числе средства для обработки CSV, YAML, и JSON, компоненты для создания HTTP-серверов и поддержки WebSocket. В процессе разработки удобно использовать команду "crystal play" которая формирует web-интерфейс (по умолчанию localhost:8080) для интерактивного выполнения кода на языке Crystal.


Основные изменения:
  • Изменена логика перегрузки - при перегрузке объединения типов теперь рассматриваются раньше одиночных типов. Например, выполнение нижеприведённого кода теперь выведет значение true, а не 'а', как было в прошлых выпусках.

    module Foo(T)
    end

    class Bar1
    include Foo(Int32)
    end

    class Bar2
    include Foo(Int32)
    end

    def foo(x : Foo(Int32))
    'a'
    end

    def foo(x : Bar1 | Bar2)
    true
    end

    foo(Bar1.new)



    Для всех платформ реализованы методы #system_echo и #system_raw, что позволило перевести в разряд устаревших макросы FileDescriptor "cooked_from_tc_mode!", "noecho_from_tc_mode!" и "raw_from_tc_mode!", а методы #noecho! и #raw! теперь возвращают nil вместо значения LibC.tcsetattr.
    Улучшен API File, который теперь возвращает внутренний объект (возвращается File::Info вместо Crystal::System::FileInfo).

    Улучшена работа в режиме интерпретатора. Для включения поддержки интерпретатора можно использовать команду "make interpreter = 1".

    В компилятор и стандартную библиотеку включены новые оптимизации производительности.

    Улучшена поддержка платформы Windows в компиляторе, в том числе для Windows добавлена возможность сборки интерпретатора и поддержка Mutex.

    Добавлена поддержка Unicode 15.0 и реализован API для нормализации последовательностей Unicode.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=57926

Жизнь за Нер'зула!

Ответить