Vim に WebAssembly のテキストフォーマットのサポートを入れた
Vim に WebAssembly のテキストフォーマット (wast) の対応を入れ,同時に filetype=wast
で使われるファイルのメンテナになりました.
Wasm のテキストフォーマットとは
WebAssembly にはバイナリ形式とテキスト形式の2つのフォーマットがあります.Wasm はネットワークを介して配布される前提のため,サイズの小さいバイナリ形式のほうが良いですが,デバッグなどで処理を追いたい人間にとってはテキストフォーマットも必要になるためです.
emscripten はデバッグオプションをつけてコンパイルすると,生成物 .wasm
のほかにテキストフォーマットの .wast
およびそのソースマップを生成してくれます.
こんな感じのS式です
contribution の流れ
0. Vim プラグインとして実装
まだブラウザが Wasm を初めてサポートし始めた頃,その頃の binaryen の出力を眺めるときにハイライトが無いと不便なので,まずはたたき台として vim-wasm をつくりました.
今年の6月に入って WebAssembly の仕様をざっくり眺めて vim.wasm をつくりました.再び emscripten の出力を見る機会があり,以前つくったものが大分間違っていたことが分かったので,仕様に従って vim-wasm をそれに従って大幅に修正しました.
1. Vim にプルリクを出す
WebAssembly は主要な各ブラウザが対応しており,ウェブ標準として定義されているので,テキストフォーマットの対応が Vim 本家に入っていると有意義だと考えました.
vim-wasm が良い感じに .wast
ファイルをサポートできていることが確認できたので,Vim に取り込んでもらうことを提案します.
Vim は vim_dev にパッチを送るか,vim/vim にプルリクを作成することでレビューを依頼できます.通常,runtime/syntax
や runtime/indent
といった各 filetype 対応のファイルにはメンテナがそれぞれついているので,まずはそちらに依頼すべきですが,今回は新規追加なので直接 Bram にレビューしてもらいました.
2. master に取り込んでもらう
レビューで OK が出ると,Bram が master ブランチに取り込みます.
今回は runtime/
以下のファイル追加なので,他の runtime/
向けの変更もまとめて1つのパッチが作成され,master
ブランチに追加されました.
3. filetype=wast
のメンテナになりました
先程書いたように,各 filetype のサポートはそれぞれにメンテナがいます.
そんなわけで,僕も vim/runtime/{syntax,indent,ftplugin}/wast.vim
のメンテナになりました.開発は引き続き vim-wasm のほうでやっていくので,何か問題を発見された際は,Vim のリポジトリや vim_dev ではなく,まずはvim-wasm のほうに issue やプルリクをつくっていただけると助かります.