http://emscripten.org/

ну а теперь - почему собственно nightmare:
допустим , что у меня есть файл hell.c
PHP Code:
#include <stdio.h>
#include <emscripten.h>
EM_JS(
void,greeter,(char* a),{
document.body.innerHTML="<h3>" + UTF8ToString(a) + "</h3>";
}
);
int EMSCRIPTEN_KEEPALIVE myCount() {
return 666;
}
int main() {
greeter("прощай , жестокий мир!");
EM_ASM({
document.body.appendChild(document.createElement("div").appendChild(document.createTextNode("="+_myCount())));
});
return 0;
}
я его компилирую по emcc ./hell.c -o ./hell.html
А потом создаю на локальном веб-сервере папку nightmare.
Копирую туда hell.html , hell.js и hell.wasm
потом из браузера запускаю http://127.0.0.1/nightmare/hell.html - и всё работает!
С - скомпилировано в веб-ассемблер. Модуль ( файл hell.wasm ) загружается через hell.js в стартовой страничке hell.html. Вызывается main из hell.wasm.
Дальше эта злостная main создаёт фунцкию на javascript , удаляет всё содержимое html-странички ( document.body ) и под занавес запускает ещё код на javascript , из которого вызывается функция на С. И всё делается без всяких cwrap.
Всё работает - другое дело , а какой ценой ?
PHP Code:
-rw-rw-r-- 1 mike mike 102505 Jul 27 07:59 hell.html
-rw-rw-r-- 1 mike mike 125532 Jul 27 07:59 hell.js
-rw-rw-r-- 1 mike mike 926 Jul 27 07:59 hell.wasm
Ну - сам полезно-вредоносный код занимает 926 байт. Но вот "оболочка-запускалка" аж 220 килобайт !!!!!!! Хотя по сравнению с размером Windows 11 какой-нибудь - это ведь никакой роли не играет.