2008-04-01から1ヶ月間の記事一覧

すごい寝た。 起きた。 昨日、SCM_INTERNAL_MUTEX_LOCKとSCM_INTERNAL_MUTEX_UNLOCKに囲まれた部分のチェックをした。 結果をWiLiKiに書いた。

昨日のSCM_NEWのチェックの残りを行った。 とりあえず、チェックの結果、SCM_NEW*系マクロを呼び出している関数単体では、SCM_NEW*内で継続呼び出し(というかlongjmp?)して途中で脱出した時に怪しくなりそうなものは一つも存在しない事が自分の中で確認され…

昨日に書いたGauche用OOMパッチをwilikiに貼った。 返事をもらった。 http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aOOM どうも、Scm_ConsですらOOMが発生するという事は、性能の劣化無しにOOM対策はできず、仮にOOM対策をしても、OS側のoom-kill…

昨日は時間ギリギリに帰ったので、すごく疲れた。 やっぱり移動には時間に余裕を見ておきたい。 この前書いたGC_oom_fn対策のコードはそれなりに動いた。 しかし、スレッド安全になってないので、Gaucheの他の部分を見て、どういう風にスレッド安全にすべき…

今回の要約: とりあえずGC_oom_fn対策のコードだけ書いた。動作確認とかは帰ってからやる。 今日は、出社する事になった。 先日の優先順位を考えた。 とりあえず、GC_oom_fn対策が実現可能な事を簡単に確認する とりあえず適当に動く、eval/svを作る(大体完…

「安全なeval」別解

実は、「安全なeval」には、「(可能なら、別サーバかつ)別プロセスでgoshを起動し、そこにS式を流し込んで評価させる」という、結構シンプルな別解がある。 (別プロセスの方が死んだり、応答がなかったら「失敗」扱いにするという事になる) 実際、S式バトラ…

GC_oom_fn対策(1)

今回の結論: 月曜ぐらいからコード書く。 これまでの流れ: 「安全なeval」を作りたい 「安全なeval」では、evalが過剰にメモリを消費しても、evalの親に影響を与えない必要がある 例えば、evalのメモリ過使用に巻き込まれて、eval元がプロセスごと死んだりし…

windowsのstartコマンドがヤバいくらいに便利

新山さんのメモを読んでstartコマンドの事を知った。 http://www.unixuser.org/~euske/offline/memo/2008/42.html#072157 なんでこんな便利なものが知られていないんだ。知らなかったのは自分だけなのか? 他にも、細かい挙動を制御できるオプションが満載。…

eval/memlimitについての内容をちょっとまとめた。 http://e.tir.jp/wiliki?eval-sv%3aeval%2fmemlimit

Crystal Nights

http://d.hatena.ne.jp/ita/20080407/p1 これは読みたい。 というか、イーガンの新作はどれも早く読みたい……。 それにしても、0-3歳児専用SNSはなんか実際に作ったら、凄い利益が出そうに思えて仕方が無い。

直した。 (use eval-sv) (use gauche.parameter) (use util.list) (define-values (eval/sv env) (make-eval/sv :isolate-port? #f)) (define start-size (make-parameter #f)) (define runup-size (make-parameter 0)) (define limit-size (make-parameter …

さっきの問題を調べ直した。 どうやら、二回目以降のeval/memlimitでは、dynamic-windのbefore thunk内の(gc)では、まだメモリが解決されないが、実際のeval/svに突入した段階で(gc)すると、メモリ使用量が確かに回復するようだ。 おそらく、副作用(current-…

昨日の続き。 dynamic-windを使えば、昨日の 他の問題点としては、S式バトラーのように、複数のevalを同時に起動して、継続を使ってコルーチン的に動きまわるような場合には、正常にメモリ使用量を取る事が出来ない。 を一応、解決できる事に気付いた。 (但…

厳密でなくてもいいなら、eval/svと(gc-stat)を使えば、擬似的にメモリ使用量を制御できる事に気付いた。 (use eval-sv) (use gauche.parameter) (use util.list) (define-values (eval/sv env) (make-eval/sv :isolate-port? #f)) (define original-size (m…

さっきの続き。 eval時に行うmalloc(的な何か)は、eager型とlazy型を選べるようにする。 eager型evalがさっき書いた、eval時に一括で申請して、領域が無くなったらエラー例外を投げるもの。 lazy型evalは普通に、eval時には何もせずに、cons等の度にmalloc(…

先週の土曜日はよみうりランドに行ってきた。 桜が物凄かった。 非常に楽しんだ。

今日の要約: 俺Lispに必要な仕様がまとまってきた。実際に作るかどうかは未定。しかし、カッコ良い名前を考えておく事。 http://d.hatena.ne.jp/ranekov/20080403/1207163582 http://d.hatena.ne.jp/ranekov/20080228/1204186771 http://d.hatena.ne.jp/rane…

Haskellで継続ベースのwebアプリを構築できるフレームワークを調べた。 WASHという奴らしい。 暇が出来たら試してみる(Arcよりも優先順位低い)。 http://www.ice.nuie.nagoya-u.ac.jp/~h043078b/wiki.cgi?page=WASH 例のArcの「said」アプリを作って比べるペ…

shs(仮)とArc

今回の結論: 暇が出来たら、Arcが「HTTP上の/bin/sh」として使えないか試してみる 色々書いてたが、長くなったので要約だけ残す。 phpはアレだが、「php的なアプローチ」(?)は悪くないとは思ってる。 今のphpは、進化する方向を間違えてしまったように思え…