Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby 3.0.0 コネタ集
Search
Kazuhiro NISHIYAMA
March 24, 2021
Programming
0
240
Ruby 3.0.0 コネタ集
[Fukuoka.rb 200回 LT大会 (#202) - connpass](
https://fukuokarb.connpass.com/event/206956/)での発表資料です
。
Kazuhiro NISHIYAMA
March 24, 2021
Tweet
Share
More Decks by Kazuhiro NISHIYAMA
See All by Kazuhiro NISHIYAMA
lilo.linux.or.jpをbusterからbullseyeに上げた
znz
0
16
小規模個人アプリをRails 7.xにバージョンアップした話
znz
0
16
Ruby リファレンスマニュアル改善計画 2022 進捗報告
znz
0
74
Rubyist Magazine Reboot
znz
0
74
History of Japanese Ruby reference manual, and future
znz
0
1.4k
qemuのriscv64にDebianを入れてみた
znz
0
87
systemd 再入門
znz
0
260
livedoor天気API終了対応
znz
0
230
Wireguard 実践入門
znz
0
320
Other Decks in Programming
See All in Programming
オブジェクトしこう
okuramasafumi
2
130
ここ1~2年くらいで 使えるようになった(主要ブラウザーの最新版 がすべて対応した ) ウェブの新機能について ランダムに喋る!
myzkyy
9
6.5k
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
suzushin54
1
1.5k
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
820
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
[スクリプト] Swiftの型推論を学ぼう
omochi
0
120
自作ソフト(VMagicMirror)がVRMA対応してる話+実装のTips
bakudreameater
0
110
PHPでOfficeファイルを取り扱う! PHP Officeライブラリを プロダクトに組み込んだ話
hirobe1999
0
840
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
DDDはなぜ難しいのか / 良いコードの定義と設計能力の壁
pospome
25
7.6k
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
530
Featured
See All Featured
Bash Introduction
62gerente
604
210k
Infographics Made Easy
chrislema
237
18k
How STYLIGHT went responsive
nonsquared
92
4.7k
KATA
mclloyd
14
11k
A designer walks into a library…
pauljervisheath
199
23k
A better future with KSS
kneath
230
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
950
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
11
1.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Why Our Code Smells
bkeepers
PRO
330
56k
Robots, Beer and Maslow
schacon
PRO
154
7.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
28
46k
Transcript
Ruby 3.0.0 コネタ集 Kazuhiro NISHIYAMA Fukuoka.rb 200回 LT大会 (#202) 2021-03-24
株式会社Ruby開発 Powered by Rabbit 2.2.1
自己紹介 西山 和広 Ruby のコミッター twitter, github など: @znz 株式会社Ruby開発
www.ruby-dev.jp 1/14
はじめに LT なので内容はコネタ集です 2/14
Ractor 関連
Ractor で SEGV 3.0.0 では SEGV コア実装の experimental な機能は SEGV
バグがみつけやすいかも? % ruby -e Ractor.current.dup -e:1:in `dup': allocator undefined for Ractor (TypeError) from -e:1:in `<main>' 4/14
Ractor をまたぐ Thread Ractor 終了時なら Thread がそのまま 別 Ractor に移動可能
他の制限にひっかかって問題が起きる可 能性は未発見 % ruby -W0 -e 'r=Ractor.new{p Thread.new{loop{}}}; p r.take' #<Thread:0x00007fcf2586bfb8 -e:1 run> #<Thread:0x00007fcf2586bfb8 -e:1 run> 5/14
Ractor as global Queue main Ractor を Queue 代わりに使えるかも? %
ruby -e 'Ractor.current.send("foo"); p Ractor.receive' "foo" 6/14
shareable の影響あり ただし shareable ではないオブジェクトはコ ピーされてしまうので Queue 代わりには使いに くい %
ruby -e 'Ractor.current.send("foo".tap{|x|p x.object_id}); p Ractor.receive.tap{|x|p x.object_id}' 60 80 "foo" 7/14
互換性関連 のコネタ
frozen_string_literal frozen_string_literal: true magic comment 対応を 3.0.0 以降のみで確認すると対 応漏れする可能性あり %
ruby --enable=frozen_string_literal -e 'p "#{}".frozen?' false string interpolation (文字列補間) があると frozen にならなくなった 9/14
Warning[:deprecated] ruby -w や ruby -v で $VERBOSE = true
に すると Warning[:deprecated] も true にな るが、プログラム中で $VERBOSE = true にし ても Warning[:deprecated] は false のま ま % ruby -e 'p Warning[:deprecated]' false % ruby -w -e 'p Warning[:deprecated]' true % ruby -e '$VERBOSE=true; p Warning[:deprecated]' false 10/14
ruby -T $SAFE 関連が消えて -T オプションが消えた ruby 3.0: % ruby
-T0 -e 0 ruby: invalid option -T (-h will show valid options) (RuntimeError) ruby 2.7: % ruby -T0 -e 0 ruby: warning: ruby -T will be removed in Ruby 3.0 将来何か他の意味に使われるかも? 11/14
$SAFE / $KCODE 普通のグローバル変数になった (これも普通は使 わない) % ruby -e '$KCODE
= "foo"; p $KCODE' "foo" 12/14
TRUE / FALSE / NIL ついに消えたので普通の定数として利用可能 (普 通は使わない) % ruby
-e 'NIL = :dummy; p NIL.nil?' false 13/14
おわり Ractor はまだバグがありそうなので探 すと面白いかも 気付きにくい非互換もあるので複数 ruby バージョン対応するときには注意 長い間残っていて 3.0 で消えているもの
があります 14/14 Powered by Rabbit 2.2.1