rabbit-slide-znz-language-update-2018-ruby 2018.08.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 269748b1afd7026c9a1b47ab3ac833dd14a0899be40ce0c98990bda6c42cc3dd
4
+ data.tar.gz: '0084c682748bdc76b919ce905eb8b91e95a617785f724ce4e228f205970fa7de'
5
+ SHA512:
6
+ metadata.gz: bd109557571d759fce5f6674bc478b7f796141f1d81f86cd4493ebb94d57fe436917c3d235f442db880400b3978ed998f1928794b0b9e2aab8ecd24a6a0c6f70
7
+ data.tar.gz: '0682f399654b7ff50199801110db69b031318676963942bc75908842585290d7e0fe1b44605d6c5853ffa167c38e3ebe4e53e3c68c8e47bfcb92d4f0e7ae6b72'
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ language-update-2018-ruby.md
@@ -0,0 +1,23 @@
1
+ # Language Update 2018 - Ruby
2
+
3
+ [Learn Languages 2018](https://connpass.com/event/95443/) の Language Update の Ruby です。
4
+
5
+ ## 作者向け
6
+
7
+ ### 表示
8
+
9
+ rake
10
+
11
+ ### 公開
12
+
13
+ rake publish
14
+
15
+ ## 閲覧者向け
16
+
17
+ ### インストール
18
+
19
+ gem install rabbit-slide-znz-language-update-2018-ruby
20
+
21
+ ### 表示
22
+
23
+ rabbit rabbit-slide-znz-language-update-2018-ruby.gem
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("YOUR THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: language-update-2018-ruby
3
+ base_name: language-update-2018-ruby
4
+ tags:
5
+ - ruby
6
+ presentation_date: 2018/08/26
7
+ version: 2018.08.26
8
+ licenses: []
9
+ slideshare_id: language-update-2018-ruby
10
+ speaker_deck_id: language-update-2018-ruby
11
+ ustream_id:
12
+ vimeo_id:
13
+ youtube_id:
14
+ author:
15
+ markup_language: :markdown
16
+ name: Kazuhiro NISHIYAMA
17
+ email: zn@mbf.nifty.com
18
+ rubygems_user: znz
19
+ slideshare_user: znzjp
20
+ speaker_deck_user: znz
@@ -0,0 +1,170 @@
1
+ # Language Update 2018 - Ruby
2
+
3
+ author
4
+ : Kazuhiro NISHIYAMA
5
+
6
+ content-source
7
+ : Learn Languages 2018
8
+
9
+ date
10
+ : 2018/08/26
11
+
12
+ allotted-time
13
+ : 10m
14
+
15
+ theme
16
+ : lightning-simple
17
+
18
+ # 自己紹介
19
+
20
+ - 西山 和広
21
+ - Ruby のコミッター
22
+ - twitter, github など: @znz
23
+
24
+ # agenda
25
+
26
+ - リリース間隔 について
27
+ - 2.4.0, 2.5.0 での変更点
28
+ - 2.4.0 での大きな非互換
29
+ - 2.5.0 での主な非互換
30
+ - 2.6.0 での大きな話
31
+
32
+ # LLoT 以降のリリースなど
33
+
34
+ - 2016-08-27 LLoT (前回の Language Update)
35
+ - 2016-12-24 2.4.0
36
+ - 2017-03-31 2.1 EOL
37
+ - 2017-12-25 2.5.0
38
+ - 2018-03-31 2.2 EOL
39
+ - 2018 クリスマス 2.6.0 リリース予定
40
+ - EOL は3年+年度末までが続いている
41
+ - 参考: <https://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering>
42
+
43
+ # 2.4.0, 2.5.0 での変更点
44
+
45
+ - 速くなりました
46
+ - 機能追加されました
47
+
48
+ といった話はいつものことなので省略
49
+
50
+ # 2.4.0, 2.5.0 での変更点
51
+
52
+ - 標準添付ライブラリの gem 化が進んだ
53
+ - 2.6.0 でもさらに進む予定
54
+ - `Thread#report_on_exception` でスレッドが例外終了時のバックトレース
55
+ - 2.4.0 で追加
56
+ - 2.5.0 でデフォルト true に
57
+
58
+ # 2.4.0 での大きな非互換
59
+
60
+ - Unifying Fixnum and Bignum into Integer
61
+ - 詳細は RubyKaigi 2016 の発表を参照
62
+ - <http://rubykaigi.org/2016/presentations/tanaka_akr.html>
63
+
64
+ # Fixnum, Bignum とは?
65
+
66
+ - 実装の詳細で一般ユーザーにみせる必要はない
67
+ - Fixnum: 32bit 環境なら 31bit 以下の整数が効率よく扱える
68
+ - Bignum: 大きな整数もメモリーの許す限り扱える
69
+ - 普通のユーザーは区別する必要がないので Integer に統合
70
+
71
+ # 影響
72
+
73
+ - 利点: シンプルになる
74
+ - 教える人にとっても勉強する人によっても良い
75
+ - 欠点: 非互換
76
+ - 特に拡張ライブラリーに影響
77
+
78
+ # 非互換の例
79
+
80
+ - Sequel の DSL
81
+ - `add_column :column, Bignum` → `:Bignum`
82
+ - 影響のあった拡張ライブラリ : オブジェクトをダンプ/ロードするようなものがほとんどだった
83
+ - ext/json, msgpack, syck, yajl, oj, ox, ruby-gnome2, etc.
84
+ - 2.4.0 リリース前に対応済み
85
+
86
+ # Version Dependencies
87
+
88
+ - json に対する pessimistic (悲観的な) version dependency `(~> 1.3)`
89
+ - 1.3 以上 2.0 未満という意味
90
+ - 間接的にバージョン制限が入っていることが多かった
91
+ - 問題点
92
+ - json 1.x の最新 (当時) 1.8.3 は ruby 2.4 非対応
93
+ - 対応済みの json 2.0.x がバージョン制限で入らない
94
+
95
+ # 解決
96
+
97
+ - stdlib なライブラリーはバージョン依存をつけないのが推奨
98
+ <https://www.hsbt.org/diary/20160829.html>
99
+ - 結局 json 1.8.5 がリリースされて解決
100
+ <https://www.hsbt.org/diary/20170112.html>
101
+
102
+ # 2.5.0 での主な非互換
103
+
104
+ - rescue/else/ensure が do/end ブロック内にも直接書ける
105
+ - トップレベルの定数検索は削除
106
+
107
+ ```
108
+ 2.4 以前:
109
+ IO::GC #=> warning: toplevel constant GC referenced by IO::GC
110
+ 2.5 以降:
111
+ IO::GC #=> NameError (uninitialized constant IO::GC)
112
+ ```
113
+
114
+ # backtrace の順番
115
+
116
+ 2.5.0 から新しい挙動:
117
+
118
+ ```
119
+ $ ruby -r time -e 'Time.parse("")'
120
+ Traceback (most recent call last):
121
+ 2: from -e:1:in `<main>'
122
+ 1: from .../time.rb:370:in `parse'
123
+ .../time.rb:254:in `make_time': no time information in "" (ArgumentError)
124
+ ```
125
+
126
+ 状況によっては以前と同じ挙動:
127
+
128
+ ```
129
+ $ ruby -r time -e 'Time.parse("")' 2>&1 | cat
130
+ .../time.rb:254:in `make_time': no time information in "" (ArgumentError)
131
+ from .../time.rb:370:in `parse'
132
+ from -e:1:in `<main>'
133
+ ```
134
+
135
+ - experimental なので今後の議論次第で変わるかも?
136
+ - 参考: Feature #8661 <https://bugs.ruby-lang.org/issues/8661>
137
+
138
+ # 2.6.0 の大きな変更点の一部
139
+
140
+ - safe level 廃止に向けた変更が進む
141
+ - endless range : `(1..)`
142
+ - JIT (Just-in-time) 対応が入る
143
+
144
+ # safe level 廃止に向けた変更
145
+
146
+ - `$SAFE` が 0 に戻せるようになる
147
+ - `Proc#call` で切り替わらなくなる
148
+
149
+ # endless range
150
+
151
+ - `(1..Float::INFINITY)` や `1.step` の代わりに `(1..)`
152
+ - `when (1..)` などではかっこが必要
153
+
154
+ # JIT 対応
155
+
156
+ - 実行中に gcc や clang でコンパイルする
157
+ - とりあえず仕組みが入った段階
158
+ - プログラムによっては遅くなることもある
159
+ - 高速化などは今後の課題
160
+
161
+ # まとめ
162
+
163
+ - x.y.0 リリースは毎年クリスマス
164
+ - EOL は3年+年度末までが続いている
165
+ - 2.4.0, 2.5.0 での変更点
166
+ - 2.4.0 での大きな非互換
167
+ - json gem で起きた問題の話
168
+ - 2.5.0 での主な非互換
169
+ - 2.6.0 での大きな変更点の一部
170
+ - safe level, endless range, JIT
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-znz-language-update-2018-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 2018.08.26
5
+ platform: ruby
6
+ authors:
7
+ - Kazuhiro NISHIYAMA
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-08-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: "[Learn Languages 2018](https://connpass.com/event/95443/) の Language
28
+ Update の Ruby です。"
29
+ email:
30
+ - zn@mbf.nifty.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - ".rabbit"
36
+ - README.md
37
+ - Rakefile
38
+ - config.yaml
39
+ - language-update-2018-ruby.md
40
+ - pdf/language-update-2018-ruby-language-update-2018-ruby.pdf
41
+ homepage: http://slide.rabbit-shocker.org/authors/znz/language-update-2018-ruby/
42
+ licenses: []
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.7.6
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: Language Update 2018 - Ruby
64
+ test_files: []