ToDo:
よく考えるとどうやって スタックの unroll すればいいんだ… x86 はなんとでもなるが、 x86_64 はデフォではスタックフレーム作らんしな。
戻る先の DFP から スタックの深い方見ていって bp ぽいのがあればそれ採用〜とかでもとりあえずいいか、な?
まぁなんにせよ今日は web 系記念日
(09:03)
いいかげん見るかーと思って少し考えはじめた。
まず Yajit が呼んだ非 JIT Ruby/C 関数が例外投げた場合。 これはもう JIT 関数では例外受け取れません! とかでいい気がする。いいんだよそれで! この制約はたぶん、 Ruby で書いた Proc オブジェクトを JIT 関数から呼んだ場合の return とかが わけわからんことになる(たぶん落ちる?)を意味する…と思う。
まぁたぶんちゃんとやろうとすると、恐らくだけど、 前者は Ruby 側いじらんといけないと思うんだよね。 だからとりあえず忘れる。 後者は Proc object 動かす時は JIT してから呼ぶ、とかやればまぁなんとかならんでもない気もする。
いや rb_rescue とかでできたりするのかな… rb_rescue もまた rb_rescue2 とかあって萎えるな。 まぁいずれにせよめどいので忘れる。
でまぁとりあえず、その制限のもとでなら break とかはできるんじゃないかな。
あと raise があったら、とりあえず rb_raise 呼んでやるくらいは してあげてもいいと思う。 いかにも面倒そうな rescue だのなんだのはとりあえず忘れる方向で。
しかし未だに Ruby の例外がよくわかってない。 vm_throw の throw_state って色々難解だな…
http://rhg.rubyforge.org/svn/ja/chapter13.txt
(23:13)
http://d.hatena.ne.jp/hayamiz/20080607/1212837967
カレーのうまさは玉葱の量に正比例することが 数学的に証明されてる[要出典] ので全部入れればいいのに
(00:53)
> irb1.9 irb(main):001:0> Process.daemon i@u4 ~ > fg fg: no current job
あたりまえだけどこうなるんだな。
(01:15)
おそらく 10.5 では CoreFoundation に入ってるシンボルなんだろうけど、 10.4 では Foundation に入ってるみたいだ。
DYLD_FORCE_FLAT_NAMESPACE とかでうまくいかんかな、 と思ったけど bus error
そもそもうちで SDL ビルドすると CoreFoundation だの Foundation だのへの 明示的な参照はできないんだけどな。 Cocoa あたりから間接的に参照されそうなものなのだけど…
(03:22)
Ruby のこの定数の値変わってる…
ruby-1.9.0-0 とか -1 とか入ってるけど、 ヘッダの位置変えてなかったから それのせいでエラーが…
うーんインストールする場所は分けとくべきだったのか。
(05:52)
まぁ気持ち悪いけど、 x86_64-darwin とか正直知らんっすーという感じで とりあえず対応する命令増やして色んなコード動かしてみた方がいい気がするな。
(00:03)
http://anond.hatelabo.jp/20080603171436
http://anond.hatelabo.jp/20080604095249
http://d.hatena.ne.jp/companeet/
すばらしい文献をみつけた。 しかし実践は難しそうだ…
(00:19)
http://www.kernel.org/doc/man-pages/changelog.html#release_2.80
カスみたいな変更なのに名前乗ってるし。 丁寧なプロジェクト運営してるんだなぁ…
(01:50)
ary = [1,2] case 1 when *ary else end
へーこんな書き方できるのか… checkincludearray false が出るケースがよくわからんけどまぁ とりあえずいいとしよう…
(03:22)
本当に難しいのだろうか。 とりあえず
ってくらいでいいのではないのか。 なんかできる気がする。
(04:46)
http://www.atdot.net/~ko1/diary/200806.html#d7
みんな大好きな C だって Ruby にはできないようなことできるし許してあげてもいい気もする
#include <stdio.h> int main() { int i; goto i; for (i = 0; i < 3; i++) { break; i: printf("%d\n", i); } }
ついで
http://d.hatena.ne.jp/shinichiro_h/20050628#c1119962566
(13:43)
tree = '(Root (Spine (Neck (Head)) (RClavicle (RUpperArm (RLowerArm (RHand)))) (LClavicle (LUpperArm (LLowerArm (LHand))))) (RHip (RUpperLeg (RLowerLeg (RFoot)))) (LHip (LUpperLeg (LLowerLeg (LFoot)))))' tree.scan(/ \((\w+)/){puts"#$+ . #{a=$`.split*'';1while a.sub!(/\(\w+\)/,'');a[/\w+$/]}"}
書き捨てコードだったら本当にこんな感じに書きそうだと思う。
で、ゴルフしようとしてもあんまり縮まないんだよな… Perl みたいに再帰的な正規表現扱えると短くなりそうだ。
(14:04)
http://www.slideshare.net/hakobe/moose
via http://mono.kmc.gr.jp/~yhara/d/?date=20080601#p01
なんかスライド見た感じだと静的型チェック 本当にできるんだろうか…という感じだった。
そうそう Yajit 書いてて思うのは 型チェック欲しいねーという。
関数の引数だの返り値の型推論はまぁなくてもよくて、 引数に型が明示的に指定できると嬉しい。 無理矢理既存の Ruby を壊さずに オプショナルな型指定を入れるなら、
TYPE_fib = [Fixnum, [Fixnum]] def fib(a) a > 2 ? f(a-1) + f(a-2) end
とか定数につっこんどいたら 見てくれるとかそういうアドホックな感じでもいい気がするなあ。
fib で思い出したけど definemethod 実装してみたので ベンチしてみれるのだった。
> time ruby hoge.rb 1346269 ruby hoge.rb 2.13s user 0.28s system 99% cpu 2.423 total > time ruby1.9 hoge.rb 1346269 ruby1.9 hoge.rb 0.24s user 0.01s system 96% cpu 0.262 total > time ./rubyjit.rb hoge.rb 1346269 ./rubyjit.rb hoge.rb 0.36s user 0.00s system 97% cpu 0.368 total
なんか思ったより遅くないな。 まぁ既知の関数なら Ruby に戻らずに直接 call するような 最適化とかできると良いね。
(01:18)
tekezoさんが使ってると確認できたので Fx3 使いたいし移行することに。
だいぶいい感じな気がする。 基本的な使用感はかなり良い。 ただ Ctrl 系でたまに使うようなバインドは ヘタレのためになるべく残しておいてくれても 良いのになぁとは思った。 ^u の暴発とかをよくやる。
(00:13)
LIRっぽいのがうまいこと作れなかったので、 毎度スタックを通すんじゃなくて レジスタで渡したりとかできるように ダサい最適化をしょぼしょぼ加えてたんだけど、
> ./rubyjit.rb bench_loop.rb user system total real times: 0.920000 0.000000 0.920000 ( 0.920898) upto: 0.970000 0.000000 0.970000 ( 0.962793) while: 0.120000 0.000000 0.120000 ( 0.129037) for: 5.130000 0.480000 5.610000 ( 5.626509)
が while で 1.05 くらいにはなったものの、 ダサくてバグありそうだったので ロールバックした。
やっぱなんかLIRっぽいのを挟んだ方が うまくいきそうな気がするので、 頭ひねってどんな感じで作るか考えようかと思う。
まぁとりあえずその前に未実装の命令潰すか。
(01:08)
ふとしたことで半年くらい書いて 途中で放棄しちゃってるコードの存在を思いだした。
たしかだいたい動くところまでいったけど、 なにか一つ不具合があるのが気に入らなくて 書き直してる最中にめげたとかだったと思うんだけど、 これ何してるか読めない。
(02:01)
最近ほんとひどいな。
あと公平を期するってよく考えると難しい熟語だなぁと思いつつ 期すると、インフラにしか興味がない話は まぁ正直誤解しか招かなそうな話しかたしてる方にも 責任どう考えてもあるので少しは反省する…
そのへんkzk神の分析がただしいと思う。
http://twitter.com/kzk_mover/statuses/826432692
(22:47)
http://www.atmarkit.co.jp/news/analysis/200806/02/google.html
まぁたぶん99%くらいで僕だと思う、が、 妄想で補完したんだと思う。悲しい。 いくつか文句があるので考えてみる。
ある技術系イベントの席で、たまたま隣になったグーグルの技術者が、私にこう言っ た。「オレ、アプリはやらないんですよ。画面とか、面倒くさいでしょ。グーグルドキ ュメントとか別に消えていいって感じ。インフラにしか興味ないんですよ。OS? OSなん て、どうでもいいし」。 20代後半にして自社製品の悪態をつくとは、ずいぶん脇の甘い発言をする人だなと感 じたと同時に、何か暗いものを抱えた人なのだろうという印象を受けた。今の時代はイ ンフラよりもサービスに華がある。フロンティアが広がっているのもサービスの分野だ 。インフラにしか興味がないという発言をする技術者に「暗さ」を感じたのは、記者が 勝手にそう思いこんでいたからだった。
まぁせっかくだから僕もわるくちを書く。 この人自分の仕事に誇り持ってるとか 人間社会の役に立たないといけないとか、 お前も俺の歳になればわかるとか的な、 こと言ってて、 (要はこれ http://shinh.skr.jp/m/?date=20080310#p04) 正直キモいなというかまぁ少なくとも僕とはわかりあえないとか 当時思ったんだけど、 メディア名乗るんなら録音でもメモでもして正確に書けばいいのに 呑み会の適当な記憶を適当に補完したとしか思えないってのはなぁ。
わるくちまだ書けそうだけどまぁめどい。
(00:45)
いつも忘れる。 たしか akr さんが 詳しく書いておられたなーと適当にぐぐってみたら Process.daemon というのを加えておられた。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/24030
これはすばらしー。
(00:52)
やった。ねむい。ぜんかい
http://shinh.skr.jp/m/?date=20071128#p01
受験日 Sec1(full:250) Sec2(full:250) Sec3(full:250) Sec4(full:250) Total(full:1000) TOEIC(R)(スコア目安) TOEFL(R) (※)(スコア目安)英検級(目安) 2007/11/28 20:12:17 160 176 185 174 695 705 502 2級 2008/06/04 01:55:29 203 174 211 137 725 810 513 2級
うさんくさいなぁ。 英語力とかマシになってる気しないんだけどな。 あと TOEIC の目安増えすぎだろうどう見ても。
(03:04)
ありがとうございますー
http://homepage1.nifty.com/herumi/diary/0806.html#2
とりあえずそのへんのヘッダは別にいらないっぽかったので コメントアウトして固めて上げなおしておきました。
でも無いってのもへんな話なのかな Ruby わからん
(23:34)
今さらながら斜めよみした。
http://www.dodgson.org/omo/t/?date=20080510#p02
おもしろいなぁ。 んでも何か所か疑問というかよくわからんとこがあった。
LIRを生成しつづけるとメモリがあふれる、 ってとこだけど、プアな環境では、ってことかな。 LIRとnative codeでそれほどサイズに差があるとは思えないし。
あと関数内にtraceしてったらそのままインライン展開されるおー とかホンマかーという。 もろもろ問題ありそうな気がするけど その気が正しいかどうかもよくわからん。
http://blog.mozilla.com/dmandelin/2008/05/23/tamarin-tracing-internals-iii-lir/
(23:40)
http://twitter.com/yanbe/statuses/822305215
ただしい。
でも、じゆーを守ろうとすると一時的にふじゆーになるのは 普通にごく当たり前なことだとおもう。
(04:00)
1.9.0-0, 1.9.0-1
== disasm: <ISeq:<compiled>@<compiled>>================================= 0000 putobject 1 ( 16) 0002 dup 0003 putnil 0004 setconstant :C 0006 leave
今
== disasm: <ISeq:<compiled>@<compiled>>================================= 0000 putobject 1 ( 16) 0002 dup 0003 putcbase 0004 setconstant :C 0006 leave
とりあえず putcbase ってなんなのという問題がですね。 そして vm_get_ev_const もよくわからんのだよ
(03:18)
http://i.loveruby.net/ja/hack/frame.html
とりあえず self.type でそれなりに動きそう。 ていうか問題は self がちゃんと実装されてないことすね。
(04:17)
前 | 2025年 1月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
Before...
_ 西村賢 [こんにちは、「この人」の西村です。はてブで突っ込まれていましたが、パブリックな場であの文章は確かにひどかったと反省し..]
_ shinh [あ、どうも。記事修正ありがとうございます。まぁどっちでもいいのですけど。個人的には暗いとかそのへんは、そう思われたの..]
_ shinh [あ、あと TOEIC は CASEC とかいう別の試験の換算点数しか知らない上に2回しか受けてないので、母数が少なす..]
_ 西村賢 [話した感じが暗いとは思いませんでした。どっちかいえば社交的ですよね。ただやたらとDocs死ねばいいのにと繰り返すので..]
_ 西村賢 [横槍ですが、英語デキテル実感が微かに出てきたのはぼくの場合TOEICで940を越えたあたりからでした。900ぐらいで..]