Gauche > Archives > 2010/07/23

2010/07/23 10:28:01 UTC(び)
#
んー。kahua-keyservのthread-poolをcontrol.thread-poolにしたら、シグナルを投げても死んでくれない場合があるみたいだ。
2010/07/23 10:38:19 UTC(び)
#
というか、kahua-keyservってmemcachedでいいんじゃね? という気がしてきた。
2010/07/23 10:39:05 UTCshiro
#
terminate-all!がうまく動いてないってこと?
#
kahua-keyservはやってることは「プロセス間で共有できるkey-valueストア
#
(expirationつき)」ですから、memcachedでもまるきりokですね。
2010/07/23 10:40:54 UTC(び)
#
これから追います。kahua-keyservはterminate-all!はしていないので。
#
何となく、expirationを行っているスレッドが悪さしてるような(spvrやhttpdと違っている点はそこなので)
#
kahua.gsidがmemcachedプロトコルをしゃべればOKって感じですかね
#
そうすれば、ワーカを複数台のホストに展開できるようになるかも
2010/07/23 10:59:52 UTCshiro
#
いや、それは笹田さんがRubyで試した方法 RT: @zick_minoh: Gaucheは浮動小数点数の指数部にタグを入れて、ローテーションして使うって本当?
#
@zick_minoh: Gaucheでは一時的な浮動小数点数をVMのレジスタに置いてます。
2010/07/23 11:02:41 UTCzick
#
浮動小数点数専用のレジスタがあるんですか?
2010/07/23 11:05:11 UTCshiro
#
はい。「レジスタ」と言っても実際にはホストマシンのメモリ上に置かれますから、世代別GCの最初の世代の領域と考えることもできますが。
2010/07/23 11:10:13 UTCzick
#
アドレスによるデータ型の区別に近いものですか。
2010/07/23 11:10:40 UTC(び)
#
sys-sigwait()にシグナルが抜けてこない... 誰かが取っちゃってるのかなぁ
2010/07/23 11:13:38 UTCshiro
#
いえ、64bit空間でBIBOPをやるのはきついんじゃないかな。VMレベルではflonumのタグが「レジスタ上のflonum」と「ヒープ上のflonum」の2種類あって、レジスタがいっぱいになった時に生きてるflonumがヒープに移されてデータも透過的に書き換えられます。>sizk
#
s/sizk/zick/
2010/07/23 11:17:26 UTC(び)
#
あ、ちがう。
2010/07/23 11:20:09 UTCzick
#
あれ、どちらの場合も(タグ付きの)ポインタを一段かませるんですか。
2010/07/23 11:21:38 UTCshiro
#
レジスタ上のflonumの場合、ワードの本体はレジスタ番号を格納してます。まあ実質はレジスタバンク始点アドレスからのオフセットですが。
#
あ、嘘でした。レジスタ上のflonumでも、tagをマスクしたら該当レジスタのアドレスそのものです。
#
オフセットにする意味がないからアドレスそのものにしたんだった。
#
どちらのflonumもtagの下2bitは共通なので、ほとんどのコードは下2bitのみを見てflonumかどうかを判断し、3bitマスクしてアドレスとして実体を参照します。つまりどちらのflonumか判断する必要がありません。
2010/07/23 11:29:18 UTC(び)
#
wait-allの意味がkahua.thread-poolとは違ってましたね。control.thread-poolの方が正しいんですが。
2010/07/23 11:29:51 UTCshiro
#
そういえば変えたような気もする。まだAPIは確定じゃないので、なにか提案があればどうぞ。
2010/07/23 11:30:13 UTC(び)
#
いや、kahua-keyservがワイルドすぎたので、この変更は正当だと思います
2010/07/23 11:47:52 UTC(び)
#
control.thread-poolが入ったのって、0.9より後なんでしたっけ。
#
そうか、0.9.1が出るまではKahuaもtrunkからリリースされることはないぞ、と(笑)
2010/07/23 11:49:05 UTCshiro
#
はい。そろそろ0.9.1出さないと色々不便になってきました。
2010/07/23 13:25:25 UTCcutsea@twitter
#
そういや部分継続のnative supportも0.9以降?
2010/07/23 13:30:03 UTCshiro
#
へい。部分継続についてはまだ問題がありそうなんだけど(SEGVるとか、スタックトレースがおかしくなるとか)、うまいこと問題を再現できない。
2010/07/23 13:32:52 UTC(び)
#
APIとしてはshift/resetを使った方がいいんでしょうかね?
#
とりあえずKahua trunkで使ってみていじめてみるというのはどうでしょう
2010/07/23 13:34:15 UTCshiro
#
うーむ、その名前は好きじゃないんだけれど、もうデファクトスタンダードになってるっぽいからなあ。
#
APIは決まってるので使ってもらうのは歓迎です。
2010/07/23 13:39:23 UTC(び)
#
Kahuaプログラミングの中ではたぶん過去の流れもあるからcall/pcを使うでしょうが、reset/pcの方はKahuaそのものの中でつかっているだけなので、そちらはresetにするかなぁ、というところです。
2010/07/23 13:42:31 UTCshiro
#
まあ、trunkではimport時にプレフィクスが使えるようになってるので、shift/resetみたいな一般的な名前であっても :prefix pc: としてpc:shift, pc:reset とかできるので衝突の心配はないけど。
2010/07/23 13:51:56 UTC(び)
#
let/pcは不採用だったんですね
#
とりあえず kahua.partcont は gauche.partcont を extend してlet/pcの定義だけを残しました
2010/07/23 13:53:32 UTCshiro
#
ああ、うーん、どうしようかなあ。というかlet/pcとshiftって全く同じですよね。
2010/07/23 13:55:25 UTC(び)
#
そうですね。全く同じですね。
2010/07/23 13:59:36 UTC(び)
#
とりあえずKahuaプログラミングでは馴染みの名前なので、kahua.partcontで残しておきます。