• Моя лента
  • Главная
  • Что важно
  • Медиа и развлечения
Поиск

Stay Curious. Stay Wanture.

© 2026 Wanture. All rights reserved.

  • Terms of Use
  • Privacy Policy
Технологии/Софт
Что изменилось в Ruby 4.0.0 и зачем это разработчикам?

ZJIT, Ruby::Box и новый Ractor — три архитектурных решения для производительности и изоляции кода

31 декабря 2025

—

Explainer

Олег Цветков
banner

Ruby 4.0.0 принёс три ключевых нововведения: ZJIT-компилятор для оптимизации методов, Ruby::Box для изоляции кода в одном процессе и переработанный Ractor для параллелизма без глобальных блокировок. Разбираем, как эти инструменты решают задачи Rails-разработчиков и когда имеет смысл переходить на новую версию языка.

IMG_0987-3

Краткое содержание:

  • Ruby 4.0 получил ZJIT — второй JIT-компилятор, который оптимизирует методы целиком, а не отдельные горячие участки кода. Написан на Rust командой Shopify, работает параллельно с YJIT.
  • ZJIT анализирует метод как граф операций, строит карту зависимостей и оптимизирует весь путь выполнения — объединяет операции, избегает промежуточных аллокаций, улучшает утилизацию кэша процессора.
  • Пока ZJIT экспериментален и медленнее YJIT из-за сложности анализа. Включается флагом --zjit, требует Rust 1.85.0+. К Ruby 4.1 обещают выход из experimental и превосходство над YJIT.

Ruby 4.0: три архитектурных изменения, которые меняют правила игры

Rails-приложение обрабатывает сотни методов на каждый запрос. Глобальные переменные создают невидимые связи между компонентами. Многопоточность в Ruby всё ещё вызывает вопросы. Ruby 4.0, выпущенный 25 декабря 2025 года, адресует все три проблемы.

Вышли три ключевых архитектурных изменения: двойная JIT-компиляция (ZJIT и YJIT), изоляция пространств имён через Ruby::Box и переработанные Ractor для истинного параллелизма. Каждое решает конкретную проблему производительности или изоляции.

Разберём, как эти изменения работают и когда их стоит применять в ваших проектах.

ZJIT: второй JIT-компилятор для оптимизации целых методов

Существующие JIT-компиляторы ускоряют горячие участки кода — те фрагменты, которые выполняются часто. Но что, если можно оптимизировать целые методы, а не отдельные фрагменты?

ZJIT анализирует методы целиком, а не ищет горячие точки в коде. Это другой подход к оптимизации — не точечный, а структурный. Работает рядом с уже знакомым YJIT. Оба написаны на Rust командой из Shopify.

Как работают два компилятора

JIT расшифровывается как Just-In-Time — компиляция в момент выполнения. Вместо того чтобы интерпретировать код построчно каждый раз, компилятор переводит часто используемые участки в машинный код. Выполнение ускоряется в разы.

YJIT работает как умный диспетчер. Он следит, какие участки кода выполняются чаще всего, и оптимизирует их. Это называется trace-based compilation — компиляция по трейсам. Представьте карту города: YJIT находит самые загруженные перекрёстки и улучшает их проходимость.

ZJIT идёт другим путём. Он смотрит не на отдельные перекрёстки, а на весь маршрут от начала до конца. Анализирует метод целиком и строит для него оптимальный план выполнения. Это method-based compilation — компиляция на уровне методов.

Разница похожа на ремонт выбоин на оживлённом перекрёстке versus перестройку всей развязки. Первый быстрее, второй эффективнее.

Когда использовать ZJIT

YJIT показывает лучшие результаты на коде с явными горячими точками. ZJIT эффективен для методов с равномерной нагрузкой — где нет одной горячей точки, зато есть десятки вызовов других методов, проверок условий, обработки данных.

Типичный контроллер в Rails вызывает валидации, обращается к базе данных, формирует ответ. В таком методе сотни операций, и ни одна не доминирует. ZJIT анализирует весь поток и строит оптимизацию с учётом структуры метода.

