Bir illik inkişafdan sonra nəşr olundu buraxın Ruby 2.7.0, proqram inkişafında yüksək effektiv olan və Perl, Java, Python, Smalltalk, Eiffel, Ada və Lisp-in ən yaxşı xüsusiyyətlərini özündə birləşdirən dinamik obyekt yönümlü proqramlaşdırma dili. Layihə kodu GPL lisenziyasının ən son versiyasına istinad edən və GPLv2 ilə tam uyğun gələn BSD ("3-bəndli BSDL") və "Ruby" lisenziyaları altında paylanır. Ruby 2.7, xüsusiyyət təkmilləşdirmələri və 2-3 aylıq yamaq buraxılışı üçün bir il ayırmağı əhatə edən planlaşdırılmış inkişaf prosesinin bir hissəsi kimi istehsal ediləcək yeddinci əsas buraxılışdır.
eksperimental dəstək nümunə uyğunluğu (Nümunə uyğunluğu) verilmiş obyekt üzərində təkrarlamaq və nümunə uyğunluğu varsa, qiymət təyin etmək.
halda [0, [1, 2, 3]] in [a, [b, *c]] pa #=> 0
pb #=> 1
pc #=> [2, 3] sonu
hal {a: 0, b: 1}
{a: 0, x: 1} ilə
:əlçatmaz
{a: 0, b: var} ilə
p var #=> 1
son
irb interaktiv hesablamalar qabığı (REPL, Read-Eval-Print-Loop) indi oxunuş xəttinə uyğun kitabxanadan istifadə etməklə həyata keçirilən çoxsətirli redaktə edir uzanmaq, Ruby dilində yazılmışdır. rdoc dəstəyi inteqrasiya olunub ki, bu da irb-də müəyyən edilmiş siniflər, modullar və metodlar haqqında arayış məlumatlarına baxmaq imkanı verir. Binding#irb vasitəsilə göstərilən kod sətirlərinin rənglə vurğulanması və əsas sinif obyektlərinin təftişinin nəticələri.
Bəzi çox yivli Ruby proqramlarının işləməsi zamanı baş verən yaddaşın parçalanması səbəbindən yavaş işləmə və yaddaş istehlakının artması problemlərini həll edən, yaddaşın bir hissəsinin defraqmentasiyasını həyata keçirə bilən yığcam zibil toplayıcısı (Compaction GC) əlavə edildi. Obyektləri yığının üzərinə yığmaq üçün təklif etdi İstifadə olunan yaddaş səhifələrinin sayını azaltmaq və əməliyyatlar üçün yığını optimallaşdırmaq üçün GC.compact metodu
İnək (yazılı surətdə).
Həyata keçirilən siyahı mövqeyi (“def foo(a,b,c)”) və açar sözlər (“def foo(açar: val)”) əsasında arqumentləri ayırmağa hazırlaşır. Açar sözlərə və mövqeyə əsaslanan avtomatik arqument çevrilməsi köhnəlib və Ruby 3.0 filialında dəstəklənməyəcək. Xüsusilə, o, son arqumenti açar söz parametrləri kimi istifadə etməyi, açar sözə əsaslanan arqumentləri son hash parametri kimi ötürməyi və sonuncu arqumenti mövqe və açar söz parametrlərinə bölməyi ləğv etdi.
def foo (açar: 42); son; foo({açar: 42}) # xəbərdarlıq edildi
def foo(**kw); son; foo({açar: 42}) #xəbərdar edildi
def foo (açar: 42); son; foo(**{açar: 42}) # OK
def foo(**kw); son; foo(**{açar: 42}) # OK
def foo(h, **kw); son; foo(açar: 42) # xəbərdarlıq edildi
def foo(h, açar: 42); son; foo(açar: 42) # xəbərdarlıq edildi
def foo(h, **kw); son; foo({açar: 42}) # OK
def foo(h, açar: 42); son; foo({açar: 42}) # OK
Şəxsi metod çağırışına "self" hərfi ilə icazə verilir
def foo
son
şəxsi: foo
self.foo
Tənbəl sayıcıdan müntəzəm siyahı yaratmaq üçün Sayımçı::Lazy#eager metodu əlavə edildi (Saylayıcı::Lazy).
a = %w(foo bar baz)
e = a.tənbəl.xəritə {|x| x.upcase }.xəritə {|x| x + "!" }.istəkli
p e.class #=> Sayıcı
p e.xəritə {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
Ruby dilində tətbiqlərin işini əhəmiyyətli dərəcədə yaxşılaşdıra bilən eksperimental JIT kompilyatorunun inkişafı davam etdi. Ruby-də təklif olunan JIT kompilyatoru əvvəlcə diskə C kodu yazır, bundan sonra maşın təlimatlarını yaratmaq üçün xarici C kompilyatorunu çağırır (GCC, Clang və Microsoft VC ++ dəstəklənir). Yeni versiya, zəruri hallarda daxili yerləşdirmə metodunu həyata keçirir, kompilyasiya zamanı optimallaşdırma rejimlərinin seçmə tətbiqi, "--jit-min-zənglər"in standart dəyəri 5-dən 10000-ə qədər artırılır və "--jit-max-cache" 1000-dən 100-ə qədər.
CGI.escapeHTML, Monitor və MonitorMixin-in təkmilləşdirilmiş performansı.
Module#name, true.to_s, false.to_s və nil.to_s təmin edir ki, göstərilən obyekt üçün dəyişməz sətir qaytarılır.
RubyVM::InstructionSequence#to_binary metodu ilə yaradılan ikili faylların ölçüsü azaldılıb;
Daxil olmaqla daxili komponentlərin yenilənmiş versiyaları
Bundler 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
StringScanner 1.0.3;
Kitabxanalar əsas paketdən xarici qiymətli daş paketlərinə köçürüldü
CMath (cmath gem),
Scanf (scanf gem),
Qabıq (qabıq daş)
Sinxronizator (sinxronizasiya incisi),
ThreadsWait (gözləyin),
E2MM (e2mmap gem).
Standart stdlib modulları rubygems.org saytında dərc olunur:
etalon,
cgi,
nümayəndə
getoptlong,
net pop,
net-smtp
açıq3,
mağaza,
singleton. monitor modulları rubygems.org saytına köçürülmədi
müşahidəçi,
vaxt,
izləyici,
uri,
yaml, yalnız ruby-core ilə göndərilir.
Ruby qurmaq indi C99 standartını dəstəkləyən C kompilyatorunu tələb edir.