Вышел Ruby 4.0: новый JIT и экспериментальная изоляция кода Ruby Box. Что еще нового
Новости
Релиз получился и вправду важным
42 открытий1К показов
Состоялся релиз Ruby 4.0. Это достаточно крупное обновление, которое делает язык быстрее, безопаснее и заметно взрослее с точки зрения архитектуры.
В центре релиза сразу две большие новинки: экспериментальная система изоляции Ruby Box и новый JIT-компилятор ZJIT.
Параллельно разработчики серьезно прокачали параллелизм, производительность и стандартную библиотеку.
Ruby Box: изоляция без контейнеров и процессов
Ruby Box — это новый экспериментальный механизм изоляции кода. Он позволяет запускать определения классов, модулей, глобальных переменных и даже подключение библиотек в отдельном «боксе», изолированном от остальной программы.
Включается он через переменную окружения RUBY_BOX=1, а основной интерфейс — класс Ruby::Box.
Идея проста: изолировать побочные эффекты. Monkey patch больше не должен ломать соседние тесты или весь процесс.
Среди предполагаемых сценариев — запуск тестов с агрессивными патчами, параллельный запуск нескольких версий веб-приложения для blue-green деплоя и эксперименты с зависимостями в одном Ruby-процессе.
В перспективе, Ruby Box может стать фундаментом для более высокого уровня модульности и «пакетной» системы, хотя пока это именно низкоуровневый API.
ZJIT: новый курс для производительности
Вторая ключевая новинка — ZJIT. Это новый just-in-time компилятор следующего поколения. Он должен прийти на смену YJIT и строится как более классический метод-ориентированный JIT с SSA-представлением.
ZJIT написан с расчетом на расширяемость и вклад сообщества, но требует Rust 1.85 и новее для сборки.
Сейчас ZJIT быстрее интерпретатора, но все еще уступает YJIT. Да и сами разработчики языка открыто предупреждают — да, экспериментировать можно. Но в продакшен лучше пока с новинкой не лезть. Цель — сделать ZJIT быстрее YJIT и полностью готовым к бою уже в Ruby 4.1.
Ractor становится ближе к «неэкспериментальному»
Параллелизм в Ruby тоже заметно продвинулся. Ractor получил новый механизм синхронизации Ractor::Port, упрощающий обмен сообщениями, а внутренние структуры были переработаны для снижения блокировок и конкуренции за CPU-кэш.
42 открытий1К показов



