Pärast aastast arengut avaldatud vabastama Ruby 2.7.0, dünaamiline objektorienteeritud programmeerimiskeel, mis on programmide arendamisel väga tõhus ja sisaldab Perli, Java, Pythoni, Smalltalki, Eiffeli, Ada ja Lispi parimaid omadusi. Projekti koodi levitatakse litsentside BSD ("2-klausliga BSDL") ja "Ruby" all, mis viitab GPL-i litsentsi uusimale versioonile ja ühildub täielikult GPLv3-ga. Ruby 2.7 on seitsmes suurem väljalase, mis tehakse osana kavandatud arendusprotsessist, mis hõlmab funktsioonide täiustamiseks aasta aega ja 2–3-kuulist plaastri väljalaset.
Eksperimentaalne toetama mustri sobitamine (Mustri sobitamine), et korrata antud objekti üle ja määrata väärtus, kui mustri vaste on olemas.
juhtum [0, [1, 2, 3]] in [a, [b, *c]] pa #=> 0
pb #=> 1
pc #=> [2, 3] lõpp
juhtum {a: 0, b: 1}
in{a:0,x:1}
: kättesaamatu
{a: 0, b: var}
p var #=> 1
lõpp
Interaktiivsete arvutuste kestil irb (REPL, Read-Eval-Print-Loop) on nüüd võimalus mitmerealiseks redigeerimiseks, mis on realiseeritud lugemisliiniga ühilduva teegi abil ridakirjutatud rubiiniga. Integreeritud on rdoc tugi, mis võimaldab vaadata viiteteavet määratud klasside, moodulite ja meetodite kohta irb-s. Esitatakse Binding#irb kaudu näidatud joonte värviline esiletõstmine koodiga ja baasklassi objektide kontrollimise tulemused.
Lisatud on tihendus-GC, mis suudab mälupiirkonda defragmentida, lahendades aeglase jõudluse ja suurenenud mälutarbimise probleemid, mis on tingitud mälu killustatusest, mis tekib mõne mitmelõimelise Ruby rakenduse töötamise ajal. Objektide pakkimiseks hunnikule pakutud GC.compact meetod kasutatavate mälulehtede arvu vähendamiseks ja kuhja optimeerimiseks toimingute jaoks
CoW (copy-on-write).
Läbi viidud valmistub argumentide eraldamiseks positsiooni alusel loendis ("def foo(a,b,c)") ja märksõnadel ("def foo(key: val)"). Märksõnadel ja positsioonil põhinev automaatne argumentide teisendamine on aegunud ja seda ei toetata Ruby 3.0 harus. Eelkõige on aegunud kasutada viimast argumenti märksõna parameetritena, märksõnapõhiste argumentide edastamist viimase räsiparameetrina ning viimase argumendi jagamist positsiooni- ja märksõnaparameetriteks.
Privaatmeetodi kutse on lubatud "self" literaaliga
deffoo
lõpp
privaatne :foo
ise.foo
Lisatud Loendaja::Lazy#eager meetod regulaarse loenduse genereerimiseks laisk (loendaja::Lazy) loendusest.
a = %w(foo bar baz)
e = a.laisk.kaart {|x| x.upcase }.map {|x| x + "!" }.agar
p e.klass #=> Loendaja
e.kaart {|x| x + "?" } #=> ["FOO!?", "BAAR!?", "BAZ!?"]
Jätkus eksperimentaalse JIT-kompilaatori arendamine, mis võib oluliselt parandada Ruby keeles olevate rakenduste jõudlust. Rubys pakutud JIT-kompilaator kirjutab esmalt kettale C-koodi, misjärel kutsub välja välise C-kompilaatori, et genereerida masinakäske (toetatud on GCC, Clang ja Microsoft VC ++). Uus versioon rakendab vajaduse korral sisemise juurutamise meetodit, optimeerimisrežiimide valikulist rakendamist kompileerimise ajal, vaikeväärtust "--jit-min-calls" suurendatakse 5-lt 10000-le ja "--jit-max-cache" 1000 kuni 100.
Täiustatud CGI.escapeHTML-i, Monitori ja MonitorMixini jõudlus.
Mooduli #nimi, tõene.to_s, vale.to_s ja null.to_s tagavad, et määratud objekti puhul tagastatakse string, mis on muutumatu.
RubyVM::InstructionSequence#to_binary meetodil genereeritud binaarfailide suurust on vähendatud;
Vaikimisi stdlib-moodulid avaldatakse saidil rubygems.org:
võrdlusalus,
cgi,
delegaat,
pikutama,
net pop,
net smtp,
avatud 3,
pstore,
üksikud. Monitori mooduleid pole rubygems.org-i teisaldatud
vaatleja,
aeg maha,
jälgija,
uri,
yaml, mis tarnitakse ainult rubiinsüdamikuga.
Ruby loomiseks on nüüd vaja C-kompilaatorit, mis toetab C99 standardit.