Команда разработчиков анонсировала выход крупного обновления Ruby 3.3.0 – новой основной версии популярного языка программирования, ориентированного на быструю разработку веб-приложений и сервисов. Данный релиз принёс целый ряд нововведений, направленных на повышение производительности интерпретатора CRuby и расширение функциональных возможностей языка.
Несколько важных изменений :
- Парсер Prism : Ruby 3.3.0 включает в себя парсер Prism, реализованный в форме Си-библиотеки libprism и gem-пакета на языке Ruby. Этот парсер задействован в интерпретаторе CRuby и предоставляет общедоступное API для разбора кода на Ruby, что делает его полезным для рабочих проектов. Prism отличается хорошей переносимостью и гибкой обработкой ошибок в коде.
- Проект Lrama: Для генерации парсеров в Ruby 3.3.0 используется проект Lrama . Этот проект предоставляет реализацию алгоритма LALR на Ruby и поддерживает определения грамматик, используемые в CRuby. Он также предоставляет расширенные возможности, такие как обработка ошибок и параметризированные правила.
- Улучшение JIT-компилятора YJIT: JIT-компилятор YJIT был значительно оптимизирован в этой версии Ruby. YJIT разрабатывается командой Shopify для увеличения производительности Ruby-программ, использующих фреймворк Rails и выполняющих много методов. Новый YJIT применяет версионирование базовых блоков (LBBV – Lazy Basic Block Versioning) вместо обработки методов целиком и написан на Rust. Это значительно улучшило производительность Ruby-приложений.
- Новый JIT-компилятор RJIT: Ruby 3.3.0 вводит новый JIT-компилятор под названием RJIT. Он полностью написан на Ruby и заменяет ранее использованный MJIT. RJIT поддерживает только архитектуру x86-64 и Unix-подобные платформы, и он не требует компиляции на C.
- Планировщик потоков “M:N”: Эта версия Ruby включает планировщик потоков “M:N”, который позволяет эффективно использовать ограниченное количество потоков операционной системы для обработки потоков в коде на Ruby. Это может уменьшить накладные расходы на создание и управление потоками. По умолчанию используется 8 потоков операционной системы.
- Улучшения в оболочке IRB: Оболочка интерактивных вычислений IRB (REPL) получила несколько улучшений, включая режим отладки, поддержку многостраничного просмотра вывода команд, а также экспериментальную поддержку автоматического дополнения ввода.
- Другие изменения: В Ruby 3.3.0 объявлено устаревшим использование метода “it” без аргументов в блоке без параметров. Также добавлено предупреждение при указании определенных gem-пакетов в “require”, если они не добавлены в Gemfile или gemspec.
Код проекта распространяется
Public Release.