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

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

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

У КПІ будуть викладати «Програмування комп’ютерних ігор» за підтримки GSC Game World

Київський політехнічний інститут (КПІ) та найвідоміша українська геймдев-студія GSC Game World, розробник гри S.T.A.L.K.E.R. 2:…

28.11.2025

Хакери модифікували GPT для розробки шкідливих скриптів та проведення фішингових атак

Дослідники Unit42 з Palo Alto Networks проаналізували дві кастомні LLM-моделі, створені на базі GPT: WormGPT…

28.11.2025

Команда мови програмування Zig відмовляється від GitHub на користь Codeberg

Репозиторій мови Zig мігрує з GitHub до Codeberg, некомерційної компанії з хостингу Git, яка базується…

28.11.2025

Google обмежує безкоштовний доступ до Gemini 3 Pro через «високий попит»

Google запроваджує обмеження для безкоштовних користувачів на доступ до LLM-моделі Gemini 3 Pro та генератора…

28.11.2025

Українським IT-фахівцям треба готуватись до збільшення податків: уряд погодився на умови МВФ

Кабінет міністрів України погодився з пропозицією скасувати податкові пільги в обмін на новий пакет фінансування…

28.11.2025

Microsoft працює над новим способом оновлення програм із Microsoft Store

Останні preview-збірки Windows 11 демонструють, що Microsoft готує новий спосіб оновлення програм з каталогу Microsoft…

27.11.2025