Главное Авторские колонки Вакансии Вопросы
49 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Вышел Ruby 4.0.0

25 декабря 2025 года вышел Ruby 4.0.0 — большой релиз, который больше про «усилить фундамент» и открыть новые возможности для производительности и изоляции кода, чем про десятки новых ключевых слов.
Мнение автора может не совпадать с мнением редакции

Главное, что стоит знать обычному разработчику (Rails/скрипты/сервисы) — две крупные новинки и несколько изменений, которые реально могут всплыть при апгрейде.

1) Ruby Box (экспериментальная фича) Появился Ruby:Box — механизм изоляции «определений» внутри процесса: можно отделять monkey patch’и, изменения глобальных/классовых переменных, определения классов/модулей и даже подключённые нативные/рубишные библиотеки от других «коробок». Включается переменной окружения RUBY_BOX=1. В официальных примерах это предлагают использовать, например, чтобы тесты не ломали друг друга monkey patch’ами или чтобы крутить «blue-green» внутри одного Ruby-процесса.

2) ZJIT — новый JIT-компилятор (пока «поиграться», не «в прод») Ruby 4.0 приносит ZJIT — JIT нового поколения после YJIT. Его можно включить флагом —zjit (или через RubyVM::ZJIT.enable), но разработчики прямо пишут: ZJIT уже быстрее интерпретатора, однако пока не быстрее YJIT, поэтому сейчас это скорее поле для экспериментов и бенчмарков, чем кнопка «ускорить прод». Для сборки Ruby с поддержкой ZJIT нужен Rust версии 1.85+ (если вы собираете Ruby сами).

3) Пара изменений, которые могут неожиданно задеть код

  1. *nil больше не вызывает nil.to_a (как **nil не вызывает nil.to_hash). Если у вас были экзотические трюки с переопределением NilClass#to_a, это место стоит проверить.
  2. Логические операторы &&, ||, and, or в начале строки теперь считаются продолжением предыдущей строки (удобно для форматирования длинных условий «лесенкой»).

4) Обновления вокруг экосистемы (важно для реальных проектов)

  1. В Ruby 4.0 в комплекте идут RubyGems и Bundler версии 4 — это нормальная причина прогнать CI и проверить сборку/деплой, особенно если у вас строгие пайплайны или старые плагины.
  2. Есть и другие заметные обновления стандартных библиотек и «встроенных гемов» (например, обновления вокруг openssl, json и т.д.) — обычно это хорошо, но на проде лучше тестировать заранее.

Если коротко по стратегии обновления: для новых проектов — можно смело начинать на 4.0.0; для рабочих систем — сначала прогон тестов, сборки, деплоя и smoke-проверки, и только потом выкатывать (особенно если есть C-расширения или необычные зависимости).

Уже пробовали Ruby 4.0.0 — что кажется более перспективным для ваших задач: Ruby Box или ZJIT?

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем