From: Akinori MUSHA Date: 2002-04-08T23:17:05+09:00 Subject: [ruby-dev:16790] Ruby Shim  1.7 early access kit という仮称で提案した構想ですが、先ほど shim/ に最初のスケッチを import し、正式にスタートしました。 http://www.ruby-lang.org/~knu/cgi-bin/cvsweb.cgi/shim/  古いバージョンの Ruby に新しいバージョンで導入された新機能や 新モジュールを付加・提供するものです。ちょうど詰め木の役割をする ことから、「Ruby Shim」と名付けました。  まずは、 ruby 1.6 に 1.7 の新機能やモジュールを補完するものを 作ります。実装において、以下のようなポリシーで行きたいと思います。 - やりすぎない。完璧に実装するにはコストが掛かりすぎるという場合、 あきらめてドキュメントに制限事項を書く。(ケースによっては実行時 コストにも配慮する) - 後方互換性にも留意する。既定の動作は変えずに、機能を拡張または 付加する。(変えてしまうと、 ruby 1.6 のスクリプトから気軽に 使えなくなってしまう) - 名前空間を汚染しないようにする。既存のメソッドを退避するときは 「__rubyNN_」とプレフィックスを付ける。(単に _ や __ だと衝突の 危険が高い) - ちゃんとドキュメントとテストをコードに合わせて更新する。 (テストは 1.6 と 1.7 の両方で行う) 今のところ、サンプルとして Dir::chdir() の拡張だけ入れてあります。 徐々に充実させていきましょう。  とにかく完璧は目指しません。おいしいところ、やりやすいところを つまみ食いで持ってきます。たとえ不完全でも、ドキュメントをしっかり しておけば POLS の面からも問題はありません。  おっと、肝心の使い方はというと # 全部使う場合 begin require 'features/ruby18' rescue LoadError; end # 一部を選択的に使う場合 begin require 'features/ruby18/dir' rescue LoadError; end # あとはインストールされた機能を普通に使うだけ Dir.chdir("foo") { puts Dir.pwd } という具合です。当然ながら ruby18 は ruby 1.7 以上では不要なので、 shim/ruby16 以下のコードは ruby 1.6 専用で OK です。  そういうわけで、コードや要望を募集します。ドキュメントおよび テストが必須ですが、ドキュメントについては適宜英訳しますので、 日本語で構いません。よろしくお願いします。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "Somewhere out of a memory.. of lighted streets on quiet nights.."