わたなべです。

Yukihiro Matsumoto <matz / ruby-lang.org> writes:

:|削除とはちょっと違うんですが、
:|個人的にはdbmがところに依って、ndbmだったりgdbmだったり
:|BerkeleyDBだったりするのがちょと使い辛いです。
:|OSを上げたら、いつのまにかndbm互換ライブラリが、
:|gdbmからBerkeleyDBに変更されてたりするので。
:|
:|というわけでdbmはsdbmを使うというのはどうでしょう?
:|gdbmやBerkeleyDBが使いたいなら別にありますし、
:|OSに付属のndbmを使いたいという人はあまりいないと思うし。
:
:現状のdbmをndbmにするのはどうでしょう?
:gdbm対応とかは取り除いて。

これはndbmはgdbmやBerkeley DBの互換インターフェースは使わないという意味?
libcに含まれる*BSDはそのままでいいということかな。
となるとLinuxではndbm拡張ライブラリは存在しないことになりそう。
#本物のndbmを取ってくれば別だけど。

:で、その後の対応ですが、
:
:  * dbmはなくしてdbm.rbでsdbmへのラッパーを用意する
:  * dbm.rbはPythonのAnyDBMのようなラッパーにする
:
:などがよいかなと思ってます。

PythonのAnyDBMは知らないんですが、PerlのAnyDBM_Fileと似たよ
うなものですか?
  BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
  use AnyDBM_File;
のよう感じで、どれを優先的に使うか@ISAで制御できます。
いずれにしてもどれが使われるのか指定できる仕組みが必要でしょうね。

-- 
わたなべひろふみ