Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ruby 3.0.0 コネタ集

[Fukuoka.rb 200回 LT大会 (#202) - connpass](https://fukuokarb.connpass.com/event/206956/)での発表資料です。

  • Be the first to comment

  • Be the first to like this

Ruby 3.0.0 コネタ集

  1. 1. Ruby 3.0.0 コネタ集 Kazuhiro NISHIYAMA Fukuoka.rb 200回 LT大会 (#202) 2021-03-24 株式会社Ruby開発 Powered by Rabbit 2.2.1
  2. 2. 自己紹介 西山 和広 Ruby のコミッター twitter, github など: @znz 株式会社Ruby開発 www.ruby-dev.jp 1/14
  3. 3. はじめに LT なので内容はコネタ集です 2/14
  4. 4. Ractor 関連
  5. 5. 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
  6. 6. 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
  7. 7. Ractor as global Queue main Ractor を Queue 代わりに使えるかも? % ruby -e 'Ractor.current.send("foo"); p Ractor.receive' "foo" 6/14
  8. 8. 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
  9. 9. 互換性関連 のコネタ
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. $SAFE / $KCODE 普通のグローバル変数になった (これも普通は使 わない) % ruby -e '$KCODE = "foo"; p $KCODE' "foo" 12/14
  14. 14. TRUE / FALSE / NIL ついに消えたので普通の定数として利用可能 (普 通は使わない) % ruby -e 'NIL = :dummy; p NIL.nil?' false 13/14
  15. 15. おわり Ractor はまだバグがありそうなので探 すと面白いかも 気付きにくい非互換もあるので複数 ruby バージョン対応するときには注意 長い間残っていて 3.0 で消えているもの があります 14/14 Powered by Rabbit 2.2.1

×