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

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

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

Diia.City United закликала Верховну Раду врахувати потреби бізнесу й внести зміни в Defence City

Diia.City United закликає ґрунтовно переробити законопроєкт «Defence City» та під час другого читання врахувати потреби…

01.08.2025

Айтівець з SQUAD загинув разом із донькою та собакою внаслідок атаки на Київ 31 липня

Спеціаліст з ІТ-підтримки із SQUAD Віталій Рабощук, його 18-річна донька Влада та пес Спайк загинули,…

01.08.2025

Google випустила модель міркування Gemini Deep 2.5 Think, яка одночасно тестує кілька ідей

Команда Google DeepMind випустила Gemini 2.5 Deep Think — модель міркування, яка здатна відповідати на…

01.08.2025

Нова функція Android Studio автоматично виконує складні багатоетапні завдання кодування для кількох файлів

Google представила стабільний реліз нової функції Narwhal для Android Studio. Вона має режим агента Gemini,…

01.08.2025

OpenAI відключила функцію, яка дозволяла Google індексувати діалоги з ChatGPT

Дослідники помітили, що пошукова система Google почала індексувати публічні посилання на діалоги з ChatGPT, внаслідок…

01.08.2025

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

У кібербезпеці помічена нова тенденція: тепер уразливості в коді все частіше шукають не люди, а…

01.08.2025