ZJIT пока экспериментален. Включается флагом --zjit при запуске Ruby. Требует Rust версии 1.85.0 или новее. На данный момент медленнее YJIT, но команда обещает обогнать его по производительности к Ruby 4.1. По умолчанию активен YJIT.

Ruby::Box: изоляция пространств имён в одном процессе

Глобальные переменные, константы, определения классов — всё это живёт в общем пространстве Ruby-процесса. Два разных модуля могут случайно конфликтовать. Тесты могут влиять друг на друга. Обновить зависимость в работающем приложении — риск.

Ruby::Box создаёт изолированные пространства имён внутри одного процесса. Каждый "бокс" имеет свои глобальные переменные, константы и определения классов. Код в одном боксе не видит и не может случайно изменить данные в другом.

Зачем нужна изоляция

Представьте веб-сервер приложений, который обрабатывает запросы. Сейчас каждый worker-процесс изолирован на уровне операционной системы. Это надёжно, но требует много памяти.

Ruby::Box позволяет запускать несколько изолированных обработчиков в одном процессе. Они разделяют память, но не могут повлиять друг на друга через глобальное состояние.

Практические сценарии использования:

  • Изоляция тестов: каждый тест запускается в отдельном боксе, никаких побочных эффектов
  • Постепенная замена кода: старая и новая версии работают параллельно в разных боксах
  • Обновление зависимостей без перезапуска: загрузить новую версию gem в отдельный бокс
  • Безопасность: выполнить недоверенный код в изолированном пространстве

Как использовать Ruby::Box

Ruby::Box — экспериментальная функция. Активируется через переменную окружения:

RUBY_BOX=1 ruby app.rb

Пример создания изолированного пространства:

box = Ruby::Box.new
box.eval("MY_CONST = 42")
box.eval("puts MY_CONST") # => 42
puts MY_CONST # => NameError: константа не определена

Боксы позволяют явно управлять тем, какие данные передаются между изолированными пространствами. Это даёт компилятору возможности для дополнительных оптимизаций и анализа кода.

Переработанные Ractor: истинный параллелизм без боли

Ruby всегда был однопоточным в плане выполнения кода — Global Interpreter Lock (GIL) не позволял двум потокам выполнять Ruby-код одновременно. Ractor появились как решение, но API был сырым, производительность — спорной.

Ruby 4.0 переработал Ractor с нуля. Новый API, оптимизированные структуры данных, меньше конфликтов при блокировках, лучшая утилизация кэша процессора. В следующем релизе Ractor планируют перевести в разряд стабильных возможностей.

Что изменилось в Ractor

Старый API с методами Ractor.yield и Ractor#take удалён. Вместо него появился Ractor::Port — явный механизм коммуникации между акторами. Это делает потоки данных видимыми и предсказуемыми.

Добавлен метод Ractor.shareable_proc для упрощения совместного доступа к объектам Proc из разных акторов. Раньше это требовало сложных трюков с замораживанием объектов.

Оптимизации под капотом:

  • Сокращены конфликты при выставлении глобальных блокировок
  • Улучшена утилизация кэша процессора
  • Оптимизированы структуры данных для параллельного доступа

Когда Ractor решает проблему

Ractor полезны для CPU-интенсивных задач, которые можно распараллелить:

  • Обработка больших объёмов данных (парсинг, трансформации)
  • Параллельные вычисления (анализ, агрегация)
  • Фоновые задачи, которые не должны блокировать основной поток

Для I/O-задач (запросы к базе, HTTP-вызовы) лучше подходят обычные потоки или Fiber — там узким местом является ожидание, а не вычисления.

Важно: Ractor всё ещё требуют осторожности. Не все gem'ы совместимы с изолированной моделью памяти. Тестируйте на реальных задачах.

Как три изменения работают вместе

ZJIT оптимизирует выполнение методов. Ruby::Box изолирует пространства имён. Ractor обеспечивает параллелизм. Вместе они решают три фундаментальные проблемы динамических языков: производительность, изоляцию и масштабирование.

Практический сценарий: веб-приложение на Rails с высокой нагрузкой.

  • ZJIT ускоряет контроллеры и сервисные объекты с равномерной нагрузкой
  • Ruby::Box позволяет запустить несколько версий приложения в одном процессе для A/B-тестирования
  • Ractor обрабатывают фоновые задачи параллельно, не блокируя обработку запросов

