Ruby codebase txais yuav tshiab JIT compiler ZJIT

Ib tug tshiab JIT compiler, ZJIT, tau ntxiv rau Ruby cov lus siv siv codebase thiab yog positioned raws li tiam tom ntej ntawm Ruby JIT. ZJIT yuav suav nrog hauv qhov kev tso tawm loj tom ntej ntawm Ruby 3.5, qhov twg nws yuav muaj raws li kev xaiv nrog rau YJIT JIT compiler, thiab tuaj yeem hloov pauv hauv Ruby 3.6. Zoo li YJIT, JIT compiler tshiab tau sau hauv Rust. Ob leeg JIT compilers tau tsim los ntawm ib pab neeg tsim tawm ntawm Shopify 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.

Tsis zoo li YJIT, tus tshiab JIT compiler tsis txhais lub YARV virtual tshuab bytecode mus rau theem qis nruab nrab sawv cev (tseem ceeb yuav luag ncaj qha rau hauv tshuab code), tab sis hloov cov bytecode mus rau theem siab nruab nrab sawv cev SSA (Static Single Assignment), dhau qhov kev ua kom zoo dua qub tuaj yeem siv tau ntau dua thiab kev ua kom zoo dua tuaj yeem ua tau nrog kev ua haujlwm loj ntawm qhov muag tam sim no.

ZJIT ua kev sib sau ua ke ntawm tag nrho cov txheej txheem ntawm ib lub sijhawm, thaum YJIT tsuas yog tuaj yeem suav sau ua ke ntawm cov blocks yooj yim. Rau hom profileing, ZJIT siv cov qauv JIT classic uas siv tus neeg txhais lus cov ntaub ntawv keeb kwm sau tseg tsis yog Lazy Basic Block Versioning (LBBV) cov txheej txheem siv hauv YJIT.

Siv cov qib siab IR yuav daws cov teeb meem scalability uas YJIT muaj, nteg lub hauv paus rau yav tom ntej kev siv ntawm ntau qib JIT muab tso ua ke, pab kom ua tau zoo tshaj plaws (xws li kev ua nruj ua tsiv inline), thiab ua kom nws yooj yim rau hloov JIT rau ntau lub platform. Rov qab mus rau cov qauv kev ua qauv ib txwm siv yuav tshem tawm qhov nyuaj ntawm txoj cai thiab tso cai rau cov neeg koom nrog tshiab (YJIT kev siv LBBV ua rau qhov project tsis pom tseeb rau lwm tus neeg koom tes thiab tsim los ntawm Shopify cov neeg ua haujlwm nkaus xwb).

Tau qhov twg los: opennet.ru

Ntxiv ib saib