empty static

Crystal 1.16: Новый шаг к высокой производительности программирования

Crystal 1.16 Выпущен новый релиз языка программирования Crystal 1.16, который стремится сочетать удобство разработки на Ruby с производительностью Си. Синтаксис близок к Ruby, однако полная совместимость отсутствует. Некоторые программы на Ruby могут выполняться без изменений. Код компилятора разработан на самом Crystal и доступен под лицензией Apache 2.0. Crystal поддерживает статическую проверку типов, не требуя явного указания типов в коде. Программы компилируются в исполняемые файлы с вычислением макросов и генерацией кода на этапе компиляции. Crystal поддерживает интеграцию с C-подобными биндингами. Параллельность достигается через ключевое слово "spawn", запускающее легковесные потоки асинхронно.

Стандартная библиотека предлагает функции для обработки CSV, YAML, JSON, создания HTTP-серверов и WebSocket. Команда "crystal play" создаёт web-интерфейс для интерактивного выполнения кода.

Основные изменения в версии 1.16:

  • Экспериментально внедрена поддержка" fiber" в различных контекстах. Это позволяет потокам в одном контексте не блокировать другие.
  • Введён вывод типа элементов в Slice.literal, добавлена поддержка интерпретатора.
  • Улучшены макросы sizeof и alignof для стабильных типов.
  • Добавлены методы: Indexable#find, #find!, EventLoop#wait_readable и #wait_writable.
  • В компиляторе новая длинная опция "-o" — "--output" позволяет указать каталог вместо файла.
  • Генератор документации теперь поддерживает приватные и защищённые объекты.
  • "File.match?" использует новый алгоритм сопоставления файловых путей.
  • Суффиксы "?" и "!" в именах параметров объявлены устаревшими.
  • В Enumerable#sum и #product убрано автоопределение типа для union элементов.
  • Улучшен разбор URL в HTTP::Request.
  • Поддержка набора компиляторов LLVM 20 добавлена.
  • Объявлены устаревшими вызовы LLVM::ABI и LLVM::TargetMachine#abi.