Gauche > Archives > 2016/10/15

2016/10/15 13:39:21 UTCkoguro
#
こんなの作ってみました。https://bitbucket.org/nkoguro/compile-stub
#
inline-stubを埋め込んだコードを実行時にコンパイルできるようにするものです。コンパイルが行われるのは、初回実行時だけなので、最初はちょっとロードに時間がかかりますが、2回目以降はすぐに起動できます。
#
実行時にコンパイルするだけでなく、Gaucheのprecompile機能を使って、あらかじめモジュール全体をコンパイルしておくこともできます。
#
お手軽にC(CiSE)のコードを埋め込めるので、Cのライブラリを呼び出したい時とか、ボトルネックの箇所を高速化したい時とかに便利かと思います。
#
以前にもc-wrapperとかdyncompとか作ってましたが、こちらはGauche標準のgauche-packageとprecompを呼び出すだけなので、基本的にGaucheが動けばどこでも動くはずです。
#
(ただ、gauche-packageはWindows環境に対応していない?)
#
まあ、最悪このモジュールが動かなくなっても、Gauche本体のprecompを使えば、そのままコードが生かせると思います。
2016/10/15 21:43:52 UTCshiro
#
Windows環境でのコンパイラ呼び出しには少なくともMSYSが必要ですね…あと、Gaucheインストールパスに空白が入ってるとやばそう。
2016/10/15 22:41:03 UTCkoguro
#
MinGWは入れているのですが、gauche-packageの実行で、こんなエラーが出てきます。
#
C:\>C:\Gauche\lib\gauche-0.9\0.9.5\x86_64-pc-mingw64\gauche-package.exe compile "--output=C:\Users\naoki\.local\lib\compile-stub\gauche-0.9\site\x86_64-pc-mingw64\hello\xf95b37856c0de9af972aea3939dbb545915c0adc.dll" --verbose xf95b37856c0de9af972aea3939dbb545915c0adc C:\Users\naoki\.local\lib\compile-stub\gauche-0.9\site\x86_64-pc-mingw64\hello\xf95b37856c0de9af972aea3939dbb545915c0adc_lib.stub
*** ERROR: cannot find "gauche/collection" in ("C:\\Gauche\\lib\\gauche-0.9\\0.9.5\\share\\gauche-0.9\\site\\lib" "C:\\Gauche\\lib\\gauche-0.9\\0.9.5\\share\\gauche-0.9\\0.9.5\\lib" "C:\\Gauche\\lib\\gauche/site/share\\gauche-0.9\\0.9.5\\lib" "C:\\Gauche\\lib\\gauche/0.9/share\\gauche-0.9\\0.9.5\\lib")
    While compiling "(input string port)" at line 35: (use gauche.collection)
    While loading "(input string port)" at line 35
Stack Trace:
_______________________________________
#
GaucheはC:\Gaucheに入れています。
2016/10/15 22:48:23 UTCshiro
#
あれ、なんかload-pathが妙ですね。普通にgosh起動して*load-path*見るとどうなりますか? (Gauche\share\gauche-0.9\0.9.5\lib とかが出てくるはず)
2016/10/15 22:50:24 UTCkoguro
#
gosh> *load-path*
("C:\\Gauche\\share\\gauche-0.9\\site\\lib" "C:\\Gauche\\share\\gauche-0.9\\0.9.5\\lib" "C:\\Gauche\\share\\gauche/site/lib" "C:\\Gauche\\share\\gauche/0.9/lib")
#
こんな感じです
#
素のgoshからだと、(use gauche.collection)はうまくいきます。
2016/10/15 23:03:31 UTCshiro
#
むー。Windowsのgauche-packageはScm_SimpleMain経由で起動してるんだけどmaybe_prepend_install_dirがちゃんと動いてないのかな