謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

D言語

DMD 2.027 ktkr

Alias ThisはopDotの代わりのようだ。関数呼び出しのオーバーヘッドが無いのは良いが、インターフェースの実装をしてくれる訳ではないようなので、あまりメリットは無いかも? あとbug 2750が修正されたのが地味にうれしい。でも配列周りまだ最適化できそうな…

継続

適当に書いたけど良いのかこんなんで? 途中から再開するためには色々面倒か。 import std.stdio; template Foo(){ int f = 0; int func(){ return f++; } } auto carry(alias T)(){ mixin T!(); return &func; } void main(){ for(int i;i<3;i++){ auto f = …

dmd 2.026 ktkr

バックエンド公開キタ━━━━━━━━(゚∀゚)━━━━━━━━━!! けどエスケープ文字列リテラル廃止のせいで俺涙目。良く使っていたのでこれの廃止についてちょっと残念に感じる…別の演算にバックスラッシュを使いたいのかなぁ? ネスト構造体が追加された。あまり使いどこ…

dmd 2.025

Linux的には特に語ることなさげ。

dmd 2.023 ktkr

バックエンドの変更が主で、フロントエンドの変更は少ない。 速度上昇ktkr。特に変わった気はしないが後で計ってみる。 あと64ビットに対応しようとした跡がある。使えるかは不明。 破壊的変更が一つあるが、あまり影響範囲は広くないと思う…思いたい。

descent

バグが減って使いやすくなっている。 起動が遅い、メモリ喰いまくりなのを除けば使えそう。 でもCtrl+ShiftがIMEに取られる、ドキュメント表示機能が不安定、モジュール名の扱いが何か変、うまくビルドできないとかの不具合が気になる。

dmd 2.020

手元のコードをコンパイルすると無限ループに陥るがまぁいいとして。 safeが実装されてる。試してないけど。 pureやnothrow ktkr。使うかと聞かれればあまり使わない気もするけど、Pure Functionsは納得いった。 Throwableクラスktkr。でも、ExceptionやObje…

全体として見て副作用が無いように見えれば無いのと同じ

なわけなのに… struct A{ int i; void setI(int i){ this.i = i; } } A foo(){ A a; a.setI(10); // setI関数が単体としては純粋関数でないばっかりに return a; } void main(){ enum a = foo(); // これがエラーになるのが納得できん。 } http://gcc.gnu.or…

C呼び出し規則のcallbackにdelegateを渡したい

ヒープに関数置けばあまり良い方法で無いにせよできるはず。 ってことで、以下のようなの作った。x86 + cdecl(おまけでD呼び出し規則) + ヒープでコードが実行できる環境向け。 alias extern(C)void function() CFunc; invariant ubyte[] ret = [0xc3]; inva…

OpenGL port for D 2.021

Ubuntu 8.10ベースで作った。linuxで軽くしかテストしていない。再開発万歳。 https://code.launchpad.net/~lovesyao/+junk/opengl4d glutはfreeglut3-devベース。理由はlibglut-devで入れるとそれが入るから。

ポインタ先をconstやinvariantにする事で最適化されるのか?

volatileとの兼ね合いで、標準でマルチスレッド安全にならないとしたら、別に関係なくね? と思ってしまうが。

dmd 2.021

pragma(lib,"");がLinuxでも使えるようになったのが大きい。 foreachが内部イテレータから外部イテレータに(empty、head/next、toe/retreat)。 safeはただ追加しただけで実装はまだのようだ。 構造体のthisが参照になるのは悪くない。まぁ参照理解してないと…

Whitespaceless Hello world in D

一方、D言語は出力関連のを使おうとするとimportが必須で、しかもimport(std.stdio);みたいな書き方は出来ないので無理。 できるよ! int*x;typeof(*x)y;extern(C)typeof(y)printf(char*,...);typeof(y)main(){printf(cast(char*)"Hello,%cworld.",0x20);ret…

Alchemy

http://shinh.skr.jp/m/?date=20081119#p01 ASへの変換kt llvmdc試し時だなぁ。でも今は他の事したいのだが、、、でも他の誰かが試してくれるわけでもなし、、、。

ぼくのかんがえたさいきょうげんごを作ろう

現時点ではD言語最強だよね、という人向けに。 方法。dmdのフロントエンドがオープンソースで公開されているが、バックエンドはgccかllvmかそれとも新しく作るしかないんです。 D言語で書きたいならフロントエンドだけだがdparser(http://www.dsource.org/pr…

C++0xの右辺値参照

関数の引数としては理解できるが、でもABIと最適化の問題な気もする。 戻り値としての実装がどうなってるか理解していない訳だが…。ようは参照のように使えるポインタであり、"."と"->"の区別の無いD言語には不要と考えて良いのだろうか? と思ったけどa = b…

ref関数はrvalueの時には普通の関数と同じ?

なんかそんな感じ。lvalueでしか伝達できない。ちなみにref関数内のreturnはlvalueを取るようだ。 あとref関数fooがあるとして、foo = 10としようとしてもfoo() = 10ではなくfoo(10)となってしまってエラーがでる。バグか仕様か。

opDotのオーバーヘッド

スレに書かれていたのが気になったのだが2ch規制中なのでここで。 プレゼンに乗ってたalias foo this;に比べてどうなのかなぁと思ってたけど、結論的にはインライン化されればオーバーヘッド無いはず。structなのでopDotでサイズが増えることも無い (クラス…

変数のスコープ

個人的に思うことは全てのグローバル変数は悪。 ただ同様の便利さが必要な訳で、ネストクラスのnew時に親クラスのインスタンス渡して親クラスのメンバ変数に透過的にアクセスできれば良くね?っていう。 D言語はどうもそれがうまく行くようなので、皆もっとネ…

DMD 2.020 ktkr

ppaにインストーラ上げといた。 rdmdが壊れている。あと配列のプロパティのスコープがおかしいなぁ。 immutableが実装されたらしいが何か良く分からん。 参照返しはインデックスの特殊版見たいなものとして認識。段々C++コンパチに近づいてる。 ライブラリ分…

戻り値の自動推論の罠

再帰ができない。多分自分自身の戻り値を表す(一時的な)型があればいいはず? 実装は面倒そう。

Delight

忙しいときに限ってこういう面白いものが来るなぁ。 http://delight.sourceforge.net/ 方向性はどうあれ、こりゃ面白そうだ(主にソース的な意味で)。 しばらくウォッチ。 http://repo.or.cz/w/delight.git?a=shortlog http://repo.or.cz/w/delight/core.git?…

dmd 2.019

構造体に追加されたコンストラクタは構造体でのopCallの代わりになったという認識で良いとして。 新しく予約語に加えられたsharedに期待。

コードまみれ

テストしたコードが散乱している。 そろそろバグ報告しなきゃと思いながらも、数十単位にあるのでちょっと億劫。 でも微妙なバグだらけだからなぁ。重要なバグいくつか報告するかな。 バックエンドがライブラリとして公開されたら本気出す。 取り合えず、バ…

C++のstdが使えない件

C++のトップレベルの名前空間stdは_ZN3stdじゃなく_ZStになる。DMDは未対応なので使えない。 #にしてもstructをnamespace的に扱うにはC#のpartial types的なものが必要だよなぁ。まぁmixinもありだけど。

ppaのライン

deb http://ppa.launchpad.net/lovesyao/ubuntu hardy main deb-src http://ppa.launchpad.net/lovesyao/ubuntu hardy main警告でるのは仕様らしい。dsssとgtkdはgdcでコンパイルしてあるので注意。

gtkDパッケージング

RC1を1rc1とした。パッケージ名、gtkdとしたが、多分libgtkd-devやらd-gtkdやらとした方が良いはずかも。

DSSSのパッケージング中

インストール時に以下を使っていて、クロスビルド的に問題有りなのは良いとして。 `pwd`/dsss install --prefix=$(CURDIR)/debian/dsss/usr E: dsss: FSSTND-dir-in-usr usr/etc/うーむ、これはdsss側の問題な気がする。 結局 `pwd`/dsss install --prefix=$…

dmdのインストーラパッケージ、ppaに上げてみた

うまくいっている模様。セクションをcontrib/develにしたのに、develに変更されてmainに上がっているのはどうなんだろう(依存的に考えて)。

DMD 2.018

やっと配列演算。何かアセンブラで高速化しているらしい。SSE*使っているらしい。ベンチマークは他に任せるとして。 以下フォーラムより問題点引用。 It only works if the top level is an assignment operation. Doesn't work for initializers. Have to u…