時の羅針盤@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-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で定義してあって、こいつが世界を止めて...
2013-03-03
脱BoehmGCへの道 準備編(1)
›
2があるかは知らない。(たぶんある、Scheme48で) SBCLは2種類のGCをサポートしていて、(たぶん)デフォルトでは保守的世代別GCが使われている。しかも、ランタイムの部分はCで書かれているといるので、これは読まなければならないだろうと思って読んだ(理解は微妙・・・)...
2013-03-02
脱BoehmGCへの道 計画編
›
別にBoehmGCに対してそこまで不満があるわけではないのだけど、Sagittariusは既にインストールされているライブラリ(Unix系環境)もしくは新規にダウンロードして特に手を入れることなく使う(Windows環境)という手法をとっているので、サポートしていない環境で動かす...
2 comments:
2013-02-21
リモートREPLとTLS
›
別に今のところ使う必要がないのだけど、あると便利かなと思ってリモートREPLを作ってみた。最初はYpsilonのtrunkにあったような簡単なのにしてたんだけど、そうするとreadがエラー投げまくりだったので、もう少しまともなプロトコルを使うようにした。以下のような感じで使える。...
2013-02-16
メモリ使用量
›
Sagittariusはかなりのメモリ喰いである。割と富豪的にメモリを使用するように書いてあるのでしょうがないのだが、テストを走らせるとメモリ不足で落ちることがしばしばある。実際の用途でこんなにメモリを大量に使うプログラムをまだ書いたことがないので、問題になるのかどうかも分からな...
2013-02-15
Sagittarius Scheme 0.4.2リリース
›
Sagittarius Scheme 0.4.2がリリースされました。今回のリリースはメンテナンスリリースです。また、R6RS準拠度が上がっています。 ダウンロード 修正された不具合 エクスポートされたシンボルが特定の場合に不可視になる不具合が修正されました。 マクロ...
2013-02-11
マクロ展開
›
Sagittariusのマクロ展開のタイミングを他のtoplevelと同じではなく、多少先んじて行うようにしたのだが、その際にふと以下のコードはR6RS的にはOKなのか気になった。 #!r6rs (library (foo) (export d) (import...
マクロ展開のタイミング
›
R6RSポータブルなコードを書く際に、書く処理系の癖を熟知してなんてことよほど暇じゃないと出来ないだろうということに気付いた。現状で一番問題になっているのはマクロ展開フェーズ周りの処理である。 Sagittariusはマクロ展開フェーズなんてまどろっこしいものを持たないのだが...
‹
›
Home
View web version