From: "nobu (Nobuyoshi Nakada)" Date: 2013-01-09T16:58:53+09:00 Subject: [ruby-core:51331] [ruby-trunk - Bug #7678][Open] $_ and $~ are shared across Fibers halfway Issue #7678 has been reported by nobu (Nobuyoshi Nakada). ---------------------------------------- Bug #7678: $_ and $~ are shared across Fibers halfway https://bugs.ruby-lang.org/issues/7678 Author: nobu (Nobuyoshi Nakada) Status: Open Priority: Normal Assignee: Category: core Target version: ruby -v: r38748 $_ and $~ have thread local method scope, but are shared across fibers in same thread. $ ./ruby -v -e '/a/ =~ "a"; p $~; Fiber.new{/b/=~"b"; p $~}.resume; p $~' ruby 2.0.0dev (2013-01-09 trunk 38748) [x86_64-darwin11] # # # But, it is cleared at Fiber.start. $ ./ruby -v -e '/a/ =~ "a"; p $~; Fiber.new{p $~}.resume; p $~' ruby 2.0.0dev (2013-01-09 trunk 38748) [x86_64-darwin11] # nil nil These two behaviors seem mismatched. I think: * If they should be shared, then the latter example should show same MatchData 3 times. * If they should be cleared at starting fibers, those variables in the original fiber should be unchanged. -- http://bugs.ruby-lang.org/