SlideShare a Scribd company logo
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

More Related Content

PDF
本番環境で使える実行コード記録機能
PDF
20131208 agile samuraibasecamp
PDF
マニアックなRuby 2.7新機能紹介
PDF
Rx入門
PDF
Rx Showcase
PDF
システム系論文輪講会20140806
PDF
Rubyにおけるトレース機構の刷新
KEY
Shelly
本番環境で使える実行コード記録機能
20131208 agile samuraibasecamp
マニアックなRuby 2.7新機能紹介
Rx入門
Rx Showcase
システム系論文輪講会20140806
Rubyにおけるトレース機構の刷新
Shelly

What's hot (20)

PDF
成長を加速する minne の技術基盤戦略
PPTX
Akka HTTP
PDF
Integral - New O/R Mapper for Common Lisp
PDF
はじめての Gatling
PDF
Reactive Kafka with Akka Streams
ODP
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
PDF
How to run P4 BMv2
KEY
Automation tech casual_talks_1_20120717
KEY
Web Operations and Perl kansai.pm#14
PDF
minneで学ぶクラウド脳
PDF
Mod mrubyについて
PPTX
Prometheus on AWS
PDF
Rails Testing on Fargate
PPTX
Crafting Rails4 Applications読み回 1. Creating Our Own Renderer
PDF
OSSの敵になるのもいいじゃない
PDF
いまさら聞けないselectあれこれ
PDF
ネットワークAPI のあれこれ (ENOG37)
KEY
Composer による依存管理 と Packagist によるライブラリの公開
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
PDF
Rust-DPDK
成長を加速する minne の技術基盤戦略
Akka HTTP
Integral - New O/R Mapper for Common Lisp
はじめての Gatling
Reactive Kafka with Akka Streams
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
How to run P4 BMv2
Automation tech casual_talks_1_20120717
Web Operations and Perl kansai.pm#14
minneで学ぶクラウド脳
Mod mrubyについて
Prometheus on AWS
Rails Testing on Fargate
Crafting Rails4 Applications読み回 1. Creating Our Own Renderer
OSSの敵になるのもいいじゃない
いまさら聞けないselectあれこれ
ネットワークAPI のあれこれ (ENOG37)
Composer による依存管理 と Packagist によるライブラリの公開
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Rust-DPDK
Ad

Similar to Ruby 3.0.0 コネタ集 (20)

PDF
人間たちとsystemd
PDF
Rubyな日々
PDF
Rubinius Under a Microscope
PDF
Ruby In Wheezy
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
PPT
JRuby on Rails
ODP
とっとるびー(2回目)発表資料
PDF
Ruby in Wheezy @ 関西闇Ruby
PDF
Ruby の制御構造とリテラルについて
PDF
Reactive Extensions v2.0
PDF
Ruby svn to git
PDF
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
PDF
JavascriptでRubyの作り方
KEY
capybara で快適なテスト生活を
PDF
nomlab_okayamaruby_slide
PDF
Ruby on cygwin (2019/8月号)
PPTX
120517 revert tomcat7
PDF
nadoka さんの m17n 対応のベストプラクティス
PDF
表参道.rb #1 Ruby Gold 2.1 に合格した話
PDF
Rails解説セミナー: リリースノート解説編
人間たちとsystemd
Rubyな日々
Rubinius Under a Microscope
Ruby In Wheezy
Ruby on Rails を用いたWEBアプリケーションの開発
JRuby on Rails
とっとるびー(2回目)発表資料
Ruby in Wheezy @ 関西闇Ruby
Ruby の制御構造とリテラルについて
Reactive Extensions v2.0
Ruby svn to git
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
JavascriptでRubyの作り方
capybara で快適なテスト生活を
nomlab_okayamaruby_slide
Ruby on cygwin (2019/8月号)
120517 revert tomcat7
nadoka さんの m17n 対応のベストプラクティス
表参道.rb #1 Ruby Gold 2.1 に合格した話
Rails解説セミナー: リリースノート解説編
Ad

More from Kazuhiro Nishiyama (20)

PDF
Ruby on Rails と私 at 関西Ruby会議08 After Party: 叡電LT 🚃
PDF
riscv64.rubyci.org internal at RubyKaigi 2025 LT
PDF
Rubyの日本語リファレンスマニュアルの現在と未来 (松江Ruby会議11) 2024-10-05
PDF
devise-two-factor gem を 4.x から 5.x に上げた話
PDF
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
PDF
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
PDF
lilo.linux.or.jp を buster から bullseye に上げた
PDF
小規模個人アプリをRails 7.xにバージョンアップした話
PDF
Ruby リファレンスマニュアル改善計画 2022 進捗報告
PDF
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
PDF
rubykaigi2022-rurema-history-and-future.pdf
PDF
qemuのriscv64にDebianを入れてみた
PDF
systemd 再入門
PDF
livedoor天気API終了対応
PDF
Wireguard 実践入門
PDF
workflow,job,step の使い分けの基準を考える
PDF
あまり知られていないRubyの便利機能
PDF
Dockerのオフィシャルrubyイメージとは?
PDF
チャットボットのススメ
PDF
Dokku の紹介
Ruby on Rails と私 at 関西Ruby会議08 After Party: 叡電LT 🚃
riscv64.rubyci.org internal at RubyKaigi 2025 LT
Rubyの日本語リファレンスマニュアルの現在と未来 (松江Ruby会議11) 2024-10-05
devise-two-factor gem を 4.x から 5.x に上げた話
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
lilo.linux.or.jp を buster から bullseye に上げた
小規模個人アプリをRails 7.xにバージョンアップした話
Ruby リファレンスマニュアル改善計画 2022 進捗報告
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
rubykaigi2022-rurema-history-and-future.pdf
qemuのriscv64にDebianを入れてみた
systemd 再入門
livedoor天気API終了対応
Wireguard 実践入門
workflow,job,step の使い分けの基準を考える
あまり知られていないRubyの便利機能
Dockerのオフィシャルrubyイメージとは?
チャットボットのススメ
Dokku の紹介

Ruby 3.0.0 コネタ集