Рубріки: Новини

Мова програмування Ruby оновлена до версії 3.4.0

Дмитро Сімагін

Відбувся реліз Ruby 3.4.0 — нової версії об’єктно-орієнтованої мови програмування, яка увібрала в себе найкращі риси Perl, Java, Python, Smalltalk, Eiffel, Ada та Lisp. Перелік основних покращень Ruby 3.4.0:

  • Додано новий ідентифікатор “it” для посилання на параметр блоку без імені змінної. Ідентифікатор it в цілому схожий на _1, але має більш зручний псевдонім. Тому його варто використовувати в простих випадках, наприклад, в однорядкових блоках.
  • Prism тепер є парсером за замовчуванням. Перемкніть аналізатор за замовчуванням з parse.y на Prism. Це внутрішнє вдосконалення, користувачі не побачать ніяких видимих ​​змін.
  • Бібліотека сокетів тепер містить Happy Eyeballs Version 2 (RFC 8305), останню стандартизовану версію широко поширеного методу роботи. Це покращення дозволяє Ruby забезпечувати ефективні та надійні мережеві з’єднання, адаптовані до сучасних інтернет-середовищ.
  • Продовжено оптимізацію продуктивності JIT-компілятора YJIT, який розвивається командою платформи електронної комерції Shopify в рамках ініціативи щодо збільшення продуктивності Ruby-програм. Новий YJIT застосовує версіонування базових блоків (LBBV — Lazy Basic Block Versioning) замість обробки методів цілком і реалізований у формі інтегрованого JIT-компілятора, написаного мовою Rust. Завдяки LBBV, JIT спочатку компілює тільки початок методу, а частину, що залишилася, компілює через деякий час, після того як у процесі виконання буде визначено типи використовуваних змінних і аргументів.
  • Скорочено споживання пам’яті за рахунок стиснення метаданих та реалізації уніфікованої системи обмежень. Додано опцію “–yjit-mem-size”, за замовчуванням. Додана опція “–yjit-log” для відстеження, який саме код компілюється.
  • Надано можливість динамічного завантаження альтернативних збирачів сміття, зібраних у формі бібліотек. Задіяний за замовчуванням вбудований збирач сміття тепер може бути зібраний у формі окремої бібліотеки.
  • Дозволено передачу в методи іменованих аргументів, які мають значення nil. Аргументи зі значенням “**nil” тепер обробляються як порожній хеш “**{}” без передачі іменованих аргументів у метод.
  • В індексах заборонено передачу блоків та вказівку іменованих аргументів, наприклад, “a[&b]=c” та “o[1, a: 1]”.
  • Оптимізовано метод JSON.parse, який тепер працює в півтора рази швидше за пакет json 2.7.

Останні статті

Робота в офісі з відкритим плануванням провокує вигорання працівників — дослідження

Працювати в опенспейсі важче для людського мозку, ніж в ізольованих приміщеннях. Крім того, офіси з…

03.03.2026

LLM-моделі навчились деанонімізовувати фейкові акаунти в соцмережах

Сучасні великі мовні моделі (LLM) досягли критичного рівня у сфері аналізу даних, що ставить під…

03.03.2026

Для Claude Code створили аудіоплагін: відтворює звуки відеоігор під час кодування

Колишній розробник Google Гері Шенг створив безкоштовний плагін Peon Ping, який підключається до Claude Code…

03.03.2026

Google Home отримує нові функції Gemini: опис з камер у реальному часі

Google Home отримує велике оновлення з Gemini, яке тепер може словами описувати те, що показує…

03.03.2026

«Будуть платити за кожне скачування»: проекти з відкритим кодом придумали, де знайти гроші

Схоже, проекти open source знайшли часткове вирішення однієї з найбільш болючих для себе проблем —…

03.03.2026

«Сегмент доступних за ціною ПК зникне до 2028 року»: експерти дають невтішний прогноз

Епоха бюджетних ноутбуків і ПК, ціна яких не перевищувала $500, стрімко відходить у минуле. Аналітична…

03.03.2026