bonsai-c

C to WebAssembly + asm.js compilation for humans

Github星跟蹤圖

bonsai-c

Very early work-in-progress

bonsai-c is a compiler from C to WebAssembly and asm.js-compatible Javascript, operating on a fundamentally different model to Emscripten.

Wait, what's wrong with Emscripten?

It's basically Java Applets 2.0.

It's perfect if you've got a great big POSIX C + SDL codebase that you want to run in its own self-contained environment in a browser, but it's not very helpful for writing idiomatic Javascript code that just needs to drop into optimised asm.js occasionally for some heavy lifting.

bonsai-c is a tool for writing programs, not porting them. By building a C compiler from the ground up, rather than bolting a Javascript backend onto a mature C compiler, we can tailor it to the needs of Javascript programmers. You can use it to write a function for calculating fibonacci numbers, and you will get back an asm.js-compliant Javascript module with an obvious entry point, for calculating fibonacci numbers. You will not get a mountain of runtime code to implement file handling and malloc and a million other things you didn't ask for.

bonsai-c won't provide a full C implementation from day one. It won't have fancy features like, for example, strings. What it will do is provide a way for programmers to harness the power of asm.js, with a syntax that's as familiar as it gets.

Build

Install Node.js.

Install jison:

npm install -g jison

Then, from the root of the codebase:

npm install
cd c_parser
npm run build-parser
cd ..

Usage

To compile to asm.js:

node bonsai-c.js --asmjs infile.c

To compile to WebAssembly text format:

node bonsai-c.js --wast infile.c

Running tests

From the root of the codebase:

node ./runtests.js  # run all tests
node ./runtests.js --asmjs  # run asm.js output tests only
node ./runtests.js --wast  # run WebAssembly text output tests only

To run the --wast tests, you must be running Node 8.2 or later, and have wast2wasm from the WABT suite in your path.

主要指標

概覽
名稱與所有者gasman/bonsai-c
主編程語言JavaScript
編程語言JavaScript (語言數: 5)
平台
許可證BSD 3-Clause "New" or "Revised" License
所有者活动
創建於2015-07-14 23:01:26
推送於2017-09-04 23:28:41
最后一次提交2017-09-05 00:28:29
發布數0
用户参与
星數289
關注者數12
派生數18
提交數305
已啟用問題?
問題數6
打開的問題數0
拉請求數1
打開的拉請求數0
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?