Cheerp 3.0 compiler ááᯠááááşáááşááąá¸áá˛áˇááźáŽá¸á áááşáááş áááşáááˇáş C/C++ ááŻááşáááŻáááᯠWebAssembly áááŻáˇáááŻááş JavaScript áááŻáˇ á áŻá ááşá¸áááŻááşá áąááŤáááşá ááŹááá˝á˛áĄáá áşáááş ááááşá áááˇáşáááşáááŻááşá ááşáá°ááŤááĄá áŹá¸ áá˝ááˇáşááźáŻááŹá¸ááąáŹ Apache 2.0 áážááˇáş LLVM áááŻááşá ááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááş áá˝ááşááźá°ááŹáážááˇáş ááŤáááşáááˇáşá áŹááźááˇáşáááŻááşááťáŹá¸ááᯠááźáąáŹááşá¸áá˝ážáąáˇááźááşá¸áĄáá˝ááş áážááşááŹá¸áá˝ááşááźá áşááźáŽá¸á á áŽá¸áá˝áŹá¸ááźá áşáááŻááşááąáŹáááąáŹááťááşááťáŹá¸áĄáá˝ááş GPLv2 áááŻááşá ááşáá˝áąá¸ááťááşáá˝ááˇáşáážááˇáş á áŽá¸áá˝áŹá¸ááźá áşááŻááşáááşá¸ááťáŹá¸áĄáá˝ááş áá°áááŻááşáá˝ááˇáşáááŻááşá ááşááᯠááąá¸ááąáŹááşááźááşá¸ááźá áşáááşá compiler ááŻááşáááş LLVM áážááˇáş Clang áááŻáˇááž áááŻá¸áááşáážáŻááťáŹá¸áĄááąáŤáş áĄááźáąááśááŹá¸ááźáŽá¸ á á˝ááşá¸ááąáŹááşáááş ááźážááˇáşáááşáááşáážááˇáş á áŻá ááşá¸ááŹá¸ááąáŹ ááááşáĄáá˝ááşáĄá áŹá¸ááᯠááťážáąáŹáˇááťáááşáĄáá˝ááş áááşááąáŹááşá¸ áááŻáááŻááąáŹááşá¸áá˝ááşáĄáąáŹááşááŻááşááąáŹááşáážáŻááťáŹá¸ ááŤáááşáááşá
Cheerp ááᯠbrowser áá˝ááşáááşáááşáááşáážáááźáŽá¸ááŹá¸ C/C++ á áŹááźááˇáşáááŻááşááťáŹá¸áážááˇáş áĄáááŽááąá¸áážááşá¸ááťáŹá¸ááᯠáááşááąáŹááşáááşáážááˇáş á á˝ááşá¸ááąáŹááşáááşááźááˇáş áááşáĄááşáááŽááąá¸áážááşá¸ááťáŹá¸áážááˇáş WebAssembly áĄá áááşáĄáááŻááşá¸ááťáŹá¸ááᯠáĄá áážáĄááŻáśá¸áááşááŽá¸áááşáĄáá˝ááş áážá áşááťááŻá¸ááŻáśá¸ááᯠáĄááŻáśá¸ááźáŻáááŻááşáááşá áĄáááŻááŤáááąáŹááťááşáááş áááˇáşáĄáŹá¸ C/C++ áážááˇáş JavaScript ááž ááŻááşááťáŹá¸ááᯠáááşáĄáááŽááąá¸áážááşá¸áá áşááŻáá˝ááş ááąáŤááşá¸á ááşáááŻááşá áąáᏠJavaScript ááŻááşááž C/C++ áá˝ááş áá°áááŽáá˝ááşááŹá¸áááˇáş ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáááşááąáŹááşááźááˇáşáážáŻáááŻááşá áąáááşáážááˇáş C/C++ ááŻááşááž JavaScript áĄááŹááášááŻááťáŹá¸á JavaScript á áŹááźááˇáşáááŻááşááťáŹá¸á Web API áážááˇáş áĄááşášááŤáááşáĄáŹá¸ááŻáśá¸ DOM á JavaScript áá˝ááş á áŻá ááşá¸ááŹá¸ááąáŹ ááŻááşáá áşá áááşáá áşáááŻááşá¸áážááˇáş WebAssembly áá˝ááş áá áşá áááşáá áşáááŻááşá¸ ááąáŤááşá¸á ááşááŹá¸ááąáŹ á ááşá¸ááąá¸áá˝á˛ááťáŹá¸ááᯠáááşááŽá¸áááŻááşáááşá áááşá¸áááş libc áážááˇáş libc++ á áśá áŹááźááˇáşáááŻááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááˇáş áááşááąáŹááşááąá¸áááąáŹááťááşááťáŹá¸ááᯠááśáˇáááŻá¸ááąá¸áááşá
Emscripten compiler áážááˇáş áážááŻááşá¸áážááşááŤá Cheerp áááş áááŻáááŻááąáŹááşá¸áá˝ááşááźáŽá¸ ááťá áşáá áşááááşáááşá¸ááąáŹ WebAssembly áĄáááşáĄáááşááŻááşááᯠááŻááşááąá¸áááş (ááťááşá¸ááťážáĄáŹá¸ááźááˇáş 7% áááŻááąá¸áááşááąáŹ áááŹááşáááŻááşááťáŹá¸)á áĄáá°áĄááĄáá Emscripten ááᯠWebAssembly áĄááŹááášááŻááąáŹáşáááşáĄááźá áş áĄááŻáśá¸ááźáŻááźáŽá¸ WebAssembly ááŻááşáááşá¸á ááşáá˝ááşáĄáááˇáş (wasm-opt) áá˝ááş ááťáááşáááşááźááşá¸áážááˇáş áááŻáááŻááąáŹááşá¸áá˝ááşáĄáąáŹááşááźáŻááŻááşááźááşá¸áááŻáˇááᯠááŻááşááąáŹááşááźááşá¸áážáŹ áá˝á˛ááźáŹá¸áážáŻááťáŹá¸ááźá áşáááşá Cheerp áááş LLVM bytecode ááᯠáĄááŻáśá¸ááźáŻááźáŽá¸ á áŹááźááˇáşáááŻááşááťáŹá¸áážááˇáş áĄááŹááášááŻáááŻááşááťáŹá¸áĄáá˝ááş áĄáááşáĄáááşáááŻááşá áŹá¸ááźáŻáážáŻáĄááźá áş áĄááŻáśá¸ááźáŻáᏠáááąáŹááťááşáá áşááŻááŻáśá¸ááᯠááťááşááťááşááźááˇáşááźááˇáş ááťá˛áˇáá˝ááşáᏠLLVM áĄáááˇáş áááşááŹááąááŹááᯠáĄááŻáśá¸ááťááźáŽá¸ ááąáŹááşáááŻááşá¸áá˝ááş ááŻááşááąáŹááşáááşááááŻáĄááşáᲠáĄááŻáśá¸ááźáŻáááşá
áááŻáˇáĄááźááşá Cheerp áááş ááášááŹááŻáśá¸áááŻááşááŹáĄááŹááášááŻááťáŹá¸ááᯠááááşá¸ááąáĄááźá áşáááŻáˇ ááźáąáŹááşá¸áá˛áááşáĄáá˝ááş áĽáááŹáĄáŹá¸ááźááˇáşá á áŻá ááşá¸áážáŻáĄáááˇáşáá˝ááş ááŻááşáááźááŻáááşááŻááşááąáŹááşáážáŻááᯠááąááťáŹá áąáááˇáş PreExecuter optimizer áááŻáĄááŻáśá¸ááźáŻáááşá áááŻáˇáĄááźááşá á áŻá ááşá¸áážáŻáĄáá˝ááşá¸ PartialExecuter áááş ááŻááşááąáŹááşáážáŻáĄáá˝ááşá¸ áĄááŻáśá¸áááźáŻááᯠáĄáŹáááśááŹá¸áááˇáş ááŻááşááťáŹá¸ááᯠáááşáážáŹá¸ááąá¸áááˇáş function parameters ááťáŹá¸ááᯠáá˝á˛ááźááşá¸á áááşááźáŹáážáŻáĄááąáŤáş áĄááźáąááśá PartialExecuter ááᯠáĄááŻáśá¸ááźáŻááŤáááşá
Cheer áááş áĄáážááŻááşá áŻááąáŹááşá¸áá°ááž ááŻáśá¸áĄáŻááşááŹá¸ááąáŹ memory ááᯠdynamically manipulate ááŻááşáááş JavaScript ááŻááşáááŻáááşá¸ áááşááŽá¸áááŻááşáááşá áĄáá°á¸áááźááˇáşá JavaScript áĄáážááŻááşá áŻááąáŹááşá¸áá°áááş áĄááŻáśá¸áááźáŻááąáŹáĄááŹááťáŹá¸áááŻáááşáážáŹá¸áááŻááşá á˝ááşá¸áážáááąáŹááźáąáŹááˇáşá áĄáá°á¸áááźááˇáşá áááŻá¸ááŹááááşá áŹááąááŹáááŻáĄááŻáá°áááˇáşáĄá áŹá¸ Cheerp áááş C++ áĄááŹááťáŹá¸ááᯠJavaScript objectááťáŹá¸áááŻáˇ áááŻááşáááŻááşááźáąááŻáśáá˝á˛ááąá¸ááŤáááşá á á˝ááşá¸ááąáŹááşáááş ááźážááˇáşáááşáááşá ááŻááşááŻááşáááŻááşááąáŹ WebAssembly áĄáááşáĄáááşááŻááşáááş ááąááŹáááşáááşáážáŻááᯠáĄááźááŻááşááŻááşááąáŹááşáá˝ááˇáşááźáŻáááˇáş SIMD áááŻá¸ááťá˛áˇáážáŻááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááşá
Cheerp ááᯠC++ áá˝ááş ááąáŤááşá¸á
ááşáĄááŻáśá¸ááźáŻáá°/ááŹááŹáááşáĄááşáááŽááąá¸áážááşá¸ááťáŹá¸ áááşááŽá¸áááşáĄáá˝ááş ááááşááąáŹááşá¸áá
áşááŻáĄááźá
áş áĄááŻáśá¸ááźáŻáááŻááşáááşá áááşáážááááşáá˝áąáˇáá˝ááşá JavaScript ááźááˇáş ááąá¸ááŹá¸ááŹá¸ááąáŹ ááŽá¸ááźáŹá¸ in-browser á áážáąáˇááŻáśá¸áĄááŻáśá¸áážááˇáş PHPá Pythoná Ruby áááŻáˇáááŻááş JavaScript/Node.js ááźááˇáş ááąá¸ááŹá¸ááŹá¸ááąáŹ ááŽá¸ááźáŹá¸ááąáŹááşááťáąáŹáá
áşááŻááᯠááŽáá˝ááşáááşáážáŹ ááŹááŹááşááźá
áşáááşá Cheerp áááş ááŻááşáĄááźáąááśáá
áşááŻáááşá¸áá˝ááş backend áážááˇáş frontend ááᯠááśáˇáááŻá¸ááąá¸áááˇáş C++ áá˝ááş ááźáŽá¸ááźááˇáşá
áŻáśááąáŹ áááşáĄááşáááŽááąá¸áážááşá¸ááťáŹá¸ááᯠáááşááŽá¸áááşáĄáá˝ááş ááááááŹááťáŹá¸ááᯠááśáˇáááŻá¸ááąá¸ááŤáááşá á
áŻá
ááşá¸áážáŻááŻááşáááşá¸á
ááşáĄáá˝ááşá¸á ááŹááŹáááşááźááşá¸ááᯠáá°áááşá¸ááŻááşáĄááźá
áş á
áŻá
ááşá¸ááźáŽá¸ áĄááşááŹááąáˇá
áşááᯠJavaScript áááŻááşá
áŹá¸ááźáŻáážáŻáĄááźá
áşáááŻáˇ ááźáąáŹááşá¸áá˛ááŹá¸áááşá JavaScript áááŻáˇááźáąáŹááşá¸ááŹá¸ááąáŹ áááąáŹááťááşáĄá
áááşáĄáááŻááşá¸ááťáŹá¸áĄááŤáĄáááş áááąáŹááťááşáĄá
áááşáĄáááŻááşá¸áĄáŹá¸ááŻáśá¸ááᯠáĄáážáŹá¸áážáŹááźááşá¸áĄáŹá¸ Source Map áááşá¸áááŹááᯠáĄááŻáśá¸ááźáŻá C++ áá˝ááş áááşá¸ááźá
áşá
áŹááŹá¸ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá ááŻááşááąáŹááşáááş (áĄáážáŹá¸áá
áşááŻááźá
áşááąáŤáşááŤáá C++ ááŻááşá áĄáááŻááşá¸áá
áşááŻááᯠáááşáá˝áąáˇááźááşáááŻááşáááşá áááşá¸áááş C++ ááŻááşáážááˇáş áááŻááşá¸áĄáááŻááş áá˝á˛áá˝ááşáážááşááťáŹá¸ááᯠáááşáážááşááźááşá¸ááᯠááśáˇáááŻá¸ááąá¸áááş C++ ááŻááşááᯠáĄáááˇáşáááˇáşááŻááşááąáŹááşááźááşá¸)á
source: opennet.ru
