パスワードを忘れた? アカウント作成
17123 story

Ruby 1.9.0 リリース 46

ストーリー by Acanthopanax
鋭意開発中 部門より

elfbin 曰く

/.jと同じく、Rubyも1.9.0をクリスマスリリースしていたようだ。当初予定していたRuby 1.9.1ではなく、Ruby 1.9.0となったのは、期待していたほど安定したものではないためとのこと。ただ、予定していた非互換な変更はすべて取り入れられたとのことである。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2007年12月27日 16時31分 (#1273006)
    これから読むところで申し訳ないんだけど、1.9について語っているそうなので、参考情報として

    まつもと×笹田、Ruby 1.9を語る [atmarkit.co.jp]
  • 真っ正直にフィボナッチ数を計算する関数を書いて試してみたが、1.8の処理時間の20%くらいで1.9は結果を出すね。

    • > 真っ正直にフィボナッチ数を計算する関数を書いて試してみたが、1.8の処理時間の20%くらいで1.9は結果を出すね。

      分かっていて書いているのでしょうが、
      フィボナッチ数の計算などはまさに1.9が高速化した部分なので、そういう結果になりますね。
      一般的なRubyアプリケーションがそれだけ早くなるかというと、まったくそうではありません。

      参考)
      まつもと×笹田、Ruby 1.9を語る [atmarkit.co.jp]
      高速なRuby用仮想マシンの開発(笹田耕一さん) [nabble.com]
      http://ustream.tv/channel/ylug-83th-kernel-reading-party [ustream.tv]
      --
      It's not who is right, it's who is left.
      親コメント
    • by Anonymous Coward
      自分で追試やればいいのだけど、安易に聞いちゃうと、20%の時間ってことは5倍も速いんですか?
    • by Anonymous Coward
      うちでコンパイルして調べてみた感じ、フィボナッチだとlua-5.1.2と同程度でした。(cygwin)
      少し意外。
      luaがレジスタマシン(というのかわからないけど)、rubyがスタックマシンということで、
      luaの方が速いと思っていたんですが。
      • by Anonymous Coward on 2007年12月28日 20時30分 (#1273511)
        スタックマシンはすんごくナイーブに実装したら確かに細かいスタック操作がたくさん入るのでオーバーヘッドが大きいですが、スタックポインタからn番めのデータに直接アクセス、などのインストラクションをつけた拡張スタックマシンを考えると、スタックの上の方を実質的にレジスタバンクとみなせることになります。もしVMのスタックポインタがネイティブレジスタに乗れば、n番目のデータにアクセスするのはCPUにとってレジスタ間接参照ひとつ。 一方レジスタマシンは、VMのレジスタをうまくネイティブレジスタにマップできれは速いですが、そうならないと結局VMのレジスタはCPUがネイティブのスタックポインタかフレームポインタを使って間接参照することになるので、拡張スタックマシンと同じことになります。 Rubyの場合はさらにスタックトップの2ワード程度をレジスタに載せるようにしてたと思うので、さらに差は出にくいのではないかと。
        親コメント
  • rake, gem (スコア:2, 参考になる)

    by Anonymous Coward on 2007年12月27日 12時43分 (#1272841)
    個人的にはYARVにはあまり興味なくて、
    - rakeとgemが標準付属。
    - Enumerable強化。enumerator組み込み。
    - m18n。
    - Hashが順序を保持。
    あたりが大きい。

    あと、何も知らずに1.9.0でRubyデビューしていらん苦労をする人が続出しそうなのが(ちょっと前から散見される)怖いな。

    • Re:rake, gem (スコア:4, 参考になる)

      by nanja (26525) on 2007年12月27日 20時40分 (#1273085) 日記

      rakeとgemが標準付属。
      mswin32版ではgemの利用まで苦労しました.

      まず,zlibが添付されていないので,zlibを入れていないとzlib.dllがありませんエラーがでます.
      http://www.zlib.net/ [zlib.net]からコンパイル済みzlib.dllを落として,
      パスの通ったところにファイルを置きます(ファイル名がzlib1.dllになっているので,zlib.dllにリネーム).

      これでgemは動くようになるのですが,そのままgem install hogehogeすると,
      ダウンロード先,インストール先がなぜかC:\LANの下になります.
      これは,ruby\lib\ruby\1.9.0\i386-mswin32のrbconfig.rbファイル内で,

      TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.9/i386-mswin32")
      となっているため,TOPDIRが正しく取得できていないのが原因のようです.

      TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.9.0/i386-mswin32")
      とすれば,ruby\lib\ruby\gems以下にインストールされました.

      あと,結局最後まで直らなかったのですが,gem update --systemがエラーで止まります.

      # gem update --system
      Updating RubyGems...
      Updating metadata for 26 gems from http://gems.rubyforge.org/ [rubyforge.org]
      ..........................
      complete
      Attempting remote update of rubygems-update
      Successfully installed rubygems-update-1.0.1
      1 gem installed
      Updating version of RubyGems to 1.0.1
      Installing RubyGems 1.0.1
      setup.rb:12:in `<main>': uninitialized constant Config (NameError)

      一応rbconfig.rb内で,Config = RbConfigとやってはいるようですが,
      なんでエラーになっているかはさっぱり分かりません...
      親コメント
    • Re:rake, gem (スコア:3, 参考になる)

      by Anonymous Coward on 2007年12月27日 13時17分 (#1272874)
      > 何も知らずに1.9.0でRubyデビューしていらん苦労をする人が続出しそう
      ちょっと前まではRuby公式から「ダウンロード」でたどれるWindows版Rubyバイナリのページ [ruby-lang.org]が
      • ruby1.6.4のzip
      • ruby1.6.8のzip
      • ruby1.8.6のzip
      • ruby1.9.0のzip
      という素敵でフラットな一覧になってて「よくわかんないけどとりあえず一番番号が大きくて新しそうな1.9.0をダウンロードしました」という惨事が少なからず起きてました
      現在はunstableというディレクトリが掘られてるので今後は少なくなるような気がします
      親コメント
      • Re:rake, gem (スコア:1, 参考になる)

        by Anonymous Coward on 2007年12月27日 15時05分 (#1272962)

        それでも、実際には一番新しいstableリリースである1.8.6-p111ではなくて、一番下にある1.8.6-p36をダウンロードしちまう輩は必ずいる。

        One-Click Ruby Installer [rubyforge.org]ユーザーなのでその手の話とは無関係なAC

        親コメント
    • by tietew (6130) on 2007年12月27日 13時20分 (#1272877) ホームページ
      m17n (multilingualization) な。18なのは i18n (internationalization)
      # ついでに l10n (localization)
      親コメント
    • Hashが順序を保持 (スコア:1, 参考になる)

      by Anonymous Coward on 2007年12月27日 13時21分 (#1272878)

      - m18n。
      - m17n。

      - Hashが順序を保持。
      それはたまたま実装がそうなっている [nagaokaut.ac.jp]というだけで、順序が保持されることを期待してはいけないということになっていたと思いますが。
      親コメント
      • by marinkarin (10618) on 2007年12月27日 15時31分 (#1272978)
        http://svn.ruby-lang.org/repos/ruby/tags/v1_9_0_0/doc/NEWS [ruby-lang.org] を見ると,
        o preserving item insertion order
        となってますので,Hashは公式に作成順序を覚えるようになったみたいですね。
        親コメント
        • by Lv5DeathMarch (30244) on 2007年12月27日 17時00分 (#1273027)
          >Hashの管理範囲から外れてるような。
          >別クラスにした方がよくね?

          マニュアルのほうを書き換えてしまったほうが早いでしょう。
          「rubyのHashは順序情報付き連想配列です。」と。

          Hashの取り出し順序が予測不能である事に依存したコードを書いている人が居ない限り問題ないですよね。
          --
          Lv5以下の社員全員にデスマーチ!
          親コメント
        • by Anonymous Coward
          え~、それは気持ち悪いというかやりすぎだと思うなぁ。
          Hashの管理範囲から外れてるような。
          別クラスにした方がよくね?
          • Re:Hashが順序を保持 (スコア:2, すばらしい洞察)

            by urandom (26447) on 2007年12月27日 17時46分 (#1273040)
            気持ちのいい悪いよりも、Hashの順序に依存したコードを書いてしまうと、
            何かの都合で1.9より前のRubyで動かすときにハマる恐れが高い。

            そういう心配をしなくていいくらい月日が経ってからじゃないと、結局
            このことはどうでも良いことではないだろうか。

            まぁ、デバッグとかするときに、少々加えた順序がわかって役立つかも
            しれない。

            親コメント
            • by Anonymous Coward
              まあまだ採用事例もまだ多くないし、古いrubyをいじらないといけない状況は今の時点の変更だと多くならないんじゃないかな?
              むしろこれが期待できるとエクセルを読み込んだとき{"sheet1"=>0,"sheet2"=>1,...}てなhashを作る必要なくなるからうれしい。
          • Re:Hashが順序を保持 (スコア:1, すばらしい洞察)

            by Anonymous Coward on 2007年12月27日 17時11分 (#1273031)
            rubyの大クラス主義に合致していて、自然だと思うけど。
            親コメント
            • by Anonymous Coward
              「大クラス主義」の基準が分からん。
              DelphiのTStringsを思い出してしまったぜ・・・。

              # というか、この辺はまつもとさんの感覚のみか
              • by Anonymous Coward
                > DelphiのTStringsを思い出してしまったぜ・・・。

                俺はPHPのarray関係のうんこ関数群を連想して、
                ゲロがでそうになった。
      • by Anonymous Coward
        http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/44409 [nagaokaut.ac.jp]
        までの流れを見る限り、CRuby(とJRuby)という「特定のRuby(言語)実装におけるHashではたまたま順序が保持されるようになった」だけという認識でいたほうがよさそうですね。
        言語仕様としては定めていない、と。(というかまともな言語仕様ないし)
    • by Anonymous Coward
      Hashが順序を保持するなら、PHPみたいにArrayと統合しちゃってもいいと思うんだけど。
      ある程度互換性はあきらめてるみたいだし。
    • by Anonymous Coward
      > - Hashが順序を保持。

      についてもう少し知りたい。キーの順序を保持?
      連想配列の実装が二分木になったとか、そういう話ですか?
      • by Anonymous Coward
        キーが常時ソートされた状態で保持されるという意味ではなく、each(など)で列挙すると追加した順序で出てくるという意味です。
        • by Anonymous Coward
          へー、どういう実装になっているんだろ。
          • へー、どういう実装になっているんだろ。

            [ruby-dev:24570] [nagaokaut.ac.jp] (と、 #1272878 [srad.jp] で紹介されている [ruby-list:43896] [nagaokaut.ac.jp] を含むスレッド) を読むと、ハッシュテーブルの各エントリーに、追加順で次のエントリーと前のエントリーへのポインターを付けて、二重リンクリストにしてあるようです。キーによる問合せをしたい場合はハッシュテーブルとして使い、要素を列挙したい場合はリストとして使います。

            この方法だと、当然ながら、必要な領域の増分は 1 要素あたり定数、追加や削除に必要な時間の増分は 1 操作あたり定数、列挙は 1 要素ごとに定数時間でできます。削除が不要な場合は、追加順を保持しない通常のハッシュテーブルのほかに追加順を保持するためだけの配列なりリストなりを持つことが多いと思いますが、この方法に比べて Ruby で採用している方法には削除も速いという利点があります。

            # Ruby はほとんど使っていません。

            親コメント
  • by Anonymous Coward on 2007年12月27日 12時46分 (#1272848)
    [ruby-list:44387] [ANN] Ruby 1.9.0 is released [nagaokaut.ac.jp]

    Subject: [ruby-list:44387] [ANN] Ruby 1.9.0 is released
    From: Yukihiro Matsumoto <matz ruby-lang.org>
    Date: Wed, 26 Dec 2007 00:02:14 +0900
    (snip)
                                    日付変わっちゃった
                                    まつもと ゆきひろ /:|)
    • by Anonymous Coward on 2007年12月27日 13時04分 (#1272866)
      それは、リリースではなくリリースについてのアナウンスでは?

      ChangeLog [ruby-lang.org]

      Tue Dec 25 23:33:55 2007  Yukihiro Matsumoto  <matz@ruby-lang.org>

          * development version 1.9.0 released.
      親コメント
      • by Anonymous Coward on 2007年12月27日 19時12分 (#1273065)
        FreeBSD界隈では、isoファイル配布時にftp鯖が混むので
        各地の公式mirrorに行き渡るまでリリースのアナウンスは
        控えられます。

        ついでに言うと

        バージョン管理システムに、RELEASE tagが付いた日
        isoファイルが作成されてftp鯖に置かれた日
        アナウンスがされた日

        と三つあります。
        親コメント
        • by Anonymous Coward
          > バージョン管理システムに、RELEASE tagが付いた日
          > isoファイルが作成されてftp鯖に置かれた日
          > アナウンスがされた日
          > と三つあります。

          なんか、「二人の記念日」がいっぱいあるという話を連想しました。伝聞なので、どなたか検証させてください。

          いや、あなたがたカップルの記念日の話ではなくて…。
          • by Anonymous Coward
            1.婚姻届を受理してもらった日
            2.結婚式・披露宴を行った日
            3.諸々の都合で式の後に新居に入居した日
      • by Anonymous Coward

        それは ChangeLog を書いた(後コミットした?)日時。
        release [excite.co.jp]」の意味から考えても、発表/公開した日時をリリース日時とするのが一般的では?

    • タイムゾーンが何かによるのかも。
      親コメント
  • by Anonymous Coward on 2007年12月27日 21時41分 (#1273100)
    安定板なのか不安定版なのかぐらいはアナウンスに書いて欲しいなあ。
    • by Anonymous Coward
      いつ、なにを、どんな形でリリースしても不安感はぬぐえません
      • 僕もそう思っているのですが、それほど遠くない将来、不安は解消するかもしれません。

        RubyConf 2007レポート [rubyist.net]のRubiniusのセクションにminispec.rbのことが書かれているのですが、これはRuby実装の挙動の正しさを確認するためのテストです。複数の実装のあることがこのようなテストの成熟を促し、いずれは「標準仕様」がフォーマルに定められるのではないか?という期待を抱かせます。Matz Rubyは後方互換性を重視してこなかったわけですが、今後は、バージョンによる差異が明確になり、「実装が仕様だ」という状態を脱するのではないか、と。

        # Common Lispのようになるのが理想かな。まずコミュニティベースで仕様が定められ、それを複数のベンダが実装する、というね。

        親コメント
  • by Anonymous Coward on 2007年12月27日 13時53分 (#1272898)
    おつ > 関係者
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...