Это не серебряная пуля. Каждая технология решает конкретную проблему. Но вместе они дают Ruby инструменты для задач, которые раньше требовали других языков.

Что нужно для миграции на Ruby 4.0

Ruby 4.0 — первый крупный релиз за три года. Включает множество изменений помимо трёх архитектурных. Вот на что обращать внимание:

Проверьте совместимость gem'ов. Все три новые возможности (ZJIT, Ruby::Box, Ractor) экспериментальные. Не все библиотеки готовы к изолированной памяти или новым API.

Протестируйте на staging-окружении. ZJIT может не ускорить ваше приложение. Ruby::Box может конфликтовать с метапрограммированием. Ractor требуют рефакторинга кода. Проверяйте метрики производительности и стабильности.

Начните с YJIT. Он стабилен, активен по умолчанию, и даёт прирост производительности для большинства приложений. ZJIT оставьте для экспериментов.

Попробуйте Ruby::Box для изоляции тестов. Это наименее рискованный способ познакомиться с новой возможностью. Если тесты работают корректно — расширяйте применение.

Ractor пока не для production. Дождитесь стабилизации в Ruby 4.1, если у вас нет критической необходимости в параллелизме прямо сейчас.

Дополнительные улучшения в Ruby 4.0

Помимо трёх архитектурных изменений, в релизе:

  • Логические операторы на следующей строке — улучшение читаемости кода
  • Методы Array#find и Array#rfind для эффективного поиска элементов
  • Классы Set и Pathname теперь встроенные, не требуют require
  • Метод instance_variables_to_inspect для контроля вывода при отладке
  • Прекращена поддержка старых версий MSVC в Windows (требуется Visual Studio 2015+)
  • Расширены возможности базовых классов: Binding, Enumerator, Fiber, IO, Thread и других

С версии Ruby 3.4.0 изменено 3889 файлов, добавлено 230 769 строк, удалено 297 003 строки.

Итого: Ruby учится оптимизировать не точки, а системы

Ruby 4.0 показывает эволюцию языка от локальных улучшений к системному подходу. ZJIT оптимизирует не фрагменты, а целые методы. Ruby::Box изолирует не процессы, а пространства имён. Ractor дают не псевдопараллелизм, а истинное одновременное выполнение.

Для Ruby-разработчиков это означает новые возможности для решения задач, которые раньше требовали других языков или архитектурных компромиссов. Не все изменения готовы к production, но направление ясно.

Оцените применимость в ваших проектах. Протестируйте на реальных задачах. Подготовьтесь к миграции. Ruby 4.0 открывает новые возможности для тех, кто готов их использовать.

О чём это

  • Explainer/
  • Олег Цветков/
  • Технологии/
  • Софт

