Přejít k navigační liště

Zdroják » Webový vývoj » Vyšlo Ruby 4.0.0: velký release s důrazem na výkon a stabilitu

Vyšlo Ruby 4.0.0: velký release s důrazem na výkon a stabilitu

Články Webový vývoj

Ruby 4.0.0 vyšlo 25. prosince 2025 a jde o jednu z největších aktualizací Ruby za poslední roky. Přináší experimentální Ruby Box pro izolaci definic, nový JIT kompilátor ZJIT, výrazné posílení Ractorů a dlouhý seznam změn ve standardní knihovně i bundled gemech včetně RubyGems a Bundler 4.

Nálepky:

25. prosince 2025 bylo oficiálně oznámeno vydání Ruby 4.0.0, které přináší nové funkce jako „Ruby Box“, „ZJIT“ a spoustu vylepšení.

Ruby Box

Ruby Box je nová (experimentální) funkce, která poskytuje izolaci definic. Když je prostředí spuštěno s proměnnou prostředí RUBY_BOX=1, aktivuje se Ruby Box a definice načtené v boxu jsou izolované uvnitř tohoto boxu. To znamená, že změny typu:

  • monkey patching
  • změny globálních nebo třídních proměnných
  • definice tříd nebo modulů
  • načtené nativní nebo Ruby knihovny

zůstanou uzavřené v daném boxu a neovlivní ostatní boxy nebo hlavní prostředí.

Očekávané použití zahrnuje například:

  • spouštění testů v izolaci, aby nedocházelo k interferencím,
  • paralelní provoz webových aplikací uvnitř jednoho procesu,
  • bezpečné vyhodnocování změn závislostí přesněji a bez vedlejších efektů,
  • nebo jako nízkoúrovňové API pro budoucí implementaci balíčkovacího systému.

Pro detaily k Ruby Boxu doporučuji podívat se na Ruby::Box.

ZJIT

ZJIT je nový just-in-time kompilátor, který je vyvíjen jako nová generace JIT kompilátoru pro Ruby jako nástupce YJIT. Ruby sice stále podporuje YJIT, ale ZJIT má za cíl:

  • zvýšit výkon díky větším kompilovaným jednotkám a SSA IR,
  • podpořit více přispěvatelů díky tradičnější metodě kompilace.

ZJIT je zapnut pomocí --zjit , který musí být specifikován, a k jeho sestavení je potřeba Rust 1.85.0 nebo novější. Ačkoliv je ZJIT rychlejší než čistý interpreter, zatím ještě nedosahuje výkonu YJIT ve všech situacích. Vývojáři doporučují experimentovat s ZJIT, ale zatím zvážit jeho použití v produkci až v příštích verzích, například v Ruby 4.1.

Vylepšení Ractorů

Ractor, paralelní mechanismus pro Ruby představený již v Ruby 3.0, dostává v Ruby 4.0 několik důležitých aktualizací. Nejvýraznější změny:

  • zavedení nové třídy Ractor::Port pro odesílání a přijímání zpráv mezi Ractory – to řeší problémy s efektivní komunikací mezi paralelními vlákny,
  • přidání Ractor.shareable_proc pro snadnější sdílení Proc objektů mezi Ractory,
  • interní vylepšení datových struktur, která snižují obsahování globálního zámku a zlepšují paralelní výkon,
  • Ractory nyní sdílejí méně interních dat, díky čemuž se snižuje konfliktní přístup a zvyšuje CPU cache efektivnost při paralelních bězích.

Ruby tým uvádí, že po těchto vylepšeních plánuje v příští verzi odstranit označení Ractorů jako experimentálních.

Změny v jazyce

Ruby 4.0 obsahuje několik jazykových úprav:

  • výraz *nil nyní nevolá nil.to_a, což je v souladu s tím, jak **nil nechce volat nil.to_hash,
  • logické binární operátory jako ||, &&, and, or na začátku řádku pokračují z předchozího řádku – fungují podobně jako když začínáte řetězení metod s tečkou.

To zlepšuje konzistenci jazyka a zabraňuje neočekávanému chování v některých syntaktických situacích.

Aktualizace základních tříd

Ruby 4.0 přináší i mnoho změn a nových metod v základních třídách systému:

  • do třídy Array byly přidány metody Array#rfind a nová implementace Array#find,
  • Binding#local_variables už neobsahuje číslované parametry a několik nových metod v Binding přidává přístup k implicitním parametrům,
  • Enumerator.produce nyní přijímá volitelný klíčový argument size pro explicitní určení velikosti generovaných sekvencí,
  • ve výpisu chyb o argumentech (ArgumentError) se nyní zobrazují ukázky kódu pro volání i definici metody, což usnadňuje debugování,
  • Fiber a Fiber::Scheduler dostaly nové schopnosti, například přerušení fiber s výjimkou a yield scheduleru tak, aby IO operace mohly lépe reagovat,
  • File::Stat#birthtime je nyní na Linuxu dostupný pomocí statx kde je podporován,
  • IO.select nyní přijímá Float::INFINITY jako timeout,
  • některé historické chování (např. tvorba procesu pomocí IO metod s | prefixem) bylo odstraněno,
  • Kernel#inspect nově respektuje metodu instance_variables_to_inspect pro vlastní výpis instančních proměnných.

Mezi další změny patří aktualizace Unicode na verzi 17.0.0 pro řetězce a regulární výrazy a zlepšení podpory funkcí v Thread a v standardní knihovně.

Shrnutí

Ruby 4.0.0 je významná verze, která představuje nové experimentální funkce jako Ruby Box, nový JIT kompilátor ZJIT, výrazná vylepšení Ractorů a mnoho užitečných jazykových i standardních knihovních úprav. Vývojáři Ruby pokračují v kultivaci jazyka tak, aby byl rychlejší, bezpečnější a lépe použitelný ve složitých projektech.

Pro více informací: https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře

Urban VPN Browser Extension tajně sbírá a prodává AI konverzace milionů uživatelů

AI, Různé
Komentáře: 0
Bezplatné rozšíření do prohlížeče Urban VPN Proxy, které slibovalo anonymní přístup k internetu, se podle bezpečnostních expertů ukázalo být hrozbou pro soukromí uživatelů. Rozšíření totiž potají sbíralo konverzace s AI asistenty a odesílalo je na servery třetích stran, aniž by uživatelé o této aktivitě věděli. Případ upozorňuje na rizika bezplatných VPN nástrojů a potřebu průběžné kontroly bezpečnosti nainstalovaných doplňků.