Ruby-ohjelmointikielen julkaisu 3.1

Ruby 3.1.0 julkaistiin, dynaaminen olio-ohjelmointikieli, joka on erittäin tehokas ohjelmakehityksessä ja sisältää Perlin, Javan, Pythonin, Smalltalkin, Eiffelin, Adan ja Lispin parhaat ominaisuudet. Projektikoodia jaetaan BSD- ("2-lauseke BSDL")- ja "Ruby"-lisenssien alla, mikä viittaa GPL-lisenssin uusimpaan versioon ja on täysin yhteensopiva GPLv3:n kanssa.

Tärkeimmät parannukset:

  • Uusi kokeellinen prosessinaikainen JIT-kääntäjä, YJIT, on lisätty, jonka Shopify-verkkokauppaalustan kehittäjät ovat luoneet osana aloitetta parantaa Rails-kehystä käyttävien ja monia menetelmiä kutsuvien Ruby-ohjelmien suorituskykyä. Keskeinen ero aiemmin käytetystä kokonaisten menetelmien käsittelyyn perustuvasta ja ulkoista C-kielen kääntäjää käyttävästä MJIT JIT-kääntäjästä on se, että YJIT käyttää Lazy Basic Block Versioning (LBBV) -tekniikkaa ja sisältää integroidun JIT-kääntäjän. LBBV:ssä JIT kääntää ensin vain menetelmän alun ja loput jonkin ajan kuluttua, kun käytettyjen muuttujien ja argumenttien tyypit on määritetty suorituksen aikana. YJIT:tä käytettäessä suorituskyky parani 22 % kiskopenkkitestissä ja 39 % lisäys nestemäisessä rappaustestissä. YJIT on tällä hetkellä rajoitettu tukemaan unix-tyyppisiä käyttöjärjestelmiä järjestelmissä, joissa on x86-64-arkkitehtuuri, ja se on oletuksena pois käytöstä (aktivoidaksesi määritä komentorivillä "--yjit" -lippu).
  • Vanhan MJIT JIT -kääntäjän suorituskykyä parannettu. Railsia käyttävien projektien oletusarvoinen enimmäisvälimuistikoko (--jit-max-cache) on kasvatettu 100:sta 10000 1000 ohjeeseen. Lopetti JIT:n käytön menetelmille, joissa on yli XNUMX ohjetta. Zeitwerk of Railsin tukemiseksi JIT-koodia ei enää hylätä, kun TracePoint on käytössä luokkatapahtumissa.
  • Se sisältää täysin uudelleen kirjoitetun debug.gem-debuggerin, joka tukee etävirheenkorjausta, ei hidasta vianetsintäsovellusta, tukee integraatiota edistyneisiin virheenkorjausrajapintoihin (VSCode ja Chrome), voidaan käyttää monisäikeisten ja usean prosessin sovellusten virheenkorjaukseen, tarjoaa REPL-koodin suoritusliittymä, tarjoaa edistyneitä jäljitysominaisuuksia, voi tallentaa ja toistaa koodinpätkiä. Aiemmin tarjottu debuggeri lib/debug.rb on poistettu perusjakelusta.
    Ruby-ohjelmointikielen julkaisu 3.1
  • Toteutettu visuaalinen virheiden korostus takaisinsoittoraporteissa. Virheilmoitukset tarjotaan käyttämällä sisäänrakennettua ja oletusarvoisesti käytössä olevaa helmipakettia error_highlight. Voit poistaa virheilmoituksen käytöstä käyttämällä "--disable-error_highlight" -asetusta. $ ruby ​​​​test.rb test.rb:1:in " ": määrittelemätön menetelmä "time" kohteelle 1:Integer (NoMethodError) 1.time {} ^^^^^ Tarkoititko? ajat
  • Vuorovaikutteisten laskelmien kuori IRB (REPL, Read-Eval-Print-Loop) toteuttaa syötetyn koodin automaattisen täydennyksen (kirjoittaessasi näytetään vihje, jossa on vaihtoehtoja syöttämisen jatkamiselle, joiden välillä voit siirtyä sarkaimella tai Shift+ Tab-näppäin). Kun olet valinnut jatkovaihtoehdon, lähellä näkyy valintaikkuna, jossa näkyvät valittuun kohteeseen liittyvät asiakirjat. Pikanäppäimellä Alt+d pääsee käsiksi koko dokumentaatioon.
    Ruby-ohjelmointikielen julkaisu 3.1
  • Kielen syntaksi sallii nyt hajautusliteraaleissa ja avainsanaargumenteissa olevien arvojen ohittamisen funktioita kutsuttaessa. Esimerkiksi lausekkeen "{x: x, y: y}" sijaan voit nyt määrittää "{x:, y:}" ja "foo(x: x, y: y)" sijaan - foo( x:, y: )".
  • Vakautettu tuki yksirivisille kuvioiden vastaavuuksille (ary => [x, y, z]), joita ei enää merkitä kokeellisiksi.
  • Malliosumien operaattori "^" voi nyt sisältää mielivaltaisia ​​lausekkeita, esimerkiksi: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Yksirivisissä kaavoissa voit jättää pois sulkeet: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS-tyyppinen huomautuskieli, jonka avulla voit määrittää ohjelman rakenteen ja käytetyt tyypit, on lisännyt tuen tyyppiparametrien ylärajan määrittämiseen symbolilla <, lisännyt tuen yleisten tyyppien aliaksille, toteuttanut tuen kokoelmat jalokivien hallintaan, parannettu suorituskyky ja otettu käyttöön monia uusia allekirjoituksia sisäänrakennetuille ja vakiokirjastoille.
  • Integroitujen kehitysympäristöjen kokeellinen tuki on lisätty TypePron staattiseen tyyppianalysaattoriin, joka luo koodianalyysiin perustuvia RBS-merkintöjä ilman nimenomaista tyyppitietoa (esimerkiksi TypePron integroimiseksi VSCode-editoriin on valmisteltu lisäosa).
  • Useiden tehtävien käsittelyjärjestystä on muutettu. Esimerkiksi aiemmin lausekkeen "foo[0], bar[0] = baz, qux" komponentteja käsiteltiin järjestyksessä baz, qux, foo, bar, mutta nyt foo, bar, baz, qux.
  • Lisätty kokeellinen tuki merkkijonojen muistin varaamiseen VWA (Variable Width Allocation) -mekanismin avulla.
  • Päivitetyt versiot sisäänrakennetuista jalokivimoduuleista ja niistä, jotka sisältyvät vakiokirjastoon. Net-ftp-, net-imap-, net-pop-, net-smtp-, matrix-, prime- ja debug-paketit ovat sisäänrakennettuja.

Lähde: opennet.ru

Lisää kommentti