前の記事 では v-libui として libui-ng のV言語バインディングを行ったけれど、その後すぐに odin-libui としてOdin言語実装を完成させた。
https://github.com/funatsufumiya/odin-libui/
前の記事で結構大々的にV言語の良さとかC2Vのロゼッタストーン的な良さを書いててあれだけど、odin-c-bindgenが優れていたため、ぶっちゃけV言語よりも簡単で、特にbindgen部分に触ることはなかった。
というかそれが当たり前なのかもしれない。bindgenはうまくいかないのが普通っぽく思ってたけど(LLVMでCヘッダをパースするのは限界があると思っていたので)、実はそうではないのかもしれない。
ちなみに odin-c-bindgen 以外に runicというものもあるようで、こちらはOdinで書いたものをCから呼べるようにしたりなど、相互に変換できるらしい。これも追々使ってみよう。
V言語は、C言語の領域を呼ぶときには C.xxx という記法を使うので、モジュールがあるのにないような感じになってなんだかモヤっとしてたけど、Odinはそういうこともなく、シームレスに繋がっていて心地がよかった。core:c/libc からCの関数群も当たり前のように呼べるので、正直Cトランスパイラよりも不思議とCっぽいのは、Zigと同じ感想かもしれない。
ということで、Odinからクロスプラットフォーム (Win/Mac/Linux) なGUIライブラリが呼べるようになったので幅が広がり、前に少し書いた
- odin-webui : Electron/Tauriライクなウェブ系UI
- orui: Raylib上でImGui的に即時UI
と合わせて、GUIの幅がすごく広がった。Odin、思ったよりもCとシームレスにかつ簡単に繋ぐことができるとわかったし、まるでスクリプト言語のような楽しい書き心地なので、これはもうV言語をすっ飛ばしてOdinばっかり書いていくかもしれない。