sigscheme

一体いつになったら…

cutter-update-suite が走らん。なんでやねん。 jun@debian /dvl/uim/wk/sigscheme/test-c $ cutter-update-suite /usr/bin/env: ruby -i: No such file or directory追記: 逆。なんでヤマケンさんの環境ではこれが走るとですか? NetBSD 使いだっけ。それの…

configure.in

を弄ると make が失敗する。autogen.sh で指定してる何かが Makefile の方には足らんらしい。

orz

Patch 当たらない当たらない、しかも patch 内に見えてる code の方が手元のより質が良い。とか思ってたら svn 版に当てるようになってたのでした。無茶苦茶時間を無駄にしてしまった…。

やっぱり役に立たない

やっぱり cutter 邪魔なだけ。Patch 当てたりして動かしてみても、結局汎用の比較 assertion も無ければ test case の呼び出し code 作ってくれないし、なんか test-c/ に入ってる test_global.c とか error 出るし。そもそも patch が clean に当たらん (こ…

んー、configure --help で option が出ない。どうやって出すのかな。追記: ていうかこれ…実装完了してないのか。Option を CFLAGS で渡してるから make の出力がえらいことになってるんですが、このへんは近いうちに直す予定になってるんでしょうか。

storage-fatty.h に追加する INIT で漫然と SAL_ 系 setter を使ってしまってた。失敗失敗。

NULLVALUES

要る? これ。(values) なんて滅多に書かないと思うんだけど。

storage-compact.h: #define SCM_SAL_CONS_MUTABLEP(o) (SCM_FALSE)えーっと、これは bug という事でいいのかな? (常に scm_true を返すべき?)

Flag 宣言

書いてみたけどいまいち。Level の区分が役不足になってからの方がよさそう。 #define SQUISH(n) (!!((n) & 0xF)) #define HEX2BIN(n) (SQUISH(n) \ | (SQUISH((n) >> 4) << 1) \ | (SQUISH((n) >> 8) << 2) \ | (SQUISH((n) >> 12) << 3) \ | (SQUISH((n) >…

SCM_STRING_LEN()

size_t にまとめる予定はあるんかしら。まとめようとするとそれはそれで while (i

SigScheme でググってここに辿り着く人が最近ちらほら。

むー、ヤマケンさんは何かするんじゃなかったのかな。そろそろ手元の物体を commit して storage-fatty.h と storage-gc.c も含めた差し替えを始めようかと思ってるんだけど。

misc

だーー やりにくい。とりあえず動く + 読める程度には抽象化できるけど、ものすごく変化に弱い。変化に強くしようと層を挟むと最適化が compiler の手に負えなくなる。 最早汚いのは諦。太田さん良く書いたよこんなもん…

独り言

あかん…こういうの考え始めたら何も手につかん(苦笑) /* C macro で currying の真似事 */ #define CURRY3_1(x, y) x, y, #define FIN3(x, y, z) z; y; x #define OPAREN ( #define CPAREN ) #define EVAL(f) EVAL2(f) #define EVAL2(f) f #define IFACE(arg…

Macro

意味なかったorz

記憶が朧げに蘇ってきそうなよ〜なそーでもないよ〜な…

mcpp の document に目を通したけど、## については xglue () [↓でいう CAT()] が「よくある手」となってるだけで、特に buggy ではないらしい。件の macro 群を書いてたときには「評価」とか基礎的な概念の理解が固まってなかったから、単純に馬鹿だったと…

Parametrized symbol concatenation

あれーー? これって OK なのか。これが使えるんなら misc の実装は 10 倍ぐらい単純かつ柔軟にできる。 #define CAT(x, y) x##y #define IFACE(arg) INTERM(CAT(arg, _), arg) -- CAT(arg, Y) #define INTERM(a, b) FIN(a, (a), b, (b)) #define FIN(a, b, c…

これはどうなのか

#define SCM_OTHERS_SET_CAR_VAL(a, type, val) \ do { \ SCM_CELL_SET_CAR((a), (SCM_STRIP_GCBIT(val) \ | SCM_GCBIT(SCM_CELL_CAR(a)))); \ ← \ if (SCM_OTHERS_CAR_VAL_ALIGN_NONEP(type)) { \ /* store val's GCBIT to the CDR */ \ SCM_CELL_SET_CDR((…

↓でだらだらと書いてる裏で何をやってるのか簡単に説明しときます。storage-compact.h に macro support を追加しようとしたところ、諸々の理由によりこのまま使うのは良くないと判断したので、自分で別のを書き直してます。後で merge するか差し替えるかは…

今ごろ気づいた

( ゚д゚)…? SCM_USE_COMPACT 1 するとぜーんぜん build できないんですが、これって完成してるはずなんですか? >太田さん 追記: 全然てこたないか…数箇所壊れてるだけぽ。

( ゚д゚)ハッ! いつのまにか手段が目的に…orz

はへ?

/* * FIXME: Support 64-bit data models * [...] * - (low priority) change ScmObj definition to the union below to support * ILP32 with 64-bit long long */ #if 0 /* FIXME: adapt to this to support ILP32 with 64-bit long long */ /* To allow s…

そういえば

SYM_ELLIPSIS が scm_intern("...") のままだよ… Compiler にこれが純粋関数 (i.e. 副作用無し) だと見抜けるわけはないので、FOR_EACH() とかの loop 内で毎回 hash lookup 呼んでる事に… Compaction 終わったら速さを測り直してみよう。(まあそれが非常に…

これも無駄だなあ… #define SCM_SAL_EQ(a, b) (SCM_STRIP_GCBIT(a) == SCM_STRIP_GCBIT(b))ちっとも performance (memory/speed 両方) を追求する姿勢が伺えない。階層を強く分離する姿勢はいいと思うんだけど、performance-critical な部分で分離に固執して…

↓Memory 使用量も調べたいなあ…。Shell の `time' builtin みたいに手軽にできるんだろうか。

この expander なかなか優秀ではないか。Transcribe した後の symbol lookup はちょっと遅いけど、expansion そのものは Oleg Kiselyov の stress test を基準に言えば高速な部類に入るらしい。試してみた範囲では Guile, Gauche, Bigloo, STklos → error (b…

&& は & より遅い

Compiler に面倒見てもらえないのかと言ったやつ。とりあえずの解釈として、&& は & や % などとの組合せの代数的性質がよくないので compiler が reduce しにくい/しようとしないのかと考えてみた。つまり、&& などの条件演算子はあくまで独立条件を加味し…

反応が無い…

言いすぎたんかしら。そんなヤワだとも思えないけど。

面倒見てもらえないのか…

jun@debian /tmp $ cat tmp.c int f(int o) { return (o & 6) == 6 && (o & 8) == 0; } jun@debian /tmp $ gcc -O3 -S -o - tmp.c .file "tmp.c" .text .p2align 4,,15 .globl f .type f, @function f: pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl …

compaction support 進行中

んー、なんか色々効率悪 *そうな* 箇所があるなあ。Compiler の最適化がどれぐらい効くかで評価が思い切り変わるけど。 その1 (確実) #define SCM_CONS_CAR_VAL(a) ((ScmObj)(SCM_CELL_CAR(a)))Cons の tag 00 にしてる意味ないしそれ。orz 2 #define SCM_SA…