2022/09/25にPHP Conference Japanにて「PHPからC#のライブラリを呼べるようにしたdotnet_ffiを趣味でつくってみた」の発表をしました。
ご準備いただいたスタッフの方々と現地やオンラインで聞いていただいた方々にお礼申し上げます。
初めてアバターで登壇する形式にしたので至らないところがあったかとは思いますが、改善しつつまた登壇できるようなネタを用意していきたいと思っています。
スライドに書かなかった内容を補足したいと思います。
C#のクラスのスタティックでないメソッドへの対応についてです。インスタンスの有効期間がPHP Extension側からは制御しづらく、CoreCLR経由の関数ポインタからメソッドを呼び出したときにGCで解放されしまっているケースを懸念して非対応としています。
これはネイティブコード(PHP Extension)から参照されていても、参照していると認識されないためにおこる現象です。しかもGCタイミングに依存して発生したりしなかったりするバグになり一見動いているように見える分やっかいです。
とはいえ使い勝手の向上につながるので、ひきつづき解決できる方法がないか引き続き考えてゆきたいと思います。