Ruby 3.1 proqramlaşdırma dilinin buraxılışı

Ruby 3.1.0 buraxıldı, dinamik obyekt yönümlü proqramlaşdırma dili, proqram inkişafında yüksək effektivliyə malikdir və Perl, Java, Python, Smalltalk, Eiffel, Ada və Lisp-in ən yaxşı xüsusiyyətlərini özündə birləşdirir. 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.

Əsas təkmilləşdirmələr:

  • Shopify e-ticarət platformasının tərtibatçıları tərəfindən Rails çərçivəsini istifadə edən və bir çox metodu çağıran Ruby proqramlarının işini yaxşılaşdırmaq təşəbbüsünün bir hissəsi olaraq yaradılmış yeni eksperimental prosesdaxili JIT kompilyatoru, YJIT əlavə edildi. Bütün metodların işlənməsinə əsaslanan və C dilində xarici kompilyatordan istifadə edən əvvəllər istifadə edilən MJIT JIT kompilyatorundan əsas fərq ondan ibarətdir ki, YJIT Lazy Basic Block Versioning (LBBV) istifadə edir və inteqrasiya olunmuş JIT kompilyatorunu ehtiva edir. LBBV ilə JIT əvvəlcə metodun yalnız başlanğıcını tərtib edir, qalanını isə icra zamanı istifadə olunan dəyişənlərin və arqumentlərin növləri müəyyən edildikdən sonra bir müddət sonra tərtib edir. YJIT istifadə edərkən, railsbench testini yerinə yetirərkən performansda 22% artım, maye-render testində isə 39% artım qeydə alınıb. YJIT hazırda x86-64 arxitekturasına malik sistemlərdə unix kimi ƏS-ləri dəstəkləməklə məhdudlaşır və defolt olaraq qeyri-aktivdir (aktiv etmək üçün komanda sətirində “--yjit” bayrağını təyin edin).
  • Köhnə MJIT JIT kompilyatorunun təkmilləşdirilmiş performansı. Rails istifadə edən layihələr üçün standart maksimum keş ölçüsü (--jit-max-cache) 100-dən 10000 təlimata qədər artırıldı. 1000-dən çox təlimatı olan metodlar üçün JIT-dən istifadə dayandırıldı. Zeitwerk of Rails-i dəstəkləmək üçün TracePoint sinif hadisələri üçün aktiv olduqda JIT kodu artıq atılmır.
  • Buraya tamamilə yenidən yazılmış debug.gem debugger daxildir, o, uzaqdan sazlamanı dəstəkləyən, düzəldilmiş tətbiqi yavaşlatmayan, qabaqcıl sazlama interfeysləri (VSCode və Chrome) ilə inteqrasiyanı dəstəkləyir, çox yivli və çox prosesli proqramların sazlanması üçün istifadə edilə bilər, təmin edir. REPL kodu icra interfeysi, qabaqcıl izləmə imkanları təklif edir, kod parçalarını yaza və təkrar oxuya bilər. Əvvəllər təklif edilmiş sazlayıcı lib/debug.rb əsas paylamadan silindi.
    Ruby 3.1 proqramlaşdırma dilinin buraxılışı
  • Geri zəng izləmə hesabatlarında səhvlərin vizual vurğulanması həyata keçirilir. Səhv qeydi daxili və defolt-aktiv daş paketi error_highlight istifadə edərək təmin edilir. Səhv işarələnməsini söndürmək üçün “--disable-error_highlight” parametrindən istifadə edə bilərsiniz. $ ruby ​​test.rb test.rb:1:in " ": 1 üçün qeyri-müəyyən metod "zaman": Tam (NoMethodError) 1.zaman {} ^^^^^ Siz nəzərdə tuturdunuz? dəfə
  • IRB (REPL, Read-Eval-Print-Loop) interaktiv hesablamalar qabığı daxil edilmiş kodun avtomatik tamamlanmasını həyata keçirir (yazdığınız zaman daxil etməyə davam etmək üçün bir işarə göstərilir, onların arasında Tab və ya Shift+ düymələri ilə hərəkət edə bilərsiniz. Tab düyməsi). Davam seçimini seçdikdən sonra yaxınlıqda seçilmiş elementlə əlaqəli sənədləri əks etdirən bir dialoq qutusu göstərilir. Tam sənədlərə daxil olmaq üçün Alt+d klaviatura qısa yolundan istifadə edilə bilər.
    Ruby 3.1 proqramlaşdırma dilinin buraxılışı
  • Dil sintaksisi indi funksiyaları çağırarkən hash hərfi və açar söz arqumentlərindəki dəyərləri atlamağa imkan verir. Məsələn, “{x: x, y: y}” ifadəsinin yerinə indi “{x:, y:}”, “foo(x: x, y: y)” əvəzinə - foo() ifadəsini təyin edə bilərsiniz. x:, y:)".
  • Artıq eksperimental olaraq işarələnməyən tək sətirli model uyğunluqları (ary => [x, y, z]) üçün stabilləşdirilmiş dəstək.
  • Nümunə uyğunluqlarındakı "^" operatoru indi ixtiyari ifadələrdən ibarət ola bilər, məsələn: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Tək sətirli nümunə uyğunluqlarında mötərizələri buraxa bilərsiniz: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Proqramın strukturunu və istifadə olunan növləri müəyyən etməyə imkan verən RBS tipli annotasiya dili “<” simvolundan istifadə edərək tip parametrlərinin yuxarı həddinin müəyyənləşdirilməsi üçün dəstəyi əlavə etdi, ümumi tiplərin ləqəbləri üçün əlavə dəstək əlavə etdi, daşların idarə edilməsi üçün kolleksiyalar, təkmilləşdirilmiş performans və daxili və standart kitabxanalar üçün bir çox yeni imzalar tətbiq edilmişdir.
  • İnteqrasiya edilmiş inkişaf mühitləri üçün eksperimental dəstək TypePro statik tipli analizatora əlavə edilmişdir, hansı ki, açıq tip məlumatı olmadan kod təhlili əsasında RBS annotasiyaları yaradır (məsələn, TypePro-nun VSCode redaktoru ilə inteqrasiyası üçün əlavə hazırlanmışdır).
  • Çoxsaylı tapşırıqların icrası qaydası dəyişdirildi. Məsələn, əvvəllər “foo[0], bar[0] = baz, qux” ifadəsinin komponentləri baz, qux, foo, bar qaydasında işlənirdisə, indi foo, bar, baz, qux.
  • VWA (Variable Width Allocation) mexanizmindən istifadə edərək sətirlər üçün yaddaşın ayrılması üçün eksperimental dəstək əlavə edildi.
  • Daxili gem modullarının və standart kitabxanaya daxil olanların yenilənmiş versiyaları. Net-ftp, net-imap, net-pop, net-smtp, matrix, prime və debug paketləri daxilidir.

Mənbə: opennet.ru

Добавить комментарий