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

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

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

Більше 8 млрд грн податків. Стільки сплатили резиденти Дія.City в І кварталі 2025 року

Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…

18.04.2025

Китайських офісних працівників закликають менше працювати. Це має допомогти місцевій економіці

У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…

18.04.2025

ChatGPT значно покращив пошук місць по фото. Це посилює проблеми конфіденційності

Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…

18.04.2025

Середовище розробки IntelliJ IDEA оновлено до версії 2025.1

Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…

18.04.2025

Discord впроваджує функцію сканування обличчя для перевірки віку користувачів

Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…

18.04.2025

Wikipedia випустила спеціальний датасет, щоб відволікти увагу ботів

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

18.04.2025