Ho lokolloa ha puo ea lenaneo la Ruby 3.1

Ruby 3.1.0 e lokollotsoe, e leng puo e matla ea lenaneo e shebaneng le ntho e sebetsang hantle haholo ho nts'etsopele ea lenaneo mme e kenyelletsa likarolo tse ntle ka ho fetisisa tsa Perl, Java, Python, Smalltalk, Eiffel, Ada le Lisp. Khoutu ea morero e ajoa tlas'a BSD ("2-clause BSDL") le laesense ea "Ruby", e bolelang mofuta oa morao-rao oa laesense ea GPL mme e lumellana ka botlalo le GPLv3.

Lintlafatso tsa mantlha:

  • Ho ekelitsoe teko e ncha ea liteko tsa JIT compiler, YJIT, e entsoeng ke baetsi ba Shopify e-commerce platform e le karolo ea mohato oa ho ntlafatsa ts'ebetso ea mananeo a Ruby a sebelisang moralo oa Rails le ho bitsa mekhoa e mengata. Phapang e ka sehloohong ho tloha ho moqapi oa MJIT JIT o sebelisitsoeng pele, o itšetlehileng ka ho sebetsana le mekhoa eohle le ho sebelisa moqapi oa kantle ka puo ea C, ke hore YJIT e sebelisa Lazy Basic Block Versioning (LBBV) 'me e na le motsoako oa JIT o kopantsoeng. Ka LBBV, JIT e qala ho bokella qalo feela ea mokhoa, 'me e bokella tse ling hamorao, ka mor'a hore mefuta ea mefuta-futa le likhang tse sebelisoang li khethoe nakong ea ho bolaoa. Ha u sebelisa YJIT, keketseho ea 22% ea ts'ebetso e tlalehiloe ha ho etsoa tlhahlobo ea railsbench, le keketseho ea 39% tekong ea ho fana ka metsi. YJIT hajoale e lekanyelitsoe ho ts'ehetsa li-OS tse tšoanang le unix lits'ebetsong tse nang le meralo ea x86-64 'me e emisitsoe ka mokhoa o ikhethileng (ho kenya tšebetsong, hlakisa folakha ea "-yjit" moleng oa taelo).
  • Ts'ebetso e ntlafalitsoeng ea komporo ea khale ea MJIT JIT. Bakeng sa merero e sebelisang Rails, boholo ba cache ea kamehla (-jit-max-cache) e ekelitsoe ho tloha ho 100 ho ea ho 10000 litaelo. E emisitse ho sebelisa JIT bakeng sa mekhoa e nang le litaelo tse fetang 1000. Ho ts'ehetsa Zeitwerk of Rails, khoutu ea JIT ha e sa lahloa ha TracePoint e lumelletsoe liketsahalo tsa sehlopha.
  • E kenyelletsa debug.gem debugger e ngotsoeng bocha ka ho felletseng, e ts'ehetsang ts'ebetso e hole, ha e liehe ts'ebeliso e lokisitsoeng, e ts'ehetsa ho kopanngoa le li-interfaces tse tsoetseng pele tsa ho lokisa liphoso (VSCode le Chrome), e ka sebelisoa bakeng sa ho lokisa lits'ebetso tse nang le likhoele tse ngata le lits'ebetso tse ngata. sehokelo sa ts'ebetso ea khoutu ea REPL, se fana ka bokhoni bo tsoetseng pele ba ho ts'oara, se ka rekota le ho bapala likhechana tsa khoutu. Debugger e neng e fanoa nakong e fetileng lib/debug.rb e tlositsoe ho kabo ea mantlha.
    Ho lokolloa ha puo ea lenaneo la Ruby 3.1
  • E kentse tšebetsong tokiso ea pono ea liphoso litlalehong tsa call back trace. Ho tšoaea phoso ho fanoe ka sephutheloana sa lehakoe se hahelletsoeng le se nolofalitsoeng ke default_highlight. Ho thibela ho tšoaea liphoso, u ka sebelisa "--disable-error_highlight" tlhophiso. $ ruby ​​​​test.rb test.rb:1:in " ": mokhoa o sa hlalosoang "nako" bakeng sa 1:Integer (NoMethodError) 1.time {} ^^^^^ Na u ne u bolela? linako
  • The shell of interactive calculation IRB (REPL, Read-Eval-Print-Loop) e sebelisa ho phethela khoutu e kentsoeng ka boits'oaro (ha u ntse u thaepa, leseli le hlahisoa ka likhetho tsa ho tsoela pele ho kenya, tseo u ka li tsamaisang ka Tab kapa Shift+ Senotlolo sa tab). Ka mor'a ho khetha khetho ea ho tsoela pele, lebokose la puisano le bontšoa haufi le moo le bontšang litokomane tse amanang le ntho e khethiloeng. Tsela e khaoletsang ea keyboard Alt+d e ka sebelisoa ho fihlella litokomane tse felletseng.
    Ho lokolloa ha puo ea lenaneo la Ruby 3.1
  • Syntax ea puo joale e lumella boleng ba li-hash literals le mantsoe a bohlokoa hore a qheleloe ka thoko ha o bitsa mesebetsi. Ka mohlala, sebakeng sa poleloana “{x: x, y: y}” joale u ka hlakisa “{x:, y:}”, le sebakeng sa “foo(x: x, y: y)” - foo( x:, y:)".
  • Tšehetso e tsitsitseng bakeng sa lipapali tsa mohlala oa mola o le mong (ary => [x, y, z]), tse seng li sa tšoauoa e le liteko.
  • "^" ea sebetsang ho paterone e tšoanang e se e ka ba le mantsoe a fapaneng, mohlala: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Ka lipaterone tsa mola o le mong, o ka siea masakakana: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Puo ea litlhaloso tsa mofuta oa RBS, e u lumellang ho tseba sebopeho sa lenaneo le mefuta e sebelisitsoeng, e ekelitse ts'ehetso bakeng sa ho hlalosa moeli o ka holimo oa mefuta ea mefuta e sebelisang letšoao la "<", tšehetso e eketsehileng bakeng sa li-aliases tsa mefuta e tloaelehileng, ts'ehetso e kentsoeng likoleke bakeng sa ho laola mahakoe, ts'ebetso e ntlafetseng le ho kenya ts'ebetsong li-signature tse ngata tse ncha bakeng sa lilaebrari tse hahiloeng le tse tloaelehileng.
  • Ts'ehetso ea liteko bakeng sa tikoloho ea nts'etsopele e kopantsoeng e kenyelelitsoe ho TypePro static type analyzer, e hlahisang litlhaloso tsa RBS tse ipapisitseng le tlhahlobo ea khoutu ntle le tlhaiso-leseling ea mofuta o hlakileng (mohlala, tlatsetso e lokiselitsoe ho kopanya TypePro le mohlophisi oa VSCode).
  • Taelo ea ho sebetsana le likabelo tse ngata e fetotsoe. Mohlala, pejana likarolo tsa poleloana "foo[0], bar[0] = baz, qux" li ne li sebetsoa ka tatellano baz, qux, foo, bar, empa joale foo, bar, baz, qux.
  • Ts'ehetso ea liteko bakeng sa kabo ea memori bakeng sa likhoele tse sebelisang mochini oa VWA (Variable Width Allocation).
  • Liphetolelo tse nchafalitsoeng tsa li-module tsa lehakoe tse hahelletsoeng kahare le tse kenyellelitsoeng laeboraring e tloaelehileng. Liphutheloana tsa net-ftp, net-imap, net-pop, net-smtp, matrix, prime le debug li hahiloe kahare.

Source: opennet.ru

Eketsa ka tlhaloso