Gauche > Archives > 2011/08/25

2011/08/25 08:45:46 UTCとおる。
#
Lua は一応モジュールシステムがあるので、モジュールのサーチパスを設定すれば、実行時にファイルを探してロードするとかもできますし、初めから静的なデータにして読み込んでしまうこともできます。
#
でもサードパーティ製のライブラリって使ったことないです。あと LuaRocks っていう CPAN みたいな仕組み(?)もあるみたいですが、組み込みようには使わないでしょうねぇ。
2011/08/25 08:49:20 UTCshiro
#
単一バイナリにしたいときは静的データにするんでしょうね。それは標準的な方法があるんでしょうか (サードパーティ製のこのライブラリとこのライブラリをバンドルしたい、と言う場合に、そう指定するだけで変換してリンクしてくれるとか)
#
ほう、標準ライブラリについては簡単に静的リンクできる?
2011/08/25 08:53:00 UTCとおる。
#
たぶん、とくに公式に標準的な方法というのはないとおもいます。luaL_loadstring(L, "Lua のコード") ってかくとソースの中にスクリプトを埋め込めるので、それ以上にシステマチックな手段はなさそうです。
#
あ、標準ライブラリは静的にリンクできます。
2011/08/25 08:54:09 UTCshiro
#
Luaで書いてある標準ライブラリってことです。ソース中に埋め込むのはGaucheでも同じだな (Scm_EvalCString)
2011/08/25 08:54:52 UTCとおる。
#
あー、それはないです。Lua は Lua で書いた標準ライブラリっていうのはないです。
2011/08/25 08:57:01 UTCshiro
#
なるほどー。Gaucheで同じことをやろうとしたらlib/以下を全部固めないとだめだなあ。とはいえ文字列の静的データにしといて読み込むだけならさほど面倒でもない。単一バイナリってやっぱり需要高いだろうか。
2011/08/25 08:59:22 UTCとおる。
#
まあ Lua はそのためにあるような言語ですけど、他の言語だとどうなんでしょうね。Mac ならアプリケーションバンドルにしとけばいいですし。
2011/08/25 09:02:23 UTCshiro
#
ext/ 以下のdllを静的リンクにする方が面倒くさそうだな。
2011/08/25 09:08:26 UTCとおる。
#
ですねぇ。Mac だと仮想ファイルシステムをマウントできるので、複数のファイルを 1 個にまとめるのもかんたんなんですけどね。
#
Windows だと、同じことをするにはデバイスドライバから作らないとだめですよね。
2011/08/25 09:13:22 UTCとおる。
#
あ、SMB をしゃべるアプリケーションを書いてリモートドライブとしてマウントすればデバイスドライバなくてもいいのかな。リモートドライブ上の DLL ってロードできましたっけ。
2011/08/25 09:14:23 UTCshiro
#
ロードするのにリモートかどうかは関係ないはず。LoadLibraryにも特に書いてないし。
#
でもそこまでしてやりたいことかっていう話になるなあ。ちょっとしたハックでできるならサポートしてもいいんだけど。
2011/08/25 09:15:27 UTCとおる。
#
ですねぇ。ネタとしては面白いですけど。
2011/08/25 10:05:27 UTCいるねす
#
こんにちはー
2011/08/25 10:05:46 UTCshiro
#
あろはー
2011/08/25 10:05:56 UTCいるねす
#
どこで報告したらいいのかわからんので、ここで報告しますが、
#
巷で話題のsleep sort書いてたらこんな不具合?みつけました
#
gosh> (use gauche.threads)
#<undef>
gosh> (time (thread-sleep! (/. 1 3)))
;(time (thread-sleep! (/. 1 3)))
; real   0.333
; user   0.000
; sys    0.000
#<undef>
gosh> (time (thread-sleep! (/ 1 3)))
;(time (thread-sleep! (/ 1 3)))
; real   0.000
; user   0.000
; sys    0.000
#<undef>
2011/08/25 10:07:17 UTCshiro
#
あーそれtwitterの方でリプライしときました。パッチ https://gist.github.com/1170364 これからテストして問題なかったらコミットします。
2011/08/25 10:07:38 UTCいるねす
#
おお、すごい。ありがとうございましたー
2011/08/25 10:08:42 UTCshiro
#
Rationalをサポートするまえはexactならintegerって決まってたので、それを前提にしちゃってるコードがまだどっかに埋もれてるかもしれない。
2011/08/25 10:35:32 UTCshiro
#
「単一バイナリ」っていうのは結局、「Gaucheでアプリ書いたとして配布を簡単にしたい」ってことだと思うんだよなー。ちょっとダウンロードしてためしてみたいって人には「Gauche別途インストールしてね」ってハードル高いだろうし。一時フォルダに自己解凍して実行するとかどうだろう。
2011/08/25 13:20:04 UTCwlkfan
#
ありがとうございます。おっしゃるとおりです。clisp でいうところの EXT:SAVEINITMEM http://clisp.sourceforge.net/impnotes/image.html を使用してできる実行バイナリのように、受け取り手がすぐに試せるようなものを想定していました。
#
一時フォルダに展開するというのは考えてもいませんでした。その通りにしたいと思います。
2011/08/25 18:06:59 UTCeyasuyuki@twitter
#
Apache Killer対策やってますか? うちもやらないとまずいな。