„Ruby“ programavimo kalbos 3.1 išleidimas

Buvo išleista Ruby 3.1.0, dinamiška objektinė programavimo kalba, kuri yra labai efektyvi kuriant programas ir apima geriausias Perl, Java, Python, Smalltalk, Eiffel, Ada ir Lisp savybes. Projekto kodas platinamas pagal BSD („2 sąlyga BSDL“) ir „Ruby“ licencijas, kurios nurodo naujausią GPL licencijos versiją ir yra visiškai suderinamos su GPLv3.

Pagrindiniai patobulinimai:

  • Pridėtas naujas eksperimentinis proceso metu vykstantis JIT kompiliatorius YJIT, kurį sukūrė Shopify elektroninės prekybos platformos kūrėjai kaip iniciatyvos, skirtos pagerinti „Ruby“ programų, kurios naudoja „Rails“ sistemą ir iškviečia daugybę metodų, našumą. Pagrindinis skirtumas nuo anksčiau naudoto MJIT JIT kompiliatoriaus, kuris yra pagrįstas visų metodų apdorojimu ir naudoja išorinį kompiliatorių C kalba, yra tas, kad YJIT naudoja Lazy Basic Block Versioning (LBBV) ir turi integruotą JIT kompiliatorių. Naudojant LBBV, JIT pirmiausia sukompiliuoja tik metodo pradžią, o likusią dalį sukompiliuoja po kurio laiko, kai vykdymo metu nustatomi naudojamų kintamųjų ir argumentų tipai. Naudojant YJIT, atliekant bėgių stendo bandymą buvo užfiksuotas 22 % našumo padidėjimas, o atliekant skysčių dažymo testą – 39 %. Šiuo metu YJIT palaiko tik „Unix“ tipo OS sistemose su x86-64 architektūra ir yra išjungta pagal numatytuosius nustatymus (norėdami suaktyvinti, komandų eilutėje nurodykite žymą „--yjit“).
  • Patobulintas senojo MJIT JIT kompiliatoriaus našumas. Projektams, naudojantiems bėgius, numatytasis maksimalus talpyklos dydis (--jit-max-cache) buvo padidintas nuo 100 iki 10000 1000 instrukcijų. Nustota naudoti JIT metodams su daugiau nei XNUMX instrukcijų. Norint palaikyti „Zeitwerk of Rails“, JIT kodas nebeatmetamas, kai klasės įvykiams įgalintas „TracePoint“.
  • Jame yra visiškai perrašytas debug.gem derinimo įrankis, kuris palaiko nuotolinį derinimą, nesustabdo derinamos programos, palaiko integraciją su pažangiomis derinimo sąsajomis (VSCode ir Chrome), gali būti naudojamas derinant kelių gijų ir kelių procesų programas, REPL kodo vykdymo sąsaja, siūlo pažangias sekimo galimybes, gali įrašyti ir atkurti kodo fragmentus. Anksčiau pasiūlytas derinimo įrankis lib/debug.rb buvo pašalintas iš bazinio platinimo.
    „Ruby“ programavimo kalbos 3.1 išleidimas
  • Įdiegtas vizualinis klaidų paryškinimas atgalinio skambučio sekimo ataskaitose. Klaidų žymėjimas pateikiamas naudojant integruotą ir numatytąjį įgalintą brangakmenių paketą error_highlight. Norėdami išjungti klaidų žymėjimą, galite naudoti nustatymą „--disable-error_highlight“. $ ruby ​​​​test.rb test.rb:1:in " ": neapibrėžtas metodas "time" 1:Integer (NoMethodError) 1.time {} ^^^^^ Ar turėjote omenyje? laikai
  • Interaktyvių skaičiavimų apvalkalas IRB (REPL, Read-Eval-Print-Loop) įgyvendina automatinį įvesto kodo užbaigimą (vedant rodoma užuomina su tolesnio įvesties parinktimis, tarp kurių galite pereiti paspausdami Tab arba Shift+ Tab klavišas). Pasirinkus tęsimo parinktį, šalia rodomas dialogo langas, kuriame rodoma su pasirinktu elementu susijusi dokumentacija. Norėdami pasiekti visą dokumentaciją, galite naudoti spartųjį klavišą Alt+d.
    „Ruby“ programavimo kalbos 3.1 išleidimas
  • Kalbos sintaksė dabar leidžia praleisti reikšmes maišos literaluose ir raktinių žodžių argumentuose, kai iškviečiamos funkcijos. Pavyzdžiui, vietoj išraiškos „{x: x, y: y}“ dabar galite nurodyti „{x:, y:}“, o vietoj „foo(x: x, y: y)“ - foo( x:, y: )".
  • Stabilizuotas vienos eilutės šablonų atitikčių (ary => [x, y, z]), kurios nebėra pažymėtos kaip eksperimentinės, palaikymas.
  • Operatoriuje „^“ šablonų atitikties dabar gali būti savavališkų išraiškų, pavyzdžiui: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Vienos eilutės šablono atitikmenyse galite praleisti skliaustus: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS tipo anotacijų kalba, leidžianti nustatyti programos struktūrą ir naudojamus tipus, papildė viršutinės tipo parametrų ribos nurodymo, naudojant simbolį „<“, palaikymą, bendrųjų tipų slapyvardžių palaikymą, įdiegė palaikymą kolekcijos, skirtos brangakmeniams tvarkyti, pagerintas našumas ir įdiegta daug naujų parašų įtaisytoms ir standartinėms bibliotekoms.
  • Eksperimentinis integruotų kūrimo aplinkų palaikymas buvo įtrauktas į statinio tipo analizatorių TypePro, kuris generuoja RBS anotacijas pagal kodo analizę be aiškios tipo informacijos (pavyzdžiui, paruoštas priedas TypePro integravimui su VSCode redaktoriumi).
  • Pakeista kelių užduočių apdorojimo tvarka. Pavyzdžiui, anksčiau reiškinio „foo[0], bar[0] = baz, qux“ komponentai buvo apdorojami tvarka baz, qux, foo, bar, bet dabar foo, bar, baz, qux.
  • Pridėtas eksperimentinis atminties paskirstymo stygoms palaikymas naudojant VWA (kintamo pločio paskirstymo) mechanizmą.
  • Atnaujintos integruotų brangakmenių modulių versijos ir tie, kurie yra įtraukti į standartinę biblioteką. Net-ftp, net-imap, net-pop, net-smtp, matricos, prime ir derinimo paketai yra integruoti.

Šaltinis: opennet.ru

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