バイト先の会社の定例ミーティングが長引いたのと道に迷ったのとで、AMD64 のおわりあたりから参加。IIJ のはいってるビルの住所が神田だからって神田駅でおりてはだめだよ。
面白かったけど、全部ちゃんと理解できたかといわれるとかなりあやしい。Binary Hacks も会場で買ったのでこれから勉強します。本一冊買っただけで、トートバッグとカレンダ電卓つき時計と T シャツとタンブラーとRHODIAもどきのブロックメモをくれる O'Reilly は太っ腹すぎる。
getcontext
getcontext が IA-64 でうまく動かなかったので直したというはなし。IA-64 にはレジスタがいっぱいあって、それをうまく扱うために(SPARC に似た)レジスタスタックという仕組みがある。でも setjmp や getcontext はレジスタスタックを復元してくれないので、IA-64 だと setcontext で getcontext 直後にもどったとき、レジスタに割り当てられた変数がうまく復元されず、その変数への代入で SEGV るようなことがあった。
「IA-64 で動かないよー」ってレポートしてもスルーされたけど、なんとか SPARC で再現させて修正してもらえた。修正箇所はコンパイラ。gcc は getcontext, setjmp とかの大域脱出系を特別扱いしているらしく、そういうコンパイラ側での対応が動かないようなものはライブラリ関数じゃなくて、C の言語仕様にいれればよかったのにね、とまとめ。
ちなみに getcontext は Ruby が GC のために使っていたらしく、Ruby の GC とスレッドには魔窟感があるなーと思った。
マルチコア
マルチコアとかで、ひとつのメモリを効率よく使うときに使える lock-free synchronization という方法の紹介。sequence lock, read-copy-update は Linux で、double-ended queue は Sun の HotSpot VM なんかで使われていて並列 GC 業界で有名。ここらへんで IRC にいた首藤さんが「並列 GC 業界て」とつっこんでたのがちょっと面白かった。
最近の CPU はアウトオブオーダー実行のための命令のいれかえが激しいので、適切なメモリバリアをはさみつつやらないとまずいらしい。
弾さんの「CPU 増えたんだからメモリも CPU ごとに独立させてあげて、コネクションマシンみたいに互いに通信させるのはどうよ」という質問には「ソフトウェア書く側としては共有メモリは便利だし、結局メモリまわりが単純になっても通信で複雑になるんならそんなにうれしくないのでは」と回答されていた。
Lightning Talks
PS3 Linux
PS3 Linux 上でキューブの各面にプレゼンのスライドをはりつけて、それを Wii Remote で操作しながら発表。Wii Remote をふると「ばしっ」という音とともにキューブが回転してスライドがうつりかわるんだけど、キューブなのでスライドは6枚までしか使えないという。すばらしい。Keynote とかステだね!
PS3 Linux は ps3fb というフレームバッファがあるけど、GPU にはアクセスできないらしい。CPU にバグがあった PS2 Linux よりはだいぶマシなものの、このままだと XNA に負けそうなので GPU へのアクセス手段もとってもらえるとうれしいよ、と。
Ajax
<img src="..." onload="alert(this.width)"> という具合に画像のサイズ情報でクロスドメイン通信をする。画像のサイズの値を大きくしつつも画像自体が大きくなるのを防ぐために、Imge Block は 1x1 のままヘッダの数字だけ細工する。そこらへんがバイナリ。
前振りも相変わらず面白かった。Wii はロングテールなので PS3 より Web 2.0 だとか。信頼できるブロガーによるとそのロングテールは切れやすいわけですが。
Flash Lite
携帯電話の Flash Lite に単語力 のデータをのせるために圧縮。Flash Lite は ActionScript のバージョンが古いので、いろいろプログラミング言語としては弱い(関数呼び出しすら無い!)んだけど、そのなかでさらに伸張処理を書くとか涙ぐましい努力が。
GNU
「0 が 1 かと問われたら自由と答えろ」という g新部さんはさすが。
ASCII
野首さんが大学時代につくられたテキストベースのアニメーション作品を 1 チップ MSX 上で動かして、みんなで鑑賞。
福地さんのバグパイプとヴォコーダーの合体したような謎のデバイスから奏でられる音楽も相まって、かなり会場の youpy 度があがっていた。IIJ の会議室では発表のトリは謎音を鳴らすとか、そういうルールでもあるのでしょうか。