ඕනෑම C/C++ කේතයක් WebAssembly හෝ JavaScript වෙත සම්පාදනය කිරීම සඳහා වන සම්පාදකය වන Cheerp 3.0 නිකුත් කර ඇත. මෙම නව ශාඛාව, සම්පාදකය සහ ඒ සමඟ ඇති පුස්තකාල අවසර ලත් Apache 2.0 සහ LLVM බලපත්ර වෙත සංක්රමණය කිරීම සඳහා කැපී පෙනේ, වාණිජ නොවන ව්යාපෘති සඳහා කලින් සීමා කරන ලද GPLv2 බලපත්ර ප්රතිපත්තිය සහ වාණිජ ඒවා සඳහා හිමිකාර බලපත්රයක් ප්රතිස්ථාපනය කරයි. සම්පාදක කේතය LLVM සහ Clang වෙතින් වැඩ මත පදනම් වන අතර කාර්ය සාධනය වැඩි දියුණු කිරීමට සහ සම්පාදනය කරන ලද ප්රතිදානයේ ප්රමාණය අඩු කිරීමට අමතර ප්රශස්තිකරණ ඇතුළත් වේ.
Cheerp, පවතින C/C++ පුස්තකාල සහ බ්රවුසර් ක්රියාත්මක කිරීම සඳහා යෙදුම් ගෙනයාමට සහ ඉහළ කාර්යසාධනයක් සහිත වෙබ් යෙදුම් සහ WebAssembly සංරචක මුල සිටම නිර්මාණය කිරීමට භාවිතා කළ හැක. මෙම ව්යාපෘතිය මඟින් C/C++ සහ JavaScript කේත ඒකාබද්ධ කිරීම තනි වෙබ් යෙදුමක සක්රීය කරයි, එමඟින් JavaScript කේතයට C/C++ හි මුලින් සංවර්ධනය කරන ලද කාර්යයන් වෙත ප්රවේශ වීමට ඉඩ සලසයි, සහ C/C++ කේතයට JavaScript වස්තු, JavaScript පුස්තකාල, වෙබ් API සහ සියලුම DOM හැකියාවන් වෙත ප්රවේශ වීමට ඉඩ සලසයි. ඒකාබද්ධ ගොඩනැගීම් නිර්මාණය කළ හැකි අතර, සමහර කේතයන් JavaScript වෙත සහ සමහරක් WebAssembly වෙත සම්පාදනය කර ඇත. සම්මත libc සහ libc++ පුස්තකාල භාවිතා කරන ව්යාපෘති ගොඩනැගීමට සහාය වේ.
Emscripten සම්පාදකය හා සසඳන විට, Cheerp වඩාත් ප්රශස්ත සහ සංයුක්ත WebAssembly අතරමැදි කේතයක් ජනනය කරයි (සාමාන්යයෙන්, ප්රතිඵලයක් ලෙස ගොනු ප්රමාණය 7% කුඩා වේ). සංකල්පමය වශයෙන්, වෙනස්කම් WebAssembly වස්තු ආකෘතිය භාවිතා කිරීම සහ WebAssembly පසු-සැකසුම් අදියරේදී (wasm-opt) සම්බන්ධ කිරීම සහ ප්රශස්තිකරණය සිදු කිරීම දක්වා අඩු වේ. Cheerp පුස්තකාල සහ වස්තු ගොනු සඳහා අතරමැදි නිරූපණය ලෙස LLVM බයිට් කේතය භාවිතා කරයි, සමස්ත ව්යාපෘතිය පුරා පුළුල් ප්රශස්තිකරණයන් සක්රීය කරන අතර පසු-සැකසුම් අවශ්යතාවයකින් තොරව LLVM මට්ටමේ පාර-දත්ත උත්තේජනය කරයි.
මීට අමතරව, Cheerp PreExecuter ප්රශස්තිකරණය භාවිතා කරයි, එය සම්පාදනය කරන අවස්ථාවේදී පුරෝකථන කේත ක්රියාත්මක කිරීම සහතික කරයි, උදාහරණයක් ලෙස, ගෝලීය වස්තූන් ආරම්භ කිරීමට භාවිතා කරන කන්ස්ට්රක්ටර් නියතයන් බවට පරිවර්තනය කිරීමෙන්. සම්පාදනය කිරීමේදී PartialExecuter ද භාවිතා වේ, එය ශ්රිත පරාමිති විශ්ලේෂණය මත පදනම්ව, ක්රියාත්මක කිරීමේදී භාවිතා නොකිරීමට සහතික කර ඇති කේතය ඉවත් කරයි.
කසළ එකතු කරන ලද මතකයට ගතිකව ප්රවේශ වීම සඳහා Cheer හට JavaScript කේත ජනනය කළ හැකිය. විශේෂයෙන්, ටයිප් කළ අරා භාවිතයෙන් සාම්ප්රදායික ලිපින අවකාශයක් අනුකරණය කිරීම වෙනුවට, Cheerp සෘජුවම C++ වස්තූන් JavaScript වස්තූන් වෙත සිතියම්ගත කරයි, JavaScript කසළ එකතු කරන්නාට භාවිතයට නොගත් වස්තූන් ඉවත් කළ හැකි බැවින් මතක පරිභෝජනය අඩු කරයි. කාර්ය සාධනය වැඩි දියුණු කිරීම සඳහා, ජනනය කරන ලද WebAssembly අතරමැදි කේතය SIMD දිගු භාවිතා කරයි, දත්ත මෙහෙයුම් සමාන්තරකරණය සක්රීය කරයි.
C++ හි ඒකාබද්ධ සේවාදායක/සේවාදායක වෙබ් යෙදුම් නිර්මාණය කිරීම සඳහා වේදිකාවක් ලෙස Cheerp භාවිතා කළ හැකිය. වර්තමාන භාවිතයේදී, JavaScript වලින් ලියා ඇති වෙනම ඉදිරිපස අන්තයක් සහ PHP, Python, Ruby, හෝ JavaScript/Node.js වලින් ලියා ඇති වෙනම සේවාදායක-පාර්ශ්වික සංරචකයක් සාමාන්යයෙන් සංවර්ධනය කර ඇත. C++ හි සම්පූර්ණ වෙබ් යෙදුම් නිර්මාණය කිරීම සඳහා මෙවලම් Cheerp සපයයි, පසුපස අන්තය සහ ඉදිරිපස අන්තය තනි කේත පදනමක පවත්වා ගෙන යනු ලැබේ. සම්පාදනය අතරතුර, සේවාදායක-පාර්ශ්වික සංරචකය ස්වදේශීය කේතයට සම්පාදනය කරනු ලබන අතර, අතුරු මුහුණත JavaScript නිරූපණයකට පරිවර්තනය කරනු ලැබේ. JavaScript බවට පරිවර්තනය කරන ලද ඒවා ඇතුළුව සියලුම ව්යාපෘති සංරචක නිදොස්කරණය කිරීම, Source Map තාක්ෂණය භාවිතයෙන් C++ මූලාශ්ර කේතයට එරෙහිව සිදු කෙරේ (දෝෂයක් ඇති වුවහොත්, C++ කේත කොටස දැකිය හැකිය, C++ කේතයේ බිඳුම් ලක්ෂ්ය සැකසිය හැකිය, සහ C++ කේතය හරහා පේළියෙන් පේළියට පියවර තැබීමට සහය දක්වයි).
මූලාශ්රය: opennet.ru