Лента

    iPhone 18 Pro получит переменную диафрагму и AI‑режим Siri в iOS 27

    Apple готовит переменную диафрагму и AI‑режим Siri в iPhone 18 Pro для iOS 27

    Алина Джафарова3 дня назад

    vivo TWS 5i запущены: 50 часов работы, Bluetooth 5.4

    27 апреля 2026 года компания vivo анонсировала в Китае бюджетные беспроводные наушники TWS 5i с автономией до 50 часов, Bluetooth 5.4, двойным подключением и быстрой зарядкой 10 минут = 4 часа воспроизведения. В России модель продаётся через параллельный импорт по цене 2200‑2800 рублей, без официальной гарантии, что усложняет сервисное обслуживание.

    vivo TWS 5i запущены: 50 часов работы, Bluetooth 5.4
    Алина Джафарова5 дней назад

    Загрузки VPN в России выросли в 14 раз в 2026 году

    С начала 2026 года загрузки VPN‑приложений в России выросли в 14 раз. В марте россияне скачали более 9,2 млн через Google Play, что в 14 раз больше, чем в марте 2025 года. За первый квартал 2026 года суммарные загрузки достигли 21,27 млн, а за год зафиксировано 35,7 млн скачиваний. Три приложения из топ‑5 собрали по 2,5+ млн загрузок, подтверждая рост спроса после новых правил блокировки VPN‑трафика.

    Загрузки VPN в России выросли в 14 раз в 2026 году
    Алина Джафарова5 дней назад

    Samsung готовит Galaxy Z Fold 8 Wide к летнему запуску

    Samsung готовит к летнему запуску в июле 2026 года три складных смартфона (Galaxy Z Fold 8, Z Fold 8 Wide и Galaxy Z Flip 8). Все модели получат встроенную магнитную систему, аналогичную MagSafe, что решит дефицит совместимых чехлов в России, где в первом квартале продано 29 000 складных устройств. Ожидается анонс 22 июля в Лондоне, детали надёжности шарнира пока не раскрыты.

    Samsung готовит Galaxy Z Fold 8 Wide к летнему запуску
    Алина Джафарова5 дней назад

    Sony проверит цифровые лицензии PS4 и PS5 каждые 30 дней

    С 28 апреля Sony объявила, что цифровые лицензии для игр на консолях PS4 и PS5 будут проверяться каждые 30 дней. После мартовского обновления доступ к купленным онлайн‑играм будет отключаться до следующей синхронизации, если консоль не подключена к сети хотя бы раз в месяц. Физические диски не затронуты, а старые покупки остаются активными.

    Sony проверит цифровые лицензии PS4 и PS5 каждые 30 дней
    Алина Джафарова5 дней назад

    Биологический возраст: VO₂max ≥48 и HRV 50‑66 мс

    Глюкоза <5,0 ммоль/л, сон 7‑9 ч — путь к замедлению старения

    Тимур Красников5 дней назад

    Rox Motor представила гибридный Adamas: 476 л. с., 1 115 км WLTC

    23 апреля 2026 г. на автосалоне в Пекине Rox Motor представила гибридный внедорожник Adamas — 1,5 л двигатель и два электромотора, суммарная мощность 476 л. с., запас хода 1 115 км по WLTC. Электрический диапазон 235 км, разгон 0–100 км/ч за 5,5 с, макс. 190 км/ч. Батарея 70 кВт·ч, быстрая зарядка 100 кВт 0–80 % за 29 мин. Компания объявила о локальном сборе, предзаказы с марта, ожидаются к концу года.

    Rox Motor представила гибридный Adamas: 476 л. с., 1 115 км WLTC
    Виктор Морозов6 дней назад

    MediaTek анонсировала Dimensity 7450X с двойным экраном

    26 апреля 2026 г. MediaTek представила процессоры Dimensity 7450 и Dimensity 7450X – 4‑нм чипы с 8 ядрами (4 Cortex‑A78 до 2,6 ГГц + 4 Cortex‑A55), графикой Mali‑G615 MC2 и поддержкой двойных экранов только в 7450X. Первый смартфон – Motorola Edge 70 – выйдет 29 апреля в Индии, предлагая 5G до 3,27 Гбит/с, камеры до 200 Мп, запись 4K HDR и дисплей до 144 Гц.

    MediaTek анонсировала Dimensity 7450X с двойным экраном
    Михаил Розенберг6 дней назад

    Т‑Банк запустил офлайн‑оплату T‑Pay на iPhone в версии 7.31

    С 27 апреля 2026 года Т‑Банк в приложении версии 7.31 для iPhone внедрил возможность платить через T‑Pay без интернета. После первой онлайн‑транзакции создаётся криптографический сертификат, позволяющий платить без интернета в метро, на парковках и в отдалённых точках. Требования: iOS 16 или новее, Face ID/Touch ID, iPhone 15 Pro и новее поддерживают голосовую активацию.

    Т‑Банк запустил офлайн‑оплату T‑Pay на iPhone в версии 7.31
    Алина Джафарова6 дней назад

    С 1 марта 2026 года кинотеатры ставят титры о вырезке

    С 1 марта 2026 в России вступил в силу закон о традиционных ценностях, обязывающий онлайн‑кинотеатры удалять сцены с ЛГБТ‑тематикой, откровенным сексом, наркотиками и насилием. Платформы «Кинопоиск», IVI и Okko теперь показывают титры о сокращённом времени ролика, а зрители получают версии фильмов без спорных эпизодов, что может спровоцировать отток аудитории к пиратским ресурсам.

    С 1 марта 2026 года кинотеатры ставят титры о вырезке
    Алина Джафарова6 дней назад
    Loading...
