Tso tawm Ruby programming lus 3.1

Ruby 3.1.0 tau tso tawm, ib hom lus hais txog kev ua haujlwm zoo uas muaj txiaj ntsig zoo hauv kev tsim kho thiab suav nrog cov yam ntxwv zoo tshaj plaws ntawm Perl, Java, Python, Smalltalk, Eiffel, Ada thiab Lisp. Txoj haujlwm code yog muab faib raws li BSD ("2-clause BSDL") thiab "Ruby" cov ntawv tso cai, uas yog hais txog qhov tseeb version ntawm GPL daim ntawv tso cai thiab tau ua tiav nrog GPLv3.

Kev txhim kho tseem ceeb:

  • Ib qho kev sim tshiab hauv-tus txheej txheem JIT compiler, YJIT, tau ntxiv, tsim los ntawm cov neeg tsim khoom ntawm Shopify e-commerce platform ua ib feem ntawm kev pib los txhim kho kev ua haujlwm ntawm Ruby cov kev pabcuam uas siv Rails lub moj khaum thiab hu rau ntau txoj hauv kev. Qhov sib txawv tseem ceeb los ntawm yav dhau los siv MJIT JIT compiler, uas yog ua raws li kev ua tiav tag nrho cov txheej txheem thiab siv cov compiler sab nraud hauv hom C, yog tias YJIT siv Lazy Basic Block Versioning (LBBV) thiab muaj cov JIT compiler integrated. Nrog LBBV, JIT thawj zaug suav tsuas yog qhov pib ntawm txoj kev, thiab suav nrog qee lub sijhawm tom qab, tom qab hom kev hloov pauv thiab cov lus sib cav siv tau txiav txim siab thaum ua tiav. Thaum siv YJIT, 22% nce hauv kev ua tau zoo tau sau tseg thaum khiav qhov kev xeem railsbench, thiab 39% nce hauv cov kua-render test. YJIT tam sim no txwv rau kev txhawb nqa rau unix-zoo li OSes ntawm cov tshuab nrog x86-64 architecture thiab yog neeg xiam oob khab los ntawm lub neej ntawd (kom qhib, qhia tus chij "--yjit" hauv kab hais kom ua).
  • Txhim kho kev ua tau zoo ntawm MJIT JIT compiler qub. Rau tej yaam num siv Rails, lub neej ntawd siab tshaj cache loj (--jit-max-cache) tau nce los ntawm 100 mus rau 10000 cov lus qhia. Tsis siv JIT rau txoj hauv kev nrog ntau dua 1000 cov lus qhia. Txhawm rau txhawb Zeitwerk ntawm Rails, JIT code tsis raug muab pov tseg lawm thaum TracePoint tau qhib rau cov xwm txheej hauv chav kawm.
  • Nws suav nrog kev sau rov qab tag nrho debug.gem debugger, uas txhawb kev debugging tej thaj chaw deb, tsis ua kom qeeb ntawm daim ntawv thov kev debugging, txhawb kev koom ua ke nrog kev debugging interfaces siab heev (VSCode thiab Chrome), tuaj yeem siv rau kev debugging multi-threaded thiab multi-txhim ntawv thov, muab REPL code execution interface, muaj peev xwm taug qab tau zoo, tuaj yeem sau thiab rov ua cov lej snippets. Cov yav tas los muaj debugger lib/debug.rb tau raug tshem tawm ntawm lub hauv paus faib.
    Tso tawm Ruby programming lus 3.1
  • Ua kom pom qhov pom ntawm qhov yuam kev hauv kev hu rov qab cov lus ceeb toom. Kev teeb tsa yuam kev yog muab los ntawm kev siv lub teeb tsa hauv thiab lub neej ntawd-enabled lub pov haum pob error_highlight. Txhawm rau lov tes taw qhov teeb meem yuam kev, koj tuaj yeem siv qhov "--disable-error_highlight" chaw. $ ruby ​​test.rb test.rb:1:in "": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ Koj puas tau txhais? sij hawm
  • Lub plhaub ntawm kev sib tham sib xam IRB (REPL, Nyeem-Eval-Print-Loop) siv qhov kev ua tiav tsis siv neeg nkag mus (raws li koj ntaus ntawv, cov lus qhia tau tshwm sim nrog cov kev xaiv rau kev nkag mus ntxiv, ntawm qhov koj tuaj yeem txav mus nrog Tab lossis Shift + Tab key). Tom qab xaiv qhov kev xaiv txuas ntxiv, lub dialog box tshwm nyob ze uas qhia cov ntaub ntawv cuam tshuam nrog cov khoom xaiv. Cov keyboard shortcut Alt + d tuaj yeem siv los nkag mus rau tag nrho cov ntaub ntawv.
    Tso tawm Ruby programming lus 3.1
  • Cov lus syntax tam sim no tso cai rau cov txiaj ntsig hauv hash literals thiab cov ntsiab lus sib cav kom hla thaum hu ua haujlwm. Piv txwv li, es tsis txhob siv cov lus β€œ{x: x, y: y}” tam sim no koj tuaj yeem hais qhia β€œ{x:, y:}”, thiab tsis yog β€œfoo(x: x, y: y)” - foo( x:, y :)".
  • Kev txhawb nqa ruaj khov rau ib kab qauv sib tw (ary => [x, y, z]), uas tsis tau tshaj tawm raws li kev sim.
  • Tus neeg teb xov tooj "^" hauv cov qauv kev sib tw tam sim no tuaj yeem muaj cov lus qhia tsis txaus ntseeg, piv txwv li: Prime.each_cons(2).lazy.find_all{_1 hauv [n, ^(n + 2)]}.take(3).to_a #= >? [[3, 5], [5, 7], [11, 13]] ib.
  • Hauv ib kab qauv sib tw, koj tuaj yeem tshem tawm cov parentheses: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS hom lus piav qhia, uas tso cai rau koj los txiav txim siab tus qauv ntawm qhov kev zov me nyuam thiab cov hom siv, tau ntxiv kev txhawb nqa rau kev qhia txog kev txwv sab saud ntawm hom tsis siv lub cim "<", ntxiv kev txhawb nqa rau cov npe ntawm cov hom dav dav, siv kev txhawb nqa rau cov khoom siv rau kev tswj hwm lub pov haum, txhim kho kev ua tau zoo thiab siv ntau qhov kev kos npe tshiab rau cov tsev qiv ntawv tsim thiab qauv.
  • Kev sim kev txhawb nqa rau kev sib koom ua ke ib puag ncig tau ntxiv rau TypePro zoo li qub hom tshuaj ntsuam xyuas, uas tsim RBS cov lus piav qhia raws li kev txheeb xyuas cov lej tsis muaj cov ntaub ntawv meej meej (piv txwv li, ib qho ntxiv tau npaj rau kev sib koom ua ke TypePro nrog VSCode editor).
  • Kev txiav txim ntawm kev ua ntau yam haujlwm tau raug hloov. Piv txwv li, yav tas los cov ntsiab lus ntawm "foo[0], bar[0] = baz, qux" tau ua tiav hauv qhov kev txiav txim baz, qux, foo, bar, tab sis tam sim no foo, bar, baz, qux.
  • Ntxiv kev sim kev txhawb nqa rau lub cim xeeb faib rau cov hlua siv VVA (Variable Width Allocation) mechanism.
  • Hloov tshiab versions ntawm built-in lub pov haum modules thiab cov uas muaj nyob rau hauv cov qauv tsev qiv ntawv. Cov net-ftp, net-imap, net-pop, net-smtp, matrix, prime thiab debug pob yog tsim-hauv.

Tau qhov twg los: opennet.ru

Ntxiv ib saib