そのため、 PythonをSchemeプログラムに埋め込むことができるように、libpythonにバインドするSchemeを作成することにしました。私はすでにPythonのCAPIを呼び出すことができますが、メモリ管理についてはあまり考えていません。
mzschemeのFFIが機能する方法は、関数を呼び出すことができ、その関数がへのポインターを返す場合PyObject
、参照カウントを自動的にインクリメントさせることができます。次に、Schemeオブジェクトがガベージコレクションされたときに参照カウントをデクリメントするファイナライザーを登録できます。参照カウントのドキュメントを確認しましたが、一見したところ問題はありません(ただし、場合によっては最適ではない場合もあります)。私が見逃している落とし穴はありますか?
また、サイクリックガベージコレクタのドキュメントの先頭または末尾を作成するのに問題があります。ここで心に留めておくべきことは何ですか?特に、Pythonに何かへの参照があることを認識させて、まだ使用している間はそれを収集しないようにするにはどうすればよいですか?