Технологии/Софт

Что изменилось в Ruby 4.0.0 и зачем это разработчикам?

ZJIT, Ruby::Box и новый Ractor — три архитектурных решения для производительности и изоляции кода

31 декабря 2025, 12:11

Ruby 4.0.0 принёс три ключевых нововведения: ZJIT-компилятор для оптимизации методов, Ruby::Box для изоляции кода в одном процессе и переработанный Ractor для параллелизма без глобальных блокировок. Разбираем, как эти инструменты решают задачи Rails-разработчиков и когда имеет смысл переходить на новую версию языка.

IMG_0987-3

Краткое содержание

  • Ruby 4.0 получил ZJIT — второй JIT-компилятор, который оптимизирует методы целиком, а не отдельные горячие участки кода. Написан на Rust командой Shopify, работает параллельно с YJIT.
  • ZJIT анализирует метод как граф операций, строит карту зависимостей и оптимизирует весь путь выполнения — объединяет операции, избегает промежуточных аллокаций, улучшает утилизацию кэша процессора.
  • Пока ZJIT экспериментален и медленнее YJIT из-за сложности анализа. Включается флагом --zjit, требует Rust 1.85.0+. К Ruby 4.1 обещают выход из experimental и превосходство над YJIT.

Ruby 4.0: три архитектурных изменения, которые меняют правила игры

Rails-приложение обрабатывает сотни методов на каждый запрос. Глобальные переменные создают невидимые связи между компонентами. Многопоточность в Ruby всё ещё вызывает вопросы. Ruby 4.0, выпущенный 25 декабря 2025 года, адресует все три проблемы.

Вышли три ключевых архитектурных изменения: двойная JIT-компиляция (ZJIT и YJIT), изоляция пространств имён через Ruby::Box и переработанные Ractor для истинного параллелизма. Каждое решает конкретную проблему производительности или изоляции.

Разберём, как эти изменения работают и когда их стоит применять в ваших проектах.

ZJIT: второй JIT-компилятор для оптимизации целых методов

Существующие JIT-компиляторы ускоряют горячие участки кода — те фрагменты, которые выполняются часто. Но что, если можно оптимизировать целые методы, а не отдельные фрагменты?

ZJIT анализирует методы целиком, а не ищет горячие точки в коде. Это другой подход к оптимизации — не точечный, а структурный. Работает рядом с уже знакомым YJIT. Оба написаны на Rust командой из Shopify.

Как работают два компилятора

JIT расшифровывается как Just-In-Time — компиляция в момент выполнения. Вместо того чтобы интерпретировать код построчно каждый раз, компилятор переводит часто используемые участки в машинный код. Выполнение ускоряется в разы.

YJIT работает как умный диспетчер. Он следит, какие участки кода выполняются чаще всего, и оптимизирует их. Это называется trace-based compilation — компиляция по трейсам. Представьте карту города: YJIT находит самые загруженные перекрёстки и улучшает их проходимость.

ZJIT идёт другим путём. Он смотрит не на отдельные перекрёстки, а на весь маршрут от начала до конца. Анализирует метод целиком и строит для него оптимальный план выполнения. Это method-based compilation — компиляция на уровне методов.

Разница похожа на ремонт выбоин на оживлённом перекрёстке versus перестройку всей развязки. Первый быстрее, второй эффективнее.

Когда использовать ZJIT

YJIT показывает лучшие результаты на коде с явными горячими точками. ZJIT эффективен для методов с равномерной нагрузкой — где нет одной горячей точки, зато есть десятки вызовов других методов, проверок условий, обработки данных.

Типичный контроллер в Rails вызывает валидации, обращается к базе данных, формирует ответ. В таком методе сотни операций, и ни одна не доминирует. ZJIT анализирует весь поток и строит оптимизацию с учётом структуры метода.

ZJIT пока экспериментален. Включается флагом --zjit при запуске Ruby. Требует Rust версии 1.85.0 или новее. На данный момент медленнее YJIT, но команда обещает обогнать его по производительности к Ruby 4.1. По умолчанию активен YJIT.

