Mochi is a simple programming language to develop WebAssembly.
Mochi(もち)は、WebAssembly開発用のシンプルなプログラミング言語です。
Mochi grammer is a subset of JavaScript.
Mochiの文法はJavaScriptのサブセットになっています。
Mochi is a statically-typed language that defines types in Hungarian notation.
Mochiは、ハンガリアン記法で型を定義する静的型付け言語です。
Mochi is stil poor.
Mochiは、まだまだ貧弱です。
const { i_encode, i_decode, memory } = await importWASM("./geo3x3.wasm");
const pccode = 0;
const res = i_encode(35.65858, 139.745433, 14, pccode);
const pccodemem = new Uint8Array(memory.buffer, 0, 14);
const code = new TextDecoder().decode(pccodemem);
console.log(res, code);
$ deno run -A ../mochic.js geo3x3.mochi.js --wat --wasm
$ deno run -A simple_geo3x3_mochi_wasm.js
also runs as JavaScript!
import { i_encode, i_decode } from "./geo3x3.mochi.js";
const pccode = new Uint8Array(15);
const res = i_encode(35.65858, 139.745433, 14, pccode);
console.log(res, pc2s(pccode));
$ deno run -A simple_geo3x3_mochi_js.js
export function _start() {
let isum, i;
isum = 0;
for (i = 1; i <= 100; i++) {
isum += i;
}
return isum;
}
$ deno run -A ../mochic.js sum.mochi.js --wat
$ deno run -A ../mochic.js sum.wat
function i_test(a, b) {
let i, j;
for (i = 0; i < b; i++) {
for (j = 0; j < b; j++) {
a += a;
}
}
return a;
}
function _start() {
printlni32(12345);
printlni32(i_test(2, 4));
}
$ deno run -A ../mochic.js wasicalc.mochi.js --wasi --wat
$ wasmer wasicalc.wat
const ps_DRAW_COLORS = 0x14;
let icnt = 0;
export function start() {
}
export function update() {
ps_DRAW_COLORS[0] = 0x42
line(0, 0, icnt, 159);
icnt = (icnt + 1) % 160;
}
$ deno run -A ../mochic.js wasm4simple.mochi.js --wasm --wat --wasm4
$ w4 run wasm4simple.wasm
- add data support for String & uint8[]
- import/export wat & wat.js
- add docs
- make character
- add test suite
- add sourcemap (seeAlso WebAssemblyでもブラウザでステップ実行ができるようになってたので寄り道しながら頑張った話 - Qiita)