D言語

簡単なインタプリタのテスト付きバージョン

ぜんぜん、簡単ではない、簡単なインタプリタにテストをつけて書き直しをしました。 14回でここまで作るソースもあるのですけど、解説書く前にいろいろやることがあるとおもうので まだまだ先になりそうです。 Go言語 C言語の後継としていい線いってそうな…

Objective-Cのガベージコレクタ「AutoZone」、Apacheライセンスでソースコード公開

http://www.friday.com/bbum/2008/11/11/autozone-the-objective-c-garbage-collector/おおおお!保守的世代別GCの最先端のコードがOpenに!! ってことで、このノウハウをRubyとD言語に活かせば、今よりずっと素晴らしいGCになるかもしれません。 nariさん…

手抜き Mark & Seep GC for D

Mark & Sweep GCのアルゴリズムを適当にDで書いてみました。 頭で考えてると難しい気がするかもしれませんが、 作ってみるとそうでもないということが分かります。 適当な説明 オブジェクトを作るときにobjectの連想配列に突っ込んでおきます。 ルートになる…

Concurrent Cycle Collection Algorithm

昨日の続きです。書きかけ。 多分、インクリメンタルなGCですよ−って事だと思います。http://www.research.ibm.com/people/d/dfb/papers/Bacon01Concurrent.pdfFig. 4. Concurrent Cycle Collection Algorithmの丸写しに近いもの。 以下ソース

Synchronous Cycle Collectionの適当な実装

RubyGCをなんとかしてみようハックしてみようと思ってはいるのですが、あまりGCの実装慣れしていないので GC - GCアルゴリズム詳細解説 http://wiki.livedoor.jp/author_nari/d/GC この辺を読んで、Cycle CollectionとかいうGCが面白いというか、 参照カウン…

ASDGL構想

ECMAScriptの新しい仕様が発表されました。 多少、そのことを考えると、夢が広がりました。 しかし、沢山ある機能はおなかいっぱい。 その先が直ぐに読めてしまい、萎えてしまいました。 それでも、結局、JVMより遅いのでしょう。 なぜなら、動的な型を許し…

オブジェクト指向的なゲームオブジェクトの書き方。

