Состоялся релиз Ruby 3.1.0. Код Ruby распространяется под лицензиями BSD («2-clause BSDL») и «Ruby», которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3.
Некоторые улучшения:
-
Добавлен новый экспериментальный внутрипроцессный JIT-компилятор YJIT. YJIT создан разработчиками платформы электронной коммерции Shopify в рамках инициативы по увеличению производительности Ruby-программ, использующих фреймворк Rails и вызывающих очень много методов. При использовании YJIT зафиксировано увеличение производительности при выполнении теста railsbench на 22%, а теста liquid-render на 39%. YJIT пока ограничен поддержкой unix-подобных ОС на системах с архитектурой x86-64 и отключён по умолчанию (для активации следует указать в командной стоке флаг «–yjit»).
-
Повышена производительность старого JIT-компилятора MJIT. Для проектов, использующих Ruby on Rails, максимальный размер кэша (–jit-max-cache) по умолчанию увеличен со 100 до 10000 инструкций. Прекращено неприменение JIT для методов, включающих более 1000 инструкций. Для поддержки Zeitwerk of Rails сформированный в JIT код больше не отбрасывается, если для событий класса включён TracePoint.
-
В состав включён полностью переписанный отладчик debug.gem. Ранее в качестве отладчика предлагался файл lib/debug.rb, теперь он удалён из базовой поставки.
-
В отчётах обратной трассировки вызовов реализовано наглядное выделение ошибок. Пометка ошибок обеспечивается при помощи встроенного gem-пакета error_highlight. error_highlight включён по умолчанию. Для отключения пометки ошибок можно использовать настройку «–disable-error_highlight».
$ ruby test.rb
test.rb:1:in "<main>": undefined method "time" for 1:Integer (NoMethodError)
1.time {}
^^^^^
Did you mean? times
Перемещено hobbit из development