動機
Rustのwasm_bindgen
は色々と制約が多いのが課題であまり好きではなかった。
かといってAssemblyScriptやEmscriptenを使う気にはなりません。
ということで自分でWebアセンブリ向け言語を作り始めた。
プロジェクト名は「Mystia」と言います(特に深い意味は無い)。
特徴
そこそこ強力な型推論
コンパイル時に厳密に型チェックされ、基本的に注釈は全く無しでも動きます!
--summary
オプションで型推論の結果を表示できます。
RustやOCamlみたいな文法
というかデザインは完全に私の思想になっています。
関数定義と代入は明示的にlet
で行い、最後の式はreturn
無しでも値を返します。
コンパイラ
LLVMは使わず、抽象構文木から直接WAT(WebAssembly Text Format)を生成します。
Rustで実装しましたが、いずれはセルフホスティングも出来るようにしたい。
コード量も割とコンパクトです。
他言語連携
JavaScriptとのFFI(Foreign Function Interface)も作りました。
型情報を元にWASMのメモリから値を読み込んでいます。
Playground
インストール不要でブラウザ上で動かせます。
ぜひ試してみてください!
目標
制約が少なく自由度の高いWASM向け言語の選択肢となる事を目指しています。
また、今年のU-22プログラミングコンテストに応募予定です。
最後までご覧頂きありがとうございました!