Hi all,

As hopefully you all know, MacRuby 0.5 includes wrappers for almost all of the 
C "dispatch" APIs for Grand Central Dispatch.  While relatively straightforward 
to use, the APIs are somewhat verbose and C-ish.

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/spec/macruby/core/gcd/

For MacRuby 0.6, I'd like to provide higher-level convenience APIs to reduce 
the "cognitive overhead" and "semantic noise" of using Grand Central Dispatch.  
In other words, let people do what they want without having to learn or type as 
much as they do now.

My first attempt at this is a new 'dispatch' library:

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/

which (from the latest MacRuby nightly) you can access via:

        require 'dispatch'

This defines:

- A Dispatch::Actor class which wraps a given object with serialization and 
asynchronous callbacks

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/actor.rb

- Convenience methods on the Dispatch module

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/dispatch.rb

- Parallel extensions to Enumerable

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/enumerable.rb

- A Futures class for delayed execution (duck-typed to lambda)

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/future.rb

- a 'stride' function on top of Dispatch::Queue#apply

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/queue.rb

- Queue-based source constructors

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/lib/dispatch/queue_source.rb

I've also written up specs to both test and demonstrate these constructs:

http://svn.macosforge.org/repository/ruby/MacRuby/trunk/spec/macruby/library/dispatch/

These are *extremely* preliminary, and lacking in both polish and 
documentation.  They may not be entirely correct, or even the appropriate 
abstractions to release as public API.  However, I wanted to get something out 
there to provoke feedback, so we can iterate together.  Hopefully we can also 
use this thread to start learning how to explain both the concepts and the API, 
as it evolves.

So, feedback away!

- Ernie P.


_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to