Nakon godinu dana razvoja objavljen puštanje Ruby 2.7.0, dinamički objektno orijentirani programski jezik koji je vrlo učinkovit u razvoju programa i uključuje najbolje značajke Perla, Jave, Pythona, Smalltalka, Eiffela, Ade i Lispa. Kôd projekta distribuira se pod licencama BSD ("2-clause BSDL") i "Ruby", što se odnosi na najnoviju verziju GPL licence i potpuno je kompatibilno s GPLv3. Ruby 2.7 je sedmo veliko izdanje koje će biti napravljeno kao dio planiranog razvojnog procesa koji uključuje odlaganje godinu dana za poboljšanja značajki i izdanje zakrpe za 2-3 mjeseca.
Eksperimentalno podržati podudaranje uzoraka (Usklađivanje uzorka) za ponavljanje preko zadanog objekta i dodjeljivanje vrijednosti ako postoji podudaranje uzorka.
slučaj [0, [1, 2, 3]] u [a, [b, *c]] pa #=> 0
pb #=> 1
pc #=> [2, 3] kraj
slučaj {a: 0, b: 1}
u{a:0,x:1}
:nedostupan
u {a: 0, b: var}
p var #=> 1
kraj
Ljuska interaktivnih izračuna irb (REPL, Read-Eval-Print-Loop) sada ima mogućnost uređivanja u više redaka, implementirano pomoću biblioteke kompatibilne s readline-om ponovno postavitinapisano u rubinu. Integrirana je podrška za rdoc, koja omogućuje pregled referentnih informacija o određenim klasama, modulima i metodama u irb-u. Omogućeno je isticanje redaka u boji s kodom prikazanim kroz Binding#irb i rezultatima pregledavanja objekata osnovne klase.
Dodan je kompaktni skupljač smeća (Compaction GC) koji može defragmentirati regiju memorije, rješavajući probleme sporog rada i povećane potrošnje memorije zbog fragmentacije memorije do koje dolazi tijekom rada nekih Ruby aplikacija s više niti. Za pakiranje objekata na gomilu zaprosio Metoda GC.compact za smanjenje broja korištenih memorijskih stranica i optimiziranje gomile za operacije
CoW (copy-on-write).
Izvedeno priprema za odvajanje argumenata na temelju položaja na popisu ("def foo(a,b,c)") i ključnih riječi ("def foo(key: val)"). Automatska pretvorba argumenata na temelju ključnih riječi i položaja je zastarjela i neće biti podržana u grani Ruby 3.0. Konkretno, zastarjelo je korištenje zadnjeg argumenta kao parametara ključne riječi, prosljeđivanje argumenata temeljenih na ključnoj riječi kao posljednjeg parametra raspršivanja i dijeljenje posljednjeg argumenta na pozicijske i ključne parametre.
Poziv privatne metode dopušten je s literalom "sebe".
deffoo
kraj
privatno :foo
self.foo
Dodana je metoda Enumerator::Lazy#eager za generiranje normalnog popisivanja iz lijenog (Enumerator::Lazy) popisivanja.
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.željan
p e.klasa #=> Popisivač
e.map {|x| x + "?" } #=> [“FOO!?”, “BAR!?”, “BAZ!?”]
Nastavljen je razvoj eksperimentalnog JIT prevoditelja koji može značajno poboljšati performanse aplikacija u Ruby jeziku. JIT prevodilac predložen u Rubyju prvo zapisuje C kod na disk, nakon čega poziva vanjski C prevodilac za generiranje strojnih instrukcija (podržani su GCC, Clang i Microsoft VC ++). Nova verzija implementira metodu za inline implementaciju ako je potrebno, selektivnu primjenu načina optimizacije tijekom kompilacije, zadana vrijednost "--jit-min-calls" povećana je s 5 na 10000, a "--jit-max-cache" od 1000 do 100 .
Poboljšana izvedba CGI.escapeHTML, Monitor i MonitorMixin.
Module#name, true.to_s, false.to_s i nil.to_s osiguravaju vraćanje niza koji je nepromijenjen za navedeni objekt.
Veličina binarnih datoteka generiranih metodom RubyVM::InstructionSequence#to_binary je smanjena;
Ažurirane verzije ugrađenih komponenti, uključujući
Bundler 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
Skener nizova 1.0.3;
Knjižnice su premještene s osnovne distribucije na vanjske gem pakete
CMath (cmath gem),
Scanf (skenf dragulj),
Školjka (dragulj od školjke),
Sinkronizator (sinkronizacija dragulj),
ThreadsWait (thwait gem),
E2MM (e2mmap dragulj).
Zadani stdlib moduli objavljeni su na rubygems.org:
mjerilo,
cgi,
delegat,
getoptlong,
net pop,
net smtp,
otvoriti3,
pstore,
samac. Moduli monitora nisu premješteni na rubygems.org
posmatrač,
pauza,
tragač,
uri,
yaml, koji se isporučuju samo s ruby-coreom.
Izgradnja Rubyja sada zahtijeva C kompajler koji podržava C99 standard.