Sawise setahun pembangunan diterbitake ngeculake Ruby 2.7.0, basa pemrograman dinamis lan berorientasi obyek sing efisien banget ing pangembangan program lan nggabungake fitur paling apik saka Perl, Java, Python, Smalltalk, Eiffel, Ada, lan Lisp. Kode proyek disebarake miturut lisensi BSD ("2 klausa BSDL") lan "Ruby", sing nuduhake versi paling anyar saka lisensi GPL lan kompatibel karo GPLv3. Ruby 2.7 minangka rilis utama kapitu sawise proses pangembangan sing direncanakake sing butuh setaun kanggo nyiapake perbaikan fungsional lan ngasilake rilis pangopènan saben 2-3 wulan.
eksperimen dhukungan pencocokan pola (Pola sing cocog) kanggo ngulang obyek sing diwenehake lan menehi nilai yen ana pola sing cocog.
kasus [0, [1, 2, 3]] ing [a, [b, *c]] pa # => 0
pb # => 1
pc # => [2, 3] pungkasan
kasus {a: 0, b: 1}
ing {a: 0, x: 1}
: ora kasedhiya
ing {a: 0, b: var}
p var # => 1
ends
Cangkang petungan interaktif irb (REPL, Read-Eval-Print-Loop) saiki nduweni fitur editing multi-line, diimplementasikake nggunakake perpustakaan sing kompatibel karo readline remine, ditulis ing Ruby. Dhukungan kanggo rdoc wis terintegrasi, sing ngidini ndeleng informasi referensi babagan kelas, modul lan cara sing ditemtokake ing irb. Panyorot warna garis kanthi kode sing ditampilake liwat Binding#irb lan asil mriksa obyek kelas dhasar diwenehake.
Nambahake kolektor uwuh kompak (Compaction GC) sing bisa defragment wilayah memori, mecahaken masalah kinerja alon lan tambah konsumsi memori amarga fragmentasi memori sing dumadi sak operasi sawetara aplikasi Ruby multi-Utas. Kanggo ngemas obyek ing tumpukan ngajokaken Cara GC.compact, sing ngidini sampeyan nyuda jumlah kaca memori sing digunakake lan ngoptimalake tumpukan kanggo operasi
CoW (copy-on-write).
Dilaksanakake nyiapake kanggo misahake argumen adhedhasar posisi dhaptar ("def foo(a,b,c)") lan tembung kunci ("def foo(key: val)"). Konversi argumen otomatis adhedhasar tembung kunci lan posisi wis ora digunakake lan ora bakal didhukung ing cabang Ruby 3.0. Secara khusus, wis ora digunakake nggunakake argumen pungkasan minangka parameter tembung kunci, ngliwati argumen adhedhasar tembung kunci minangka parameter hash pungkasan, lan pamisah argumen pungkasan dadi parameter posisi lan tembung kunci.
Diijini nelpon cara pribadi kanthi harfiah "dhiri"
def wae
ends
pribadhi: foo
dhewe.foo
Added Enumerator :: Lazy#eager method to generate a regular enumeration from a lazy enumerator (Enumerator :: Lazy).
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.semangat
p e.class # => Enumerator
e.peta {|x| x +"? } # => ["FOO!?", "BAR!?", "BAZ!?"]
Pangembangan kompiler JIT eksperimen terus, sing bisa ningkatake kinerja aplikasi ing basa Ruby kanthi signifikan. Compiler JIT Ruby pisanan nulis kode C menyang disk, lan banjur nelpon kompiler C external kanggo generate instruksi mesin (ndhukung nelpon GCC, Clang, lan Microsoft VC ++). Versi anyar ngleksanakake cara kanggo panyebaran inline yen perlu, aplikasi selektif mode optimasi sajrone kompilasi dipastikan, nilai standar "--jit-min-calls" tambah saka 5 dadi 10000, lan "--jit-max- cache" saka 1000 nganti 100 .
Peningkatan kinerja CGI.escapeHTML, Monitor lan MonitorMixin.
Modul#name, true.to_s, false.to_s, lan nil.to_s mesthekake yen string bali sing ora diganti kanggo obyek kasebut.
Ukuran file binar sing digawe dening metode RubyVM::InstructionSequence#to_binary; wis dikurangi.
Dianyari versi komponen dibangun ing, kalebu
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;
Pustaka wis dipindhah saka paket dhasar menyang paket permata eksternal
CMath (permata cmath),
Scanf (permata scanf),
Shell (permata cangkang)
Sinkronisasi (permata sinkronisasi),
ThreadsWait (permata thwait),
E2MM (permata e2mmap).
Modul stdlib standar diterbitake ing rubygems.org:
pathokan,
cgi,
utusan
getoptlong,
net pop,
net-smtp
mbukak3,
pstore,
tunggal. modul monitor ora dipindhah menyang rubygems.org
pengamat,
wektu ne entek
tracer
uri,
yaml, kang mung kasedhiya ing ruby-inti.
Bangunan Ruby saiki mbutuhake kompiler C sing ndhukung standar C99.