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