mruby-spec進捗日記〜第二話〜

ここ最近の出来事をまとめてみた。

ruby/specの作者とPRを交換した

前回のブログを公開した所、ある日メンションがとんできた。

このときは知らなかったけど、CRubyコミッタでruby/specの作者の@eregonさんだった。

僕の英語力は幼稚園児もびっくりの低さなんだけど、そんなことは脇においてハートをぶつけてみた。 僕は英語をGitHubでおぼえたフシがある。 ひたすらmruby-specを作ったときに培った知見を書きなぐってみた。

github.com

ruby/mspecをforkしていたので、この差分もまとめてPRを出した。 mrubyでmspecを動かすための、最小限度の変更。

Support mruby fix #16 by ksss · Pull Request #17 · ruby/mspec · GitHub

このissueでいろいろフィードバックを送ると、あれよあれよとruby/mspecにcommitが積まれていった。 やはりすごい人はアクティブだ。

さらにmruby-spec側にもPRを送ってくれた。

github.com

このアクティブさには圧倒されるばかりだけど、こちらも最低限やりたいことを伝えたりしていろいろやり取りした。

とりあえずハートは伝わったっぽい。ありがとうGoogle翻訳。ありがとうWeblio

そんなこんなでmruby-specは細かい依存がどんどんなくなっていって、ruby/mspecのお作法に乗った作りにパワーアップした。 なにせ作者の助けを借りているのだ。

互いにフィードバックを送り合って高め合う姿勢がすごくよい。これだからOSSは楽しすぎてやめられない。

ライブラリにもフィードバックを送りまくった

https://github.com/iij/mruby-io/pull/65

https://github.com/mattn/mruby-require/pull/31

https://github.com/mattn/mruby-require/pull/32

https://github.com/mattn/mruby-require/pull/34

https://github.com/mattn/mruby-require/pull/35

mruby-specではmattn/mruby-requireをforkしていたので、この差分を還元すべく怒涛のmattn攻めを敢行。 もちろんすべてCRubyと同じ動作になるように配慮している。

Segmentation fault on GC · Issue #44 · mattn/mruby-thread · GitHub

この問題は1週間ぐらい悩んだけど、結局解決にまではいたらなかった。。。 おかげでthreadを使ったときのデバッグ方法や、GCの仕組みに詳しくなれたのでよしとする。

GCについては作者のblogが一番参考になった。

nari.hatenablog.com

mruby本体

https://github.com/mruby/mruby/issues/3214

はちょっとなおし方がわからず難しそう。。。 CRubyがどういうふうになっているのか調べなくちゃなあ。

https://github.com/mruby/mruby/pull/3217

breakのおもしろい挙動を見つけたのでなおしてみた。vm関連はムズカシイ。


もはやmruby-spec関係無い日記

ruby/specにも初PR出した

github.com

mruby-signalをいじっていたらSignal.signameのspecがないのを見つけたのでpatchを書いてみた。

windowsのsignalを試す環境がなくてぐぬってたけど、全環境で使える魔法の数字でなんとかなった。

ruby/rubyにもPR出した

github.com

ruby/specがないけど、じゃあruby/rubyではどうなってるのと思ってドキュメント見てみたら異常ケースが書いてなかったので追加してみた。

るりまはなおってた

github.com

「るりまも直さなきゃなあ」と思っていたらruby/rubyのPRを見たznzさんによって直されていた。 やはりすごい人はアクティブだ。