Ruby::Box: изоляция пространств имён в одном процессе

Глобальные переменные, константы, определения классов — всё это живёт в общем пространстве Ruby-процесса. Два разных модуля могут случайно конфликтовать. Тесты могут влиять друг на друга. Обновить зависимость в работающем приложении — риск.

Ruby::Box создаёт изолированные пространства имён внутри одного процесса. Каждый "бокс" имеет свои глобальные переменные, константы и определения классов. Код в одном боксе не видит и не может случайно изменить данные в другом.

Зачем нужна изоляция

Представьте веб-сервер приложений, который обрабатывает запросы. Сейчас каждый worker-процесс изолирован на уровне операционной системы. Это надёжно, но требует много памяти.

Ruby::Box позволяет запускать несколько изолированных обработчиков в одном процессе. Они разделяют память, но не могут повлиять друг на друга через глобальное состояние.

Практические сценарии использования:

  • Изоляция тестов: каждый тест запускается в отдельном боксе, никаких побочных эффектов
  • Постепенная замена кода: старая и новая версии работают параллельно в разных боксах
  • Обновление зависимостей без перезапуска: загрузить новую версию gem в отдельный бокс
  • Безопасность: выполнить недоверенный код в изолированном пространстве

Как использовать Ruby::Box

Ruby::Box — экспериментальная функция. Активируется через переменную окружения:

RUBY_BOX=1 ruby app.rb

Пример создания изолированного пространства:

box = Ruby::Box.new
box.eval("MY_CONST = 42")
box.eval("puts MY_CONST") # => 42
puts MY_CONST # => NameError: константа не определена

Боксы позволяют явно управлять тем, какие данные передаются между изолированными пространствами. Это даёт компилятору возможности для дополнительных оптимизаций и анализа кода.

Переработанные Ractor: истинный параллелизм без боли

Ruby всегда был однопоточным в плане выполнения кода — Global Interpreter Lock (GIL) не позволял двум потокам выполнять Ruby-код одновременно. Ractor появились как решение, но API был сырым, производительность — спорной.

Ruby 4.0 переработал Ractor с нуля. Новый API, оптимизированные структуры данных, меньше конфликтов при блокировках, лучшая утилизация кэша процессора. В следующем релизе Ractor планируют перевести в разряд стабильных возможностей.

Что изменилось в Ractor

Старый API с методами Ractor.yield и Ractor#take удалён. Вместо него появился Ractor::Port — явный механизм коммуникации между акторами. Это делает потоки данных видимыми и предсказуемыми.

Добавлен метод Ractor.shareable_proc для упрощения совместного доступа к объектам Proc из разных акторов. Раньше это требовало сложных трюков с замораживанием объектов.

Оптимизации под капотом:

  • Сокращены конфликты при выставлении глобальных блокировок
  • Улучшена утилизация кэша процессора
  • Оптимизированы структуры данных для параллельного доступа

Когда Ractor решает проблему

Ractor полезны для CPU-интенсивных задач, которые можно распараллелить:

  • Обработка больших объёмов данных (парсинг, трансформации)
  • Параллельные вычисления (анализ, агрегация)
  • Фоновые задачи, которые не должны блокировать основной поток

Для I/O-задач (запросы к базе, HTTP-вызовы) лучше подходят обычные потоки или Fiber — там узким местом является ожидание, а не вычисления.

Важно: Ractor всё ещё требуют осторожности. Не все gem'ы совместимы с изолированной моделью памяти. Тестируйте на реальных задачах.

Как три изменения работают вместе

ZJIT оптимизирует выполнение методов. Ruby::Box изолирует пространства имён. Ractor обеспечивает параллелизм. Вместе они решают три фундаментальные проблемы динамических языков: производительность, изоляцию и масштабирование.

Практический сценарий: веб-приложение на Rails с высокой нагрузкой.

  • ZJIT ускоряет контроллеры и сервисные объекты с равномерной нагрузкой
  • Ruby::Box позволяет запустить несколько версий приложения в одном процессе для A/B-тестирования
  • Ractor обрабатывают фоновые задачи параллельно, не блокируя обработку запросов

