Bir yillik rivojlanishdan keyin e'lon qilindi reliz Ruby 2.7.0, dastur ishlab chiqishda yuqori samaradorlik va Perl, Java, Python, Smalltalk, Eiffel, Ada va Lispning eng yaxshi xususiyatlarini o'zida mujassam etgan dinamik ob'ektga yo'naltirilgan dasturlash tili. Loyiha kodi BSD ("2-bandli BSDL") va "Ruby" litsenziyalari ostida tarqatiladi, bu GPL litsenziyasining so'nggi versiyasiga ishora qiladi va GPLv3 bilan to'liq mos keladi. Ruby 2.7 - bu rejalashtirilgan rivojlanish jarayonining bir qismi sifatida ishlab chiqarilgan ettinchi yirik reliz bo'lib, u xususiyatlarni yaxshilash uchun bir yil ajratish va 2-3 oylik yamoqlarni chiqarishni o'z ichiga oladi.
eksperimental qo'llab-quvvatlash naqsh mosligi (Shakl mosligi) berilgan ob'ektni takrorlash va agar naqsh mos bo'lsa, qiymat belgilash.
case [0, [1, 2, 3]] in [a, [b, *c]] pa #=> 0
pb #=> 1
kompyuter #=> [2, 3] oxiri
hol {a: 0, b: 1}
{a:0,x:1} ichida
: erishib bo'lmaydi
ichida {a: 0, b: var}
p var #=> 1
oxiri
irb interaktiv hisob-kitoblar qobig'i (REPL, Read-Eval-Print-Loop) endi ko'p qatorli tahrirlash imkoniyatiga ega bo'lib, ular o'qishga mos keladigan kutubxona yordamida amalga oshiriladi. qayta chiziqRuby tilida yozilgan. rdoc-ni qo'llab-quvvatlash integratsiya qilingan, bu irb-da belgilangan sinflar, modullar va usullar bo'yicha ma'lumotnoma ma'lumotlarini ko'rish imkonini beradi. Binding#irb orqali ko'rsatilgan kodli chiziqlarni rangli ta'kidlash va asosiy sinf ob'ektlarini tekshirish natijalari taqdim etiladi.
Ba'zi ko'p tarmoqli Ruby ilovalari ishlashi paytida yuzaga keladigan xotira parchalanishi tufayli sekin ishlash va xotira sarfini oshirish muammolarini hal qiladigan, xotira hududini defragmentatsiya qilishni amalga oshiradigan ixcham axlat yig'uvchi (Compaction GC) qo'shildi. Ob'ektlarni uyaga yig'ish uchun taklif qildi GC.compact usuli ishlatilgan xotira sahifalari sonini kamaytirish va operatsiyalar uchun to'pni optimallashtirish
Sigir (yozishda nusxa ko'chirish).
Amalga oshirildi; bajarildi ro'yxatdagi ("def foo(a,b,c)") va kalit so'zlar ("def foo(kalit: val)")dagi pozitsiyaga asoslangan argumentlarni ajratishga tayyorgarlik. Kalit so‘zlar va pozitsiyaga asoslangan argumentlarni avtomatik o‘zgartirish eskirgan va Ruby 3.0 filialida qo‘llab-quvvatlanmaydi. Xususan, oxirgi argumentni kalit so‘z parametrlari sifatida ishlatish, kalit so‘zga asoslangan argumentlarni oxirgi xesh parametri sifatida o‘tkazish va oxirgi argumentni pozitsion va kalit so‘z parametrlariga bo‘lish bekor qilingan.
Shaxsiy usul chaqiruviga "self" harfi bilan ruxsat beriladi
deffoo
oxiri
shaxsiy: foo
self.foo
Lazy (Enumerator::Lazy) ro'yxatidan muntazam ro'yxat yaratish uchun qo'shilgan Enumerator::Lazy#eager usuli.
a = %w(foo bar baz)
e = a.dangasa.xarita {|x| x.upcase }.map {|x| x + "!" }.ishtiyoqli
p e.class #=> Hisoblagich
e.xarita {|x| x + "?" } #=> [“FOO!?”, “BAR!?”, “BAZ!?”]
Eksperimental JIT kompilyatorini ishlab chiqish davom etdi, bu Ruby tilidagi ilovalarning ishlashini sezilarli darajada yaxshilaydi. Ruby-da taklif qilingan JIT kompilyatori dastlab diskga C kodini yozadi, so'ngra u mashina ko'rsatmalarini yaratish uchun tashqi C kompilyatorini chaqiradi (GCC, Clang va Microsoft VC ++ qo'llab-quvvatlanadi). Yangi versiya, agar kerak bo'lsa, inline joylashtirish usulini amalga oshiradi, kompilyatsiya paytida optimallashtirish rejimlarini tanlab qo'llaydi, "--jit-min-calls" standart qiymati 5 dan 10000 gacha oshiriladi va "--jit-max-kesh" 1000 dan 100 gacha.
CGI.escapeHTML, Monitor va MonitorMixinning yaxshilangan ishlashi.
Module#name, true.to_s, false.to_s va nil.to_s belgilangan ob'ekt uchun o'zgarmagan satr qaytarilishini ta'minlaydi.
RubyVM::InstructionSequence#to_binary usuli bilan yaratilgan ikkilik fayllar hajmi qisqartirildi;
Kutubxonalar asosiy tarqatishdan tashqi qimmatbaho toshlar paketlariga o'tdi
CMath (qimmatli tosh),
Scanf (scanf gem),
Shell (qobiq marvarid),
Sinxronizator (sinxronlash marvaridlari),
ThreadsWait (kuting marvarid),
E2MM (e2mmap marvarid).
Standart stdlib modullari rubygems.org saytida nashr etilgan:
benchmark,
cgi,
delegat,
getoptlong,
net pop,
net smtp,
ochiq3,
pstore,
singleton. Monitor modullari rubygems.org saytiga ko'chirilmadi
kuzatuvchi,
taym-aut; turib qolish; tanaffus,
kuzatuvchi,
uri,
yaml, ular faqat ruby-yadro bilan jo'natiladi.
Ruby Building endi C99 standartini qo'llab-quvvatlaydigan C kompilyatorini talab qiladi.