{"library":"maiac","title":"MaiaC (WebC): C89-to-WebAssembly Compiler","description":"MaiaC (WebC) is a C-to-WebAssembly compiler written in JavaScript, targeting a C89 subset. Version 1.2.4 (as of March 2025) is released via npm, with development on GitHub. It parses C source using EBNF-generated parsers, lowers to WAT, emits WAT via templates, and validates/assembles via the MaiaWASM submodule. Supports Node.js >=18 and browser execution. Differentiators: pure JavaScript implementation (no native dependencies), built-in runtime bridges for host environment (e.g., console, Math), and distribution packaging for browser + Node workflows. Release cadence appears irregular; check GitHub for latest.","language":"javascript","status":"active","last_verified":"Fri May 01","install":{"commands":["npm install maiac"],"cli":null},"imports":["import webc from 'maiac'","import { createDist } from 'maiac'","import { hostEnvBuilder } from 'maiac'"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import webc from 'maiac';\nimport { readFileSync, writeFileSync } from 'fs';\n\nconst cSource = `int main() { return 42; }`;\nconst outDir = './out';\nconst name = 'test';\n\nconst result = await webc({\n  source: cSource,\n  outDir,\n  name,\n  wat: true,\n  run: false\n});\n\nconsole.log('Output files:', result.files);\n// Expected: out/test.wasm, out/test.js (if wrappers generated), out/test.wat\n\n// Or compile from file:\nconst sourceFile = './test.c';\nconst fileResult = await webc({\n  file: sourceFile,\n  outDir,\n  name: 'test',\n  wat: true\n});\nconsole.log('Compiled .wasm to:', fileResult.files[0]);","lang":"javascript","description":"Compile a C89 source string to WebAssembly using MaiaC with WAT output. Demonstrates ESM import and basic usage.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}