Ruby1.9——いつ応用できますか.

2886 ワード

Ruby1.9 Ruby言語自体とコアクラスライブラリの修正を目的とし、1年以上の実験を経て、2007年のクリスマスにリリースされました.バージョンは1.9.0です.一部のRubyプログラマーはRuby 1を9のリリースはRubyの新しいバージョンに移行するシンボル的なイベントと見なされていますが、1.8バージョンと1.9バージョンの言語間の意図的な互換性がないと、既存のRubyコードが動作しないことがわかります.この発見は急速にruby-talkメールグループで議論された話題になった.実際の問題は、Ruby 1.9.0がリリースされた理由と、Ruby 1との理由です.8間の関係はRubyコミュニティの元老たちに完全に理解されていない.Matzは新しいバージョンがリリースされる数ヶ月前にruby-coreメールグループで明確な説明をしたことがあります.クリスマスの前日の投稿で、彼は書きました.
  • リリースのバージョンは1.9.0で、事前に宣言した1.9.1ではありません.これは,我々が期待したほど安定ではないが,すべての不互換性の修正が完了したことを示している.
  • 1.9バージョンは、以前のバージョンと互換性がありません.あなたのアプリケーションは正常に動作しないかもしれません.移植の方法(または移植ツール)は、第1版では提供されません.

  • 残念なことに、これらはruby-talkの公式の発行声明には現れなかった.
    Dave Thomasは1.9.0のリリース直後にブログ記事でRuby 1をどのように見て使用するかを示した.9の意見.彼の提案はRuby 1をインストールすることです.8同時にRuby 1を取り付ける.9,既存コードとの互換性のチェックを開始するRuby 1.9互換性
    最近、MatzがいつRuby 1を聞かれたのか.9が開発状態に達したとき、彼は言った.
    私たちは知らない.我々
    本当にこの日が早く来ることを望んでいます.しかし、これは非常に多くの要素に関連しています.唯一の良いニュースは、1.9の基準が前のクリスマスに基本的に確定したことだ.
    最終決定基準を除くRuby 1.9実用化はまた、Rubyアプリケーションの応用基盤である1.9の互換性バージョンに依存する.RailsコアチームはRuby 1の改善に取り組んでいる.9の互換性は、多くのgemsやプラグインの開発者も同様に努力しています.1.9互換性の実装こそ1.9.0リリースの真のフラグです.
    これらの開発者の中には、文書の形式でRuby 1を説明している人もいます.9コードへの影響.その中の2つはよくやった:1つはSam Rubyが正しいことについて
    REXMLの修正は互換性のある説明である.もう一つはJames Edward Gray IIの似たような文章で、中では
    FasterCVSのような努力がRuby 1を実現した.9標準ライブラリにおける旧版CSVへの置き換え.後者は、次のような価値のある経験とアドバイスも提供しています.
  • Ruby1.9キーワードthenの代わりにif、unless、case文で「:」を使用する方法を排除します.
  • いくつかの反射方法、例えばinstance_variablesとconstantsは、文字列配列ではなくシンボル配列を返します.
  • が文字列をインデックスする場合、例えば「abc」[0]は、整数ではなく単一文字の文字列を返します.
  • Enumerable#zipには2つの変更点があります.呼び出し時にブロックパラメータがない場合、戻りは配列ではなく反復器になります.Ruby 1では8中[1,2,3].zip(%w{a b})は[[1,'a'],[2,'b'],[3,nil]]を生成するが,Ruby 1である.9では、前述の変更により、[1,2,3].zip(%w{a b}).to_aの結果は[[1,'a'],[2,'b']]となり,すなわち余分な要素が受信者によって省略される.これはruby-coreメールグループで一連の議論があり、これらの修正の1つまたはすべてが1.9最終標準が発表される前に以前のように変更される可能性があるように見えます.

  • Ruby1.9はまた、ユーザのために、選択のために非常に奥深いRuby特性を多く示している.いくつかの特性は
    継続メカニズムなどは現在、コアを移動し、標準ライブラリの一部となっている.
    また、Ruby 1.9の作成
    エージェントクラスのサポートが向上しました.Ruby 1.9以前、一部のサードパーティrubyライブラリではJim Weirichの
    BlankSlateクラスまたはその派生版はもともと最小クラスを実現し、最小クラスはObjectの方法よりずっと少なく、ほとんどの方法がmethod_をトリガーする.missingのコールバック.BlankSlateは多くの継承方法をプログラム的に除去する.Ruby1.9新しいクラスがあります
    メソッドの最小集合を実現するBasicObject(!、 !=
    ==
    equal?
    singleton_method_added
    singleton_method_remove
    d和singleton_method_undefined)は,エージェントクラスの作成を簡略化した.一方、ruby-coreでは、より多くの方法が必要かどうか、例えば
    instance_evalの議論.
    要するにRuby 1.9の仕事は依然として進行中であり、それは依然として1つである.
    本番バージョンではなく開発バージョンです.1.9.0版のリリースはコミュニティに一定の衝撃を与え、「新しい」Rubyをより真剣に見るように促したが、Ruby 1.9の成熟とコミュニティはRuby 1を通じて準備することができる.9より多くの生産開発を行うには時間がかかります.デイブ・トーマスはこう言いました
    Matzは1.9バージョンを開発バージョンとしてリリースします.メリットの1つは、アプリケーションの移行に対応するのに十分な時間があることです.
    Ruby 1.9-When Will It be Production Ready