時の羅針盤@blog
オランダの生活、自身が行っているSagittarius Schemeの開発日誌、
その他雑多なことをつづってます。
Let's start Scheme
(Move to ...)
(はじめよう Scheme 0)
(はじめよう Scheme 1)
(はじめよう Scheme 2)
(はじめよう Scheme 3)
(はじめよう Scheme 4)
(はじめよう Scheme 5)
(はじめよう Scheme 6)
(はじめよう Scheme 7)
(はじめよう Scheme 8)
▼
2013-04-26
SRFI-111
›
今一なんの意味があるのかよく分からないSRFIなんだけど、実装するのが非常に簡単だから実装してみた。こんな感じ。 (library (srfi :111 boxes) (export :export-reader-macro box box? unbox se...
2013-04-23
脱BoehmGCへの道 実装編(4)
›
あきらめてはいないという意思表示w いや、実際あきらめてなくて、未だに戦ってるんだけど、これ書くということはどうしようかなぁという問題が発生したということでもある。 問題は、あるオブジェクトAの中にあるオブジェクトBがAより後に回収された際に起きるアドレス更新の問題。(ひ...
2013-04-19
R7RS ratification vote
›
The reason why this is English article is simply I don't know the proper translation of 'ratification vote' and felt it's a...
Sagittarius 0.4.4リリース
›
Sagittarius Scheme 0.4.4がリリースされました。今回のリリースはメンテナンスリリースです。 ダウンロード 修正された不具合 sqrtに巨大数を与えると非正確数が返される不具合が修正されました (atan 0.0)がエラーになる不具合が修正されま...
2013-04-18
TLVの構築
›
職業柄TLVとかスマートカードとかよく使うのだが、使う割りにパースするだけで構築するのが無かったので作ることにした。とりあえず現状で必要だったのはAPDUのデータの部分に必要なTLVの構築。 というか、作った。以下のように使える。 (import (tlv)) (-...
2013-04-13
健全なマクロ
›
探せば山ほど解説があるので、今更というかGoogle検索の妨害するだけな気がするけど。 Twitterで健全マクロの実装をされている方がいて、そういえばコンパイラの環境を重点に置いた解説記事ってあったかなぁと思ったのがきっかけ。たぶんどこかにあるだろうけど・・・ まずは以...
2013-04-04
OCI binding
›
If you are a professional programmer, then you can't avoid Oracle (or you need to be really lucky). I'm also one of them. I was us...
2013-03-26
脱BoehmGCへの道 実装編(3)
›
ちょぼちょぼ動くようになってきたのだが、やはり一筋縄ではいかないなぁと言うのが正直な感想。 とりあえず現状で問題になっているもの。 eq? なハッシュテーブル 昇格された領域にあるオブジェクトから参照されているオブジェクトの移動 1.はシンボル等のアドレスが変わると...
2013-03-23
詳解SBCL - Genesis
›
今日が土曜だということをすっかり忘れて「明日書く」なんて書いてしまった。自分の言動を曲げるのは好きじゃないので、家事の合間の時間で書く(土曜は以外にも忙しい)。 GenesisとはSBCLが ビルド時 に生成するCコードのことだと思えばいい。実際にビルドプロセスを走らせると...
2013-03-22
詳解SBCL - 世代別GC(3)
›
昨日はルートのマーキングまで書いたので、今日はいよいよ実際にオブジェクトを動かすところ、つまりSBCLの世代別GCの肝の部分に触れていこう。 【scavenge】 この処理がすべての処理の鍵であるといってもまぁ、過言ではないだろう。とりあえず中身を見ていこう。( src/r...
2013-03-21
Bignumの最適化
›
事の発端は以下の記事 #:g1: XCLがSBCLより速いところ 最終的に行き着くのはBignumのexptでそいつが遅いことは実は分かっていた(手元のマシンで測ると、Gaucheで20秒ちょっと、Sagittariusでは30秒以上かかっていた)。っで、まぁ、遅いのは気に...
詳解SBCL - 世代別GC(2)
›
今日はいよいよメモリの割付とGCについて。朝の暇な時間を使っているのでGCは最後まで書けないかも。 【メモリ割付】 SBCLではメモリの割付はリージョンを通して行うというのは昨日書いた。それをすると何がうれしいかという話である。 たとえばBoehm GCではメモリは要求サ...
2013-03-20
詳解SBCL - 世代別GC(1)
›
全てのSBCLソースリーディングをしている人の手助けになることを願って。 そろそろ詰め込んだものがページアウトしそうなのでちょっと外部記憶に書き出しておこう。タイトル的には仰々しいことを書くような煽りだが、実際はそうでもないのでかなり釣りです。また、誤りが含まれている可能性が...
2013-03-16
脱BoehmGCへの道 実装編(2)
›
昨晩BBCのコミックリリーフを見ながら(寝ながら)実装方針のようなものを考えていた。 とりあえず、SBCLがどのようにポインタ内のポインタを解決しているのかは考えないようにして(たぶんscavengeがその辺をうまいこと扱っているんだと思うけど)、まずは動くものを作ろうという...
2013-03-15
脱BoehmGCへの道 準備編(4)
›
実装編書いたのに準備編に逆戻りw コードリーディングに関するのは準備編にまとめようと思っているだけなので実装をしていないわけではないんだけど、妙な感じではある。 SBCLのコードを読んでてどうも納得がいかないというか、理解ができていない部分がある。オブジェクトのコピーであ...
Sagittarius 0.4.3 リリース
›
Sagittarius Scheme 0.4.3がリリースされました。今回のリリースはメンテナンスリリースです。 ダウンロード 【修正された不具合】 evalがunbound variable errorを投げる不具合が修正されました 閉じられたソケットに対してsoc...
2013-03-14
脱BoehmGCへの道 実装編(1)
›
SBCLの保守的世代別GCを参考( *1 )に自前GCをちょぼちょぼ実装している。メモリの割付はいけるがGCがうまいこと動いていないのですぐにSEGVる。 とりあえず現状ぶつかっている妙な挙動と実装上のメモ 【実装上のメモ】 SBCLではヒープに割り付けられたメモリは...
2013-03-06
脱BoehmGCへの道 与太話
›
SBCLのコードを読んでいると、コンパイラとかデバッガを作るということがいかに環境べったりのコードを書く必要があるかということを実感させられる。もちろん、それを #ifdef で区切るのか、もっと抽象化してやるのかは実装者の好みだろう。 コード読んでて感動したのが以下のコメン...
2013-03-05
脱BoehmGCへの道 準備編(3)
›
実際のコードの準備に入る。 Twitterでも呟いたのだが、SBCLは*_SPACE_(START|END)という奇妙な固定アドレスがあって、これらは環境(OS、アーキテクチャ)によって値が違う。Genesisというビルド時に走るソース生成のLispがこいつらを作るのだけど、...
2013-03-04
脱BoehmGCへの道 準備編(2)
›
Scheme48の世代別GCを読むと言ったな、あれは嘘だ・・・orz 引き続きSBCLの世代別GC。さすがにこの規模のコードを2,3時間でっていうのは無理があって、読んでるうちにいろいろ発見がある。 GC自体はcode/gc.lispで定義してあって、こいつが世界を止めて...
‹
›
Home
View web version