Вийшла Ruby 3.4.0

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