Selepas setahun pembangunan diterbitkan melepaskan Ruby 2.7.0, bahasa pengaturcaraan dinamik berorientasikan objek yang sangat cekap dalam pembangunan program dan menggabungkan ciri terbaik Perl, Java, Python, Smalltalk, Eiffel, Ada dan Lisp. Kod projek diedarkan di bawah lesen BSD (“2-klausa BSDL”) dan “Ruby”, yang merujuk kepada versi terkini lesen GPL dan serasi sepenuhnya dengan GPLv3. Ruby 2.7 ialah keluaran utama ketujuh berikutan proses pembangunan terancang yang mengambil masa setahun untuk menyediakan penambahbaikan fungsi dan menghasilkan keluaran penyelenggaraan setiap 2-3 bulan.
percubaan menyokong padanan corak (Padanan corak), yang membolehkan anda mengulangi objek tertentu dan menetapkan nilai jika terdapat padanan dengan corak.
kes [0, [1, 2, 3]] dalam [a, [b, *c]] pa #=> 0
pb # => 1
pc # => [2, 3] tamat
kes {a: 0, b: 1}
dalam{a:0,x:1}
: tidak boleh dicapai
dalam {a: 0, b: var}
p var # => 1
akhir
Cangkang pengiraan interaktif irb (REPL, Read-Eval-Print-Loop) kini menampilkan pengeditan berbilang baris, dilaksanakan menggunakan perpustakaan serasi baris baca mengalah, ditulis dalam Ruby. Sokongan rdoc telah disepadukan, membolehkan anda melihat maklumat rujukan mengenai kelas, modul dan kaedah tertentu dalam irb. Disediakan penonjolan warna baris kod yang ditunjukkan melalui Binding#irb dan hasil pemeriksaan objek kelas asas.
Menambahkan pemungut sampah padat (Compaction GC) yang boleh menyahfragmentasi kawasan memori, menyelesaikan masalah prestasi dan penggunaan memori yang disebabkan oleh pemecahan memori yang berlaku dalam beberapa aplikasi Ruby berbilang benang. Untuk mengemas objek pada timbunan dicadangkan Kaedah GC.compact, yang membolehkan anda mengurangkan bilangan halaman memori yang digunakan dan mengoptimumkan timbunan untuk operasi
CoW (salinan-tulisan).
Dijalankan bersedia untuk memisahkan hujah berdasarkan kedudukan senarai (“def foo(a,b,c)”) dan kata kunci (“def foo(key: val)”). Penukaran hujah automatik berdasarkan kata kunci dan kedudukan telah ditamatkan dan tidak akan disokong dalam cawangan Ruby 3.0. Secara khusus, ia telah ditamatkan penggunaan argumen terakhir sebagai parameter kata kunci, menghantar argumen berasaskan kata kunci sebagai parameter cincang terakhir dan membahagikan argumen terakhir kepada parameter kedudukan dan kata kunci.
Panggilan kaedah peribadi dibenarkan dengan literal "diri".
deffoo
akhir
peribadi :foo
diri.foo
Ditambah Enumerator::Lazy#eager kaedah untuk menjana penghitungan biasa daripada enumerator malas (Enumerator::Lazy).
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.peta {|x| x + "!" }.bersemangat
p e.class #=> Enumerator
e.peta {|x| x + "?" } #=> [“FOO!?”, “BAR!?”, “BAZ!?”]
Pembangunan pengkompil JIT percubaan telah diteruskan, yang boleh meningkatkan prestasi aplikasi dalam bahasa Ruby dengan ketara. Pengkompil JIT Ruby mula-mula menulis kod C ke cakera, dan kemudian memanggil pengkompil C luaran untuk menjana arahan mesin (menyokong panggilan GCC, Clang dan Microsoft VC++). Versi baharu melaksanakan kaedah untuk penempatan sebaris jika perlu, aplikasi terpilih mod pengoptimuman semasa penyusunan dipastikan, nilai lalai "--jit-min-calls" dinaikkan daripada 5 kepada 10000, dan "--jit-max- cache” daripada 1000 hingga 100 .
Peningkatan prestasi CGI.escapeHTML, Monitor dan MonitorMixin.
Module#name, true.to_s, false.to_s dan nil.to_s memastikan bahawa rentetan dikembalikan yang tidak berubah untuk objek yang ditentukan.
Saiz fail binari yang dijana oleh kaedah RubyVM::InstructionSequence#to_binary telah dikurangkan;
Versi komponen terbina dalam yang dikemas kini, termasuk
Bundler 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
Pengimbas Rentetan 1.0.3;
Perpustakaan telah dipindahkan daripada pakej asas kepada pakej permata luaran
CMath (permata cmath),
Scanf (permata scanf),
Shell (permata cangkang),
Penyegerak (permata penyegerakan),
ThreadsWait (permata thwait),
E2MM (permata e2mmap).
Modul stdlib lalai diterbitkan di rubygems.org:
penanda aras,
cgi,
perwakilan,
getoptlong,
pop bersih,
net-smtp
buka3,
pstore,
bujang. memantau modul tidak dipindahkan ke rubygems.org
pemerhati,
masa tamat,
pengesan,
uri,
yaml, yang hanya dihantar dengan teras delima.
Membina Ruby kini memerlukan pengkompil C yang menyokong standard C99.