Hey Alan,

Awesome! I haven't had a chance to go through the code in detail, but I like 
the general approach. I'll definitely be looking into this in more detail 
later, but for now I just wanted to let you know that there are specs for Ruby 
1.9's fibers in the MacRuby repo at 'spec/frozen/library/fiber'. It would be 
interesting to see how many of them pass with your implementation.

Cheers,

Josh 


On Thursday, January 5, 2012 at 10:36 AM, Alan Skipp wrote:

> Hi everyone,
> I've had a go at implementing Fibers using dispatch queues. The code can be 
> found here:
> 
> https://gist.github.com/1565393
> 
> Inspiration was taken from the following ruby 1.8 Fibers implementation: 
> https://gist.github.com/4631
> 
> The implementation of Fiber.yield currently relies upon a hash stored as a 
> class variable. This is hopefully just a temporary solution to get things 
> started. The hash is always accessed through a serial queue (so it should be 
> thread safe) and dead fibers are removed after use. There are a couple of GCD 
> functions that look like they could be used to solve this problem: 
> 'dispatch_queue_set_specific' and 'dispatch_set_context'. Though I'm not sure 
> how to use these from Macruby. If anyone has any experience using either of 
> those GCD functions I'd be interested in learning more.
> 
> The major omission currently is the lack of a 'transfer' method. I've 
> pondered this quite a bit, but I've yet to come up with a solution. It is 
> quite possible that the way I've written the Fiber class prevents a 
> successful implementation of a 'transfer' method - but I've not given up just 
> yet. If anyone has a cunning plan on how to achieve it, that would be great.
> 
> I've tested all the examples here:
> http://pragdave.blogs.pragprog.com/pragdave/2007/12/pipelines-using.html
> 
> and they all seem to work, plus I've included a few tests in the gist. 
> The test which creates a fiber from Fiber.current, causes macruby to crash, 
> but I don't know why - it doesn't cause a crash when invoked normally outside 
> of minitest.
> 
> From my limited tests, everything other than the 'transfer' method appears to 
> be working, but feedback would be welcome if you discover any problems.
> 
> Al
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel@lists.macosforge.org (mailto:MacRuby-devel@lists.macosforge.org)
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
> 
> 


_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to