小迫さんにとって不快なことをしてしまったようだ。
先日私はRuby 1.9に鬼車5.7.0をマージした。 これは別に企むところがあったわけではなくて、 5.xでしか提供されてない機能が欲しくなったのと、 今後実装するM17N機能の実装に5.xのAPIの方が都合が良かったから(UTF-16も処理できるし)。
で、この場合、Rubyは単なる鬼車の利用者なので、 鬼車のライセンスはBSDライクだし、利用する前に 相談するとか許諾を求めるとかは考えてなかった。
で、今後、Rubyの都合で鬼車本体に手を入れてもらう方が (我々にとって)都合が良いようなことがあったら、 その時点で相談しようと思っていたのだった。
だから決して「拒否のメールを受けることが僅かでも損になると思った」などということはない。小迫さんが我々の都合に合わせたくなければ(そして、そう思われるなら、それはもっともな拒否だと思う)、我々の方で勝手に追随するまでのことだから。
不快な思いをされたのであれば、その点については謝罪したい。
とはいえ、
これから私にできることは何もありませんので、今後何も起こりません。従って、この件について私にメール、コメント等を送らないでください。返事をしませんので。
ということなので、取りつく島はないのかも。
JRubyチームに引き続き、Eval PhoenixもRubiniusの開発のために雇用された(半分だけど)、という話。
Rubyがいろいろな人の生活を変えていくのは、驚きである。 ちょっと恐い気もする。
Rubyを使ったウィルス、なのかな。危険度は低いらしい。
っていうか、Windowsで/usr/local/binとかあるのってどういう状況? Cygwin?
RubyスレッドでMapReduceを実現した話。 あまりRubyのスレッドをいじめないでください。
Ruby 1.8までのスレッドはスタックを毎回まるごとコピーしているので コンテキストスイッチのコストがめちゃめちゃ高い。 「動く」とか「使える」とかは言えるけど、間違っても「性能が良くなる」なんてことは言えない。
でも、1.9(YARV)で落ちるってのはなんでだろう? ネーティブスレッドのスタック領域を使いきったかな?
ActorをRubyで実現するライブラリ。 ActorってのはScala風なんだろうか。まだ調べてないけど。
利用例はこんな感じになる。
require 'concurrent/actors' include Concurrent::Actors RequestGreeting = Struct.new :reply_to Greeting = Struct.new :value # spawning a new actor oracle = Actor.spawn do greeting = "Hello" loop do # guarded receive (does case-like matching via #===) Actor.receive do |f| f.when Greeting do |m| greeting = m.value.dup.freeze end # callback part 1 f.when RequestGreeting do |m| m.reply_to << Greeting[greeting] end end end end # sending a message to an actor oracle << Greeting["Howdy"] # getting a reference to the current actor current = Actor.current # callback part 2 oracle << RequestGreeting[current] Actor.receive do |f| f.when Greeting do |m| puts "#{ m.value }, Bill!" end end
結構、気持ちのいいAPIである。性能はどうだろう。 現時点ではあんまり期待できないかな。将来に期待か。
作業中。とりあえずstring.cは終わった。