Diary?

2009-10-22
Thu

(16:39)

Caty は今のところプロトタイプなので後方互換性とか完全に投げっぱなしジャーマンで開発しているのだけど、正式版になったらそうもいかない。既に檜山さんが書いていたと思うけど、後方互換性に関してはマイナーバージョンアップでは互換性を保ち、メジャーバージョンアップでは互換性を保証しないというポリシーになると思う。

ここでの問題は、そのバージョンアップ後の Caty モジュールの名前空間。今は全てのパッケージが caty をルートとした名前空間の中にあって、これらのモジュールは from caty.xxx import yyy みたいな形でインポートするわけだが、メジャーバージョンアップ後のモジュールとその前のモジュールが同じようにインポートできてしまうのはマズいよなあとも思う。互換性を保証しないっつってんだから、そもそも前のバージョンと同じようにインポートさせるのはどうよ。前のバージョン用に作ったコマンドを後のバージョンの環境にまるまるコピペして、それが単に動かないだけならいいんだけど、おかしな動作をしつつもエラーにならないとか最悪だからな。なので警告の意味でもモジュールインポート時に即エラーにするのは大事。

で、Python の標準モジュールを見ると popen や urllib あたりはモジュール名+番号で名前空間を分けているので、 caty もメジャーバージョンアップの度に名前空間を分けた方が良さそうだ。確か ANTLR も同じようにしてたはず。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。