謎's キッチン

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

D言語

gdcについて - itkzさんの質疑の時に話したことへの補足を含む

gdcのd/target-ver-syms.sh辺りで色々versionが生成されてる。 gdcのphobosにはstd.stdintでClong_tとCulong_tが定義されてるみたいだ。初めて知った。あと、__builtin_Clongや__builtin_Culong、__builtin_machine_int、__builtin_machine_uint、__builtin_…

bof質問募集

質問とか教えて欲しいところとか補足とか募集。

bof後記

どもりまくってすいません。常時ビックリ系フラッシュを見た後な状態…(汗。 一応プレゼンは喋らなくても分かるようにしましたが、ページめくる早さがバラバラだったのが最大の失敗。 とりあえずプレゼンのファイル置いておきますね。 http://www4.pf-x.net/~…

うーん書き直したい

今日のプレゼン。単調かなとアイコン付けた。安直。 matrix testの完全化や要求を仕様化する技術・表現する技術あたりをベースに研究して書き直せばより前向きなのが作れた気がする。 まぁまた今度ということで、前言い訳。

式テンプレート書き換え中

文字列返して最後にmixinした方が良いという事実。 その事実を受け入れて書き直して見た。 関数リテラルは未対応。stringofの使いにくさは異常。バグバグなので注意。 http://www4.pf-x.net/~nazodane/cgi-bin/index.cgi?mode=upload:show&name=expstr.d 前…

DMD 2.011

凄い凄い。眺めただけだが、BOFで話そうとしていることの一部が解決されてるようだ。今後のバージョンで値型にまつわる全ての不整合性を解決してくれそうな予感。 なんぞこれー import std.stdio; void main(){ Hoge hoge; typeid(Hoge).postblit(&hoge); } …

template使いにくすぎる件

可変長引数で渡せばテンプレートに何でも渡せるが、色々と不都合が多すぎるのがなんとも。 static if(arr) とするとarrが[1]の時などにエラーが起きる。 static if(!!arr) や static if(arr.length) とするとarrがnullの時にエラーが起きる。しかも、以下に…

BOF

話したいこと山々でスピーカーとして参加したい…が、正直ネタがまとまるか不安で躊躇。 最近は失敗ネタばかりだからなぁ。久しぶりにコンパイラ改造ネタでも…うーん。 D言語の酷い所はまりやすい所ネタもありか(静的配列を返すためにstructを通すとか、deleg…

gcjのCNIを使ったD言語とJavaとの連携メモ

名前空間はstatic struct使えばおk。ただし、gdcはmangling規則がおかしいのでdmdじゃなきゃだめ。修理された extern(C++) static struct java{ static struct lang{ static struct Math{ static int abs(int); } } } えーと…libgcj.aが無い件。-lgcjはでき…

descent使ってみた

http://svn.dsource.org/projects/descent/trunk/descent.update-site/plugins/にある*_0.5.0.*を全て落として/usr/local/eclipse/pluginsに移動。 Preferences -> D -> Installed CompilersでCompiler TypeをGDCにし、Locationを/usrと入力。 Preferences -…

Ubuntu hardyにgdc-4.2 ktkr

まだソースパッケージが入った状態だけど。 メタパッケージであるgdcが壊れてたり、gdc-4.1が少し古かったりしてたので朗報。でもgdc-4.1側はこのままなのだろうか。 #にしても.tar.lzmaが普及し始めてるなぁ。2006-08-09の時の予測は正しかったよう。今まで…

gdc + cliバックエンドで.Netと連携可能?

時間あるとき試す…多分。

DMD 2.010

特に語る事無し。引っかかってたリグレッションが無くなったのがうれしい。 pureやopCloneがトークンに追加されているが、実装されてないのでなんとも。

UbuntuのPPAでのD言語周りのやりたいもの

以前書いたことを掘り下げて。 gdc-d1-4.1 gdc-d2-4.1 libtango-dev libphobos-dev-snapshot libsdl-dev libgtk-dev この辺り必須だよなぁ。あとABAさんのゲーム類をコンパイルできるように改変して突っ込めば良さげ。 えーと、includeパスの問題(/usr/lib/*…

gethostbyaddrがnslookupよりも遅い件

nslookupが~1sなのに、gethostbyaddrが5sな件について。 タイムアウト的な問題だと思うが、設定できなさげ?

inよりitsの方が良くね?

key in arr より arr its keyの方がオペレーションオーバーロードの内部実装的に良い気がする。現状ではarr.opIn_r(key)という非直感的な状態だし。 現代英語だとarr's keyとなり、古い英語でもWikipedia読む限り人にしかhis属格を使ってなさげなので、逆順…

enumとinvariantの違いを見つけた

コードがいびつなのは別のコードの流用だから。 private import std.stdio; template test(char[] str){ enum ubyte[] test=cast(ubyte[])str; } //invariant t=[cast(char)0,1,2,3];//ok void main(){ enum t=[cast(char)0,1,2,3];//ok //invariant t=[cast…

(T/O) Ubuntu向けのwine向けのdmdのインストーラパッケージを作る

DMD 2.009

changelogの少なさとは裏腹にdmd自体のコードの変更量は多い模様。 細かな所で言えばCTFEでの文字列の比較(enum a = "a" > "b";)や、比較自体のCTFE伝搬(enum a = (1+2) == 3;)が実装されてる(はず)。 個人的にうれしいのは修飾子としてのenum (ただし俺が勘…

Nullable

ポインタで実装するよりもこう実装した方が効率良いはず。 struct Nullable(T){ bool isnull; T value; } 組み込み型にも簡単にできると思うのだけどなぁ。assert周りがややこしいけど。

またDMDのバグにぶつかった

構造体のイニシャライザ + ループ + アドレスでバグってるけど、最小ケース作るのめんど。 にしてもスタック使うときにalloca使わないといけない時が多いんだけど、もっとスタックが使いやすくなってほしいなぁ。 あとマクロが必須。いや、関数でもスタック…

hmac_md5の高速化した

md5の方にも手を入れて、30%ぐらい早くした。 ローカルでは早くなってる気がするが、鯖では分からず。 ローカルでのcpu使用率0.7%(topで出てきた値)よりも更に制約が厳しいということだと思う。

気づいてはいけないことに気づいてしまった予感

エスケープを\でする現在の構文、 [p [a \\test\,test,http://example.com]]よりも、処理命令指定を\でする構文、 \[p \[a \\test,test\,http://example.com\]\]の方が処理の速度が早いという事実。 サイズ的には前者が有利だが、エスケープは前者が四種(\[…

後方互換を残すのがめどい

datをコンパイル(?)することにした。これによりパースが早くなる。 んで後方互換をどうするか考え中。 コードの重複は避けたいし、高速化は重要だしでどうするか。 旧datの最初の読み込みでコンパイルしちゃえば良いか。色々と不安だけど。 メモ エスケープ…

開発難航

alias struct_instance this;が無いと色々と綺麗に実装できない件(sw.page,sw.siteconfigなど)。 ってことでまだー?基幹は置いといて細かな所弄るしかないか。

templateのthisパラメタって何のため?

2.008に加えられてる隠し機能。 オペレーションオーバーロード時の型推論でethisの型が持ってこられるみたいだけど、何に使うんだか…。 #それよりもalias struct_instance this;まだー?

7zのdeflateってどんな感じなんだろ

後で試す。今の一番の速度のネックはdeflateなはずだからなぁ…。そういえばzlibのmmx版もあったはず。 #速度を測ろうとしたけど、dmd -profileでコンパイルしたものがクラッシュする…。 #昔(去年辺り?)はできてたんだけど。 マルチスレッド化による随時defla…

シリアライズ/デシリアライズ

醜いハックの塊。 その一: 戻り値に静的配列が使えない。 その二: Struct.tupleofをforeachした要素がコピーになってる。 その三: テンプレート+オーバーロードの問題(これは仕方ない気もするが)。 /** * Author: Nazo * License: Public Domain */ module n…

StructureWiki、D 2.xでコンパイル成功

謎のコンパイラクラッシュはdmd -vで問題箇所が見つけられた。 後はstd.contracts.assumeUniqueを使ったり、テンプレートを関数にしたりとか。 まだ500エラーが出てるので、これから直す。 どうもスレッドがおかしいようだ。delegateがスタックを使うように…

スクリプト言語大好きっ子

では無いけど、こんなもん書いてみるテスト。 この規則で書くとFirefoxの拡張(Javascript)に良く使われてる関数乗っ取りが可能になるという長所が。但し、速度が遅くなるけど。 プロトタイプ未実装。キャストとか関数呼び出しとかが面倒なのはvariant.d側の…