Cheerp 3.0, mai haɗawa don haɗa kowane lambar C/C++ zuwa WebAssembly ko JavaScript, an fito da shi. Wannan sabon reshe sananne ne don ƙaura na mai tarawa da rakiyar dakunan karatu zuwa lasisin Apache 2.0 da LLVM, wanda ya maye gurbin ƙa'idar lasisi ta GPLv2 na baya don ayyukan da ba na kasuwanci ba da lasisin mallakar mallakar kasuwanci. Lambar mai tarawa ta dogara ne akan aiki daga LLVM da Clang kuma ya haɗa da ƙarin haɓakawa don haɓaka aiki da rage girman abubuwan da aka haɗa.
Ana iya amfani da Cheerp duka don jigilar dakunan karatu na C/C++ da aikace-aikace don aiwatar da bincike da ƙirƙirar aikace-aikacen gidan yanar gizo masu inganci da abubuwan WebAssembly daga karce. Aikin yana ba da damar haɗin C / C ++ da lambar JavaScript a cikin aikace-aikacen yanar gizo guda ɗaya, yana ba da damar lambar JavaScript don samun damar ayyukan da aka samo asali a cikin C / C ++, da lambar C / C ++ don samun damar abubuwan JavaScript, ɗakunan karatu na JavaScript, APIs na yanar gizo, da duk damar DOM. Ana iya ƙirƙirar haɗin ginin, tare da wasu lambobi da aka haɗa zuwa JavaScript wasu kuma zuwa WebAssembly. Ana tallafawa ayyukan ginin da ke amfani da daidaitattun libc da ɗakunan karatu na libc++.
Idan aka kwatanta da mai tarawa Emscripten, Cheerp yana samar da ƙarin ingantaccen kuma ƙarami na WebAssembly matsakaicin lamba (a matsakaita, girman fayil ɗin da aka samu shine 7% ƙarami). A zahiri, bambance-bambancen sun gangara zuwa Emscripten ta amfani da tsarin abubuwan WebAssembly da aiwatar da haɗin kai da haɓakawa yayin matakin aiwatarwa na WebAssembly (wasm-opt). Cheerp yana amfani da LLVM bytecode a matsayin matsakaicin wakilci na ɗakunan karatu da fayilolin abu, yana ba da damar haɓaka mafi fa'ida a cikin gabaɗayan aikin da haɓaka matakan matakan LLVM, ba tare da buƙatar aiwatarwa ba.
Bugu da ƙari, Cheerp yana amfani da ingantawa na PreExecuter, wanda ke tabbatar da aiwatar da lambar tsinkaya a lokacin tattarawa, alal misali, ta hanyar canza masu gini da ake amfani da su don fara abubuwan duniya su zama masu daidaitawa. Hakanan ana amfani da PartialExecuter yayin haɗawa, wanda, bisa la'akari da bincike na sigar aiki, yana cire lambar da ke da tabbacin ba za a yi amfani da ita yayin aiwatarwa ba.
Cheer kuma yana iya samar da lambar JavaScript don samun dama ga ƙwaƙwalwar da aka tattara datti. Musamman, maimakon yin koyi da sararin adireshi na al'ada ta amfani da tsararraki masu rubutu, Cheerp kai tsaye taswirar abubuwa C++ zuwa abubuwan JavaScript, rage yawan amfani da ƙwaƙwalwa saboda mai tara shara na JavaScript na iya cire abubuwan da ba a amfani da su. Don inganta aiki, ƙirƙira lambar tsaka-tsakin WebAssembly tana amfani da kari na SIMD, yana ba da damar daidaita ayyukan bayanai.
Za a iya amfani da Cheerp azaman dandamali don ƙirƙirar haɗin yanar gizon abokin ciniki/sabar yanar gizo a cikin C++. A halin yanzu, keɓan gaban gaba, wanda aka rubuta a cikin JavaScript da wani ɓangaren ɓangaren uwar garken da aka rubuta a cikin PHP, Python, Ruby, ko JavaScript/Node.js, galibi ana haɓaka su. Cheerp yana ba da kayan aikin don ƙirƙirar cikakkun aikace-aikacen gidan yanar gizo a cikin C++, tare da ci gaba da baya da gaba a cikin codebase guda ɗaya. Yayin haɗawa, ana haɗa ɓangaren ɓangaren uwar garken zuwa lambar asali, kuma ana jujjuya abin dubawa zuwa wakilcin JavaScript. Ana aiwatar da gyara duk abubuwan da aka haɗa na aikin, gami da waɗanda aka canza zuwa JavaScript, akan lambar tushe ta C ++ ta amfani da fasahar Taswirar Taswira (idan kuskure ya faru, ana iya ganin sashin lambar C ++, ana iya saita wuraren karya a cikin lambar C ++, kuma ana goyan bayan layin-by-line ta hanyar C++ code).
source: budenet.ru
