Ruby продолжает развиваться, предлагая разработчикам новые инструменты для работы с параллелизмом, улучшенную производительность и удобные синтаксические конструкции. В этой статье мы рассмотрим ключевые изменения в версиях Ruby 3.x, которые помогут вам эффективнее использовать язык в проектах с Rails, PostgreSQL и современными DevOps-практиками.
Ruby 3.x — это не просто семантический апдейт. Это эволюция языка: от улучшений в производительности до новых фич типа Ractor, Pattern Matching, Data и Fiber.schedule.
В этой статье — шпаргалка по версиям Ruby от 3.0 до 3.4: без воды, только факты.
🧾 Ruby 3.0 (декабрь 2020)
🎯 Цель: Ruby 3x3 — в 3 раза быстрее, чем Ruby 2.0
🔹 Главное:
- 💬 Ractor — безопасный параллелизм
- 🔥 Fiber Scheduler API — фундамент для async/await
- 📦 Pattern Matching стал стабильным (из 2.7)
- ⏱️ Улучшения JIT (MJIT)
- ✅
...теперь работает как аргумент по умолчанию в методах
⚙️ Ruby 3.1 (декабрь 2021)
🔹 Главное:
- 💠
Dataкласс — альтернатива Struct, минимален:Point = Data.define(:x, :y) - 📦
Enumerable#tally→ частотный анализ - 🧪 Experimental:
debuggem — дебаггер нового поколения - 🧱 MJIT → Rewrite на C
- 📛 Deprecation:
lambda.call(...)без скобок теперь вызывает warning
🧰 Ruby 3.2 (декабрь 2022)
🔹 Главное:
- 🔒 Immutable
Dataтеперь “shareable” для Ractor - ⚙️ YJIT стал стабильным и включаемым из коробки
- 🧵
Thread#joinвозвращаетself - 💬
Regexp#match?→ быстрее и безопаснее - 🚫 Удалены:
Time#to_time,Time#getlocal(arg)и другие устаревшие API
🚀 Ruby 3.3 (декабрь 2023)
🔹 Главное:
- ⚙️ YJIT включён по умолчанию (на Linux/macOS)
- 📦 Gemified stdlib — многие стандартные библиотеки больше не встроены, а ставятся отдельно (
net/http,uri,csv, и т.д.) - 🧼
Dir.children,Dir.each_childстали быстрее - 🧠
SyntaxErrorтеперь выводит конкретный код, а не просто “unexpected end” - 🚫 Удалено:
Proc.new &block(устаревшее поведение)
🔬 Ruby 3.4 (декабрь 2024)
🔹 Главное:
-
⚙️ Ractor улучшен:
Ractor.make_shareableRactor::MovedObjectтеперь меньше пугает
- 📈 YJIT улучшен (еще меньше прогрева)
-
📦 New stdlib layout:
- core, default, bundled, gems
- можно посмотреть через
Gem::Specification
- 🧃
Array#intersect?,Hash#except,Object#with— удобные методы - 🚫
Enumerator::Chainчастично заменёнEnumerable#chain
💡 Общие тренды Ruby 3.x
| Категория | Направление |
|---|---|
| Производительность | MJIT, YJIT, Fiber.schedule |
| Безопасность | Ractor, shareable objects |
| Синтаксис | Pattern Matching, endless method def |
| Удаления | Устаревшие API, implicit block handling |
| Стандартизация | Больше “гемофикации” stdlib |
🔚 Вывод: Ruby 3.x — это больше, чем “новая версия”. Это движение в сторону реальной конкурентности, удобства и скорости. Да, что-то отрезали. Но добавили гораздо больше — и всё это можно использовать уже сегодня.