Релиз Ruby 3.3: оптимизация производительности и новые возможности для разработчиков

Релиз Ruby 3.3: оптимизация производительности и новые возможности для разработчиков

В новой версии Ruby переписан JIT-компилятор, повышающий скорость выполнения кода.

image

Команда разработчиков анонсировала выход крупного обновления Ruby 3.3.0 - новой основной версии популярного языка программирования, ориентированного на быструю разработку веб-приложений и сервисов. Данный релиз принёс целый ряд нововведений, направленных на повышение производительности интерпретатора CRuby и расширение функциональных возможностей языка.

Несколько важных изменений :

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

Ньютон уронил яблоко. Мы роняем челюсти!

Гравитация научных фактов сильнее, чем вы думаете

Подпишитесь и испытайте интеллектуальное падение