Eftir eins árs þróun birt sleppa Ruby 2.7.0, kraftmikið hlutbundið forritunarmál sem er mjög skilvirkt í þróun forrita og inniheldur bestu eiginleika Perl, Java, Python, Smalltalk, Eiffel, Ada og Lisp. Verkefniskóðanum er dreift undir BSD ("2-lið BSDL") og "Ruby" leyfi, sem vísar til nýjustu útgáfu GPL leyfisins og er fullkomlega samhæft við GPLv3. Ruby 2.7 er sjöunda stóra útgáfan sem er framleidd sem hluti af fyrirhuguðu þróunarferli sem felur í sér að taka eitt ár til hliðar fyrir endurbætur á eiginleikum og 2-3 mánaða plástraútgáfu.
tilrauna styðja mynstursamsvörun (Samsvörun á mynstri) til að endurtaka yfir tiltekinn hlut og úthluta gildi ef það er mynstursamsvörun.
fall [0, [1, 2, 3]] í [a, [b, *c]] á #=> 0
pb #=> 1
pc #=> [2, 3] enda
mál {a: 0, b: 1}
í{a:0,x:1}
: óaðgengilegt
í {a: 0, b: var}
p var #=> 1
enda
Skel gagnvirkra útreikninga irb (REPL, Read-Eval-Print-Loop) hefur nú möguleika á fjöllínu klippingu, útfærð með því að nota leslínusamhæft bókasafn endurlínaskrifað í Ruby. Stuðningur við rdoc hefur verið samþættur, sem gerir kleift að skoða tilvísunarupplýsingar um tilgreinda flokka, einingar og aðferðir í irb. Lituð auðkenning á línum með kóða sem sýndur er með Binding#irb og niðurstöðum skoðunar á grunnflokkshlutum er til staðar.
Bætt við fyrirferðarlítilli sorphirðu (Compaction GC) sem getur framkvæmt defragmentation á svæði í minni, leyst vandamál með hægum afköstum og aukinni minnisnotkun vegna minnisbrots sem á sér stað við notkun sumra fjölþráða Ruby forrita. Til að pakka hlutum á hauginn lagt til GC.compact aðferð til að fækka minnissíðum sem eru notaðar og fínstilla hrúguna fyrir aðgerðir
CoW (copy-on-write).
Framkvæmt undirbúa að aðskilja rök sem byggjast á staðsetningu á listanum ("def foo(a,b,c)") og leitarorðum ("def foo(lykill: val)"). Sjálfvirk rökbreyting byggð á leitarorðum og stöðu hefur verið úrelt og verður ekki studd í Ruby 3.0 útibúinu. Sérstaklega hefur það verið úrelt að nota síðustu röksemdina sem leitarorðafæribreytur, að senda rök sem byggja á leitarorðum sem síðustu kjötkássabreytu og að skipta síðustu röksemdinni í staðsetningar- og leitarorðafæribreytur.
def foo(lykill: 42); enda; foo({lykill: 42}) #varað við
def foo(**kw); enda; foo({lykill: 42}) #varað við
def foo(lykill: 42); enda; foo(**{lykill: 42}) # Allt í lagi
def foo(**kw); enda; foo(**{lykill: 42}) # Allt í lagi
def foo(h, **kw); enda; foo(lykill: 42) #varað
def foo(h, lykill: 42); enda; foo(lykill: 42) #varað við
def foo(h, **kw); enda; foo({lykill: 42}) # Allt í lagi
def foo(h, lykill: 42); enda; foo({lykill: 42}) # Allt í lagi
def foo(h, **null); enda; foo (lykill: 1) # ArgumentError
def foo(h, **null); enda; foo(**{lykill: 1}) # ArgumentError
def foo(h, **null); enda; foo("str"=> 1) # ArgumentError
def foo(h, **null); enda; foo({lykill: 1}) # Allt í lagi
def foo(h, **null); enda; foo({"str"=> 1}) # Allt í lagi
h = {}; def foo(*a) enda; foo(**h) # [] h = {}; def foo(a) enda; foo(**h) # {} og viðvörun
h = {}; def foo(*a) enda; foo(h) # [{}] h = {}; def foo(a) enda; foo(h) # {}
Tækifæri með því að nota númeruð breytuheiti sjálfgefið fyrir blokkbreytur.
[1, 2, 3].hver { setur @1 } # eins og [1, 2, 3].hver { |i| setur i}
Tilraunastuðningur fyrir svið án upphafsgildis.
ary[..3] # sama og ary[0..3] rel.where(sala: ..100)
Bætti við Enumerable#tally aðferðinni, sem telur hversu oft hver þáttur kemur fyrir.
["a", "b", "c", "b"]
#=> {"a"=>1, "b"=>2, "c"=>1}
Einkaaðferðarkall leyft með „sjálf“ bókstaflega
deffoo
enda
einkamál :foo
sjálf.fó
Bætti við Enumerator::Lazy#eager aðferðinni til að búa til eðlilega upptalningu úr latri (Enumerator::Lazy) upptalningu.
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.kort {|x| x + "!" }.fús
p e.class #=> Tölunarmaður
e.kort {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
Þróun tilrauna JIT þýðanda hefur haldið áfram, sem getur verulega bætt afköst forrita á Ruby tungumálinu. JIT þýðandinn sem lagður er til í Ruby skrifar fyrst C kóða á diskinn, eftir það kallar hann á ytri C þýðanda til að búa til vélaleiðbeiningar (GCC, Clang og Microsoft VC ++ eru studd). Nýja útgáfan útfærir aðferð fyrir innbyggða dreifingu ef nauðsyn krefur, sértæka beitingu hagræðingarhama við söfnun, sjálfgefið gildi "--jit-min-kalla" er hækkað úr 5 í 10000 og "--jit-max-cache" frá 1000 til 100.
Bætt afköst CGI.escapeHTML, Monitor og MonitorMixin.
Module#name, true.to_s, false.to_s og nil.to_s tryggja að strengur sé skilaður sem er óbreyttur fyrir tilgreindan hlut.
Stærð tvöfaldra skráa sem eru búnar til með RubyVM::InstructionSequence#to_binary aðferðinni hefur verið minnkað;
Uppfærðar útgáfur af innbyggðum íhlutum, þar á meðal
Bundler 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
Strengjaskanni 1.0.3;
Bókasöfn færðust úr grunndreifingu yfir í ytri gimsteinapakka
CMath (cmath gimsteinn),
Scanf (scanf gem),
Skel (skel gimsteinn),
Synchronizer (sync gem),
ThreadsWait (thwait gem),
E2MM (e2mmap gimsteinn).
Sjálfgefnar stdlib einingar eru birtar á rubygems.org:
viðmið,
cgi,
fulltrúi,
getoptlong,
net popp,
net smtp,
opinn 3,
pstore,
einhleypur. Fylgjast með einingar sem ekki voru færðar á rubygems.org
áhorfandi,
Hlé,
rekjaefni,
uri,
yaml, sem eru aðeins sendar með rúbínkjarna.
Building Ruby krefst nú C þýðanda sem styður C99 staðalinn.