https://github.com/funatsufumiya/odin-gv/

https://github.com/funatsufumiya/odin-cc-gv_player/

GV VideoのOdin実装、早速作った。というかあっという間に出来上がってちょっと感動。

元々 cc4vv_gvvideo の礎があってフォークしたからというのは大きいのだけど、それにしてもあっという間にできた。本当はもうちょっと長期戦になるかなと想像していたので、1日程度で書き上がって助かる。

Odinには vendor:compress/lz4 というモジュールがあるのだけれど、残念ながら現時点でうまく動かず。しぶしぶV言語のときと同じようにC言語ラッパーを書き直すことにして、odin-lz4 を作って呼ぶことに。幸い、元にしたバージョンはWindowsのみ対応だったので、Mac/Linux対応に貢献できたのはよかった。

V言語の開発体験を少しを振り返る

Odin言語における開発体験はとても良い。

V言語のときもだいぶ楽しくはあったのだけれど、V言語は LSP (v-analyzer) の完成度がやや怪しかったり、V言語自体がパッケージシステムにおいて迷いが見える言語であることや、GCが後から搭載されたこと、C言語の名前空間や関数群の扱いが若干微妙に感じること、C2Vの実装にいろいろと無理矢理な部分があることなど、開発体験としてはちょっと微妙だった。

とはいえV言語はNim同様に、C言語トランスパイラなので、C言語の資産をそのまままるっと活用できるのは大きかった。つまり再ビルドしたりする手間なく、Makefileなどを新たに書くことなく内包できていたのは良かったのだけれど、その代償としてTinyCCの制約を受けたり、Makefileの代わりとなるV言語のプリプロセッサに慣れなければならなかったりなど、今思うと100%良いものだったとはなかなか言えなかった。

けれど、その過程でC言語資産を活用する礎ができたことが、Odin言語に飛び込むきっかけになったのは事実。Odinのbindgen実装 (odin-c-bindgenrunic) は優秀なので、C-FFIのためのdll(動的ライブラリ)再ビルドの手間があったとしても、結局は相殺しているような感じはする。

Odinの開発体験がなぜ良いものなのかは、今後追々記事にしていきたい。このブログに書くのか、Zennを改めて作って電子書籍風にするか、Noteに書くかはちょっと迷っているけれど、いずれにしても書いていこうかなと思う。

(余談で、開発体験という意味では、ブログはObsidianで書けるのが一番楽しいように思うので、なんだかんだこのGitHubブログが一番何も気にせず気ままに書けているような気もする。)


このエントリーをはてなブックマークに追加follow us in feedly