Вийшов Ruby 3.3.0-preview2
Опублікував naruse 14-09-2023
Переклав: Andrii Furmanets
Раді повідомити про вихід Ruby 3.3.0-preview2. Ruby 3.3 додає новий чистий Ruby JIT компілятор під назвою RJIT, використовує Lrama як генератор парсерів та багато покращень продуктивності, особливо YJIT.
RJIT
- Впроваджено чистий Ruby JIT компілятор RJIT та замінено MJIT.
- RJIT підтримує лише архітектуру x86_64 на платформах Unix.
- На відміну від MJIT, він не потребує компілятора C під час виконання.
- RJIT існує лише для експериментальних цілей.
- Ви повинні продовжувати використовувати YJIT у виробництві.
- Якщо зацікавлені у розробці JIT для Ruby, будь ласка, перегляньте презентацію k0kubun на День 3 RubyKaigi.
Використання Lrama замість Bison
- Заміна Bison на генератор парсерів Lrama LALR Feature #19637
- Якщо зацікавлені, будь ласка, перегляньте Майбутнє бачення Ruby Parser
YJIT
- Значні покращення продуктивності порівняно з 3.2
- Підтримка splat та rest аргументів покращена.
- Регістри виділяються для операцій стеку віртуальної машини.
- Більше викликів з опціональними аргументами компілюється.
- Обробники винятків також компілюються.
- Змінні екземпляра більше не виходять до інтерпретатора з мегаморфними формами об’єктів.
- Непідтримувані типи викликів більше не виходять до інтерпретатора.
Integer#!=,String#!=,Kernel#block_given?,Kernel#is_a?,Kernel#instance_of?,Module#===спеціально оптимізовані.- Тепер більш ніж у 3 рази швидше за інтерпретатор на optcarrot!
- Метадані для скомпільованого коду використовують набагато менше пам’яті.
- Генерується більш компактний код на ARM64
- Опція запуску YJIT в режимі паузи, а потім увімкнення вручну
--yjit-pauseтаRubyVM::YJIT.resume- Це може використовуватися для увімкнення YJIT лише після того, як ваш застосунок завершить завантаження
- Статистика
ratio_in_yjit, створена--yjit-stats, тепер доступна в release збірках, більше не потрібна спеціальна stats або dev збірка. - Опція трасування виходів тепер підтримує вибірку
--trace-exits-sample-rate=N
- Більш ретельне тестування та кілька виправлень помилок
Інші помітні нові можливості
Мова
Покращення продуктивності
defined?(@ivar)оптимізовано з Object Shapes.
Інші помітні зміни з версії 3.2
IRB
IRB отримав кілька покращень, включаючи, але не обмежуючись:
- Розширена інтеграція
irb:rdbg, яка забезпечує еквівалентний досвід налагодження доpry-byebug(doc). - Підтримка пейджера для команд, таких як
lsтаshow_cmds. - Більш точна та корисна інформація, надана командами
lsтаshow_source.
Крім того, IRB також пройшов значний рефакторинг та отримав десятки виправлень помилок для полегшення майбутніх покращень.
Проблеми сумісності
Примітка: Виключаючи виправлення помилок функцій.
Видалені константи
Наступні застарілі константи видалено.
Видалені методи
Наступні застарілі методи видалено.
Проблеми сумісності стандартної бібліотеки
ext/readline виведено з експлуатації
- У нас є
reline, яка є чистою реалізацією Ruby, сумісною з APIext/readline. Ми покладаємося наrelineу майбутньому. Якщо вам потрібно використовуватиext/readline, ви можете встановитиext/readlineчерез rubygems.org за допомогоюgem install readline-ext. - Нам більше не потрібно встановлювати бібліотеки, такі як
libreadlineабоlibedit.
Оновлення C API
Оновлені C API
Наступні API оновлено.
Видалені C API
Наступні застарілі API видалено.
Оновлення стандартної бібліотеки
RubyGems та Bundler попереджають, якщо користувачі роблять require gem, який заплановано стати bundled gems у майбутній версії Ruby.
Оновлено наступні default gems.
- RubyGems 3.5.0.dev
- bigdecimal 3.1.4
- bundler 2.5.0.dev
- csv 3.2.8
- erb 4.0.3
- fiddle 1.1.2
- fileutils 1.7.1
- irb 1.7.4
- nkf 0.1.3
- optparse 0.4.0.pre.1
- psych 5.1.0
- reline 0.3.8
- stringio 3.0.9
- strscan 3.0.7
- syntax_suggest 1.1.0
- time 0.2.2
- timeout 0.4.0
- uri 0.12.2
- yarp 0.9.0
Оновлено наступні bundled gems.
- minitest 5.19.0
- test-unit 3.6.1
- rexml 3.2.6
- rss 0.3.0
- net-imap 0.3.7
- rbs 3.2.1
- typeprof 0.21.8
- debug 1.8.0
Наступний default gem тепер bundled.
- racc 1.7.1
Див. GitHub releases, такі як Logger, або changelog для деталей default gems або bundled gems.
Див. NEWS або журнали комітів для подробиць.
Унаслідок цих змін 4970 файлів змінено, 239635 вставок(+), 165275 видалень(-) з часу Ruby 3.2.0!
Завантаження
-
https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.tar.gz
SIZE: 21074209 SHA1: cf7329019235dc36b8e3f382a8b8b744922b1163 SHA256: 30ce8b0fe11b37b5ac088f5a5765744b935eac45bb89a9e381731533144f5991 SHA512: 1c5a13e519e8487fd40d932b96d14fa729521925c288e7841ab5eada628e506ceca2605bae36eea1aa505d9253383d53cd933b7a4bff96e6de5b1130c7c558e6 -
https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.tar.xz
SIZE: 15600992 SHA1: 606d6423137a24eef4f6b07d167596b63c7aaa17 SHA256: 62b1c4f586c70bf1cb58f2d909d0d824506315782e835f9dd3fcc0b659a70fc1 SHA512: 5ff609a66b7359006df0d87477cf70e6e26c5f40ced81b8254f8154f4fc82c77fed297471b55706c1a4466f2a4257999e933b2ed085f695ace265757ab9500a2 -
https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.zip
SIZE: 26095651 SHA1: 4441cd0db23d133e6e2f7dea28f931a68dac6ca5 SHA256: c9771d24c9b1eab532c04ed076087285601693e4d1c63f131fd078c47c5c0cea SHA512: bfeed21d011f891fe22510fe7242992c98f7fd2ce863d8be5740f56a34b726134cb3f5304e8b2dcd468fbc939648f10aae482eee15c1bf6c64b705484ed9e197
Що таке Ruby
Ruby уперше розробив Matz (Yukihiro Matsumoto) у 1993 році, і зараз вона розвивається як Open Source. Вона працює на багатьох платформах і використовується по всьому світу, особливо для веброзробки.
Останні новини
Вийшов Ruby 3.3.12
Вийшов Ruby 3.3.12.
Опублікував hsbt 16-07-2026
Вийшов Ruby 4.0.6
Вийшов Ruby 4.0.6.
Опублікував k0kubun 14-07-2026
Вийшов Ruby 3.4.10
Вийшов Ruby 3.4.10.
Опублікував nagachika 30-06-2026
Вийшов Ruby 4.0.5
Вийшов Ruby 4.0.5.
Опублікував k0kubun 20-05-2026