Ukukhishwa kolimi lohlelo lweRuby 3.1

I-Ruby 3.1.0 ikhishwe, ulimi lokuhlela olugxile entweni oluguquguqukayo olusebenza kahle kakhulu ekuthuthukisweni kohlelo futhi luhlanganisa izici ezinhle kakhulu ze-Perl, Java, Python, Smalltalk, Eiffel, Ada kanye ne-Lisp. Ikhodi yephrojekthi isatshalaliswa ngaphansi kwe-BSD (“2-clause BSDL”) kanye namalayisensi e-“Ruby”, asho inguqulo yakamuva yelayisensi ye-GPL futhi ehambisana ngokugcwele ne-GPLv3.

Ukuthuthukiswa okuyinhloko:

  • Isihlanganisi se-JIT esisahlolwa esisenqubweni esisha sengeziwe, i-YJIT, sengeziwe, esidalwe abathuthukisi benkundla ye-e-commerce yakwaShopify njengengxenye yohlelo lokuthuthukisa ukusebenza kwezinhlelo zeRuby ezisebenzisa uhlaka lwe-Rails futhi zibize izindlela eziningi. Umehluko oyinhloko ovela kumhlanganisi we-MJIT JIT owake wasetshenziswa ngaphambili, osekelwe ekucubunguleni izindlela zonke futhi esebenzisa isihlanganisi sangaphandle ngolimi lwe-C, ukuthi i-YJIT isebenzisa i-Lazy Basic Block Versioning (LBBV) futhi iqukethe i-JIT compiler ehlanganisiwe. Nge-LBBV, i-JIT iqala ukuhlanganisa kuphela isiqalo sendlela, bese ihlanganisa okunye ngemva kwesikhathi esithile, ngemva kokuba izinhlobo zokuguquguquka nezimpikiswano ezisetshenzisiwe zinqunywa phakathi nokubulawa. Uma usebenzisa i-YJIT, ukukhuphuka kokusebenza okungu-22% kwarekhodwa lapho kusetshenziswa ukuhlolwa kwe-railsbench, kanye nokwenyuka okungama-39% kuhlolo lwe-liquid-render. I-YJIT okwamanje ikhawulelwe ekusekeleni ama-OS afana ne-unix kumasistimu anezakhiwo ze-x86-64 futhi ikhutshaziwe ngokuzenzakalela (ukwenza kusebenze, cacisa ifulegi elithi “--yjit” emugqeni womyalo).
  • Ukusebenza okuthuthukisiwe kwe-MJIT JIT compiler endala. Kumaphrojekthi asebenzisa i-Rails, usayizi wenqolobane omkhulu ozenzakalelayo (--jit-max-cache) unyusiwe kusuka ku-100 kuya ku-10000 imiyalelo. Uyeke ukusebenzisa i-JIT ngezindlela ezinemiyalo engaphezu kuka-1000. Ukuze usekele i-Zeitwerk of Rails, ikhodi ye-JIT ayisalahlwa uma i-TracePoint inikwe amandla emicimbini yekilasi.
  • Kuhlanganisa isilungisi sephutha esibhalwe kabusha ngokuphelele se-debug.gem, esisekela ukulungisa amaphutha esikude, asinensisi uhlelo lokusebenza olusulwe iphutha, sisekela ukuhlanganiswa nezixhumi ezibonakalayo zokulungisa iphutha (i-VSCode ne-Chrome), ingasetshenziselwa ukulungisa amaphutha izinhlelo zokusebenza ezinemicu eminingi nezinqubo eziningi, inikeza isixhumi esibonakalayo sokwenza ikhodi ye-REPL, sinikeza amakhono athuthukile okulandelela, singarekhoda futhi sidlale amazwibela ekhodi. I-debugger enikeziwe ngaphambilini i-lib/debug.rb isusiwe ekusabalaliseni kwesisekelo.
    Ukukhishwa kolimi lohlelo lweRuby 3.1
  • Kwenziwe ukugqanyiswa okubonakalayo kwamaphutha emibikweni yokulandela umkhondo we-call back. Ukumakwa kwephutha kunikezwa kusetshenziswa iphakheji yegugu eyakhelwe ngaphakathi nenikwe amandla ngokuzenzakalelayo error_highlight. Ukuze ukhubaze ukumaka iphutha, ungasebenzisa isilungiselelo esithi “--disable-error_highlight”. $ ruby ​​​​test.rb test.rb:1:in " ": indlela engachazwanga "isikhathi" se-1:Integer (NoMethodError) 1.isikhathi {} ^^^^^ Ubuqonde? izikhathi
  • Igobolondo lezibalo ezisebenzisanayo i-IRB (REPL, Read-Eval-Print-Loop) isebenzisa ukugcwaliswa okuzenzakalelayo kwekhodi efakiwe (njengoba uthayipha, insukwana iboniswa nezinketho zokuqhubeka kokufaka, ongahambisa phakathi kwayo ne-Tab noma Shift+ Ukhiye wethebhu). Ngemva kokukhetha inketho yokuqhubeka, ibhokisi lengxoxo liyaboniswa eduze elibonisa imibhalo ehlobene nento ekhethiwe. Isinqamuleli sekhibhodi i-Alt+d singasetshenziswa ukufinyelela imibhalo egcwele.
    Ukukhishwa kolimi lohlelo lweRuby 3.1
  • I-syntax yolimi manje ivumela amanani kuma-hash literals kanye nama-agumenti wegama elingukhiye ukuthi eqiwe lapho kubizwa imisebenzi. Ngokwesibonelo, esikhundleni senkulumo ethi “{x: x, y: y}” ungakwazi manje ukucacisa “{x:, y:}”, futhi esikhundleni sokuthi “foo(x: x, y: y)” - foo( x:, y:)".
  • Usekelo oluzinzile lokufanayo kwephethini yomugqa owodwa (ary => [x, y, z]), okungasahlatshwa umkhosi njengokuvivinya.
  • I-opharetha ethi "^" ekufanisweni kwephethini manje ingaqukatha izinkulumo ezingaqondakali, isibonelo: Prime.each_cons(2).lazy.find_all{_1 kokuthi [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Ngokufaniswa kwephethini yomugqa owodwa, ungashiya abakaki: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Ulimi lwesichasiselo sohlobo lwe-RBS, olukuvumela ukuthi unqume ukwakheka kohlelo nezinhlobo ezisetshenzisiwe, lwengeze usekelo lokucacisa umkhawulo ongaphezulu wamapharamitha wohlobo kusetshenziswa uphawu oluthi “<”, usekelo olungeziwe lweziteketiso zezinhlobo ezijwayelekile, usekelo olufakiwe lwe amaqoqo okuphatha amagugu, ukusebenza okuthuthukisiwe kanye nokusetshenziswa kwamasignesha amaningi amasha kumalabhulali akhelwe ngaphakathi najwayelekile.
  • Usekelo lokuhlola lwezindawo ezididiyelwe zokuthuthukiswa kwengeziwe ku-TypePro static type analyzer, ekhiqiza izichasiselo ze-RBS ezisekelwe ekuhlaziyweni kwekhodi ngaphandle kolwazi lohlobo olucacile (isibonelo, isengezo silungiselelwe ukuhlanganisa i-TypePro nesihleli se-VSCode).
  • Uhlelo lokucubungula izabelo eziningi lushintshiwe. Isibonelo, ngaphambilini izingxenye zenkulumo ethi “foo[0], bar[0] = baz, qux” bezicutshungulwa ngohlelo lokuthi baz, qux, foo, bar, kodwa manje foo, bar, baz, qux.
  • Kwengezwe usekelo lokuhlola lokwabiwa kwenkumbulo kumayunithi ezinhlamvu kusetshenziswa indlela ye-VWA (Variable Width Allocation).
  • Izinguqulo ezibuyekeziwe zamamojula ayigugu akhelwe ngaphakathi nalawo afakwe kulabhulali ejwayelekile. I-net-ftp, i-net-imap, i-net-pop, i-net-smtp, i-matrix, i-prime kanye namaphakheji okulungisa iphutha akhelwe ngaphakathi.

Source: opennet.ru

Engeza amazwana