Siideynta luqadda barnaamijka Ruby 3.2

Ruby 3.2.0 waa la sii daayay, luuqad barnaamijeed firfircoon oo ku jihaysan shayga kaas oo aad ugu hufan horumarinta barnaamijka oo ku dara astaamaha ugu fiican ee Perl, Java, Python, Smalltalk, Eiffel, Ada iyo Lisp. Xeerka mashruuca waxa lagu qaybiyay shatiga BSD ("2-clause BSDL") iyo "Ruby" shatiga, kaas oo tixraacaya nooca ugu dambeeyay ee shatiga GPL oo si buuxda ula jaan qaadaya GPLv3.

Horumarka ugu weyn:

  • Waxaa lagu daray deked bilow ah oo turjumaan CRuby ah oo isku dubariday koodka dhexe ee WebAssembly si uu ugu dhex shaqeeyo biraawsarkaaga ama ka hooseeya runtimes goonida ah sida wasmtime. Si toos ah ula macaamilka nidaamka qalliinka marka si gooni ah u socdo, WASI (WebAssembly System Interface) API ayaa la isticmaalaa. Waxa kale oo ka mid ah, xidhitaanka VFS ee dusha sare ee WASI ayaa la bixiyaa, kaas oo kuu ogolaanaya inaad ku xidho codsiga oo dhan oo ku qoran luqadda Ruby muuqaal ah qaab hal fayl oo wasm ah. Ku shaqeynta browserka waxaa loo isticmaali karaa in lagu abuuro casharo iyo adeegyo shabakad demo ah sida TryRuby. Marxaladda hadda jirta ee horumarka, dekeddu waxay si guul leh uga gudubtaa suuadaha tijaabada aasaasiga ah iyo bootstrap, kuwaas oo aan isticmaalin Thread API. Dekeddu sidoo kale ma taageerto Fiber, Ka Reeban, ama Ururinta Qashinka.
  • Qalabka ku jira JIT compiler YJIT, oo ay abuureen horumariyeyaasha Shopify e-commerce platform taasoo qayb ka ah hindise lagu kordhinayo waxqabadka barnaamijyada Ruby ee adeegsada qaab dhismeedka tareenada oo wac habab badan, ayaa lagu dhawaaqay inay xasilloon yihiin oo diyaar u yihiin. isticmaalka wax soo saarka. Farqiga ugu muhiimsan ee ka duwan kan hore ee MJIT JIT compiler, kaas oo ku salaysan habka habaynta iyo isticmaalka dibadda C compiler, waa in YJIT ay isticmaasho Lazy Basic Block Versioning (LBBV) oo ay ka kooban tahay isku-darka JIT. Thanks to LBBV, JIT waxay ururisaa oo kaliya bilowga habka marka hore, waxayna ururisaa inta soo hartay wakhti ka dib, ka dib noocyada doorsoomayaasha iyo doodaha la isticmaalo ayaa la go'aamiyaa inta lagu jiro fulinta. YJIT waxay diyaar u tahay x86-64 iyo arm64/arch64 naqshadaha Linux, MacOS, BSD, iyo aaladaha kale ee UNIX.

    Si ka duwan CRuby, code YJIT wuxuu ku qoran yahay Rust wuxuuna u baahan yahay rustc 1.58.0+ compiler si loo ururiyo, sidaa darteed ururinta YJIT waa naafo si caadi ah waana ikhtiyaari. Markaad isticmaalayso YJIT, 41% korodhka waxqabadka ayaa la duubay markii la waday imtixaanka yjit-bench marka la barbar dhigo adeegsiga tarjumaada.

    Siideynta luqadda barnaamijka Ruby 3.2

  • Waxaa lagu daray ilaalin dheeraad ah oo ka dhan ah weerarrada sababa diidmada adeegga marka la farsameynayo xogta dibadda si aan waxtar lahayn iyo tibaaxaha joogtada ah ee muddada dheer socda (ReDoS). Algorithm is-waafajinta si weyn loo hagaajiyay, kaas oo adeegsada farsamada xafidista. Tusaale ahaan, wakhtiga fulinta odhaahda '/^a*b?a*$/ =~ "a" * 50000 + "x"' ayaa laga dhimay 10 ilaa 0.003 ilbiriqsi. Qiimaha hagaajinta waa korodhka isticmaalka xusuusta, isticmaalka kaas oo ku saabsan 10 jeer ka sarreeya cabbirka xogta gelinta. Cabbirka amniga labaad waa awoodda lagu qeexo waqti-gaab (tusaale, "Regexp.timeout = 1.0"), kaas oo odhaahda caadiga ahi ay tahay inay haysato wakhti lagu farsameeyo.
  • Habka syntax_suggest ayaa lagu soo daray si ay u caawiso ogaanshaha sababaha khaladaadka la xidhiidha qoraalka xidhitaanka "dhamaadka" maqan ama soo noqnoqda. 'Dhammaadka' aan isbarbar dhigin, ereyga muhiimka ah ayaa maqan ('do', 'def', 'if', iwm.)? 1 class Ey> 2 defbark> 3 dhamaadka 4 dhamaadka
  • Waxaa lagu daray awoodda lagu calaamadiyo dooda haddii ay dhacdo khaladaadka la xiriira noocyada iyo dooda habka goobta qaladka, tusaale ahaan: test.rb:2:in `+': nil laguma qasbi karo Integer (TypeError) wadar = ary[ 0] + ary [1] ^^^^^
  • Waxaa lagu daray syntax cusub si loogu jiheeyo hababka kale ee doodaha loo dejiyay: def foo(*) bar(*) end def baz(**) quux(**) dhamaadka
  • Ruby_vm/mjit/compiler ayaa la soo jeediyay - kala duwanaanshiyaha MJIT JIT hore, oo dib loogu qoray luqadda Ruby. Xaqiijiyay fulinta MJIT ee hannaan gaar ah, halkii lagu fulin lahaa dunta shaqaalaha MJIT.
  • Gudaha Bundler 2.4, maaraynta ku-tiirsanaanta waxay isticmaashaa nooca PubGrub finder, oo uu sidoo kale isticmaalo maareeyaha xirmada ee Dart. Algorithm-kii hore ee Molinillo la isticmaalay ayaa ku sii socda in lagu isticmaalo RubyGems, laakiin sidoo kale waxa lagu beddeli doonaa PubGrub mustaqbalka.
  • Noocyo la cusboonaysiiyay oo ah modules-ku-dhismay iyo kuwa caadiga ah ee maktabadda jeebka.

Source: opennet.ru

Add a comment