Ukukhutshwa kolwimi lweprogram yeRuby 3.1

I-Ruby 3.1.0 ikhutshwe, ulwimi lwenkqubo olujoliswe kwizinto eziguquguqukayo olusebenza kakhulu ekuphuhlisweni kweprogram kwaye lubandakanya iimpawu ezintle zePerl, Java, Python, Smalltalk, Eiffel, Ada kunye neLisp. Ikhowudi yeprojekthi isasazwa phantsi kwe-BSD ("2-clause BSDL") kunye neelayisensi ze-"Ruby", ezibhekiselele kwinguqulelo yamva nje yelayisensi ye-GPL kwaye ihambelana ngokupheleleyo ne-GPLv3.

Uphuculo oluphambili:

  • Uvavanyo olutsha lwe-JIT compiler, i-YJIT, yongezwa, eyenziwe ngabaphuhlisi be-Shopify e-commerce platform njengenxalenye yenyathelo lokuphucula ukusebenza kweenkqubo zeRuby ezisebenzisa i-Rails framework kunye nokubiza iindlela ezininzi. Umahluko obalulekileyo ovela kwi-MJIT JIT compiler esetyenzisiweyo ngaphambili, esekelwe ekuqhubeni iindlela ezipheleleyo kwaye isebenzise i-compiler yangaphandle kulwimi lwe-C, kukuba i-YJIT isebenzisa i-Lazy Basic Block Versioning (LBBV) kwaye iqulethe i-JIT compiler edibeneyo. Nge-LBBV, i-JIT kuqala iqokelela kuphela isiqalo sendlela, kwaye iqulunqa intsalela emva kwexesha elithile, emva kokuba iintlobo zeenguqu kunye neengxabano ezisetyenzisiweyo zichongwe ngexesha lokubulawa. Xa usebenzisa i-YJIT, ukunyuka kwe-22% kwintsebenzo kwabhalwa xa kuqhuba uvavanyo lwe-railsbench, kunye nokwanda kwe-39% kwi-liquid-render test. I-YJIT okwangoku ilinganiselwe kwinkxaso yee-OS ezifana ne-unix kwiinkqubo ezine-x86-64 yokwakha kwaye ivaliwe ngokungagqibekanga (ukwenza kusebenze, khankanya i-“-yjit” iflegi kumgca womyalelo).
  • Ukusebenza okuphuculweyo kwe-MJIT JIT compiler endala. Kwiiprojekthi ezisebenzisa iiRails, ubungakanani obungagqibekanga becache (-jit-max-cache) bonyusiwe ukusuka kwi-100 ukuya kwi-10000 yemiyalelo. Uyekile ukusebenzisa iJIT kwiindlela ezinemiyalelo engaphezulu kwe-1000. Ukuxhasa i-Zeitwerk ye-Rails, ikhowudi ye-JIT ayisalahlwa xa i-TracePoint ivuliwe kwimisitho yeklasi.
  • Iquka idebug.gem ebhalwe ngokutsha ngokupheleleyo, exhasa ukuchithwa kwempazamo ekude, ayicothi inkqubo ehlaziywayo, ixhasa udibaniso kunye nojongano oluphambili lokulungisa (i-VSCode kunye neChrome), ingasetyenziselwa ukulungisa imisonto emininzi kunye neenkqubo ezininzi, ibonelela. i-interface yokwenziwa kwekhowudi ye-REPL, inikezela ngezakhono zokulandela umkhondo, inokurekhoda kwaye iphinde idlale iziqwengana zekhowudi. Idebugger enikelweyo lib/debug.rb isusiwe kunikezelo olusisiseko.
    Ukukhutshwa kolwimi lweprogram yeRuby 3.1
  • Kuphunyezwe ukuqaqambisa okubonakalayo kweempazamo kwiingxelo zecall back trace. Impazamo yokufaka ifulegi ibonelelwa kusetyenziswa iphakheji yegem eyakhelwe-ngaphakathi kunye neyenziweyo engagqibekanga error_highlight. Ukuvala impazamo yokufaka ifulegi, ungasebenzisa "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:in " ": indlela engachazwanga "ixesha" le-1:Integer (NoMethodError) 1.ixesha {} ^^^^^ Ubuthetha? amaxesha
  • Iqokobhe lezibalo ezisebenzisanayo IRB (REPL, Read-Eval-Print-Loop) iphumeza ugqibo oluzenzekelayo lwekhowudi engenisiweyo (njengoko uchwetheza, uthsuphe uyaboniswa ngeenketho zongeniso oluqhubekayo, phakathi apho ungashukuma nge Tab okanye Shift+ Isitshixo se Tab). Emva kokukhetha ukhetho lokuqhubeka, ibhokisi yencoko yababini iboniswa kufutshane ebonisa uxwebhu olunxulumene nomba okhethiweyo. Isinqumli se-keyboard Alt+d sinokusetyenziswa ukufikelela kuxwebhu olupheleleyo.
    Ukukhutshwa kolwimi lweprogram yeRuby 3.1
  • I-syntax yolwimi ngoku ivumela amaxabiso kwii-hash literals kunye neengxoxo zegama elingundoqo ukuba litsitywe xa kubizwa imisebenzi. Umzekelo, endaweni yebinzana elithi “{x: x, y: y}” ungachaza ngoku “{x:, y:}”, kwaye endaweni yokuthi “foo(x: x, y: y)” - foo( x:, y:)".
  • Inkxaso ezinzileyo yongqamaniso lwepateni yomgca omnye (ary => [x, y, z]), engasaphawulwanga njengovavanyo.
  • "^" umsebenzisi okwipateni ehambelanayo ngoku angaqulatha amabinzana angenasizathu, umzekelo: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.thatha(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Kwipateni yomgca omnye, ungashiya izibiyeli: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Uhlobo lwe-RBS lwe-annotation ulwimi, olukuvumela ukuba unqume ubume beprogram kunye neentlobo ezisetyenzisiweyo, zongeze inkxaso yokuchaza umda ophezulu wohlobo lweparameters usebenzisa "<" isimboli, inkxaso eyongeziweyo yee-aliases zeentlobo zegeneric, inkxaso ephunyeziweyo ingqokelela yokulawula amatye anqabileyo, ukusebenza okuphuculweyo kwaye kuphunyezwe utyikityo olutsha okwakhelwe ngaphakathi kunye namathala eencwadi asemgangathweni.
  • Inkxaso yovavanyo lweendawo ezidibeneyo zophuhliso zongezwe kwi-TypePro static type analyzer, eyenza i-RBS inkcazo esekelwe kuhlalutyo lwekhowudi ngaphandle kolwazi olucacileyo lohlobo (umzekelo, i-add-on ilungiselelwe ukudibanisa i-TypePro kunye nomhleli we-VSCode).
  • Ulungelelwaniso lokusetyenzwa kwezabelo ezininzi lutshintshiwe. Umzekelo, ngaphambili amacandelo ebinzana elithi “foo[0], bar[0] = baz, qux” aye acutshungulwa ngokolandelelwano baz, qux, foo, bar, kodwa ngoku foo, bar, baz, qux.
  • Inkxaso yovavanyo eyongeziweyo yonikezelo lwenkumbulo kwiintambo kusetyenziswa i-VWA (i-Variable Width Allocation) indlela.
  • Iinguqulelo ezihlaziyiweyo zeemodyuli zegem ezakhelwe ngaphakathi kunye nezo zibandakanywe kwilayibrari eqhelekileyo. I-net-ftp, i-net-imap, i-net-pop, i-net-smtp, i-matrix, i-prime kunye ne-debug packages eyakhelwe ngaphakathi.

umthombo: opennet.ru

Yongeza izimvo