Rails теперь требует Ruby 3.3.5

October 05, 2026

Теперь минимальная версия Ruby для работы с последними на тек. момент Rails 8.2 - это 3.3.5

Дело в том, что основная причина - уязвимость типа "use-after-free" (использование после освобождения) в реализации WeakKeyMap в Ruby.

WeakKeyMap - это специальная структура данных, которая хранит "слабые" ссылки на ключи.

Если объект-ключ больше нигде не используется, сборщик мусора может его удалить. Баг в Ruby позволял обращаться к уже удалённому объекту, что могло приводить к непредсказуемому поведению и сбоям.

Из-за этого бага Rails не могла полноценно использовать WeakKeyMap для своих нужд. В частности, это касалось работы с пулами соединений. При очистке кэша запросов нужно было перебирать все доступные пулы соединений, что создавало избыточную нагрузку на CPU. Разработчики хотели переписать эту логику так, чтобы перебирать только те пулы, которые действительно используются в текущем контексте. Для этого и нужен был WeakKeyMap с ключами-пулами.

А повысив минимальную версию до Ruby 3.3.5, команда Rails получила возможность:

  • Удалить свою обходную реализацию (polyfill) для WeakKeyMap
  • Использовать "родную" и исправленную версию этой структуры данных
  • Оптимизировать очистку кэша запросов, что снизило нагрузку на CPU

Проще говоря, это был не просто апгрейд ради новой версии, а вынужденная мера для обхода серьёзного бага, которая заодно позволила улучшить производительность Rails.

Сам Pull Request

Rails теперь требует Ruby 3.3.5
Forgejo 17 ➜http/1 в Go 1.27 ➜Aнонс Firefox Enterprise ➜Rails теперь требует Ruby 3... ➜Меньше магии в роутах Rails ➜MySQL 26.10.0 Ранний Доступ ➜Новости Git 2.56.0 ➜MariaDB Server 13.0.2 ➜Релиз Rspamd 4.2.0 ➜Вышел Gnome 51 ➜Ruby 4.0.7 ➜Релиз Immich 3.2.0 ➜Отмена претензий Microsoft ... ➜Новая версия htmx ➜Nginx 1.35.1 ➜