Vydán programovací jazyk Ruby 4.0

Vydání Ruby 4.0.0, dynamického objektově orientovaného programovacího jazyka zaměřeného na vysokou efektivitu při vývoji programů a začlenění nejlepších vlastností Perl, Java, Python, Smalltalk, Eiffel, Ada a Lisp. Kód projektu je distribuován pod licencí BSD („2-klauzule BSDL“) a „Ruby“, která odkazuje na nejnovější verzi licence GPL a je kompatibilní s GPLv3.

Hlavní vylepšení:

  • Tato verze obsahuje nový JIT kompilátor ZJIT, který je prezentován jako nová generace Ruby JIT. JIT kompilátor YJIT zůstává výchozím, přičemž ZJIT je povolen jako volitelná možnost (aktivuje se parametrem „--zjit“). Stejně jako YJIT byl i nový JIT kompilátor napsán v Rustu týmem vývojářů ze Shopify jako součást iniciativy na zlepšení výkonu programů v Ruby, které používají framework Rails a volají řadu metod. V současné době je ZJIT rychlejší než interpret, ale stále zaostává za YJIT ve výkonu (očekává se, že ZJIT se v Ruby 4.1 stabilizuje a překoná YJIT ve výkonu).

    Na rozdíl od YJITu nový JIT kompilátor překládá bajtkód virtuálního stroje YARV nikoli do nízkoúrovňové mezireprezentace blízké strojovému kódu, ale do vysokoúrovňové mezireprezentace (SSA) (Static Single Assignment), což umožňuje další optimalizační fáze a optimalizaci velkých bloků kódu, nejen aktuálních operací. Pro přilákání nových přispěvatelů implementuje ZJIT klasickou architekturu JIT, která využívá nashromážděná historická typová data interpretu, namísto složité techniky YJIT Lazy Basic Block Versioning (LBBV).

  • Byla přidána experimentální třída Ruby::Box implementující mechanismus izolace, který umožňuje oddělené spouštění tříd, modulů a patchů (přepsaných metod a atributů tříd) v jednom procesu. Ruby::Box lze také použít k oddělení spouštění kódu aplikace od knihoven Ruby, k izolaci testů a k organizaci paralelního spouštění webových obslužných rutin v jednom procesu. server aplikace (například pro postupné nahrazování jedné verze kódu jinou nebo aktualizaci závislostí). Chcete-li aktivovat Ruby::Box, nastavte proměnnou prostředí „RUBY_BOX=1“. # foo.rb class String def self.foo = "foo" end # main.rb box = Ruby::Box.new box.require('foo')
  • Implementace modelu aktoru Ractor byla modernizována a poskytuje abstrakci ve stylu aktoru Ruby pro bezpečné souběžné provádění programů z hlediska vláken s interakcí předávání zpráv mezi vlákny. Byla přidána třída Ractor::Port pro řešení problémů souvisejících s odesíláním a přijímáním zpráv. Byla přidána metoda Ractor.shareable_proc pro zjednodušení sdílení objektů Proc mezi různými aktory. Byly provedeny optimalizace datové struktury pro snížení konfliktů při nastavování globálních zámků a zlepšení efektivity mezipaměti CPU. Ractor by měl být stabilní funkcí v příštím roce. port1 = Ractor::Port.new port2 = Ractor::Port.new Ractor.new port1, port2 do |port1, port2| port1 << 1 port2 << 11 port1 << 2 port2 << 12 end 2.times{ p port1.receive } #=> 1, 2 2.times{ p port2.receive } #=> 11, 12
  • Operátor „*nil“ nyní okamžitě vrací prázdné pole („[]“) bez mezilehlého volání metody „nil.to_a“, podobně jako „**nil“ okamžitě vrací prázdný hash bez volání „nil.to_hash“.
  • Je povoleno dělit řádky logickými operátory "||", "&&", "and" a "or" tak, aby další řádek začínal tímto operátorem. if podmínka1 && podmínka2 … konec
  • Přidány metody Array#find a Array#rfind pro efektivnější vyhledávání prvků v poli, které jsou rychlejší než array.reverse_each.find a Enumerable#find.
  • Třídy Set a Pathname byly přesunuty do vestavěných tříd.
  • Možnosti mnoha základních tříd byly rozšířeny, například Binding, Enumerator, ErrorHighlight, Fiber, File, IO, Kernel, Math, Proc, Range, Socket, String, Thread.
  • Aktualizované verze vestavěných drahokamových modulů a těch, které jsou součástí standardní knihovny.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster