Sakin yaren shirye-shiryen Ruby 3.2

Ruby 3.2.0 an fito da shi, yaren shirye-shirye ne mai ƙarfi wanda ke da inganci sosai wajen haɓaka shirye-shirye kuma ya ƙunshi mafi kyawun fasali na Perl, Java, Python, Smalltalk, Eiffel, Ada da Lisp. An rarraba lambar aikin a ƙarƙashin lasisin BSD ("2-clause BSDL") da "Ruby", wanda ke nufin sabon sigar lasisin GPL kuma ya dace da GPLv3.

Babban haɓakawa:

  • An ƙara tashar tashar farko ta mai fassarar CRuby, wacce ke tattarawa cikin lambar tsaka-tsaki ta WebAssembly don gudana a cikin burauzar gidan yanar gizo ko ƙarƙashin lokacin aiki na tsaye kamar lokacin wasa. Don yin hulɗa kai tsaye tare da tsarin aiki yayin gudana daban, WASI (WebAssembly System Interface) API ana amfani da shi. Daga cikin wasu abubuwa, an samar da abin rufewar VFS a saman WASI, wanda ke ba ka damar haɗa dukkan aikace-aikacen Ruby a cikin gabatarwa a cikin nau'in fayil ɗin wasm guda ɗaya. Ana iya amfani da gudu a cikin mai bincike don ƙirƙirar horo da ayyukan gidan yanar gizo na demo kamar TryRuby. A mataki na ci gaba na yanzu, tashar tashar ta sami nasarar wuce abubuwan gwaji na asali da bootstrap, waɗanda ba sa amfani da API ɗin Thread. Har ila yau tashar jiragen ruwa baya goyan bayan Fibers, keɓantawa, ko tarin shara.
  • YJIT in-process JIT compiler, wanda masu haɓaka dandamali na e-commerce na Shopify suka kirkira a matsayin wani ɓangare na yunƙurin haɓaka ayyukan shirye-shiryen Ruby waɗanda ke amfani da tsarin Rails kuma suna kiran hanyoyin da yawa, an ayyana su tsayayye kuma a shirye don amfani da samarwa. Babban bambanci daga mai tarawa na MJIT JIT da aka yi amfani da shi a baya, wanda ya dogara ne akan sarrafa dukkan hanyoyin kuma yana amfani da na'ura mai tarawa na waje a cikin harshen C, shine YJIT yana amfani da Lazy Basic Block Versioning (LBBV) kuma ya ƙunshi haɗaɗɗen JIT mai haɗawa. Tare da LBBV, JIT ta fara tattara farkon hanyar kawai, kuma ta tattara sauran ɗan lokaci kaɗan, bayan an ƙayyade nau'ikan masu canji da muhawarar da aka yi amfani da su yayin aiwatarwa. YJIT yana samuwa don x86-64 da arm64/arch64 gine-gine akan Linux, MacOS, BSD da sauran dandamali na UNIX.

    Ba kamar Ruby ba, an rubuta lambar YJIT a cikin yaren Rust kuma yana buƙatar rustc 1.58.0+ mai tarawa don haɗawa, don haka ginin YJIT yana kashe ta tsohuwa kuma zaɓi ne na zaɓi. Lokacin amfani da YJIT, an sami karuwar 41% a cikin aiki yayin gudanar da gwajin yjit-bench idan aka kwatanta da yin amfani da fassarar.

    Sakin yaren shirye-shiryen Ruby 3.2

  • Ƙara ƙarin kariya daga hana harin sabis lokacin sarrafa bayanan waje cikin rashin inganci da maganganun yau da kullun masu cin lokaci (ReDoS). Algorithm mai daidaitawa, wanda ke amfani da dabarar haddar, an inganta sosai. Misali, lokacin aiwatar da furcin '/^a*b?a*$/ =~ "a" * 50000 + "x" an rage daga 10 zuwa 0.003 seconds. Kudin haɓakawa shine haɓakar amfani da ƙwaƙwalwar ajiya, wanda amfaninsa ya kai kusan sau 10 sama da girman bayanan shigarwa. Ma'aunin tsaro na biyu shine ikon ayyana lokacin karewa (misali, "Regexp.timeout = 1.0") lokacin da dole ne a sarrafa maganganun yau da kullun.
  • An haɗa yanayin syntax_suggest, wanda ke taimakawa gano musabbabin kurakuran da ke da alaƙa da bacewar ko ƙarin bayanin “ƙarshen” rufewa. 'Ƙarshen' wanda bai dace ba, kalmar maɓalli ta ɓace ('yi', 'def', 'if', da sauransu)? 1 aji Kare> 2 defbark> 3 karshen 4 karshen
  • An ƙara ikon yin alama don kurakurai masu alaƙa da nau'ikan da muhawara zuwa yanayin nunin kuskuren, misali: test.rb:2:in `+': nil ba za a iya tilasta shi cikin Integer (TypeError) jimla = ary [0] + yar [1] ^^^^^
  • An ƙara sabon haɗin gwiwa don tura saitin gardama zuwa wasu hanyoyin: def foo(*) bar(*) ƙarshen def baz(**) quux(**) ƙare
  • Ruby_vm/mjit/compiler an gabatar da shi - bambance-bambancen tsohuwar mai tarawa MJIT JIT, wanda aka sake rubutawa cikin yaren Ruby. Tabbatar cewa MJIT yana gudana a cikin wani tsari na daban maimakon gudana a cikin zaren ma'aikacin MJIT.
  • A cikin Bundler 2.4, sarrafa dogaro yana amfani da mai gano sigar PubGrub, wanda kuma ake amfani dashi a cikin manajan fakitin mashaya don harshen Dart. Molinillo algorithm da aka yi amfani da shi a baya yana ci gaba da amfani dashi a cikin RubyGems, amma kuma za'a maye gurbinsa da PubGrub a nan gaba.
  • Sabbin nau'ikan kayan gini na gem da aka haɗa da waɗanda aka haɗa a daidaitaccen ɗakin karatu.

source: budenet.ru

Add a comment