LoginSignup
30
31

More than 5 years have passed since last update.

最近のRuby

Last updated at Posted at 2016-08-27
1 / 46

自己紹介

  • 高橋征義
  • 一般社団法人日本Rubyの会代表理事
  • 株式会社達人出版会
    • 3FのUSPさんの隣のブース
  • 13:50〜「Dynamic Typing再考」司会

Ruby最新情報


RubyKaigi 2016

RubyKaigi2016


現在の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
    • 例外 :new:

細かい高速化


細かい高速化

  • 内部の実装の見直し
  • 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

まとめ


まとめ

RubyKaigi2016


参考文献

30
31
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
31