[MacRuby-devel] macruby GCD Fibers

Joshua Ballanco jballanc at gmail.com
Tue Jan 10 10:44:24 PST 2012


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 at lists.macosforge.org (mailto:MacRuby-devel at lists.macosforge.org)
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
> 
> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20120110/00ef8bbb/attachment.html>


More information about the MacRuby-devel mailing list