SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Language Update 2018 - Ruby
Kazuhiro NISHIYAMA
Learn Languages 2018
2018/08/26
Powered by Rabbit 2.2.1
自己紹介
西山 和広
Ruby のコミッター
twitter, github など: @znz
1/18
agenda
リリース間隔 について
2.4.0, 2.5.0 での変更点
2.4.0 での大きな非互換
2.5.0 での主な非互換
2.6.0 での大きな話
2/18
LLoT 以降のリリースなど
2016-08-27 LLoT (前回の Language Update)
2016-12-24 2.4.0
2017-03-31 2.1 EOL
2017-12-25 2.5.0
2018-03-31 2.2 EOL
2018 クリスマス 2.6.0 リリース予定
EOL は3年+年度末までが続いている
参考: https://bugs.ruby-lang.org/projects/ruby/wiki/
ReleaseEngineering 3/18
2.4.0, 2.5.0 での変更点
速くなりました
機能追加されました
といった話はいつものことなので省略
4/18
2.4.0, 2.5.0 での変更点
標準添付ライブラリの gem 化が進んだ
2.6.0 でもさらに進む予定
Thread#report_on_exception でスレッドが例外終
了時のバックトレース
2.4.0 で追加
2.5.0 でデフォルト true に
5/18
2.4.0 での大きな非互換
Unifying Fixnum and Bignum into Integer
詳細は RubyKaigi 2016 の発表を参照
http://rubykaigi.org/2016/presentations/tanaka_akr.html
6/18
Fixnum, Bignum とは?
実装の詳細で一般ユーザーにみせる必要はない
Fixnum: 32bit 環境なら 31bit 以下の整数が効率よ
く扱える
Bignum: 大きな整数もメモリーの許す限り扱える
普通のユーザーは区別する必要がないので
Integer に統合
7/18
影響
利点: シンプルになる
教える人にとっても勉強する人によっても良い
欠点: 非互換
特に拡張ライブラリーに影響
8/18
非互換の例
Sequel の DSL
add_column :column, Bignum → :Bignum
影響のあった拡張ライブラリ : オブジェクトをダ
ンプ/ロードするようなものがほとんどだった
ext/json, msgpack, syck, yajl, oj, ox, ruby-gnome2, etc.
2.4.0 リリース前に対応済み
9/18
Version Dependencies
json に対する pessimistic (悲観的な) version
dependency (~> 1.3)
1.3 以上 2.0 未満という意味
間接的にバージョン制限が入っていることが多かった
問題点
json 1.x の最新 (当時) 1.8.3 は ruby 2.4 非対応
対応済みの json 2.0.x がバージョン制限で入らない
10/18
解決
stdlib なライブラリーはバージョン依存をつけな
いのが推奨
https://www.hsbt.org/diary/20160829.html
結局 json 1.8.5 がリリースされて解決
https://www.hsbt.org/diary/20170112.html
11/18
2.5.0 での主な非互換
rescue/else/ensure が do/end ブロック内にも直接
書ける
トップレベルの定数検索は削除
2.4 以前:
IO::GC #=> warning: toplevel constant GC referenced by IO::GC
2.5 以降:
IO::GC #=> NameError (uninitialized constant IO::GC)
12/18
backtrace の順番
2.5.0 から新しい挙動:
$ ruby -r time -e 'Time.parse("")'
Traceback (most recent call last):
2: from -e:1:in `<main>'
1: from .../time.rb:370:in `parse'
.../time.rb:254:in `make_time': no time information in "" (ArgumentError)
状況によっては以前と同じ挙動:
$ ruby -r time -e 'Time.parse("")' 2>&1 | cat
.../time.rb:254:in `make_time': no time information in "" (ArgumentError)
from .../time.rb:370:in `parse'
from -e:1:in `<main>'
experimental なので今後の議論次第で変わるか
も?
参考: Feature #8661 https://bugs.ruby-lang.org/issues/
13/18
2.6.0 の大きな変更点の一部
safe level 廃止に向けた変更が進む
endless range : (1..)
JIT (Just-in-time) 対応が入る
14/18
safe level 廃止に向けた変更
$SAFE が 0 に戻せるようになる
Proc#call で切り替わらなくなる
15/18
endless range
(1..Float::INFINITY) や 1.step の代わりに
(1..)
when (1..) などではかっこが必要
16/18
JIT 対応
実行中に gcc や clang でコンパイルする
とりあえず仕組みが入った段階
プログラムによっては遅くなることもある
高速化などは今後の課題
17/18
まとめ
x.y.0 リリースは毎年クリスマス
EOL は3年+年度末までが続いている
2.4.0, 2.5.0 での変更点
2.4.0 での大きな非互換
json gem で起きた問題の話
2.5.0 での主な非互換
2.6.0 での大きな変更点の一部
safe level, endless range, JIT
18/18Powered by Rabbit 2.2.1

