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

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

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

Meta закриває проект Workrooms — віртуальні простори для віддаленої роботи

Керівництво Meta ухвалило рішення припинити підтримку Workrooms як окремого додатку з 16 лютого 2026 року.…

16.01.2026

У ChatGPT з’явився розширений пошук в історії діалогів. Тільки для платних користувачів

Компанія OpenAI випустила велике оновлення для ChatGPT з підтримкою розширеного пошуку в історії чатів, але…

16.01.2026

У програмах, згенерованих штучним інтелектом, багато помилок безпеки — дослідження

Застосунки, створені за допомогою вайб-кодування, де розробник надає агенту штучного інтелекту повну свободу дій, ймовірно,…

16.01.2026

Українська компанія MacPaw закриває свій маркетплейс Setapp Mobile

Одна з найбільших українських продуктових IT-компаній MacPaw оголосила про закриття з 16 лютого 2026 року…

16.01.2026

Replit запускає інструмент вайб-кодингу iOS-додатків

Компанія Replit оголосила про запуск нового веб-інструменту вайб-кодування під назвою Mobile Apps on Replit. Він…

16.01.2026

GPT-5.2 написала веб-браузер з нуля. Модель створила три мільйони рядків коду і працювала безперервно цілий тиждень

Генеральний директор компанії Cursor AI Майкл Труелл повідомив, що LLM-модель GPT-5.2, яку задіяли через агент…

15.01.2026