2009-02-01から1ヶ月間の記事一覧

参照カウント

Xtalでは参照カウント方式を採用しています。 そのためアチコチで参照カウントが上げ下げされているのですが、ちょっと問題に思っていることがあります。今回の説明に必要な部分だけを、説明にいいように変形して抜き出したコードが次になります。 enum{ TYP…

AO bench

http://lucille.atso-net.jp/aobench/噂のAO benchをやってみようと、JavaScript版をXtalに移植してみました。 Luaのソースを落としてきて実行してみたところ、 私の実行環境では、Luaの実行時間259秒に対し、Xtalでは498秒かかりました。 およそ2倍遅いとい…

[新しい構文を考える] e4x相当

ゲームにおいてもXMLは当たり前のように使用するようになっています。*1 XtalもXMLリテラルとか、XMLノードを簡単に扱える機構を取り入れるべきなのかもしれません。 これは、かなり前、取り入れる方向で考えていました。 しかし、XMLの仕様をちゃんと実装し…

構文糖衣

javascriptやsquirrelの関数定義は次のように書きます。 function foobar(){ return 0; } これは、次の構文のシンタックスシュガーです。 // javascript var foobar = function(){ return 0; } // squirrel loacal foobar = function(){ return 0; } Xtalも…

with文

Xtalはwith文の導入を考えていた時期がありました。 結論として、with文は動的型言語が持つべき機能ではない、ということになりました。 with文は確かに便利な場合もあるのですが、 時にとてもわかりにくいバグを誘発してしまいます。withがあるjavascriptで…

複雑な実装をシンプルに

一部無駄に複雑になっていた実装をシンプルに書き直しています。 シンプルに書くと、コードサイズもバグも少なくなるので定期的にコードを見直しています。 最初からシンプルに書ければいいんですけどね。

C++の例外を排除へ

C++の例外を完全に使わない方向で修正することにしました。 これまでもC++例外をoffにすることができるようにはしていたのですが、RTTIと同じようにデフォルトをオフとします。 理由は主に次の二点です。 コードサイズが膨張しすぎ たとえばVCでは、例外をof…

Iterator::ip

イテレータに便利なデバックメソッドを追加しました。ipという名前で、イテレートする内容を指定した個数分デバックプリントできる機能です。 10.times.ip(5); // <[0,1,2,3,4 ...]> と表示される // 引数を省略すると3個指定したことになる 10.times.ip; // …

Rubyの本

プログラミング言語Ruby http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E-Ruby-%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8-%E3%82%86%E3%81%8D%E3%81%B2%E3%82%8D/dp/4873113946 を昨日購入しまし…

fiber

fib: fiber{ try{ "begin".p; yield; } finally{ "end".p; } } fib(); // 一回しかファイバーを起動しない というように、finallyがついているtryの途中でファイバーが死んだ場合でも、 ちゃんとfinally節が実行されるつもりでしたが、試したら実行されませ…