Kuburitswa kweRuby programming mutauro 3.1

Ruby 3.1.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:

  • Imwe itsva yekuedza mu-process JIT compiler, YJIT, yakawedzerwa, yakagadzirwa nevagadziri veShopify e-commerce platform sechikamu chekugadzirisa kushanda kwezvirongwa zveRuby zvinoshandisa Rails framework uye kudana nzira dzakawanda. 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. Paunenge uchishandisa YJIT, 22% kuwedzera kwekuita kwakarekodhwa paunenge uchimhanyisa railsbench bvunzo, uye 39% kuwedzera kwemvura-inopa bvunzo. YJIT parizvino inogumira kutsigira unix-senge OSes pamasisitimu ane x86-64 architecture uye yakaremara nekusarudzika (kumisikidza, tsanangura iyo "-yjit" mureza mumutsara wekuraira).
  • Kuvandudzwa kwekuita kwekare MJIT JIT compiler. Kune mapurojekiti anoshandisa Rails, iyo yakasarudzika yakakwira cache saizi (--jit-max-cache) yakawedzerwa kubva pa100 kusvika 10000 mirairo. Yakamira kushandisa JIT kune nzira dzine mirairo inodarika 1000. Kutsigira Zeitwerk yeRails, JIT kodhi haicharaswa kana TracePoint yagoneswa kuzviitiko zvekirasi.
  • Inosanganisira yakanyatso kunyorwazve debug.gem debugger, inotsigira kure kure debugging, hainonoke iyo yakagadziriswa application, inotsigira kubatanidzwa neyepamberi debugging interfaces (VSCode uye Chrome), inogona kushandiswa kugadzirisa akawanda-shinda uye akawanda-maitiro maapplication, anopa. iyo REPL kodhi yekuuraya interface, inopa epamberi yekutevera kugona, inogona kurekodha uye kudzoreredza kodhi snippets. Iyo yakambopihwa debugger lib/debug.rb yabviswa kubva kubhesi yekugovera.
    Kuburitswa kweRuby programming mutauro 3.1
  • Yakaitwa yekutarisisa kwekuona kwezvikanganiso mucall back trace report. Kukanganisa kumureza kunopihwa uchishandisa yakavakirwa-mukati uye default-inogonesa gem package error_highlight. Kudzima kukanganisa kumureza, unogona kushandisa "--disable-error_highlight" kuseta. $ ruby ​​​​test.rb test.rb:1:in " ": nzira isina kutsanangurwa "nguva" ye1:Integer (NoMethodError) 1.nguva {} ^^^^^ Wanga uchireva here? nguva
  • Iyo goko remaverengero ekuverenga IRB (REPL, Read-Eval-Print-Loop) inoshandisa otomatiki kupedzisa iyo yakapinda kodhi (sezvaunonyora, zano rinoratidzwa rine sarudzo dzekuenderera mberi nekuisa, pakati paunogona kufamba neTab kana Shift + Tab kiyi). Mushure mekusarudza sarudzo yekuenderera mberi, bhokisi rebhokisi rinoratidzwa pedyo rinoratidza zvinyorwa zvine chokuita nechinhu chakasarudzwa. Iyo keyboard yekudimbudzira Alt+d inogona kushandiswa kuwana zvinyorwa zvizere.
    Kuburitswa kweRuby programming mutauro 3.1
  • Iyo syntax yemutauro ikozvino inobvumira kukosha mune hash literals uye keyword nharo kuti isvikwe pakudaidza mabasa. Semuenzaniso, pachinzvimbo cheshoko rekuti β€œ{x: x, y: y}” wava kugona kutaura β€œ{x:, y:}”, uye pachinzvimbo chekuti β€œfoo(x: x, y: y)” - foo( x:, y:)".
  • Tsigiro yakatsiga yemutsara-mutsetse machisi (ary => [x, y, z]), iyo isingachapiwi mureza seyekuedza.
  • "^" mushandisi wemapateni anogona kuve nezvirevo zvisina tsarukano, semuenzaniso: Prime.each_cons(2).lazy.find_all{_1 mu [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Mumutsara-mutsetse wemachisi, unogona kusiya maparentheses: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Mutauro werudzi rweRBS, iyo inokutendera kuti uone chimiro chechirongwa uye marudzi anoshandiswa, yakawedzera tsigiro yekutsanangura muganho wepamusoro wemhando paramita uchishandisa "<" chiratidzo, yakawedzera tsigiro yeaases emhando dzegeneric. kuunganidzwa kwekutarisira matombo anokosha, kwakagadziridzwa mashandiro uye kushandisa akawanda matsva siginecha eakavakwa-mukati uye akajairwa maraibhurari.
  • Tsigiro yekuyedza yenzvimbo dzakabatanidzwa dzekusimudzira yakawedzerwa kune TypePro static type analyzer, iyo inogadzira RBS zvirevo zvichibva pakuongororwa kwekodhi pasina ruzivo rwemhando yemhando (semuenzaniso, yekuwedzera-yakagadzirirwa kubatanidza TypePro neVSCode mupepeti).
  • Kurongeka kwekugadzirisa mabasa akawanda kwakashandurwa. Semuenzaniso, zvakamboitika zvikamu zvechirevo che "foo[0], bar[0] = baz, qux" zvakagadziriswa muhurongwa baz, qux, foo, bar, asi ikozvino foo, bar, baz, qux.
  • Yakawedzera tsigiro yekuyedza yekugovera ndangariro yetambo uchishandisa iyo VWA (Variable Width Allocation) maitiro.
  • Yakagadziridzwa vhezheni yeakavakirwa-mukati gem modules uye ayo anosanganisirwa muyakajairwa raibhurari. Iyo net-ftp, net-imap, net-pop, net-smtp, matrix, prime uye debug mapakeji akavakirwa-mukati.

Source: opennet.ru

Voeg