Fa'asa'olotoina o le gagana polokalame Ruby 3.1

Ruby 3.1.0 na faʻasaʻolotoina, o se gagana faʻaogaina faʻaogaina mea e sili ona lelei i le atinaʻeina o polokalame ma faʻapipiʻiina foliga sili ona lelei o Perl, Java, Python, Smalltalk, Eiffel, Ada ma Lisp. O le fa'ailoga o le poloketi o lo'o tufatufa atu i lalo ole BSD (“2-fuaiupu BSDL”) ma “Ruby” laisene, lea e fa'asino i le lomiga fou ole laisene GPL ma e fetaui lelei ma le GPLv3.

Fa'aleleia autu:

  • O se faʻataʻitaʻiga fou a le JIT compiler, YJIT, ua faʻaopoopoina, na faia e le au atinaʻe o le Shopify e-commerce platform e avea o se vaega o se fuafuaga e faʻaleleia ai le faʻatinoga o polokalame Ruby e faʻaogaina ai le Rails framework ma valaʻau le tele o metotia. O le eseesega autu mai le faʻaaogaina muamua o le MJIT JIT compiler, lea e faʻavae i luga o le faʻaogaina o metotia uma ma faʻaaogaina se faʻapipiʻi fafo i le gagana C, o le faʻaaogaina e le YJIT o le Lazy Basic Block Versioning (LBBV) ma o loʻo i ai se tuʻufaʻatasiga JIT tuʻufaʻatasia. Faatasi ai ma LBBV, JIT muamua tuufaatasia na o le amataga o le metotia, ma tuufaatasia le vaega o totoe i se taimi mulimuli ane, pe a uma ona fuafuaina ituaiga o fesuiaiga ma finauga na faʻaaogaina i le taimi o le faʻatinoga. I le faʻaaogaina o le YJIT, na faʻamauina le 22% o le faʻatinoga o le faʻatinoga pe a faʻataʻitaʻiina le suʻega o le nofoaafi, ma le 39% o le faʻaopoopoga o le suʻega suʻesuʻe. O loʻo faʻatapulaʻaina le YJIT i le taimi nei i le lagolago mo unix-pei OSes i luga o faiga faʻapipiʻi x86-64 ma ua le atoatoa ona o le faaletonu (ia faʻagaoioia, faʻamaonia le "--yjit" fuʻa i le laina faʻatonu).
  • Faʻaleleia le faʻatinoga o le MJIT JIT compiler tuai. Mo galuega faatino e fa'aoga ai Rails, ua fa'atuputeleina le tele o le cache (--jit-max-cache) mai le 100 i le 10000 faatonuga. Taofi le faʻaaogaina o le JIT mo metotia e sili atu i le 1000 faʻatonuga. Ina ia lagolagoina le Zeitwerk o Rails, e le o toe lafoaia le JIT code pe a mafai le TracePoint mo mea a le vasega.
  • E aofia ai le toe tusia atoa o le debug.gem debugger, lea e lagolagoina le faʻaogaina mamao, e le faʻagesegese le faʻaogaina o le talosaga, lagolagoina le tuʻufaʻatasia ma fesoʻotaʻiga faʻapipiʻi alualu i luma (VSCode ma Chrome), e mafai ona faʻaaogaina mo le faʻaogaina o le tele o filo ma le tele o faʻagasologa o talosaga, tuʻuina atu. o le REPL code execution interface, ofo atu agava'a su'esu'e, e mafai ona fa'amaumau ma toe ta'alo snippets code. O le debugger lib/debug.rb na ofoina muamua ua aveese mai le fa'asoa fa'avae.
    Fa'asa'olotoina o le gagana polokalame Ruby 3.1
  • Fa'atinoina le fa'ailoaina o mea sese ile lipoti ole toe fo'i i tua. Fa'ailoga sese e tu'uina atu i le fa'aogaina o le pusa ma'a ua fausia ma fa'aletonu error_highlight. Ina ia faʻamalo le faʻailoga sese, e mafai ona e faʻaogaina le "--disable-error_highlight" seti. $ ruby ​​​​test.rb test.rb:1:in" ": undefined method "taimi" mo 1:Integer (NoMethodError) 1.time {} ^^^^^ O le uiga o lau tala? taimi
  • O le atigi o faʻatusatusaga fesoʻotaʻiga IRB (REPL, Read-Eval-Print-Loop) e faʻatinoina le faʻamaeʻaina otometi o le code ulufale (aʻo e lolomi, o loʻo faʻaalia se faʻaaliga ma filifiliga mo le faʻaauauina o faʻaoga, i le va e mafai ona e faʻagaoioi ma le Tab poʻo le Shift + Ki fa'amau). A maeʻa ona filifili le filifiliga faʻaauau, o loʻo faʻaalia se pusa talatalanoaga lata ane e faʻaalia ai faʻamaumauga e fesoʻotaʻi ma le mea filifilia. E mafai ona fa'aoga le ala ala keyboard Alt+d e maua ai fa'amaumauga atoa.
    Fa'asa'olotoina o le gagana polokalame Ruby 3.1
  • O le gagana syntax ua mafai nei ona fa'ase'eina tulaga taua i le hash literals ma upu autu pe a vala'au galuega. Mo se faʻataʻitaʻiga, nai lo le faʻamatalaga "{x: x, y: y}" e mafai nei ona e faʻamaonia "{x:, y:}", ae nai lo le "foo(x: x, y: y)" - foo( x:,y :)".
  • Lagolago fa'amautu mo fa'atusa laina tasi (ary => [x, y, z]), e le o toe fa'ailogaina e fai ma fa'ata'ita'iga.
  • O le "^" fa'aoga i mamanu fa'atusa ua mafai nei ona iai fa'amatalaga fa'apitoa, mo se fa'ata'ita'iga: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • I fa'atusa laina tasi, e mafai ona e aveese fa'amau: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • O le RBS type annotation language, lea e mafai ai ona e fuafuaina le fausaga o le polokalame ma ituaiga o loʻo faʻaaogaina, ua faʻaopoopoina le lagolago mo le faʻamaonia o le tapulaʻa pito i luga o ituaiga taʻavale e faʻaaoga ai le "<" faʻailoga, faʻaopoopoina le lagolago mo igoa o ituaiga lautele, faʻatinoina le lagolago mo aoina mo le puleaina o maa taua, faʻaleleia le faʻatinoga ma faʻatinoina le tele o saini fou mo faletusi faʻapipiʻi ma masani.
  • Fa'ata'ita'iga lagolago mo si'osi'omaga atina'e tu'ufa'atasia ua fa'aopoopoina i le TypePro static type analyzer, lea e fa'atupu ai fa'amatalaga RBS e fa'avae i luga o fa'amatalaga fa'ailoga e aunoa ma ni fa'amatalaga fa'amatalaga manino (mo se fa'ata'ita'iga, ua saunia se fa'aopoopoga mo le tu'ufa'atasia o le TypePro ma le fa'atonu VSCode).
  • Ua suia le fa'asologa o galuega e tele. Mo se faʻataʻitaʻiga, muamua o vaega o le faʻamatalaga "foo[0], bar [0] = baz, qux" na faʻagasolo i le faasologa baz, qux, foo, bar, ae o lea foo, bar, baz, qux.
  • Fa'aopoopoina le lagolago fa'ata'ita'i mo le fa'asoaina o manatuaga mo manoa e fa'aaoga ai le VWA (Variable Width Allocation).
  • Fa'afouga fa'afouga o fa'amaufa'ailoga ma'a ua fausia ma i latou o lo'o aofia i totonu o le faletusi masani. O le upega-ftp, net-imap, net-pop, net-smtp, matrix, prime ma debug afifi ua fausia i totonu.

puna: opennet.ru

Faaopoopo i ai se faamatalaga