Это не серебряная пуля. Каждая технология решает конкретную проблему. Но вместе они дают Ruby инструменты для задач, которые раньше требовали других языков.

Что нужно для миграции на Ruby 4.0

Ruby 4.0 — первый крупный релиз за три года. Включает множество изменений помимо трёх архитектурных. Вот на что обращать внимание:

Проверьте совместимость gem'ов. Все три новые возможности (ZJIT, Ruby::Box, Ractor) экспериментальные. Не все библиотеки готовы к изолированной памяти или новым API.

Протестируйте на staging-окружении. ZJIT может не ускорить ваше приложение. Ruby::Box может конфликтовать с метапрограммированием. Ractor требуют рефакторинга кода. Проверяйте метрики производительности и стабильности.

Начните с YJIT. Он стабилен, активен по умолчанию, и даёт прирост производительности для большинства приложений. ZJIT оставьте для экспериментов.

Попробуйте Ruby::Box для изоляции тестов. Это наименее рискованный способ познакомиться с новой возможностью. Если тесты работают корректно — расширяйте применение.

Ractor пока не для production. Дождитесь стабилизации в Ruby 4.1, если у вас нет критической необходимости в параллелизме прямо сейчас.

Дополнительные улучшения в Ruby 4.0

Помимо трёх архитектурных изменений, в релизе:

  • Логические операторы на следующей строке — улучшение читаемости кода
  • Методы Array#find и Array#rfind для эффективного поиска элементов
  • Классы Set и Pathname теперь встроенные, не требуют require
  • Метод instance_variables_to_inspect для контроля вывода при отладке
  • Прекращена поддержка старых версий MSVC в Windows (требуется Visual Studio 2015+)
  • Расширены возможности базовых классов: Binding, Enumerator, Fiber, IO, Thread и других

С версии Ruby 3.4.0 изменено 3889 файлов, добавлено 230 769 строк, удалено 297 003 строки.

Итого: Ruby учится оптимизировать не точки, а системы

Ruby 4.0 показывает эволюцию языка от локальных улучшений к системному подходу. ZJIT оптимизирует не фрагменты, а целые методы. Ruby::Box изолирует не процессы, а пространства имён. Ractor дают не псевдопараллелизм, а истинное одновременное выполнение.

Для Ruby-разработчиков это означает новые возможности для решения задач, которые раньше требовали других языков или архитектурных компромиссов. Не все изменения готовы к production, но направление ясно.

Оцените применимость в ваших проектах. Протестируйте на реальных задачах. Подготовьтесь к миграции. Ruby 4.0 открывает новые возможности для тех, кто готов их использовать.

О чём это

  • Explainer/
  • Олег Цветков/
  • Технологии/
  • Софт

