自己紹介
- 高橋征義
- 一般社団法人日本Rubyの会代表理事
- 株式会社達人出版会
- 3FのUSPさんの隣のブース
- 13:50〜「Dynamic Typing再考」司会
Ruby最新情報
RubyKaigi 2016
現在のRuby
Ruby 2.3.1
昨年紹介済み
現在開発中のRuby
Ruby 2.4.0
2.4のステータス
2.4.0 preview 1がリリース (2016/06/20)
Ruby 2.4.0 preview 1のインストール
Ruby 2.4.0 preview 1のインストール
- ソースからインストールする
- rbenvのpreview用を使う
brew reinstall ruby-build --HEAD
rbenv install 2.4.0-preview1
rbenv local 2.4.0-preview1
Ruby 2.4の変更点
基本的に地味
派手な奴は3.0に期待
まだ決定ではない
リリーススケジュールは後ほど
Ruby 2.4の変更点
- FixnumとBignumがIntegerに統合
- String#{downcase,upcase,capitalize}のUnicode対応
- 後置rescueの構文
- Enumerable#sum, Array#sum
- Regexp#match? の導入
- CGI.unescape 高速化
- スレッド内で例外処理の向上
FixnumとBignumがIntegerに統合
FixnumとBignumがIntegerに統合
- 要するに内部実装の違い、という見せ方に変わる
- 普通に利用している分にはあまり問題にならない
- C拡張ライブラリが死ぬ
- 現状では即死するようになっている
- 2.4.0リリース時には?
String#{downcase,upcase,capitalize}のUnicode対応
String#{downcase,upcase,capitalize}のUnicode対応
- 今まではASCIIの範囲内では正しく動作
- 広くUnicodeに対応できるように
後置rescueの構文
後置rescueの構文
- a = Date.parse "foo" rescue nil
- a = Date.parse("foo") rescue nil
- 構文のバグ?
- おそらく広く使われてないだろう、という想定による非互換
Enumerable#sum, Array#sum
Enumerable#sum, Array#sum
- 今までは各種ライブラリ側で実装
- 2.4で標準に
- 浮動小数点数の情報落ちが発生しないアルゴリズムを採用
- Array#inject(:+)だと誤差がたまるので注意
Regexp#match? の導入
Regexp#match? の導入
- MatchDataを生成するのが案外重い
- true/falseのみ返すので軽い
CGI.unescape 高速化
CGI.unescape 高速化
- Cで再実装
スレッド内での例外処理の向上
スレッド内での例外処理の向上
- スレッドで例外が発生した場合
- 無視
- abort
- 例外
細かい高速化
細かい高速化
- 内部の実装の見直し
- lambdaが速くなったりとか
今後の予定
今後の予定
- 2016/9 Preview 2
- 2016/11 Preview 3
- 2016/12 Release Candidate
- 2016/12/25 Release
CRuby以外のRuby
CRuby以外のRuby
- JRuby
- Rubinius
- mruby
- Opal
JRuby
- JVMで動作
- JRuby 9000 (9.1.2.0)
- JRuby on Rails
- JRuby + Truffle
Rubinius
- Ruby + C++で実装
- Rubinius 3.56
- Rubinius X
- Rubinius. Inc.
- Rubinius Compute
mruby
- 何かに組み込んで使う
- mruby 1.2.0 (2015/11/18)
- mrbgems
- mruby CLI
- H2O
Opal
- AltJS
- Opal v0.10.1
- Playground / TryRuby v4
- Volt
- Menilite
まとめ
まとめ
- RubyKaigi 2016、ご参加お待ちしております
参考文献
- https://www.ruby-lang.org/en/news/2016/06/20/ruby-2-4-0-preview1-released/
- https://github.com/ruby/ruby/blob/v2_4_0_preview1/NEWS
- https://blog.blockscore.com/new-features-in-ruby-2-4/
- https://speakerdeck.com/hsbt/high-performance-tdiary
- https://bugs.ruby-lang.org/issues/12512
- https://github.com/rbenv/ruby-build/issues/972
- https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24
- http://jruby.org/
- http://rubinius.com/
- http://mruby.org/
- http://opalrb.org/