新参者が口をはさんですいません。

問題は「何をRubyのコアとするのか」という定義です。

今の問題を2つに分解すると「どのプラットフォームでも共通に動くRuby」と
いうものをまず定義して、次に「Rubyの標準拡張ライブラリを定義する」とい
うものになります。

標準拡張ライブラリは、どのプラットフォームでもRubyのコアで動けば、どの
プラットフォームでも同じ機能を満たさなければいけない。これは言語に組み
入れられるわけですから、プラットフォーム依存ではいけないわけです。

もし、そうではなくて、プラットフォーム依存にするならば、「×××プラッ
トフォーム上での○○○機能を使うためのAPI拡張」とした位置付けで提供す
るべきでしょう。これは関数でもなんでもなく、単純にプラットホーム依存の
APIインタフェースです。動く時もあるし、動かない時もある。

簡単な例をあげましょう。nを法としてpのe乗を計算するpowm(power modulo) 
という関数を作る例です。(実際にnを法としてpのe乗を計算したいために
gmp_powmへのAPIが欲しいとかいうのを過去のメーリングリストの検索で見つ
けました)。

瞬時に思い付くのは次の2つです。

1) nを法としてpのe乗を計算するpowmをrubyで実装する

2) gmp_powmとのAPIを作る

前者は、どこでも動きます。後者はgmp_powmが動けば動きます(どこでも動く
保証はありません)。

もしやるならば、まず1を実装し、2をオプショナルで実装すべきでしょう。

ただし、現実にはSquare-and-Multiplyアルゴリズムでrubyコード実装すれば
十分に高速で、2を必要とする人はごくわずかでしょう。2を必要とするよう
な処理速度を必要とする人は、わざわざRubyで数値計算をするとは思えません。

ちなみにRubyコードでのpowm実装サンプルは

	http://h2np.net/sd/powm.rb

に入れておきます。

-- 
鈴 木 裕 信 (Hironobu SUZUKI)
E-Mail: hironobu / h2np.net
URL: http://h2np.net