[#29994] NULLCMD — Takahiro Kambe <taca@...>
こんにちは。
5 messages
2006/12/05
[#30002] 1.8.5 Christmas release? — Urabe Shyouhei <shyouhei@...>
卜部です。1.8.5-p2リリースの際には御世話になりました。
9 messages
2006/12/09
[#30006] Re: 1.8.5 Christmas release?
— Yukihiro Matsumoto <matz@...>
2006/12/12
まつもと ゆきひろです
[#30007] Re: 1.8.5 Christmas release?
— Urabe Shyouhei <shyouhei@...>
2006/12/12
卜部です。
[#30021] Ruby 1.8.5-p11 preview — Urabe Shyouhei <shyouhei@...>
Hi,
9 messages
2006/12/18
[#30023] autoloading static linked extension — Nobuyoshi Nakada <nobu@...>
なかだです。
4 messages
2006/12/18
[#30039] CVS freeze — SASADA Koichi <ko1@...>
Hi,
8 messages
2006/12/20
[#30045] 1.8.5 の svn 移行でちょっと問題 — Urabe Shyouhei <shyouhei@...>
卜部です。
5 messages
2006/12/23
[#30050] BigDecimal#!= — Minero Aoki <aamine@...>
青木です。
6 messages
2006/12/25
[#30060] merge YARV — SASADA Koichi <ko1@...>
Hi,
20 messages
2006/12/31
[#30061] Re: merge YARV
— SASADA Koichi <ko1@...>
2006/12/31
ささだです。
[#30064] Re: merge YARV
— "U.Nakamura" <usa@...>
2007/01/02
こんにちは、なかむら(う)です。
[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"