小迫さんにとって不快なことをしてしまったようだ。
先日私は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は終わった。