C言語の関数を返す関数の型の話が話題になってたので、 YTさんに関数を返す関数とかといったらD言語の問題が解決できちゃいました。 CPSッポクかけて嬉しいです。 typedef typeof(Move) delegate() Move; class Enemy { Move movef; this() { movef = &a; }…

ver1.0が来る!!

来るぞーってことで、最近D言語から離れてるうちに1.0になるそうで、頑張れウォルターたん。 って感じです。D言語研究のBugTrackも放置してしまってたりしたのだけど、 k.inabaさんが送ってくれるそうなので、お願いしてしまいました。 役立たずですまぬで…

NamedArray

プログラミング言語をデータとして扱うためには名前付きの配列が必要なんじゃ??? って思い、NamedArrayクラスってのを作ってみました。 これ使えば、配列と連想配列の両方兼ねてるのでいろいろできるはずです。 名前付き配列を扱うことが出来るJSONみたい…

lazyを使ってみる。

ifをいろいろ作ってみました。いい感じです。 言語内言語をやるのにとてもいい感じです。 void if2(bool b, lazy void a1, lazy void a2) { if (b[0]) a1(); else a2(); } bool if_(bool[] b ...) { return b.dup;} void main() { if2(true, printf("a1\n"),…

Parsecもどき

Haskellだとなんだかしらんけど、パーサコンビネータとかParsecとかがなんだか凄いらしい。 しかし、パーサコンビネータってどんなもんなん? わからん。うー。 とりあえず、D言語で実装みたいなところまで来れたと。 いうわけで、 DによるParsecもどきです…

ラベルの値

やっぱとれないよ。うぇーん。 &&label;とか書けばGCCだといけるらしいってことを何度か見てたので、 Dでも出来るかと期待してみたのだけど出来ませんでした。う”−。そうですか。

フルスクリーンから復帰時の画面の乱れについて

なんか、ゲームをまったり、バージョンアップしてみています。 どうも、SDLフルスクリーンから復帰したときに画面が乱れるのはSDLかOSかドライバかハードの問題のように思えてきました。 というのは、640x480以下の解像度から戻ったときだけ乱れてるからです…

スタックマシンの動的コンパイル

気力がなくなったので、ちゃんとした文章になってませんが、、、。NYOットやろうぜ http://members.at.infoseek.co.jp/DrHell/ps1/index.htmlyaneVM2i386.cpp 等を参考にして作ってみました。 /* * スタックマシン動的コンパイル&実行 for d言語 */ enum { …

四則演算、スタックマシンのベンチマーク

O i Oi r rO ri riO 元 : 570 460 381 361 360 350 311 310 読込 : 571 531 370 360 361 371 320 340 最適化 : 371 310 380 321 290 260 291 260 関数化 : 461 381 370 320 311 300 290 261 動的 : 120 err 110 err 350 err 350 err 動的ASM : 30 err 20 err…

6052トランスレータ

とりあえず、6052のトランスレータをD言語で作ればいいのかもしれない。 こっちのほうが、何かと、融通が利くし早いだろうから。

スタックマシントランスレータ

ってことで、とりあえず、スタックマシンの静的コンパイルをやってみようかと思います。 つまり、トランスレータをつくると。 まず、スタックマシンをD言語にトランスレートと。

JIT

というわけで、Just In Time compileをやりたいということで、 勉強用にD言語で簡単なスタックマシン用のJITを作ってみました。 80行くらいで出来たのですが、せっかくなのでちゃんと解説も書きたいなぁと思います。

ピストンコラージュ

ピストンコラージュは洞窟物語の作者が作った曲を作るソフトです。 ピストンコラージュの曲をループで聴きたいので、 dllを、ポーティングしてループして再生するようにしました。 implib/system pxtone.lib pxtone.dll とやって、pxtone.libを作成。 // pxt…

タスク指向プログラミング

D言語では、newやdeleteを書き換えることが出来ます。 そこで、クラスのメモリアロケータを書き換えて、 タスクシステムの高速リストからクラスを生成して使いまわしてみました。 プーリングしているのに、普通にnew, deleteとかけます。 しかも、突然、ガー…

dmdのGCの実装を見てみる。

k.inabaさんにおだてられたので、ざっと見てみました。 /src/phobos/gcstats.d GCのステータスを保持する構造体GCStatsが定義されています。 /src/phobos/std/gc.d これは、中身は何もないです。 /src/phobos/internal/gc/gc.d ここに、GCの実態があります。…

beta1.0 released

http://d.hatena.ne.jp/riesling/20060113応援したいのだけど、VisualStudioが俺のPCに入ってないんです。 で、なんかしらんけど、容量が足りないんです。 協力したいと思いつつ、何も出来ないでいます。 なんか、非常に申し訳ない気持ちです。 日本語をD…

日本語処理

なんというか、文字コード周りの処理なんとかしたいので、 出来るところまで、がんばってみます。toMBSがstd.windows.toMBSをつかわないかんってのは問題だよなぁと。 文字コード表をかき集めて、ライセンスうんぬんクリアしてしまえれば勝ちなんだよな。 ど…

PDR読み込みライブラリ

http://www.wikiroom.com/sakurai/index.php?pdr id:ABAさんや、id:shinichiro_hさん、id:isshikiさん等が良く作ってる、 プリミティブを表示するシューティングゲームの キャラクターデータ読み込みツールを作ってみました。ParaDraw!ってソフトが結構、D…

ロックオンされゲー

http://d.hatena.ne.jp/isshiki/20050829D言語のシューティングです。ロックオンされるとパワーアップします。 なかなか面白いです。

delegateを使って、継続っていうか、インタプリタって言うかそんなのをやる。

もともと、ActionScriptで書くこと考えてたんですけど、Dでも出来るなってことで、、、。 _frame( delegate void(A a) { printf("test1\n"); }); _frame( delegate void(A a) { printf("test2\n"); }); _frame( delegate void(A a) { printf("test3\n"); })…

std.boxer

要はC#のboxingみたいなもんなんですな。

開発環境戦争ですな。

VSIPとかdiexとかいろいろ頑張ってるようで何よりです。 わたしゃ、へたれなのでろくなもんつくれませんでしたが、是非完成させて欲しいです。

D言語がBREWで動いたら強いんじゃないかなぁ。

http://www.digitalmars.com/drn-bin/wwwnews?D.gnu/994D言語がARM上で動くとか何とか。id:shinichiro_hさんがザウルス用にコンパイルしただかなんだからしいんだけど。それより、携帯BREWでガーベジコレクションつきネイティブ言語動いたら嬉しいんじゃない…

スタックトレース

この間作ったものに、dmdの-gオプションつけてデバッグ情報をつけたexeから関数名と、ライン情報を取得できるようにして、公開しました。http://www.wikiroom.com/sakurai/?D%B8%C0%B8%EC%2F%A5%B9%A5%BF%A5%C3%A5%AF%A5%C8%A5%EC%A1%BC%A5%B9ABAさんも問題…