nim-fuseに手を挙げた時, 私には1つの設計しか見えていなかった. しかし実際には深みがある. 例えば, 単純な数値計算ライブラリ(例:sin)をfuseでラップするのであれば, 設計は1つしかない. 単にFFIを使ってCを呼び出せばいい. しかしfuseのX言語バインディングを作るというのはそう単純なものではない. ポイントは, X言語側で実装した構造体を渡すところにある. これをX言語で書いた場合, 通常はlibfuseにこれを直接渡すことは無理である. Nimでは, C言語をターゲット言語としてコンパイルすることが可能であるから, 気合を入れれば出来ないことはないと思うのだが, ラッパーを自動生成とか, そういう技術が必要になると思う. これは恐らく, 失敗である. 以下に, 既存バインディングを調査した結果明らかとなった2つの実装方式について説明する. javafuse方式(
![(nim-fuse) 設計判断: どこでlibfuseと決別するか? - テストステ論](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)