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

xpeg api

文字列オブジェクト 同じ部分文字列とマッチする要素。 文字列を要素とする範囲オブジェクト ("a".."z") 範囲内の文字とマッチする要素。 並び: e1 >> e2 選択: e1 | e2 ゼロ個以上の繰り返し: e*0 1個以上の繰り返し: e*1 1個以内の省略可能: e*-1 否定 ~e …

xpeg

xtalにxpegという名前でPEGが入ります。svn上では一応実装されています。 PEGとは http://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95xtalで対応する演算子は次のようになります。 並び: e1 >> e2 選択: e1 | e2 ゼロ個…

Xtalに型チェック

型チェックの導入を考えています。Array var = 10;と書くと、 temp: 10; if(!Array.op_check(temp)) throw TypeError(); var: temp;というコードとほぼ等価になる機能です。普通の型だと、単純に遅くなるだけですが、int と floatの時だけは最適化で速くなる…

xtalはなぜ参照カウンタ?

xtalのGCは参照カウンタとマークアンドスイープの併用です。最初の方の実装では、Rubyのように、Cスタックをスキャンする保守的GCな頃もありました。しかし、ゲーム機などで使われることを想定して、移植性の低い実装は避けることにしました。 そのため移植…

Xtalの文字

Xtalは文字型が存在しません。 文字を表す場合、一文字の文字列を使います。文字を扱う場合に一見遅くなりそうに思えるかもしれませんが、 intサイズ以内に収まる文字列は、intやfloat同様変数に埋め込まれるため、 メモリアロケーション無しに文字が扱えま…

スマートポインタ

xtalとのやり取りに、ユーザーがC++で定義していたクラスを使うことは以前から可能ではあったのですが、xnew関数で生成したインスタンスじゃないと、SmartPtrで保持することはできませんでした。 この制限をもう少しゆるくすることにしました。 // 普通のnew…

空白と演算子と優先順位と

空白による優先順位のコントロール、ブックマークコメントで残念だという声が早速あったので、再考してみました。空白による優先順位は、「思っていた優先順位と違ってた!」というユーザーの意図したのと違う動作を食い止めるためでした。しかし、空白によ…

sig-gt12

1/17にsig-gt12のイベントに参加させていただきました。 色々な方と、色々なことが話せてとても勉強になりました。 ありがとうございました。xtalの「空白による優先順位のコントロール」はやはり疑問視してる方が多かったため、削除の方向で修正中です。

小さくしたい

現在、xtalの言語コアをコンパイルすると、luaのコアの二倍以上の大きさになってしまいます。 これを1.5倍程度に収めたいと思って肥大化してそうなところを触ってみているのですが、なかなか小さくなりません。関数やクラスのバインド部分で大きく膨らんでい…

アロケータをなんとかしたい

Xtalは、好きなメモリ確保、開放関数をユーザーが指定できるようになっています。 またオプションとして、 メモリ領域を渡して、そこを独自メモリ管理でやりくりする機構も備えていたのですが、 その機構をすごい簡易的に作っていたため、 確保が多くなると…

ブレークポイント

ブレークポイント機能を実装しました。 IDEが無いので、今のところあまり存在価値は無いです。 using namespace xtal; void debug_break_point(const debug::InfoPtr& info){ puts("break point"); } int main(){ try{ initialize(); debug::enable(); debug…

バグ修正

今日は家に居ます。 C++側からから、存在しないメソッドを呼ぶと落ちてしまうバグを修正しました。 AnyPtr a = xnew(); a->send("resizeee")(10); // スペル間違い とすると、UnsuportedErrorを送出するのが正しいのですが、 これまでは、まったく関係ないと…

classの上書き

ゲームでスクリプト言語を使うという際、 「ゲーム実行中にクラスをリロードしたい」 という欲求があると思いますが、Xtalではメンバの再定義などができないため、 それがしづらいという問題があると思いました。ということで、Xtalで定義されたクラスを上書…

バグ修正したものをsvnにコミットしました

バグ修正したものをsvnにコミットしました。 長い間触っていなかったため、ソースが他人の書いたもの状態になってないかと不安でしたが、すんなり思い出すことができてよかったです。 setterがコンパイルエラーとなるバグ修正 singletonがヘルプ通り動か…

1年間休んでて本当に申し訳ありません

一年間、完全に休んでしまいました。 本当に申し訳ありません。昨年は東京に移動し、仕事が増え、結婚の準備など、いろいろ重なり、 xtalの更新やここを見ることを放棄してしまいました。長い期間見ることができない日々が続いてしまい、 更新してないという…