Exécuter Clang dans le navigateur avec les WebAssembly

Comment exécuter directement un binaire C sur un navigateur ? Syrus Akbary publie un post décrivant cette possibilité tout en explorant les capacités du SDK Wasmer JS. Wasmer permet justement d'exécuter du code C compilé (clang) via JavaScript ou tout navigateur compatible WebAssembly. Il faut au prélable installer wasmer et compiler le code pour wasm. La compilation se fait avec WASI et WASIX. Le support de clang dans Wasmer pèse environ 100 Mo. Les équipes Wasmer travaille à diviser par 3 ce poids. L'utilisation de clang dans son projet JS est possible avec par exemple le Wasmer JS SDK, par exemple :import { init, Wasmer, Directory } from "https://unpkg.com/@wasmer/sdk@latest/dist/index.mjs"; await init(); const clang = await Wasmer.fromRegistry("clang/clang"); const project = new Directory(); await project.writeFile("example.c", `#include int main() { printf("Hello World"); return 0; } `); let instance = await clang.entrypoint.run({ args: ["/project/example.c", "-o", "/project/example.wasm"], mount: { "/project": project }, }); const output = await instance.wait(); if (!output.ok) { throw new Error(`Clang failed. Exit: ${output.code}:`); } // The generated wasm file from clang let wasm = await project.readFile("example.wasm"); const example = await Wasmer.fromFile(wasm); const result = await example.entrypoint.run(); const outputExample = await result.wait(); // This should be "Hello World" console.log(outputExample.stdout);Pour découvrir le post complet : https://wasmer.io/posts/clang-in-browserCatégorie actualité: LangagesImage actualité AMP: 

Exécuter Clang dans le navigateur avec les WebAssembly

Comment exécuter directement un binaire C sur un navigateur ? Syrus Akbary publie un post décrivant cette possibilité tout en explorant les capacités du SDK Wasmer JS. Wasmer permet justement d'exécuter du code C compilé (clang) via JavaScript ou tout navigateur compatible WebAssembly. 

Il faut au prélable installer wasmer et compiler le code pour wasm. La compilation se fait avec WASI et WASIX. Le support de clang dans Wasmer pèse environ 100 Mo. Les équipes Wasmer travaille à diviser par 3 ce poids. 

L'utilisation de clang dans son projet JS est possible avec par exemple le Wasmer JS SDK, par exemple :

import {
  init,
  Wasmer,
  Directory
} from "https://unpkg.com/@wasmer/sdk@latest/dist/index.mjs";

await init();

const clang = await Wasmer.fromRegistry("clang/clang");
const project = new Directory();
await project.writeFile("example.c",
`#include

int main() {
printf("Hello World");
return 0;
}
`);

let instance = await clang.entrypoint.run({
args: ["/project/example.c", "-o", "/project/example.wasm"],
mount: { "/project": project },
});
const output = await instance.wait();

if (!output.ok) {
throw new Error(`Clang failed. Exit: ${output.code}:`);
}

// The generated wasm file from clang
let wasm = await project.readFile("example.wasm");

const example = await Wasmer.fromFile(wasm);
const result = await example.entrypoint.run();
const outputExample = await result.wait();

// This should be "Hello World"
console.log(outputExample.stdout);

Pour découvrir le post complet : https://wasmer.io/posts/clang-in-browser

Catégorie actualité: 
Image actualité AMP: