rabbit-slide-znz-fukuokarb-200-lt 2021.3.24.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 546f21eeb475b633395dc321c3a846f9e23ec623b6138f9befe734ce1f68a9e7
4
+ data.tar.gz: 84e21c21293b0a8df080d00738b03f6a95597895f1a454d70c5900c70021e4bd
5
+ SHA512:
6
+ metadata.gz: 17becc9d92224e6397fd281cafb933594032a4d935072241b0f81718923be7827af5c7cb59c2418cd01094e822a952bad416242bc54923f56bb3091fa2df3a12
7
+ data.tar.gz: 17eade44f6e32c5675c723a8dadad619558f6aea6a4e8211035c8352a91a9e78a42ce1317295748609b9868838376ddab6fd20295c6e905016fe1ebca77b5570
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ ruby-3.0.md
data/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Ruby 3.0.0 コネタ集
2
+
3
+ [Fukuoka.rb 200回 LT大会 (#202) - connpass](https://fukuokarb.connpass.com/event/206956/)
4
+ での発表資料です。
5
+
6
+ ## 作者向け
7
+
8
+ ### 表示
9
+
10
+ rake
11
+
12
+ ### 公開
13
+
14
+ rake publish
15
+
16
+ ## 閲覧者向け
17
+
18
+ ### インストール
19
+
20
+ gem install rabbit-slide-znz-fukuokarb-200-lt
21
+
22
+ ### 表示
23
+
24
+ rabbit rabbit-slide-znz-fukuokarb-200-lt.gem
data/Rakefile ADDED
@@ -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("rabbit-theme-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
data/config.yaml ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: fukuokarb-200-lt
3
+ base_name: ruby-3.0
4
+ tags:
5
+ - ruby
6
+ presentation_date: '2021-03-24'
7
+ presentation_start_time:
8
+ presentation_end_time:
9
+ version: 2021.3.24.0
10
+ licenses: []
11
+ slideshare_id: ruby-300
12
+ speaker_deck_id: ruby-3-dot-0-0-konetaji
13
+ ustream_id:
14
+ vimeo_id:
15
+ youtube_id:
16
+ author:
17
+ markup_language: :markdown
18
+ name: Kazuhiro NISHIYAMA
19
+ email: zn@mbf.nifty.com
20
+ rubygems_user: znz
21
+ slideshare_user: znzjp
22
+ speaker_deck_user: znz
Binary file
data/ruby-3.0.md ADDED
@@ -0,0 +1,142 @@
1
+ # Ruby 3.0.0 コネタ集
2
+
3
+ author
4
+ : Kazuhiro NISHIYAMA
5
+
6
+ content-source
7
+ : Fukuoka.rb 200回 LT大会 (#202)
8
+
9
+ date
10
+ : 2021-03-24
11
+
12
+ institution
13
+ : 株式会社Ruby開発
14
+
15
+ allotted-time
16
+ : 5m
17
+
18
+ theme
19
+ : lightning-simple
20
+
21
+ # 自己紹介
22
+
23
+ - 西山 和広
24
+ - Ruby のコミッター
25
+ - twitter, github など: @znz
26
+ - 株式会社Ruby開発 www.ruby-dev.jp
27
+
28
+ # はじめに
29
+
30
+ LT なので内容はコネタ集です
31
+
32
+ # Ractor 関連
33
+
34
+ # Ractor で SEGV
35
+
36
+ - 3.0.0 では SEGV
37
+ - コア実装の experimental な機能は SEGV バグがみつけやすいかも?
38
+
39
+ ```
40
+ % ruby -e Ractor.current.dup
41
+ -e:1:in `dup': allocator undefined for Ractor (TypeError)
42
+ from -e:1:in `<main>'
43
+ ```
44
+
45
+ # Ractor をまたぐ Thread
46
+
47
+ - Ractor 終了時なら Thread がそのまま別 Ractor に移動可能
48
+ - 他の制限にひっかかって問題が起きる可能性は未発見
49
+
50
+ ```
51
+ % ruby -W0 -e 'r=Ractor.new{p Thread.new{loop{}}}; p r.take'
52
+ #<Thread:0x00007fcf2586bfb8 -e:1 run>
53
+ #<Thread:0x00007fcf2586bfb8 -e:1 run>
54
+ ```
55
+
56
+ # Ractor as global Queue
57
+
58
+ main Ractor を Queue 代わりに使えるかも?
59
+
60
+ ```
61
+ % ruby -e 'Ractor.current.send("foo"); p Ractor.receive'
62
+ "foo"
63
+ ```
64
+
65
+ # shareable の影響あり
66
+
67
+ ただし shareable ではないオブジェクトはコピーされてしまうので Queue 代わりには使いにくい
68
+
69
+ ```
70
+ % ruby -e 'Ractor.current.send("foo".tap{|x|p x.object_id});
71
+ p Ractor.receive.tap{|x|p x.object_id}'
72
+ 60
73
+ 80
74
+ "foo"
75
+ ```
76
+
77
+ # 互換性関連のコネタ
78
+
79
+ # frozen_string_literal
80
+
81
+ `frozen_string_literal: true` magic comment 対応を 3.0.0 以降のみで確認すると対応漏れする可能性あり
82
+
83
+ ```
84
+ % ruby --enable=frozen_string_literal -e 'p "#{}".frozen?'
85
+ false
86
+ ```
87
+
88
+ string interpolation (文字列補間) があると frozen にならなくなった
89
+
90
+
91
+ # Warning[:deprecated]
92
+
93
+ `ruby -w` や `ruby -v` で `$VERBOSE = true` にすると `Warning[:deprecated]` も `true` になるが、プログラム中で `$VERBOSE = true` にしても `Warning[:deprecated]` は `false` のまま
94
+
95
+ ```
96
+ % ruby -e 'p Warning[:deprecated]'
97
+ false
98
+ % ruby -w -e 'p Warning[:deprecated]'
99
+ true
100
+ % ruby -e '$VERBOSE=true; p Warning[:deprecated]'
101
+ false
102
+ ```
103
+
104
+ # ruby -T
105
+
106
+ `$SAFE` 関連が消えて `-T` オプションが消えた
107
+
108
+ ```
109
+ ruby 3.0:
110
+ % ruby -T0 -e 0
111
+ ruby: invalid option -T (-h will show valid options) (RuntimeError)
112
+
113
+ ruby 2.7:
114
+ % ruby -T0 -e 0
115
+ ruby: warning: ruby -T will be removed in Ruby 3.0
116
+ ```
117
+
118
+ 将来何か他の意味に使われるかも?
119
+
120
+ # $SAFE / $KCODE
121
+
122
+ 普通のグローバル変数になった (これも普通は使わない)
123
+
124
+ ```
125
+ % ruby -e '$KCODE = "foo"; p $KCODE'
126
+ "foo"
127
+ ```
128
+
129
+ # TRUE / FALSE / NIL
130
+
131
+ ついに消えたので普通の定数として利用可能 (普通は使わない)
132
+
133
+ ```
134
+ % ruby -e 'NIL = :dummy; p NIL.nil?'
135
+ false
136
+ ```
137
+
138
+ # おわり
139
+
140
+ - Ractor はまだバグがありそうなので探すと面白いかも
141
+ - 気付きにくい非互換もあるので複数 ruby バージョン対応するときには注意
142
+ - 長い間残っていて 3.0 で消えているものがあります
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-znz-fukuokarb-200-lt
3
+ version: !ruby/object:Gem::Version
4
+ version: 2021.3.24.0
5
+ platform: ruby
6
+ authors:
7
+ - Kazuhiro NISHIYAMA
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-03-24 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: |-
28
+ [Fukuoka.rb 200回 LT大会 (#202) - connpass](https://fukuokarb.connpass.com/event/206956/)
29
+ での発表資料です。
30
+ email:
31
+ - zn@mbf.nifty.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - ".rabbit"
37
+ - README.md
38
+ - Rakefile
39
+ - config.yaml
40
+ - pdf/fukuokarb-200-lt-ruby-3.0.pdf
41
+ - ruby-3.0.md
42
+ homepage: http://slide.rabbit-shocker.org/authors/znz/fukuokarb-200-lt/
43
+ licenses: []
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.7.6
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Ruby 3.0.0 コネタ集
65
+ test_files: []