Лента

    iPhone 18 Pro получит переменную диафрагму и AI‑режим Siri в iOS 27

    Apple готовит переменную диафрагму и AI‑режим Siri в iPhone 18 Pro для iOS 27

    Алина Джафарова3 дня назад

    vivo TWS 5i запущены: 50 часов работы, Bluetooth 5.4

    27 апреля 2026 года компания vivo анонсировала в Китае бюджетные беспроводные наушники TWS 5i с автономией до 50 часов, Bluetooth 5.4, двойным подключением и быстрой зарядкой 10 минут = 4 часа воспроизведения. В России модель продаётся через параллельный импорт по цене 2200‑2800 рублей, без официальной гарантии, что усложняет сервисное обслуживание.

    vivo TWS 5i запущены: 50 часов работы, Bluetooth 5.4
    Алина Джафарова5 дней назад

    Загрузки VPN в России выросли в 14 раз в 2026 году

    С начала 2026 года загрузки VPN‑приложений в России выросли в 14 раз. В марте россияне скачали более 9,2 млн через Google Play, что в 14 раз больше, чем в марте 2025 года. За первый квартал 2026 года суммарные загрузки достигли 21,27 млн, а за год зафиксировано 35,7 млн скачиваний. Три приложения из топ‑5 собрали по 2,5+ млн загрузок, подтверждая рост спроса после новых правил блокировки VPN‑трафика.

    Загрузки VPN в России выросли в 14 раз в 2026 году
    Алина Джафарова5 дней назад

    Samsung готовит Galaxy Z Fold 8 Wide к летнему запуску

    Samsung готовит к летнему запуску в июле 2026 года три складных смартфона (Galaxy Z Fold 8, Z Fold 8 Wide и Galaxy Z Flip 8). Все модели получат встроенную магнитную систему, аналогичную MagSafe, что решит дефицит совместимых чехлов в России, где в первом квартале продано 29 000 складных устройств. Ожидается анонс 22 июля в Лондоне, детали надёжности шарнира пока не раскрыты.

    Samsung готовит Galaxy Z Fold 8 Wide к летнему запуску
    Алина Джафарова5 дней назад

    Sony проверит цифровые лицензии PS4 и PS5 каждые 30 дней

    С 28 апреля Sony объявила, что цифровые лицензии для игр на консолях PS4 и PS5 будут проверяться каждые 30 дней. После мартовского обновления доступ к купленным онлайн‑играм будет отключаться до следующей синхронизации, если консоль не подключена к сети хотя бы раз в месяц. Физические диски не затронуты, а старые покупки остаются активными.

    Sony проверит цифровые лицензии PS4 и PS5 каждые 30 дней
    Алина Джафарова5 дней назад

    Биологический возраст: VO₂max ≥48 и HRV 50‑66 мс

    Глюкоза <5,0 ммоль/л, сон 7‑9 ч — путь к замедлению старения

    Тимур Красников5 дней назад

    Rox Motor представила гибридный Adamas: 476 л. с., 1 115 км WLTC

    23 апреля 2026 г. на автосалоне в Пекине Rox Motor представила гибридный внедорожник Adamas — 1,5 л двигатель и два электромотора, суммарная мощность 476 л. с., запас хода 1 115 км по WLTC. Электрический диапазон 235 км, разгон 0–100 км/ч за 5,5 с, макс. 190 км/ч. Батарея 70 кВт·ч, быстрая зарядка 100 кВт 0–80 % за 29 мин. Компания объявила о локальном сборе, предзаказы с марта, ожидаются к концу года.

    Rox Motor представила гибридный Adamas: 476 л. с., 1 115 км WLTC
    Виктор Морозов6 дней назад

    MediaTek анонсировала Dimensity 7450X с двойным экраном

    26 апреля 2026 г. MediaTek представила процессоры Dimensity 7450 и Dimensity 7450X – 4‑нм чипы с 8 ядрами (4 Cortex‑A78 до 2,6 ГГц + 4 Cortex‑A55), графикой Mali‑G615 MC2 и поддержкой двойных экранов только в 7450X. Первый смартфон – Motorola Edge 70 – выйдет 29 апреля в Индии, предлагая 5G до 3,27 Гбит/с, камеры до 200 Мп, запись 4K HDR и дисплей до 144 Гц.

    MediaTek анонсировала Dimensity 7450X с двойным экраном
    Михаил Розенберг6 дней назад

    Т‑Банк запустил офлайн‑оплату T‑Pay на iPhone в версии 7.31

    С 27 апреля 2026 года Т‑Банк в приложении версии 7.31 для iPhone внедрил возможность платить через T‑Pay без интернета. После первой онлайн‑транзакции создаётся криптографический сертификат, позволяющий платить без интернета в метро, на парковках и в отдалённых точках. Требования: iOS 16 или новее, Face ID/Touch ID, iPhone 15 Pro и новее поддерживают голосовую активацию.

    Т‑Банк запустил офлайн‑оплату T‑Pay на iPhone в версии 7.31
    Алина Джафарова6 дней назад

    С 1 марта 2026 года кинотеатры ставят титры о вырезке

    С 1 марта 2026 в России вступил в силу закон о традиционных ценностях, обязывающий онлайн‑кинотеатры удалять сцены с ЛГБТ‑тематикой, откровенным сексом, наркотиками и насилием. Платформы «Кинопоиск», IVI и Okko теперь показывают титры о сокращённом времени ролика, а зрители получают версии фильмов без спорных эпизодов, что может спровоцировать отток аудитории к пиратским ресурсам.

    С 1 марта 2026 года кинотеатры ставят титры о вырезке
    Алина Джафарова6 дней назад
    Loading...
banner