Лучшего подарка на Рождество для рубистов не придумать: состоялся релиз Ruby 4.0.0 😊 Мажорное обновление принесло не только прирост скорости, но и парочку по-настоящему фундаментальных фич, которые меняют правила игры (ну почти). Главное новшество — это изоляция и новый JIT, который должен в будущем оставить YJIT позади. Что завезли: — Ruby Box — новая экспериментальная фича для полной изоляции определений. Можно запускать код в отдельных «коробках», где манки-патчи, глобальные переменные и загруженные библиотеки не будут мешать остальной части приложения; — ZJIT — следующее поколение JIT-компилятора, написанное на Rust. Пока он чуть медленнее YJIT, но архитектурно готов к более сложным оптимизациям. В версии 4.1 обещают сделать его основным и самым быстрым; — Прокачали Ractor —механизм параллельных вычислений стал стабильнее и быстрее. Добавили Ractor::Port для удобной синхронизации и убрали кучу блокировок в Garbage Collector; — Set и Pathname в ядре — эти классы больше не нужно подгружать отдельно — они стали частью Core Ruby, что логично и давно напрашивалось; — Логические операторы (&&, ||, and, or) теперь можно ставить в начале строки — Ruby поймет, что это продолжение предыдущей линии; — Теперь при ошибках в аргументах Ruby подсвечивает не только место вызова, но и само определение метода, чтобы сразу было ясно, где накосячили. Ruby перестает быть «медленным языком для скриптов» и уверенно идет в сторону серьезного параллелизма и изоляции. Будем наблюдать 🤨