Выпущен новый релиз языка программирования 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.