Cheerp 3.0, oo ah qalab sameeyaha isku-dubaridka kood kasta oo C/C++ ah oo loo diro WebAssembly ama JavaScript, ayaa la sii daayay. Laantan cusub waxay caan ku tahay u guurista qalab sameeyaha iyo maktabadaha la socda shatiyada Apache 2.0 iyo LLVM ee la oggol yahay, taasoo beddeshay siyaasadda shatiyada ee hore u xaddidnayd ee GPLv2 ee mashaariicda aan ganacsiga ahayn iyo shati gaar ah oo loogu talagalay kuwa ganacsiga. Koodhka qalab sameeyaha wuxuu ku salaysan yahay shaqada LLVM iyo Clang wuxuuna ka kooban yahay hagaajin dheeraad ah si loo hagaajiyo waxqabadka loona yareeyo cabbirka wax soo saarka la soo ururiyey.
Cheerp waxaa loo isticmaali karaa labadaba wareejinta maktabadaha C/C++ ee jira iyo codsiyada fulinta biraawsarka iyo abuurista barnaamijyada shabakadda ee waxqabadka sare leh iyo qaybaha WebAssembly laga bilaabo xoq. Mashruucu wuxuu awood u siinayaa isku-darka koodhka C/C++ iyo JavaScript ee hal codsi shabakadeed, taasoo u oggolaanaysa koodhka JavaScript inuu galo hawlaha asal ahaan lagu sameeyay C/C++, iyo koodhka C/C++ si loo galo walxaha JavaScript, maktabadaha JavaScript, API-yada Shabakadda, iyo dhammaan awoodaha DOM. Dhismayaasha isku dhafan waa la abuuri karaa, iyadoo qaar ka mid ah koodhka lagu soo ururiyey JavaScript qaarna WebAssembly. Dhisidda mashaariicda isticmaala maktabadaha libc iyo libc++ ee caadiga ah waa la taageeraa.
Marka la barbardhigo isku-darka Emscripten, Cheerp waxay soo saartaa kood dhexe oo WebAssembly ah oo la hagaajiyay oo is haysta (celcelis ahaan, cabbirka faylka ka soo baxa waa 7% ka yar). Fikrad ahaan, kala duwanaanshuhu wuxuu hoos ugu dhacaa Emscripten iyadoo la adeegsanayo qaabka shayga WebAssembly iyo fulinta isku xirka iyo hagaajinta inta lagu jiro marxaladda ka dambeysa habaynta WebAssembly (wasm-opt). Cheerp waxay isticmaashaa bytecode LLVM oo ah matalaad dhexe oo loogu talagalay maktabadaha iyo faylasha walxaha, taasoo suurtogalinaysa hagaajinta ballaaran ee mashruuca oo dhan iyo ka faa'iidaysiga metadata heerka LLVM, iyada oo aan loo baahnayn dib-u-habaynta.
Intaa waxaa dheer, Cheerp waxay isticmaashaa hab-sameeyaha PreExecuter, kaas oo hubiya fulinta koodhka saadaalinta wakhtiga ururinta, tusaale ahaan, iyadoo loo beddelayo dhisayaasha loo isticmaalo in lagu bilaabo walxaha caalamiga ah inay noqdaan kuwo joogto ah. PartialExecuter ayaa sidoo kale loo isticmaalaa inta lagu jiro ururinta, kaas oo, iyadoo lagu saleynayo falanqaynta halbeegga shaqada, ka saaraya koodhka la hubo inaan la isticmaalin inta lagu jiro fulinta.
Cheer waxay sidoo kale soo saari kartaa koodhka JavaScript si ay si firfircoon ugu galaan xusuusta qashinka laga soo ururiyey. Gaar ahaan, halkii ay ka dayan lahayd booska cinwaanka dhaqameed iyadoo la adeegsanayo taxane la qoray, Cheerp waxay si toos ah u sawiraysaa walxaha C++ walxaha JavaScript, taasoo yaraynaysa isticmaalka xusuusta sababtoo ah ururiyaha qashinka JavaScript wuxuu ka saari karaa walxaha aan la isticmaalin. Si loo hagaajiyo waxqabadka, koodhka dhexe ee WebAssembly ee la soo saaray wuxuu adeegsadaa kordhinta SIMD, taasoo suurtagelinaysa is barbardhigga hawlgallada xogta.
Cheerp waxaa loo isticmaali karaa madal lagu abuuro barnaamijyo shabakadeed oo macmiil/server ah oo isku dhafan oo ku jira C++. Dhaqanka hadda jira, frontend gaar ah, oo lagu qoray JavaScript iyo qayb gaar ah oo dhinaca server-ka ah oo lagu qoray PHP, Python, Ruby, ama JavaScript/Node.js, ayaa caadi ahaan la sameeyaa. Cheerp waxay bixisaa qalabka lagu abuurayo codsiyada shabakadda oo dhammaystiran ee C++, iyadoo backend iyo frontend lagu hayo hal kood. Inta lagu jiro isku-dubaridka, qaybta dhinaca server-ka waxaa loo soo ururiyaa kood asal ah, interface-kana waxaa loo beddelaa matalaad JavaScript ah. Khaladka dhammaan qaybaha mashruuca, oo ay ku jiraan kuwa loo beddelay JavaScript, waxaa lagu sameeyaa iyadoo la raacayo koodhka isha C++ iyadoo la adeegsanayo tignoolajiyada Khariidadda Isha (haddii qalad dhaco, qaybta koodhka C++ waa la arki karaa, dhibcaha jabsiga waxaa lagu dejin karaa koodhka C++, iyo khadka-sadar-ka ...
Source: opennet.ru
