Hoʻokuʻu ʻia ka ʻōlelo papahana Ruby 3.1

Ua hoʻokuʻuʻiaʻo Ruby 3.1.0, he'ōlelo hoʻolālā hoʻolālā hoʻoikaika i ka hoʻolālā papahana a hoʻokomo i nā hiʻohiʻona maikaʻi loa o Perl, Java, Python, Smalltalk, Eiffel, Ada a me Lisp. Hāʻawi ʻia ke code pāhana ma lalo o nā laikini BSD ("2-clause BSDL") a me "Ruby", e pili ana i ka mana hou loa o ka laikini GPL a kūpono loa me GPLv3.

Nā hoʻomaikaʻi nui:

  • Ua hoʻohui ʻia kahi hoʻokolohua hou i loko o ka hana JIT compiler, ʻo YJIT, i hana ʻia e nā mea hoʻomohala o ka Shopify e-commerce platform ma ke ʻano he ʻāpana o ka hoʻolālā e hoʻomaikaʻi i ka hana o nā papahana Ruby e hoʻohana ana i ka framework Rails a kāhea i nā ʻano he nui. ʻO ka ʻokoʻa koʻikoʻi mai ka MJIT JIT compiler i hoʻohana mua ʻia, i hoʻokumu ʻia i ka hoʻoponopono ʻana i nā ʻano holoʻokoʻa a hoʻohana i kahi mea hoʻopili waho ma ka ʻōlelo C, ʻo ia ka YJIT e hoʻohana ana i ka Lazy Basic Block Versioning (LBBV) a loaʻa kahi mea hoʻohui JIT hoʻohui. Me LBBV, hoʻopili mua ʻo JIT i ka hoʻomaka ʻana o ke ʻano, a hōʻuluʻulu i ke koena i kekahi manawa ma hope, ma hope o ka hoʻoholo ʻana o nā ʻano o nā ʻano a me nā hoʻopaʻapaʻa i hoʻohana ʻia i ka wā o ka hoʻokō. I ka hoʻohana ʻana iā YJIT, ua hoʻopaʻa ʻia kahi hoʻonui 22% o ka hana i ka wā e holo ana i ka hoʻāʻo railsbench, a he 39% hoʻonui i ka hoʻāʻo wai-render. Ua kaupalena ʻia ʻo YJIT i kēia manawa no ke kākoʻo ʻana i nā OS e like me unix ma nā ʻōnaehana me ka hoʻolālā x86-64 a ua paʻa ʻole ʻia (no ka hoʻāla ʻana, e kuhikuhi i ka hae "--yjit" ma ka laina kauoha).
  • Hoʻomaikaʻi i ka hana o ka MJIT JIT compiler kahiko. No nā papahana e hoʻohana ana i ka Rails, ua hoʻonui ʻia ka nui o ka cache paʻamau (--jit-max-cache) mai 100 a i 10000 mau ʻōlelo kuhikuhi. Ua ho'ōki i ka hoʻohana ʻana iā JIT no nā ʻano me nā ʻōlelo aʻo ʻoi aku ma mua o 1000. No ke kākoʻo ʻana iā Zeitwerk of Rails, ʻaʻole e hoʻolei hou ʻia ke code JIT ke hoʻā ʻia ʻo TracePoint no nā hanana papa.
  • Loaʻa iā ia kahi debug.gem debugger i kākau hou ʻia, e kākoʻo ana i ka debugging mamao, ʻaʻole e lohi i ka noi debugged, kākoʻo i ka hoʻohui ʻana me nā interface debugging holomua (VSCode a me Chrome), hiki ke hoʻohana ʻia no ka debugging multi-threaded a me nā noi he nui, hāʻawi. he mea hoʻokō REPL code execution interface, hāʻawi i nā mea hiki ke hoʻopaʻa ʻia, hiki ke hoʻopaʻa a hoʻokani hou i nā snippets code. Ua wehe ʻia ka debugger lib/debug.rb i hāʻawi mua ʻia mai ka mahele kumu.
    Hoʻokuʻu ʻia ka ʻōlelo papahana Ruby 3.1
  • Hoʻokō ʻia ka hōʻike ʻike ʻana i nā hewa i nā hōʻike hoʻihoʻi. Hāʻawi ʻia ka hae hae me ka hoʻohana ʻana i ka pūʻolo gem i kūkulu ʻia a paʻa i hoʻohana ʻia error_highlight. No ka hoʻopau ʻana i ka hae hae, hiki iā ʻoe ke hoʻohana i ka hoʻonohonoho "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:in " ": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ Ua 'ōlelo 'oe? manawa
  • Hoʻokomo ka pūpū o nā helu hoʻohālikelike IRB (REPL, Read-Eval-Print-Loop) i ka hoʻopiha piha ʻana o ke code i hoʻokomo ʻia (i kāu kākau ʻana, hōʻike ʻia kahi hōʻailona me nā koho no ka hoʻomau ʻana i ka hoʻokomo ʻana, ma waena āu e hiki ai ke neʻe me ka Tab a i ʻole Shift + Ke kī kī). Ma hope o ke koho ʻana i ke koho hoʻomau, hōʻike ʻia kahi pahu kamaʻilio kokoke e hōʻike ana i nā palapala pili i ka mea i koho ʻia. Hiki ke hoʻohana ʻia ka pōkole keyboard Alt+d no ke komo ʻana i ka palapala piha.
    Hoʻokuʻu ʻia ka ʻōlelo papahana Ruby 3.1
  • ʻAe ka syntax ʻōlelo i nā waiwai i ka hash literals a me nā huaʻōlelo hoʻopaʻapaʻa e lele ʻia ke kāhea ʻana i nā hana. No ka laʻana, ma kahi o ka huaʻōlelo "{x: x, y: y}" hiki iā ʻoe ke kuhikuhi i kēia manawa "{x:, y:}", a ma kahi o "foo(x: x, y: y)" - foo( x:, y :)".
  • Kākoʻo kūpaʻa ʻia no nā hoʻohālikelike ʻano laina hoʻokahi (ary => [x, y, z]), ʻaʻole i hōʻailona hou ʻia ma ke ʻano he hoʻokolohua.
  • Hiki ke loaʻa i ka mea hoʻohana "^" i nā hoʻolike like ʻole i kēia manawa, no ka laʻana: Prime.each_cons(2).lazy.find_all{_1 ma [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Ma nā hoʻohālike laina laina hoʻokahi, hiki iā ʻoe ke haʻalele i nā pale: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • ʻO ka ʻōlelo hoʻolaha ʻano RBS, kahi e hiki ai iā ʻoe ke hoʻoholo i ke ʻano o ka papahana a me nā ʻano i hoʻohana ʻia, ua hoʻohui i ke kākoʻo no ka wehewehe ʻana i ka palena kiʻekiʻe o nā ʻano ʻano me ka hoʻohana ʻana i ka hōʻailona "<", hoʻohui i ke kākoʻo no nā inoa inoa o nā ʻano generic, kākoʻo hoʻokō no nā hōʻiliʻili no ka mālama ʻana i nā pōhaku, hoʻomaikaʻi i ka hana a hoʻokō i nā pūlima hou he nui no nā hale waihona puke i kūkulu ʻia a maʻamau.
  • Ua hoʻohui ʻia ke kākoʻo hoʻokolohua no nā kaiapuni hoʻomohala hoʻohui ʻia i ka TypePro static type analyzer, nāna e hoʻopuka i nā hōʻike RBS ma muli o ka nānā ʻana i nā code me ka ʻole o ka ʻike ʻano kikoʻī (no ka laʻana, ua hoʻomākaukau ʻia kahi mea hoʻohui no ka hoʻohui ʻana i ka TypePro me ka mea hoʻoponopono VSCode).
  • Ua hoʻololi ʻia ke ʻano o ka hana ʻana i nā hana he nui. No ka laʻana, ma mua ua hana ʻia nā ʻāpana o ka huaʻōlelo "foo[0], bar[0] = baz, qux" ma ke kauoha baz, qux, foo, bar, akā i kēia manawa foo, bar, baz, qux.
  • Hoʻohui i ke kākoʻo hoʻokolohua no ka hoʻokaʻawale ʻana i ka hoʻomanaʻo no nā kaula e hoʻohana ana i ka mīkini VWA (Variable Width Allocation).
  • Nā mana hou o nā modules gem i kūkulu ʻia a me nā mea i hoʻokomo ʻia i loko o ka waihona maʻamau. ʻO ka net-ftp, net-imap, net-pop, net-smtp, matrix, prime a me nā pūʻolo debug i kūkulu ʻia.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka