TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.83K subscribers
Post #3079 1.65K
Вышла новая версия языка Ruby - Ruby 4.0.0

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

1. ZJIT — новый JIT-компилятор. ZJIT (Just-In-Time компилятор) дополняет существующий YJIT. В отличие от YJIT, который использует подход ленивого создания версий базовых блоков, ZJIT основан на более традиционной методологии компиляции на уровне методов, а не локальных участков байткода. Для работы с ZJIT требуется Rust версии 1.85.0 или новее. Чтобы активировать ZJIT, можно использовать флаг --zjit: ruby --zjit my_script.rb. Хотя ZJIT быстрее интерпретируемого кода, для продакшена по-прежнему рекомендуется использовать YJIT. 

2. Ruby::Box — экспериментальная функция изолированных пространств имён. Позволяет создавать отдельные «боксы», в которых код выполняется с собственными глобальными переменными, константами и определениями классов. Это полезно, например, для одновременной загрузки разных версий одной библиотеки. Чтобы активировать Ruby::Box, нужно установить переменную окружения RUBY_BOX=1. 

3. Переработанный API Ractor. Для коммуникации между Ractors теперь используется Ractor::Port. Удалённы старые методы Ractor.yield и Ractor#take. Проделана большая работа по повышению стабильности, производительности и удобства использования Ractor. Эти улучшения приближают реализацию Ractor к выходу из экспериментального статуса. Добавлены методы Ractor#join и Ractor#value, аналогичные тем, что есть у Thread. 

4. Логические операторы в начале новой строки. В Ruby 4.0 теперь разрешено размещать логические операторы (&&, ||, and, or) в начале новой строки. Это улучшает читаемость сложных условных выражений и соответствует распространённым предпочтениям форматирования. 

5. `instance_variables_to_inspect`. Новая функция позволяет контролировать, какие переменные экземпляра отображаются в выводе метода inspect при отладке. Это помогает сделать вывод более лаконичным и сфокусированным на важном состоянии объекта. 

6. `Set` стал базовым классом. Ранее Set был классом из стандартной библиотеки, теперь он включён в ядро языка, и его не нужно подключать с помощью require 'set'. 

7. Новые методы в `Math`. Добавлены методы Math.log1p и Math.expm1 для более точных вычислений с малыми числами. Math.log1p(x) вычисляет log(1 + x), а Math.expm1(x)` — `exp(x) - 1. Эти методы полезны в научных расчётах и финансовых вычислениях. 

8. Другие изменения:
- nil больше не вызывает nil.to_a, что согласуется с поведением **. 
- IO.select теперь принимает Float::INFINITY в качестве аргумента таймаута. 
- File::Stat#birthtime теперь работает в Linux через системный вызов statx, если это поддерживается ядром и файловой системой. 
- Socket.tcp получил ключевой аргумент open_timeout. 
- RJIT удалён, остались только YJIT и ZJIT. 
- Юникод обновлён до версии 17.0. 
- В Windows прекращена поддержка версий MSVC старше 14.0 (_MSC_VER 1900). Для работы с Ruby 4 потребуется Visual Studio 2015 или более поздняя версия. 

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

https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/
Ruby Programming Language Ruby 4.0.0 Released | Ruby We are pleased to announce the release of Ruby 4.0.0.Ruby 4.0 introduces “Ruby Box” and “ZJIT”, and adds many improvements.
  • 👍 11
  • 🥱 4
  • ❤ 3
  • 🤝 2
  • 🤮 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →