Actions
Bug #7678
closed$_ and $~ are shared across Fibers halfway
Bug #7678:
$_ and $~ are shared across Fibers halfway
Description
=begin
((|$_|)) 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]
#<MatchData "a">
#<MatchData "b">
#<MatchData "b">
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]
#<MatchData "a">
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.
=end
Actions