Kuburitswa kweRuby programming mutauro 3.2

Ruby 3.2.0 yakaburitswa, ine simba-inomisikidzwa inotungamirwa nemutauro wechirongwa unoshanda zvakanyanya mukuvandudza chirongwa uye unobatanidza zvakanakisa zvePerl, Java, Python, Smalltalk, Eiffel, Ada uye Lisp. Iyo kodhi yeprojekiti inogoverwa pasi peBSD ("2-clause BSDL") uye "Ruby" marezinesi, iyo inoreva vhezheni yazvino rezinesi reGPL uye inoenderana zvizere neGPLv3.

Mabhindauko makuru:

  • Yakawedzera chiteshi chekutanga chemuturikiri weCRuby, iyo inounganidza muWebAssembly yepakati kodhi yekushanda muwebhu browser kana pasi penguva yekumhanya yakamira senge wasmtime. Nekudyidzana kwakananga neiyo inoshanda sisitimu kana ichimhanya zvakasiyana, iyo WASI (WebAssembly System Interface) API inoshandiswa. Pakati pezvimwe zvinhu, VFS wrapper inopiwa pamusoro peWASI, iyo inokubvumira kuti uise purogiramu yose yeRuby mumharidzo nenzira yefaira imwe chete. Kumhanya mubrowser kunogona kushandiswa kugadzira kudzidziswa uye demo webhu masevhisi akadai seTryRuby. Padanho razvino rebudiriro, chiteshi chengarava chakabudirira kupasa ekutanga uye bootstrap bvunzo masutu, ayo asingashandise iyo Thread API. Iyo chiteshi zvakare haitsigire Fibers, kunze, kana kuunganidzwa kwemarara.
  • Iyo YJIT in-process JIT compiler, yakagadzirwa nevagadziri veShopify e-commerce chikuva sechikamu chedanho rekuwedzera kushanda kwezvirongwa zveRuby zvinoshandisa Rails framework uye kudana nzira dzakawanda, yakanzi yakagadzikana uye yakagadzirira. kushandiswa kwekugadzira. Musiyano wakakosha kubva kune yakamboshandiswa MJIT JIT compiler, iyo yakavakirwa pakugadzirisa nzira dzese uye inoshandisa yekunze compiler mumutauro weC, ndeyekuti YJIT inoshandisa Lazy Basic Block Versioning (LBBV) uye ine yakasanganiswa JIT compiler. NeLBBV, JIT inotanga kuunganidza chete kutanga kwenzira, uye inounganidza imwe nguva gare gare, mushure memhando dzemhando uye nharo dzinoshandiswa dzakatemerwa panguva yekuuraya. YJIT inowanikwa x86-64 uye arm64/aarch64 zvivakwa paLinux, MacOS, BSD uye mamwe mapuratifomu eUNIX.

    Kusiyana naRuby, iyo YJIT kodhi yakanyorwa mumutauro weRust uye inoda iyo rustc 1.58.0+ compiler kuti iunganidzwe, saka iyo YJIT kuvaka yakaremara nekusarudzika uye inosarudzika. Paunenge uchishandisa YJIT, kuwedzera kwe41% mukuita kwakanyorwa pakumhanya yjit-bhenji bvunzo kana ichienzaniswa nekushandisa kududzira.

    Kuburitswa kweRuby programming mutauro 3.2

  • Yakawedzera dziviriro kubva pakuramba kurwiswa kwesevhisi paunenge uchigadzirisa data rekunze mune isingashande uye inopedza nguva nguva yekutaura (ReDoS). Iyo yekufananidza algorithm, iyo inoshandisa nzira yekurangarira, yakagadziridzwa zvakanyanya. Semuenzaniso, nguva yekushandiswa kwechirevo che '/^a*b?a*$/ =~ "a" * 50000 + "x"' yakaderedzwa kubva pa10 kusvika pa 0.003 seconds. Mutengo wekugadzirisa ndeyekuwedzera kwekuyeuka kushandiswa, kushandiswa kweiyo inenge 10 nguva yakakwirira kudarika saizi yedata rekuisa. Chechipiri chekuchengetedza chiyero kugona kutsanangura nguva yekupera (somuenzaniso, "Regexp.timeout = 1.0") panguva iyo chirevo chenguva dzose chinofanira kugadziriswa.
  • Iyo syntax_suggest modhi inosanganisirwa, iyo inobatsira kuongorora zvikonzero zvekukanganisa zvine chekuita nekushaikwa kana kuwedzera kwekuvhara "kuguma" kutaura. Zvisingaenzaniswi `kuguma', kushaya kiyi kiyi (` ita', `def`, `kana`, zvichingodaro)? 1 kirasi Imbwa> 2 defbark> 3 kupera 4 kupera
  • Kugona kumaka kupokana kwezvikanganiso zvine chekuita nemhando nenharo kwawedzerwa kune yakakanganisa nzvimbo yekuratidzira modhi, semuenzaniso: test.rb:2:mu `+': hapana haigone kumanikidzwa kuti iite Integer (TypeError) sum = ary [0] + ary [1] ^^^^^^
  • Yakawedzera syntax nyowani yekutungamira seti dzenharo kune dzimwe nzira: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler inokurudzirwa - mutsauko wekare MJIT JIT compiler, yakanyorwa patsva mumutauro weRuby. Ive nechokwadi chekuti MJIT inomhanya mune yakaparadzana maitiro pane kumhanya muMJIT mushandi shinda.
  • MuBundler 2.4, kutsamira kugadzirisa kunoshandisa iyo PubGrub vhezheni detector, inoshandiswawo mune pub package maneja yemutauro weDart. Iyo yakamboshandiswa Molinillo algorithm inoramba ichishandiswa muRubyGems, asi zvakare ichatsiviwa nePubGrub mune ramangwana.
  • Yakagadziridzwa vhezheni yeakavakirwa-mukati gem modules uye ayo anosanganisirwa muyakajairwa raibhurari.

Source: opennet.ru

Voeg