Бір жылдық дамудан кейін жарияланған босату Ruby 2.7.0, бағдарлама жасауда жоғары тиімді және Perl, Java, Python, Smalltalk, Eiffel, Ada және Lisp ең жақсы мүмкіндіктерін қамтитын динамикалық объектіге бағытталған бағдарламалау тілі. Жоба коды BSD («2-тармақ BSDL») және «Ruby» лицензиялары бойынша таратылады, ол GPL лицензиясының соңғы нұсқасына сілтеме жасайды және GPLv3-пен толық үйлесімді. Ruby 2.7 жоспарланатын әзірлеу процесінің жетінші негізгі шығарылымы болып табылады, ол мүмкіндіктерді жақсартуға бір жыл бөлуді және 2-3 айлық патч шығарылымын қамтиды.
Тәжірибелік Қолдау үлгі сәйкестігі (Үлгіні сәйкестендіру) берілген нысанды қайталау және үлгі сәйкестігі болса мәнді тағайындау.
[a, [b, *c]] ішіндегі [0, [1, 2, 3]] жағдайы pa #=> 0
pb #=> 1
pc #=> [2, 3] соңы
жағдай {a: 0, b: 1}
{a:0,x:1}
:қолжетімсіз
{a: 0, b: var}
p var #=> 1
соңы
irb интерактивті есептеулер қабығы (REPL, Read-Eval-Print-Loop) енді оқу сызығымен үйлесімді кітапхана арқылы жүзеге асырылатын көп жолды өңдеу мүмкіндігіне ие. қайта сызуRuby тілінде жазылған. irb жүйесінде көрсетілген сыныптар, модульдер және әдістер туралы анықтамалық ақпаратты көруге мүмкіндік беретін rdoc қолдауы біріктірілген. Binding#irb арқылы көрсетілген кодпен жолдарды түрлі-түсті бөлектеу және базалық сынып нысандарын тексеру нәтижелері берілген.
Кейбір көп ағынды Ruby қолданбаларының жұмысы кезінде орын алатын жадтың фрагментациясына байланысты баяу өнімділік және жадты тұтынудың жоғарылауы мәселелерін шеше отырып, жад аймағын дефрагментациялай алатын ықшам қоқыс жинағыш (Compaction GC) қосылды. Объектілерді үйіндіге орау үшін ұсынылған GC.compact әдісі пайдаланылатын жад беттерінің санын азайту және операциялар үшін үйінді оңтайландыру
Сиыр (жазуға көшіру).
Орындалған тізімдегі орынға («def foo(a,b,c)») және кілт сөздерге («def foo(key: val)») негізделген аргументтерді бөлуге дайындалу. Кілт сөздер мен позицияға негізделген аргументтерді автоматты түрлендіру ескірген және Ruby 3.0 тармағында қолдау көрсетілмейді. Атап айтқанда, соңғы аргументті кілт сөз параметрлері ретінде пайдалану, кілт сөзге негізделген аргументтерді соңғы хэш параметрі ретінде беру және соңғы аргументті позициялық және кілт сөз параметрлеріне бөлу ескірген.
Жеке әдісті шақыруға "self" литералы рұқсат етіледі
деффу
соңы
жеке: foo
self.foo
Жалқау (Санаушы::Жалқау) тізімнен тұрақты тізімді жасау үшін қосылған Enumerator::Lazy#eager әдісі.
a = %w(foo bar baz)
e = а.жалқау.карта {|x| x.upcase }.карта {|x| x + "!" }.асығар
p e.class #=> Санақ
e.карта {|x| x + "?" } #=> [“FOO!?”, “BAR!?”, “BAZ!?”]
Эксперименттік JIT компиляторын әзірлеу жалғасты, ол Ruby тіліндегі қолданбалардың өнімділігін айтарлықтай жақсарта алады. Ruby-де ұсынылған JIT компиляторы алдымен дискіге C кодын жазады, содан кейін ол машина нұсқауларын жасау үшін сыртқы C компиляторын шақырады (GCC, Clang және Microsoft VC ++ қолдау көрсетіледі). Жаңа нұсқа қажет болған жағдайда кірістірілген орналастыру әдісін жүзеге асырады, компиляция кезінде оңтайландыру режимдерін таңдап қолдану, «--jit-min-қоңыраулар» әдепкі мәні 5-тен 10000-ға дейін ұлғайтылды және «--jit-max-cache» 1000-нан 100-ге дейін.
CGI.escapeHTML, Monitor және MonitorMixin жақсартылған өнімділік.
Module#name, true.to_s, false.to_s және nil.to_s көрсетілген нысан үшін өзгеріссіз жолдың қайтарылуын қамтамасыз етеді.
RubyVM::InstructionSequence#to_binary әдісі арқылы жасалған екілік файлдардың өлшемі кішірейтілді;
Кітапханалар негізгі таратудан сыртқы асыл тас пакеттеріне көшті
CMath (cmath асыл тас),
Scanf (scanf асыл тас),
Қабық (қабық тас),
Синхронизатор (синхрондау асыл тас),
ThreadsWait (күту асыл тас),
E2MM (e2mmap асыл тас).
Әдепкі stdlib модульдері rubygems.org сайтында жарияланған:
эталон,
cgi,
делегат,
getoptlong,
таза поп,
таза smtp,
ашық3,
дүкен,
синглтон. Монитор модульдері rubygems.org сайтына жылжытылмаған
бақылаушы,
үзіліс,
бақылаушы,
uri,
yaml, олар тек рубин ядросымен жеткізіледі.
Ruby құру енді C99 стандартын қолдайтын C компиляторын қажет етеді.