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

Мова програмування 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.

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

Оновлений Codex Desktop отримав 90+ плагінів, SSH та вбудований браузер

Компанія OpenAI представила масштабне оновлення свого десктопного застосунку Codex. Воно перетворює інструмент з простого помічника…

17.04.2026

Робочий експлойт за ціною вживаного авто: Claude Opus зламав захист Google Chrome за $2283

Модель штучного інтелекту Claude Opus 4.6 від компанії Anthropic продемонструвала здатність створювати функціональні експлойти для…

17.04.2026

Data-брокери на руїнах стартапів: розробники LLM-моделей скуповують архіви компаній

Ринок навчання штучного інтелекту виходить на новий рівень: тепер «паливом» для нейромереж стають не лише…

17.04.2026

21-річна польська програмістка знайшла та виправила баг у Linux, який старший за неї

Молода польська розробниця Каміла Шевчик змогла розв'язати технічну проблему в інтерфейсі Linux, яка залишалася непоміченою…

17.04.2026

Більше ніяких зависань: Android 17 жорстко обмежить обсяг пам’яті для програм

Компанія Google випустила четверту та фінальну бету Android 17, яка стала важливою віхою на шляху…

17.04.2026

Anthropic випустила Claude Opus 4.7. Повний огляд можливостей нової моделі

Компанія Anthropic офіційно представила свою найпотужнішу на сьогодні LLM-модель — Claude Opus 4.7, яка стала…

17.04.2026