[#30060] merge YARV — SASADA Koichi <ko1@...>

Hi,

20 messages 2006/12/31
[#30061] Re: merge YARV — SASADA Koichi <ko1@...> 2006/12/31

 ささだです。

[ruby-dev:30005] Re: digest/sha2.rb is installed in a wrong place

From: "Akinori MUSHA" <knu@...>
Date: 2006-12-11 04:05:12 UTC
List: ruby-dev #30005
At Sun, 10 Dec 2006 19:07:13 +0900,
sheepman wrote:
> 僕の手元の環境だけかも知れませんが、digest/sha2.rb が
> digest/digest/sha2.rb にインストールされています。
> 
> $ ls /usr/local/lib/ruby/1.9/digest/digest/
> sha2.rb
> 
> $ ls /usr/local/lib/ruby/1.8/digest/digest/
> sha2.rb
> 
> 本来は /usr/local/lib/ruby/1.x/digest/ にインストールされる
> べきなんだと思います。

 すみません。ミスです。修正をコミットしました。

> あと、最近の議論でrubyの開発ポリシー関して質問です。
> Digest::SHA1.new('a') がエラーになるように変更されました(Wed Oct 25 17:23:28 2006)。

 その変更はポリシー確立前(立てようという話も出る前)なので別です。
また、この変更を含むリリースはまだ出ておらず、特にアナウンスもして
いません。(もちろん ChangeLog/commit log には詳しく書いています)

> 最近の ruby-dev を読んでいても ruby の開発ポリシーが結局どう決まったのか
> 良く分からないのですが、こういった仕様変更を ruby_1_8 でもどんどん行うということでしょうか?

 今後は先に提案のポリシーに沿って行うことになりますので、同様の
変更を入れることは難しいと思います。

		*		*		*

 ご参考までに、先の変更の背景は次の通りです。

- RAAやRubyforgeに登録されているmessage digest関連のモジュールを
  見ると ext/digest のインターフェースを使っているものは皆無。
  OpenSSL::Digest とは似たインターフェースなのに実装を共有できて
  いない。つまり、旧来の実装側APIは再利用性に問題があった。

  そこでユーザ側インターフェースはほぼ保ちつつ、実装側APIを大幅に
  改修した。C用APIを改良し、Ruby用APIを新たに設けた。

- パラメータ付きのアルゴリズムに対応するため、コンストラクタを
  サブクラスに解放した。これによって、 OpenSSL::Digest のように
  アルゴリズム名を指定するものや、ビット長を指定するもの(SHA2等)
  などを Digest(::Class) のサブクラスにできるようになった。一方で
  一部互換性を失った。


 後方互換性は保持したかったのですが、 new に引数を与える使い方は
使用例が多くなく、比較的容易に使用箇所が検出できて書き換えも容易な
ため、 1.9 以降との互換性の方に重きを置いて 1.8 にも適用した次第
です。

 具体的な書き換え方法は以下です。

- Digest::MD5.new(str).hexdigest のような使い方はそもそも冗長で、
  Digest::MD5.hexdigest(str) で良い。(.to_s や .digest も同様)

- md = Digest::MD5.new(str) のような使い方は、申し訳ないが
  md = Digest::MD5.new.update(str) と書き換えて欲しい。


 なお、新しいAPIで Tiger と Whirlpool を実装してみたものが以下に
置いてあります。

	http://rubyforge.org/viewvc/?root=digest

 従来はRuby本体のソースなしに単独ビルドすることが難しかったので、
別配布できることは今回の成果と考えています。(よほど普及しない限り
標準配布に加える気はないので)

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Different eyes see different things,
    Different hearts beat on different strings --
       But there are times for you and me when all such things agree"

In This Thread

Prev Next