第九回 RHGの逆襲
ものすごく適当なイベントレポート。話者でもないのに喉が潰れた。酒などで。ふしぎ。
Ruby1.9を読む - Code Reading Wiki
http://www.dzeta.jp/~junjis/code_reading/
話者のさわださんが以前Ruby1.9を読んだときの記録。ありがてえありがてえ。
vm.inc
あいつ正しいCのコードらしいぞ!
--dump=insn
インストラクション列を吐くことができて楽しい。
% ./ruby --dump=insn -e'n=10;a=1..n' == disasm: <RubyVM::InstructionSequence:<main>@-e>====================== local table (size: 3, argc: 0 [opts: 0, rest: -1, post: 0, block: -1] s1) [ 3] n [ 2] a 0000 trace 1 ( 1) 0002 putobject 10 0004 setlocal n 0006 trace 1 0008 putobject 1 0010 getlocal n 0012 newrange 0 0014 dup 0015 setlocal a 0017 leave
JOKEが通じないruby処理系
vm_opts.hでsupport joke設定してビルドしたruby処理系に冗談が通じないバグが!
id.cがvm_opts.hをincludeしていませんでした → これを直すパッチを書いて送るとrubyコミッタになれる!
無駄VALUE
今は
bignum + float -> bignum + float2big(float)
bignum + fixnum -> bignum + fixnum2big(fixnum)
のような形にして
bignum + bignum
の流れに通して答えを出してる。hoge2bignumで生んだオブジェクトがすぐゴミにしておいてGCまでごみとして残り続ける憤慨!
bignum + floatの場合の処理をごちゃごちゃ。
bignum + fixnumの場合の処理をごちゃごちゃ。
bignum + bignumの場合の処理をごちゃごちゃ。
という形にして、そもそもごみ出ないようにすればよろしいかも。
解放するコード仕込む?
patch+ベンチマークでmatzを騙せ!
fixnumの範囲のbignumを全部作っておくと……!
飲み会
gitはなんかあれげだいえ新たな概念がですね普通に使う分にはhgのが楽じゃないですか、とかGaucheのコードはShiroさんの人格者っぷりが出てるような美しさが、などあちこち話題を飛ばしたりしてて喉が潰れた。