25 грудня 2024 року було випущено Ruby версії 3.4.0, яка містить низку нових функцій та покращень. Що саме? Читаємо нижче.
Нововведення в мові
- Введення
it
. Додано новий ідентифікаторit
для посилання на параметр блоку без необхідності явно задавати ім’я змінної.Це спрощує синтаксис для однорядкових блоків.
ary = ["foo", "bar", "baz"]
p ary.map { it.upcase } #=> ["FOO", "BAR", "BAZ"]
- Присвоєння
nil
через**
. Тепер можна використовувати**nil
при виклику методів, що інтерпретується як передача порожнього хешу ключових аргументів.
Зміни в стандартній бібліотеці
-
Присвоєння
Exception#set_backtrace
: Метод тепер приймає масив об’єктівThread::Backtrace::Location
, що дозволяє точніше встановлювати трасування викликів. -
Range#size
: Виклик цього методу для неітерабельних діапазонів тепер викликаєTypeError
.
Покращення продуктивності:
-
YJIT: Внесено численні оптимізації, що підвищують продуктивність на більшості бенчмарків для платформ x86-64 та arm64, а також знижують використання пам’яті.
-
Модульний збирач сміття (GC): Додано підтримку альтернативних реалізацій GC, які можна динамічно завантажувати, що підвищує гнучкість управління пам’яттю.
Інші зміни:
- Попередження про невикористані блоки: Якщо методу передано блок, який не використовується, Ruby виводитиме попередження в режимі підвищеної деталізації (
-w
). - Попередження про перевизначення оптимізованих методів: Перевизначення деяких основних методів, які спеціально оптимізовані інтерпретатором та JIT, тепер викликає попередження про зниження продуктивності.
Детальнішу інформацію можна знайти в офіційному анонсі релізу Ruby 3.4.0 Released