Apre yon ane nan devlopman pibliye lage Ruby 2.7.0, yon langaj pwogram dinamik oryante objè ki trè efikas nan devlopman pwogram epi li enkòpore pi bon karakteristik Perl, Java, Python, Smalltalk, Eiffel, Ada ak Lisp. Kòd pwojè a distribye anba lisans BSD ("2-kloz BSDL") ak "Ruby", ki refere a dènye vèsyon lisans GPL la epi li konplètman konpatib ak GPLv3. Ruby 2.7 se setyèm pi gwo lage ki fèt nan kad yon pwosesis devlopman planifye ki gen ladann mete sou kote yon ane pou amelyorasyon karakteristik ak yon lage patch 2-3 mwa.
eksperimantal sipòte matche modèl (Modèl matche) pou itere sou objè yo bay la epi bay yon valè si gen yon matche ak modèl.
ka [0, [1, 2, 3]] nan [a, [b, *c]] pa #=> 0
pb # => 1
pc # => [2, 3] fen
ka {a: 0, b: 1}
nan{a:0,x:1}
: inaccessible
nan {a: 0, b: var}
p var # => 1
fen
Koki kalkil entèaktif irb (REPL, Read-Eval-Print-Loop) kounye a gen posiblite pou koreksyon milti-liy, aplike lè l sèvi avèk yon bibliyotèk ki konpatib ak readline. liyekri nan Ruby. Sipò pou rdoc te entegre, ki pèmèt gade enfòmasyon referans sou klas espesifye, modil ak metòd nan irb. Mete aksan sou liy koulè ak kòd yo montre nan Binding#irb ak rezilta enspekte objè klas debaz yo bay.
Te ajoute yon pèseptè fatra kontra enfòmèl ant (Compaction GC) ki ka fè defragmantasyon nan yon rejyon nan memwa, rezoud pwoblèm yo nan pèfòmans dousman ak ogmante konsomasyon memwa akòz fwagmantasyon memwa ki fèt pandan operasyon an nan kèk aplikasyon Ruby milti-threaded. Pou pake objè sou pil la pwopoze GC.compact metòd pou redwi kantite paj memwa yo itilize epi optimize pil pou operasyon yo
CoW (kopi-sou-ekri).
Te pote soti prepare pou separe agiman ki baze sou pozisyon nan lis la ("def foo(a,b,c)") ak mo kle ("def foo(kle: val)"). Konvèsyon agiman otomatik ki baze sou mo kle ak pozisyon yo te obsolète epi yo pa pral sipòte nan branch Ruby 3.0 la. An patikilye, li te depreche itilize dènye agiman an kòm paramèt mo kle, pase agiman ki baze sou mo kle kòm dènye paramèt hash la, ak divize dènye agiman an nan paramèt pozisyon ak mo kle.
Te ajoute metòd Enumerator::Lazy#eager pou jenere enimerasyon regilye nan enimerasyon parese (Enumerator::Lazy).
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.anvi
p e.class # => Animetè
e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
Devlopman yon konpilateur JIT eksperimantal kontinye, sa ki ka siyifikativman amelyore pèfòmans aplikasyon yo nan lang Ruby. Konpilateur JIT yo te pwopoze nan Ruby premye ekri kòd C nan disk, apre sa li rele yon konpilatè C ekstèn pou jenere enstriksyon machin (GCC, Clang ak Microsoft VC ++ yo sipòte). Nouvo vèsyon an aplike yon metòd pou deplwaman inline si sa nesesè, aplikasyon selektif nan mòd optimize pandan konpilasyon, valè default "--jit-min-calls" ogmante soti nan 5 a 10000, ak "--jit-max-cache" soti nan 1000 a 100.
Amelyore pèfòmans CGI.escapeHTML, Monitor ak MonitorMixin.
Modil#name, true.to_s, false.to_s, ak nil.to_s asire ke yo retounen yon kòd ki pa chanje pou objè a espesifye.
Gwosè fichye binè yo te pwodwi pa metòd RubyVM::InstructionSequence#to_binary te redwi;
Mizajou vèsyon nan eleman entegre, ki gen ladan
Bundler 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
String Scanner 1.0.3;
Bibliyotèk te deplase soti nan distribisyon baz nan pakè gem ekstèn
CMath (gem Cmath),
Scanf (scanf gem),
Shell (koki gem),
Synchronizer (sync gem),
ThreadsWait (tann gem),
E2MM (e2mmap gem).
Modil stdlib default yo pibliye sou rubygems.org:
referans,
cgi,
delege,
getoptlong,
pòp nèt,
net smtp,
louvri3,
pstore,
singleton. Siveye modil pa deplase nan rubygems.org
obsèvatè,
delè,
traseur,
uri,
yaml, ki fè yo sèlman anbake ak Ruby-core.
Building Ruby kounye a mande pou yon du C ki sipòte estanda C99 la.