پس از یک سال توسعه منتشر شد رهایی روبی 2.7.0یک زبان برنامه نویسی شی گرا پویا که در توسعه برنامه بسیار کارآمد است و بهترین ویژگی های Perl، Java، Python، Smalltalk، Eiffel، Ada و Lisp را در خود جای داده است. کد پروژه تحت مجوزهای BSD ("2-clause BSDL") و "Ruby" توزیع شده است که به آخرین نسخه مجوز GPL اشاره دارد و کاملاً با GPLv3 سازگار است. Ruby 2.7 هفتمین نسخه اصلی است که به عنوان بخشی از یک فرآیند توسعه برنامه ریزی شده تولید می شود که شامل اختصاص یک سال برای بهبود ویژگی ها و انتشار پچ 2 تا 3 ماهه است.
تجربی پشتیبانی تطبیق الگو (تطبیق الگو) برای تکرار روی شی داده شده و اختصاص یک مقدار در صورت وجود مطابقت الگو.
مورد [0، [1، 2، 3]] در [a، [b، *c]] 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) اکنون امکان ویرایش چند خطی را دارد که با استفاده از یک کتابخانه سازگار با Readline پیاده سازی شده است. دوبارهنوشته شده با روبی پشتیبانی از rdoc یکپارچه شده است که امکان مشاهده اطلاعات مرجع در کلاسها، ماژولها و روشهای مشخص شده را در irb فراهم میکند. هایلایت رنگی خطوط با کد نشان داده شده از طریق Binding#irb و نتایج بازرسی اشیاء کلاس پایه ارائه شده است.
یک جمعکننده زباله جمعوجور (Compaction GC) اضافه شده است که میتواند یک ناحیه از حافظه را یکپارچه کند، مشکلات عملکرد کند و افزایش مصرف حافظه را به دلیل تکه تکه شدن حافظه که در طول عملکرد برخی از برنامههای روبی چند رشتهای رخ میدهد، حل کند. برای بسته بندی اشیاء روی پشته پیشنهادی روش GC.compact برای کاهش تعداد صفحات حافظه استفاده شده و بهینه سازی پشته برای عملیات
CoW (کپی روی نوشتن).
انجام شد آماده شدن برای جداسازی آرگومان ها بر اساس موقعیت در لیست ("def foo(a,b,c)") و کلمات کلیدی ("def foo(key: val)"). تبدیل خودکار آرگومان بر اساس کلمات کلیدی و موقعیت منسوخ شده است و در شاخه Ruby 3.0 پشتیبانی نخواهد شد. به طور خاص، استفاده از آخرین آرگومان به عنوان پارامترهای کلمه کلیدی، ارسال آرگومان های مبتنی بر کلمه کلیدی به عنوان آخرین پارامتر هش، و تقسیم آخرین آرگومان به پارامترهای موقعیتی و کلید واژه منسوخ شده است.
روش Enumerator::Lazy#eager برای تولید شمارش منظم از شمارش تنبل (Enumerator::Lazy) اضافه شد.
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.مشتاق
p e.class #=> Enumerator
نقشه الکترونیکی {|x| x + "؟" } #=> ["FOO!"، "BAR!؟"، "BAZ!؟"]
توسعه یک کامپایلر آزمایشی JIT ادامه یافته است که می تواند به طور قابل توجهی عملکرد برنامه ها را در زبان Ruby بهبود بخشد. کامپایلر JIT پیشنهاد شده در روبی ابتدا کد C را روی دیسک می نویسد، پس از آن یک کامپایلر خارجی C را برای تولید دستورالعمل های ماشین فراخوانی می کند (GCC، Clang و Microsoft VC ++ پشتیبانی می شوند). نسخه جدید روشی را برای استقرار درون خطی در صورت لزوم پیاده سازی می کند، استفاده انتخابی از حالت های بهینه سازی در طول کامپایل، مقدار پیش فرض "--jit-min-call" از 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 کاهش یافته است.
نسخه های به روز شده اجزای داخلی، از جمله
Bundler 2.1.2، RubyGems 3.1.2،
Racc 1.4.15،
CSV 3.1.2، REXML 3.2.3،
RSS 0.2.8،
اسکنر رشته 1.0.3;
ماژول های پیش فرض stdlib در rubygems.org منتشر می شوند:
معیار،
cgi،
نماینده،
طولانی شدن،
پاپ خالص،
net smtp،
open3,
pstore،
تک تن ماژول های مانیتور به rubygems.org منتقل نشده اند
مشاهده کننده،
تایم اوت،
ردیاب،
اوری،
yaml که فقط با هسته یاقوتی ارسال می شوند.
ساخت روبی اکنون به یک کامپایلر C نیاز دارد که از استاندارد C99 پشتیبانی کند.