[#24105] [Bug #1711] Marshal Failing to Round-Trip Certain Recurisve Data Structures — Run Paint Run Run <redmine@...>

Bug #1711: Marshal Failing to Round-Trip Certain Recurisve Data Structures

9 messages 2009/07/01

[#24116] [Bug #1715] Numeric#arg for NaN is Inconsistent Across Versions — Run Paint Run Run <redmine@...>

Bug #1715: Numeric#arg for NaN is Inconsistent Across Versions

10 messages 2009/07/02

[#24240] [Bug #1755] IO#reopen Doesn't Fully Associate with Given Stream on 1.9; Ignores pos on 1.8 — Run Paint Run Run <redmine@...>

Bug #1755: IO#reopen Doesn't Fully Associate with Given Stream on 1.9; Ignores pos on 1.8

8 messages 2009/07/09

[#24321] [Bug #1773] Gem path doesn't honor user gem? — Lin Jen-Shin <redmine@...>

Bug #1773: Gem path doesn't honor user gem?

12 messages 2009/07/14

[#24390] [Feature #1784] More encoding (Big5 series) support? — Lin Jen-Shin <redmine@...>

Feature #1784: More encoding (Big5 series) support?

12 messages 2009/07/16

[#24467] Re: [ruby-cvs:31226] Ruby:r24008 (ruby_1_8_6): Removed private on to_date and to_datetime. — Urabe Shyouhei <shyouhei@...>

Hello.

10 messages 2009/07/21

[#24472] [Feature #1800] rubygems can replace system executable files — Kazuhiro NISHIYAMA <redmine@...>

Feature #1800: rubygems can replace system executable files

13 messages 2009/07/21

[#24530] [Feature #1811] Default BasicSocket.do_not_reverse_lookup to true — Roger Pack <redmine@...>

Feature #1811: Default BasicSocket.do_not_reverse_lookup to true

9 messages 2009/07/23

[#24624] [Bug #1844] Immediates Should Not Respond to :dup — Run Paint Run Run <redmine@...>

Bug #1844: Immediates Should Not Respond to :dup

15 messages 2009/07/30

[ruby-core:24426] Re: [Bug #1717] Thread local variables not visible from within a Fiber

From: Roger Pack <rogerdpack@...>
Date: 2009-07-18 11:23:46 UTC
List: ruby-core #24426
> You could even do:
>
> =A0class Thread
> =A0 =A0def self.inherit
> =A0 =A0 =A0parent =3D Thread.current
> =A0 =A0 =A0new do
> =A0 =A0 =A0 =A0parent.keys.each do |key|
> =A0 =A0 =A0 =A0 =A0next if key =3D~ /^__/
> =A0 =A0 =A0 =A0 =A0Thread.current[key] =3D parent[key]
> =A0 =A0 =A0 =A0end
> =A0 =A0 =A0 =A0yield
> =A0 =A0 =A0end
> =A0 =A0end
> =A0end
>
> Which would be used like Thread.new, but automatically copy the parent's =
thread-locals to the new thread.


It would seem that something like that is probably necessary to
preserve sanity among thread's and fibers.

Another option would be to allow for Fiber#[] to work.

That would be less surprising to me than having Thread.current[]
magically be assigning to two different places, depending on context.
But they'd both require some shenanigens, as if you wanted to allow
library users to write "blind" code you'd have to remap
Thread.current[] to use Fiber.current[] when called within a running
fiber.  Still more code to write but seems more explicit to me and
less surprising.
Just thinking out loud.
=3Dr

In This Thread

Prev Next