[Gauche-devel-jp] Re: soft-port

アーカイブの一覧に戻る

Shiro Kawai shiro****@lava*****
2004年 2月 22日 (日) 14:02:42 JST


From: Kimura Fuyuki <fuyuk****@nigre*****>
Subject: [Gauche-devel-jp] soft-port
Date: Sat, 21 Feb 2004 11:39:20 +0900

> At Fri, 23 Jan 2004 19:25:11 -1000 (HST),
> Shiro Kawai <shiro****@lava*****> wrote:
> > 
> > いやそもそもの問題は、base64-decodeがストリーム処理をできない
> > ためであることにに気づきました。
> > (iport -> oportはできるけど、pipe-portみたいなもので
> > つなげてゆく方法がない)
> > 長期的にはそっちを改善した方がよさそうです。
> 
> 実はこれ、message-digestをやったときに気づいていたんですが、そのときは
> よくわかってなかったので、Scheme的になにかうまい解決があるのかと思って
> 流してしまいました。なかったですね、やっぱり。

パイプのように動作するportというアイディアは、srfi-48 (Intermediate
Format Strings) の議論でもちょっと出ていました。
また、この方向でのportの汎用化は、Oleg Kiselyovらともちょっと話しています。
いずれにせよ、soft-portもしくはvirtual portの上に作る、というのは
正しい方向だと思います。

> ひっかかっているのはたぶんこんなところではないかと思います。
> 
> - Scm_MakeVirtualPortとScm_MakeBufferedPortのどっちでいくか。
> - どっちも入れるとしたら、APIをどうするか。
> - 効率の良い綺麗な実装は可能か。

その通りです。一応、どっちも入れたい方向。重視するのは
効率とわかりやすいAPI。

> - 「バッファになりえるもの」の抽象化をどうするか。

今、uvectorを書き直しています。arrayのback endにも使えるように
する方向。バッファ関係もそのへんで入れられないかと。
(mmap APIも付けたいんですが、メモリイメージを単にuvectorとして
見せるべきか特殊なメモリオブジェクトを使うべきか、また、uvector-ailas
等によるメモリ領域の共有を許した場合にGCとmunmapをどう絡めるか、
あたりが見えていません)。

もしよければ、SchemeレベルのAPIから「こんなのがあったらいい」
みたいなアイディア出しとかしてみて下さい。OO的にやるなら<port>を
継承可にしてport-getcみたいなメソッドをオーバロードさせるのが
綺麗なんだろうけど、効率はおもいっきり落ちそうだ…

--shiro






Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る