※3日目速報更新終了いたしました。

■Compacting GC in MRI/Aaron Patterson

Unicornは親-子プロセスなforking web server、親プロセスがRailsが読み込んでいる
Page Faultを減らせば早くなる->GCを減らせば早くなる->Compaction
最初Rubyでは不可能だと思い込んでいたが、なぜ不可能かと問われて具体的な答えが出せなかったので試した
簡単なのでTwo Finger Compactionというアルゴリズムを採用して実装
移動させられないオブジェクトもたくさんあるが、とはいえ現状で46%のオブジェクトは移動させられるので効果があった
Githubではunicornの子プロセス立ち上げ準備前にCompaction挟んでいる

できないと思ってても、自分の思い込みを問いただすこと大切
hckaye

■Tamashii – Create Rails IoT applications more easily/Henry Tseng

Rubyで手軽にIoTシステムが作れる”Tamashii”の紹介。
Rack-basedで動作し、Railsで実装できるようなので対応しているデバイスの物をつくるのには効率が良さそう。
Check-in systemの事例を紹介していたがシンプルな実装で実現できていた。
今後はBuzzer, RFID, LCD, keyboardあたりを中心にデバイスも増やして行くらしい。
@hisahiko

■WIP Irb 20th anniversary memorial session: Reish and Irb2

irbが20周年を迎えた。
irbは、Rubyの振る舞いを確かめたり、ライブラリなどのデバッグ用コンソールに使ったり(関数電卓代わりに使ったり)用途は様々だけど、irbはシェルじゃないのでirb上で生活してる人はいない。
そこでshellの上でRuby的な生活を送るためにReishが開発されてる。

Reishのコードは全部Rubyのコードに変換されて実行される。
Rubyのメソッドはビルトインコマンドとして扱われる。
パイプラインはドットに変換される。
Reishの開発の上でirbの今後の構想が見えてきた。

今後やりたいことは、REPL機能の拡充など。特に入力時にいろいろできないかと
マルチラインエディタ便利そう。
平野

■Pattern Matching in Ruby

Ruby でパターンマッチングをするお話。
parser まわりは Cで拡張。
パターンマッチ周りは Ruby で実装してる。

Elixir からヒントを得て、Ruby でもっと自然に、シンプルにパターンマッチングしたいということで、様々な工夫がされてる。
%p でパターンリテラル作って、=~ でマッチ。
また、 === は =~ のエイリアスにする。
%p([:ok, x]) =~ [:ok, 200]
(本番採用するならこの%p記法を変えなきゃかも?とのこと Ruby でパターンマッチできると便利そう!
平野

%p([:ok, x]) =~ [:ok,200]
のような記法で、パターンマッチングを実装した話。
https://github.com/yakitorii/pattern-match-ruby

https://github.com/k-tsj/pattern-match
というpattern-matchのgemはすでにあるが、もっとシンプルに書きたいというモチベーション
実験だからこの記法でも良いがパターンマッチを本番採用するならば、%pではない他の記号が必要かも
hckaye

■JRuby at 15 Years: Meeting the Challenges

・JRubyはピーク性能は良い。ただ、起動は遅いのでライフサイクルの短いものには向かない。
・CRubyとの互換性維持がツラミ(開発のほとんどの部分)
桂田

■Writing lint for ruby

Ruby向けLintがどう実装されているかの話。
多くのRuby用LIntはparserというgemを使っている。
https://github.com/whitequark/parser
基本的にASTに変換+Traverserパターン。
実際にLint書いてみるライブコーディングデモなど。
rubocop、デフォルトfalseだと誰もメンテしなくなりそう