Baada ya mwaka wa maendeleo iliyochapishwa kutolewa Ruby 2.7.0, lugha ya programu inayolengwa na kitu ambayo ina ufanisi mkubwa katika uundaji wa programu na inajumuisha vipengele bora vya Perl, Java, Python, Smalltalk, Eiffel, Ada na Lisp. Msimbo wa mradi unasambazwa chini ya leseni za BSD ("2-clause BSDL") na "Ruby", ambayo inarejelea toleo jipya la leseni ya GPL na inaoana kikamilifu na GPLv3. Ruby 2.7 ni toleo kuu la saba kuzalishwa kama sehemu ya mchakato wa maendeleo uliopangwa unaojumuisha kutenga mwaka kwa ajili ya uboreshaji wa vipengele na toleo la kiraka la miezi 2-3.
Majaribio kusaidia kulinganisha muundo (Kulinganisha muundo) kusisitiza juu ya kitu ulichopewa na kupeana thamani ikiwa kuna muundo unaolingana.
kesi [0, [1, 2, 3]] katika [a, [b, *c]] pa #=> 0
pb #=> 1
pc #=> [2, 3] mwisho
kesi {a: 0, b: 1}
katika {a: 0, x: 1}
: haipatikani
katika {a: 0, b: var}
p var #=> 1
mwisho
Ganda la hesabu shirikishi irb (REPL, Read-Eval-Print-Loop) sasa ina uhariri wa mistari mingi, unaotekelezwa kwa kutumia maktaba inayooana na laini. mstari, iliyoandikwa kwa Ruby. Usaidizi wa rdoc umeunganishwa, hukuruhusu kutazama maelezo ya marejeleo kwenye madarasa maalum, moduli na mbinu katika irb. Hutoa uangaziaji wa rangi wa mistari ya msimbo iliyoonyeshwa kupitia Binding#irb na matokeo ya ukaguzi wa vitu vya darasa la msingi.
Imeongeza mkusanyiko wa takataka (Compaction GC) ambao unaweza kutenganisha eneo la kumbukumbu, kutatua masuala ya utendakazi na matumizi ya kumbukumbu yanayosababishwa na mgawanyiko wa kumbukumbu unaotokea katika baadhi ya programu za Ruby zenye nyuzi nyingi. Kupakia vitu kwenye lundo iliyopendekezwa Mbinu ya GC.compact ili kupunguza idadi ya kurasa za kumbukumbu zinazotumika na kuboresha lundo kwa ajili ya uendeshaji
CoW (nakala-ya-kuandika).
Imetekelezwa kuandaa kutenganisha hoja kulingana na msimamo katika orodha ("def foo(a,b,c)") na maneno muhimu ("def foo(key: val)"). Ugeuzaji wa hoja otomatiki kulingana na manenomsingi na nafasi umeacha kutumika na hautaauniwa katika tawi la Ruby 3.0. Hasa, imeahirishwa kutumia hoja ya mwisho kama vigezo vya neno kuu, kupitisha hoja zenye msingi wa neno kuu kama kigezo cha mwisho cha heshi, na kugawanya hoja ya mwisho katika vigezo vya muda na vya neno kuu.
Simu ya njia ya kibinafsi inaruhusiwa na "binafsi" halisi
deffoo
mwisho
faragha :foo
mwenyewe.mjinga
Aliongeza Hesabu::Mbinu ya mvivu#ya kuhesabia mara kwa mara kutoka kwa hesabu mvivu (Mwenye kuhesabu::Mvivu).
a = %w(foo bar baz)
e = a.lazy.ramani {|x| x.upcase }.ramani {|x| x + "!" }. hamu
p e.darasa #=> Mhesabuji
p e.ramani {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
Utengenezaji wa mkusanyaji wa majaribio wa JIT umeendelea, ambao unaweza kuboresha kwa kiasi kikubwa utendakazi wa programu katika lugha ya Ruby. Mkusanyaji wa JIT wa Ruby huandika kwanza msimbo wa C kwenye diski, na kisha huita mkusanyaji wa C wa nje kutoa maagizo ya mashine (inasaidia kupiga simu kwa GCC, Clang, na Microsoft VC++). Toleo jipya hutekelezea mbinu ya utumaji wa ndani ikiwa ni lazima, matumizi ya kuchagua ya njia za uboreshaji wakati wa ujumuishaji yanahakikishwa, thamani chaguo-msingi ya "--jit-min-calls" inaongezwa kutoka 5 hadi 10000, na "--jit-max- cache" kutoka 1000 hadi 100.
Utendaji ulioboreshwa wa CGI.escapeHTML, Monitor na MonitorMixin.
Moduli#name, true.to_s, false.to_s, na nil.to_s huhakikisha kuwa mfuatano unarudishwa ambao haujabadilishwa kwa kitu kilichobainishwa.
Ukubwa wa faili jozi zinazozalishwa na mbinu ya RubyVM::InstructionSequence#to_binary imepunguzwa;
Matoleo yaliyosasishwa ya vipengele vilivyojengwa, ikiwa ni pamoja na
Bundler 2.1.2, RubyGems 3.1.2,
Mbio 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
StringScanner 1.0.3;
Maktaba zilihamishwa kutoka usambazaji msingi hadi vifurushi vya vito vya nje
CMath (kito cha cmth),
Scanf (scanf gem),
Shell (shell gem)
Kilandanishi (sawazisha vito),
ThreadsWait (kito cha thwait),
E2MM (kito cha e2mmap).
Moduli chaguo-msingi za stdlib zinachapishwa kwenye rubygems.org:
alama,
cgi,
mjumbe,
getoptlong,
pop wavu,
wavu smtp,
wazi3,
duka,
singleton. moduli za kufuatilia hazijahamishwa kwa rubygems.org
mwangalizi,
muda umeisha,
mfanyabiashara,
URI,
yaml, ambayo hutolewa tu katika ruby-core.
Kuunda Ruby sasa kunahitaji mkusanyiko wa C unaotumia kiwango cha C99.