Ruby 3.1 поддерживает совместимость с Ruby 3.0 и добавляет много новых фич. Главная из них — компилятор YJIT. Он выключен по умолчанию, так как является экспериментальной функцией и доступен только для Unix-подобных x86-64-систем. Чтобы его активировать, нужно указать --yjit в командной строке при компиляции.
Разработчики языка добавили полностью переписанный дебагер debug.gem. Он больше не замедляет приложение при отладке, а ещё поддерживает удалённую работу и мультипроцессный и мультипотоковый режим.

Места ошибок теперь подсвечиваются с помощью error_highlight. Но поддерживается только NameError. Эта функция включена по умолчанию — чтобы её отключить, нужно указать в командной строке --disable-error_highlight.
$ ruby test.rb
test.rb:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError)
1.time {}
^^^^^
Did you mean? times
В IRB встроили автодополнение кода. А если у функции или файла есть документация, то её фрагмент появится рядом.

Значения в хэш-литералах и ключевых аргументах могут быть опущены.
{x:, y:} == {x: x, y: y}.
foo(x:, y:) == foo(x: x, y: y)
Pin-оператор в поиске по образцу теперь принимает выражение.
Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a
#=> [[3, 5], [5, 7], [11, 13]]
Подробный список изменений можно посмотреть на официальном сайте Ruby.
Вот как на это отреагировали пользователи Reddit:
«Выпускать под Новый год… Опасная игра».

«Выглядит как приятный подарок для разработчиков на Ruby, мои поздравления команде Ruby. Я вот только думаю, какие планы на RBS? Похоже на интересную идею, но пользователи всё никак не могут привыкнуть к нему».

«Рад слышать, что они добавили переписанный и улучшенный дебагер. Прошлый был совсем уж старым, и его производительность всегда была проблемой. Обновление для IRB — тоже классно. Я думаю, что эти изменения помогут справиться с потерей интереса к Ruby со стороны сообщества, ведь главными проблемами были экосистема, которую никак не поддерживали, и нехватка новых фич».
