Rhyddhau iaith raglennu Ruby 3.1

Rhyddhawyd Ruby 3.1.0, iaith raglennu ddeinamig sy'n canolbwyntio ar wrthrych sy'n hynod effeithlon o ran datblygu rhaglenni ac sy'n ymgorffori nodweddion gorau Perl, Java, Python, Smalltalk, Eiffel, Ada a Lisp. Mae cod y prosiect yn cael ei ddosbarthu o dan y trwyddedau BSD (“2-gymal BSDL”) a “Ruby”, sy'n cyfeirio at y fersiwn ddiweddaraf o'r drwydded GPL ac sy'n gwbl gydnaws â GPLv3.

Prif welliannau:

  • Mae casglwr JIT mewn-broses arbrofol newydd, YJIT, wedi'i ychwanegu, a grëwyd gan ddatblygwyr platfform e-fasnach Shopify fel rhan o fenter i wella perfformiad rhaglenni Ruby sy'n defnyddio fframwaith Rails ac yn galw llawer o ddulliau. Y gwahaniaeth allweddol o'r casglwr MJIT JIT a ddefnyddiwyd yn flaenorol, sy'n seiliedig ar brosesu dulliau cyfan ac sy'n defnyddio casglwr allanol yn yr iaith C, yw bod YJIT yn defnyddio Fersiwn Bloc Sylfaenol Lazy (LBBV) ac yn cynnwys casglwr JIT integredig. Gyda LBBV, dim ond dechrau'r dull y mae JIT yn ei lunio yn gyntaf, ac mae'n llunio'r gweddill beth amser yn ddiweddarach, ar ôl i'r mathau o newidynnau a dadleuon a ddefnyddir gael eu pennu yn ystod y gweithredu. Wrth ddefnyddio YJIT, cofnodwyd cynnydd o 22% mewn perfformiad wrth redeg y prawf railsbench, a chynnydd o 39% yn y prawf rendrad hylif. Ar hyn o bryd mae YJIT wedi'i gyfyngu i gefnogaeth ar gyfer OSes tebyg i unix ar systemau gyda phensaernïaeth x86-64 ac mae wedi'i analluogi yn ddiofyn (i actifadu, nodwch y faner “--yjit” yn y llinell orchymyn).
  • Gwell perfformiad o'r hen grynhoydd MJIT JIT. Ar gyfer prosiectau sy'n defnyddio Rails, mae'r maint cache uchaf diofyn (--jit-max-cache) wedi'i gynyddu o 100 i 10000 o gyfarwyddiadau. Rhoi'r gorau i ddefnyddio JIT ar gyfer dulliau gyda mwy na 1000 o gyfarwyddiadau. I gefnogi Zeitwerk of Rails, nid yw cod JIT bellach yn cael ei daflu pan fydd TracePoint wedi'i alluogi ar gyfer digwyddiadau dosbarth.
  • Mae'n cynnwys dadfygiwr debug.gem wedi'i ailysgrifennu'n llwyr, sy'n cefnogi difa chwilod o bell, nid yw'n arafu'r cais dadfygio, yn cefnogi integreiddio â rhyngwynebau dadfygio uwch (VSCode a Chrome), gellir ei ddefnyddio ar gyfer dadfygio cymwysiadau aml-edau ac aml-broses, yn darparu rhyngwyneb gweithredu cod REPL, yn cynnig galluoedd olrhain uwch, yn gallu recordio ac ailchwarae pytiau cod. Mae'r dadfygiwr a gynigiwyd yn flaenorol lib/debug.rb wedi'i dynnu o'r dosbarthiad sylfaenol.
    Rhyddhau iaith raglennu Ruby 3.1
  • Gweithredu amlygu gwallau yn weledol mewn adroddiadau olrhain galwadau yn ôl. Darperir fflagio gwallau gan ddefnyddio'r pecyn gem adeiledig a rhagosodedig error_highlight. I analluogi fflagio gwallau, gallwch ddefnyddio'r gosodiad “--disable-error_highlight”. $ruby test.rb test.rb:1:in " " : dull anniffiniedig "time" ar gyfer 1:Integer (NoMethodError) 1.time {} ^^^^^ Oeddech chi'n ei olygu? amseroedd
  • Mae'r gragen o gyfrifiadau rhyngweithiol IRB (REPL, Read-Eval-Print-Loop) yn gweithredu cwblhau'r cod a gofnodwyd yn awtomatig (wrth i chi deipio, dangosir awgrym gydag opsiynau ar gyfer mewnbwn parhaus, a gallwch symud rhyngddynt gyda'r Tab neu Shift+ Allwedd tab). Ar ôl dewis yr opsiwn parhad, arddangosir blwch deialog gerllaw sy'n dangos y ddogfennaeth sy'n gysylltiedig â'r eitem a ddewiswyd. Gellir defnyddio llwybr byr y bysellfwrdd Alt+d i gael mynediad at y ddogfennaeth lawn.
    Rhyddhau iaith raglennu Ruby 3.1
  • Mae'r gystrawen iaith bellach yn caniatáu hepgor gwerthoedd mewn llythrennau hash a dadleuon allweddair wrth alw swyddogaethau. Er enghraifft, yn lle'r ymadrodd “{x: x, y: y}” gallwch nawr nodi “{x:, y:}”, ac yn lle “foo(x: x, y: y)” - foo( x:, y:)".
  • Cefnogaeth sefydlog ar gyfer paru patrwm un llinell (ary => [x, y, z]), nad ydynt bellach wedi'u nodi fel rhai arbrofol.
  • Gall y gweithredwr "^" mewn cyfatebiadau patrwm nawr gynnwys mynegiadau mympwyol, er enghraifft: Prime.each_cons(2).lazy.find_all{_1 yn [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Mewn cyfatebiadau patrwm un llinell, gallwch hepgor cromfachau: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Mae'r iaith anodi math RBS, sy'n eich galluogi i bennu strwythur y rhaglen a'r mathau a ddefnyddir, wedi ychwanegu cefnogaeth ar gyfer pennu terfyn uchaf paramedrau math gan ddefnyddio'r symbol “<”, cefnogaeth ychwanegol ar gyfer arallenwau o fathau generig, cefnogaeth wedi'i rhoi ar waith ar gyfer casgliadau ar gyfer rheoli gemau, gwell perfformiad a gweithredu llawer o lofnodion newydd ar gyfer llyfrgelloedd adeiledig a safonol.
  • Mae cefnogaeth arbrofol ar gyfer amgylcheddau datblygu integredig wedi'i ychwanegu at ddadansoddwr math statig TypePro, sy'n cynhyrchu anodiadau RBS yn seiliedig ar ddadansoddiad cod heb wybodaeth benodol (er enghraifft, mae ychwanegiad wedi'i baratoi ar gyfer integreiddio TypePro â golygydd VSCode).
  • Mae trefn prosesu aseiniadau lluosog wedi'i newid. Er enghraifft, yn flaenorol roedd cydrannau'r ymadrodd “foo[0], bar[0] = baz, qux” yn cael eu prosesu yn y drefn baz, qux, foo, bar, ond nawr foo, bar, baz, qux.
  • Ychwanegwyd cefnogaeth arbrofol ar gyfer dyrannu cof ar gyfer llinynnau gan ddefnyddio mecanwaith VWA (Dyraniad Lled Amrywiol).
  • Fersiynau wedi'u diweddaru o fodiwlau gemau adeiledig a'r rhai sydd wedi'u cynnwys yn y llyfrgell safonol. Mae'r pecynnau net-ftp, net-imap, net-pop, net-smtp, matrics, cysefin a dadfygio wedi'u hymgorffori.

Ffynhonnell: opennet.ru

Ychwanegu sylw