Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Ruby 3.0.0 コネタ集

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 15 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Ruby 3.0.0 コネタ集 (20)

Publicité

Plus par Kazuhiro Nishiyama (20)

Plus récents (20)

Publicité

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

×