Ruby 3.1 поддерживает совместимость с Ruby 3.0 и добавляет много новых фич. Главная из них — компилятор YJIT. Он выключен по умолчанию, так как является экспериментальной функцией и доступен только для Unix-подобных x86-64-систем. Чтобы его активировать, нужно указать --yjit в командной строке при компиляции.
Разработчики языка добавили полностью переписанный дебагер debug.gem. Он больше не замедляет приложение при отладке, а ещё поддерживает удалённую работу и мультипроцессный и мультипотоковый режим.
Места ошибок теперь подсвечиваются с помощью error_highlight. Но поддерживается только NameError. Эта функция включена по умолчанию — чтобы её отключить, нужно указать в командной строке --disable-error_highlight.
В IRB встроили автодополнение кода. А если у функции или файла есть документация, то её фрагмент появится рядом.
Значения в хэш-литералах и ключевых аргументах могут быть опущены.
Pin-оператор в поиске по образцу теперь принимает выражение.
Подробный список изменений можно посмотреть на официальном сайте Ruby.
Вот как на это отреагировали пользователи Reddit:
«Выпускать под Новый год… Опасная игра».
«Выглядит как приятный подарок для разработчиков на Ruby, мои поздравления команде Ruby. Я вот только думаю, какие планы на RBS? Похоже на интересную идею, но пользователи всё никак не могут привыкнуть к нему».
«Рад слышать, что они добавили переписанный и улучшенный дебагер. Прошлый был совсем уж старым, и его производительность всегда была проблемой. Обновление для IRB — тоже классно. Я думаю, что эти изменения помогут справиться с потерей интереса к Ruby со стороны сообщества, ведь главными проблемами были экосистема, которую никак не поддерживали, и нехватка новых фич».