Mais conteúdo relacionado

Mais de Kazuhiro Nishiyama

workflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるworkflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるKazuhiro Nishiyama
 
あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能Kazuhiro Nishiyama
 
Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?Kazuhiro Nishiyama
 
チャットボットのススメ
チャットボットのススメチャットボットのススメ
チャットボットのススメKazuhiro Nishiyama
 
Action Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたAction Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたKazuhiro Nishiyama
 
最近のrubyのインストール方法
最近のrubyのインストール方法最近のrubyのインストール方法
最近のrubyのインストール方法Kazuhiro Nishiyama
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンドKazuhiro Nishiyama
 
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話Kazuhiro Nishiyama
 
boot2docker の format-me の話
boot2docker の format-me の話boot2docker の format-me の話
boot2docker の format-me の話Kazuhiro Nishiyama
 
lilo.linux.or.jp の話 (2017年12月)
lilo.linux.or.jp の話 (2017年12月)lilo.linux.or.jp の話 (2017年12月)
lilo.linux.or.jp の話 (2017年12月)Kazuhiro Nishiyama
 
How to specify `frozen_string_literal: true`
How to specify `frozen_string_literal: true`How to specify `frozen_string_literal: true`
How to specify `frozen_string_literal: true`Kazuhiro Nishiyama
 
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)Kazuhiro Nishiyama
 

Mais de Kazuhiro Nishiyama (20)

Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
 
livedoor天気API終了対応
livedoor天気API終了対応livedoor天気API終了対応
livedoor天気API終了対応
 
Wireguard 実践入門
Wireguard 実践入門Wireguard 実践入門
Wireguard 実践入門
 
workflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるworkflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考える
 
あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能
 
Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?Dockerのオフィシャルrubyイメージとは?
Dockerのオフィシャルrubyイメージとは?
 
チャットボットのススメ
チャットボットのススメチャットボットのススメ
チャットボットのススメ
 
Dokku の紹介
Dokku の紹介Dokku の紹介
Dokku の紹介
 
Action Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたAction Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみた
 
Ruby svn to git
Ruby svn to gitRuby svn to git
Ruby svn to git
 
Ruby 2.6 Update
Ruby 2.6 UpdateRuby 2.6 Update
Ruby 2.6 Update
 
最近のrubyのインストール方法
最近のrubyのインストール方法最近のrubyのインストール方法
最近のrubyのインストール方法
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンド
 
Certificate Transparency
Certificate TransparencyCertificate Transparency
Certificate Transparency
 
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
 
boot2docker の format-me の話
boot2docker の format-me の話boot2docker の format-me の話
boot2docker の format-me の話
 
ライセンス変更の話
ライセンス変更の話ライセンス変更の話
ライセンス変更の話
 
lilo.linux.or.jp の話 (2017年12月)
lilo.linux.or.jp の話 (2017年12月)lilo.linux.or.jp の話 (2017年12月)
lilo.linux.or.jp の話 (2017年12月)
 
How to specify `frozen_string_literal: true`
How to specify `frozen_string_literal: true`How to specify `frozen_string_literal: true`
How to specify `frozen_string_literal: true`
 
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)
 

Último

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Language update 2018 - ruby