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

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

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

Нотаріальна палата України звинуватила сервіс «е-Нотаріат» у витоку даних громадян. Мінцифри заперечує

Нотаріальна палата України опублікувала відкритий лист №41/3 від 18.09.2025 до першого віцепрем’єр-міністра та міністра цифрової трансформації…

18.09.2025

Топ-менеджер xAI запевнив підлеглих, що звільнень більше не буде, і потім звільнив ще 100 фахівців

15 вересня керівник команди навчання Grok у компанії xAI Дієго Пасіні запевнив підлеглих, що тепер…

18.09.2025

Українська IT-компанія презентувала онбординг співробітників у метавсесвіті — як це працює

Українська компанія Kiss My Apps разом із LEZO представила онбординг для співробітників у метавсесвіті. Це…

18.09.2025

«Стягнули $1000 тільки на цьому тижні»: вайб-кодери шоковані тарифами Replit Agent 3

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

18.09.2025

Новий безкоштовний агент Tongyi DeepResearch від Alibaba перевершив OpenAI o3 і Claude Sonnet 4

Дослідницька команда Tongyi Lab, яка входить в структуру Alibaba, представила нову агентну LLM-модель Tongyi DeepResearch.…

18.09.2025

Модель Gemini 2.5 Deep Think виграла чемпіонат з програмування, розв’язавши 10 з 12 завдань

Компанія Google заявила, що її LLM-модель виграла світовий фінал Міжнародного конкурсу коледжів з програмування (ICPC),…

18.09.2025