ማንኛውንም የC/C++ ኮድ ወደ WebAssembly ወይም JavaScript የሚያጠናቅቀው ኮምፕሌተር Cheerp 3.0 ተለቋል። ይህ አዲስ ቅርንጫፍ ኮምፕሌተሩን እና አብሮ የሚሄደውን ቤተ-መጻሕፍት ወደ ተፈቀደላቸው Apache 2.0 እና LLVM ፈቃዶች በማዛወር የሚታወቅ ሲሆን ቀደም ሲል ለንግድ ላልሆኑ ፕሮጀክቶች የGPLv2 የፈቃድ ፖሊሲን እና ለንግድ ፕሮጀክቶች የባለቤትነት ፈቃድን በመተካት ነው። የኮምፕሌተሩ ኮድ የተመሰረተው ከLLVM እና Clang በተሰራ ስራ ላይ ሲሆን አፈጻጸምን ለማሻሻል እና የተጠናቀረውን ውጤት መጠን ለመቀነስ ተጨማሪ ማሻሻያዎችን ያካትታል።
Cheerp አሁን ያሉትን የC/C++ ቤተ-መጻሕፍት እና አፕሊኬሽኖችን ለአሳሽ አፈፃፀም እና ከፍተኛ አፈጻጸም ያላቸውን የድር መተግበሪያዎችን እና የWebAssembly ክፍሎችን ከባዶ ለመፍጠር ሊያገለግል ይችላል። ፕሮጀክቱ በአንድ የድር መተግበሪያ ውስጥ የC/C++ እና የጃቫስክሪፕት ኮድን ማዋሃድ ያስችላል፣ ይህም የጃቫስክሪፕት ኮድ መጀመሪያ በC/C++ የተገነቡ ተግባራትን እንዲደርስ እና የC/C++ ኮድ የጃቫስክሪፕት ነገሮችን፣ የጃቫስክሪፕት ቤተ-መጻሕፍትን፣ የድር ኤፒአይዎችን እና ሁሉንም የDOM ችሎታዎችን እንዲደርስ ያስችለዋል። የተዋሃዱ ግንባታዎች ሊፈጠሩ ይችላሉ፣ አንዳንድ ኮድ ወደ ጃቫስክሪፕት እና አንዳንዶቹ ደግሞ ወደ WebAssembly ተጠናቅቀዋል። መደበኛውን የlibc እና የlibc++ ቤተ-መጻሕፍት የሚጠቀሙ ፕሮጀክቶችን መገንባት ይደገፋል።
ከEmscripten ኮምፓይለር ጋር ሲነጻጸር፣ Cheerp የበለጠ የተመቻቸ እና የታመቀ የWebAssembly መካከለኛ ኮድ ያመነጫል (በአማካይ፣ የተገኘው የፋይል መጠን 7% ያነሰ ነው)። በፅንሰ-ሀሳብ፣ ልዩነቶቹ ወደ Emscripten የሚወርዱት የWebAssembly ነገር ቅርጸትን በመጠቀም እና በWebAssembly ድህረ-ሂደት ደረጃ (wasm-opt) ወቅት አገናኝ እና ማመቻቸትን በማከናወን ነው። Cheerp የLLVM ባይትኮድን ለቤተ-መጻሕፍት እና ለነገር ፋይሎች እንደ መካከለኛ ውክልና ይጠቀማል፣ ይህም በመላው ፕሮጀክት ላይ ሰፋ ያሉ ማሻሻያዎችን ያስችላል እና የድህረ-ሂደት ሳያስፈልግ የLLVM ደረጃ ሜታዳታ ይጠቀማል።
በተጨማሪም፣ Cheerp PreExecuter optimizer ይጠቀማል፣ ይህም ለምሳሌ ዓለም አቀፍ ነገሮችን ወደ ቋሚዎች ለማስጀመር የሚያገለግሉትን ግንበኞች በመቀየር በማጠናቀር ጊዜ የትንበያ ኮድ አፈፃፀምን ያረጋግጣል። PartialExecuter በማጠናቀር ጊዜም ጥቅም ላይ ይውላል፣ ይህም በተግባር መለኪያ ትንተና ላይ በመመስረት፣ በአፈጻጸም ጊዜ ጥቅም ላይ እንዳይውል የተረጋገጠውን ኮድ ያስወግዳል።
ቼር እንዲሁም ቆሻሻ የተሰበሰቡትን ማህደረ ትውስታዎች በተለዋዋጭነት ለመድረስ የጃቫስክሪፕት ኮድ መፍጠር ይችላል። በተለይም፣ የተተየቡ ድርድሮችን በመጠቀም ባህላዊ የአድራሻ ቦታን ከመምሰል ይልቅ፣ ቼርፕ የC++ ነገሮችን በቀጥታ ከጃቫስክሪፕት ነገሮች ጋር ያዛምዳል፣ ይህም የጃቫስክሪፕት ቆሻሻ ሰብሳቢው ጥቅም ላይ ያልዋሉ ነገሮችን ማስወገድ ስለሚችል የማህደረ ትውስታ ፍጆታን ይቀንሳል። አፈጻጸምን ለማሻሻል፣ የተፈጠረው የWebAssembly መካከለኛ ኮድ የSIMD ቅጥያዎችን ይጠቀማል፣ ይህም የውሂብ ስራዎችን ትይዩ ማድረግን ያስችላል።
Cheerp በC++ ውስጥ የተዋሃዱ የደንበኛ/አገልጋይ ድር መተግበሪያዎችን ለመፍጠር እንደ መድረክ ሊያገለግል ይችላል። በአሁኑ ጊዜ፣ በጃቫስክሪፕት የተጻፈ የተለየ የፊት ለፊት ክፍል እና በPHP፣ Python፣ Ruby ወይም JavaScript/Node.js የተጻፈ የተለየ የሰርቨር-ጎን ክፍል በተለምዶ ይዘጋጃሉ። Cheerp በC++ ውስጥ የተሟላ የድር መተግበሪያዎችን ለመፍጠር መሳሪያዎችን ያቀርባል፣ የኋላ እና የፊት ለፊት ክፍል በአንድ የኮድቤዝ ውስጥ ይያዛሉ። በማጠናቀር ጊዜ፣ የሰርቨር-ጎን ክፍል ወደ ተወላጅ ኮድ ይጠናቀቃል፣ እና በይነገጹ ወደ ጃቫስክሪፕት ውክልና ይቀየራል። ወደ ጃቫስክሪፕት የተቀየሩትን ጨምሮ የሁሉም የፕሮጀክት ክፍሎች ማረም በC++ ምንጭ ኮድ ላይ በSource Map ቴክኖሎጂ በመጠቀም ይከናወናል (ስህተት ከተከሰተ፣ የC++ ኮድ ክፍል ሊታይ ይችላል፣ የእረፍት ነጥቦች በC++ ኮድ ውስጥ ሊቀመጡ ይችላሉ፣ እና በC++ ኮድ ውስጥ በመስመር-በመስመር መራመድ ይደገፋል)።
ምንጭ: opennet.ru
