Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
lazy.rb 0.9.5 -- transparent futures!
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 1 - 25 of 40 - Collapse all  -  Translate all to Translated (View all originals)   Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
MenTaLguY  
View profile  
 More options Feb 18 2006, 8:07 pm
Newsgroups: comp.lang.ruby
From: MenTaLguY <men...@rydia.net>
Date: Sun, 19 Feb 2006 10:07:12 +0900
Local: Sat, Feb 18 2006 8:07 pm
Subject: [ANN] lazy.rb 0.9.5 -- transparent futures!

I'd like to announce a new version of lazy.rb -- this one offering
thread safety and transparent futures!

Here's the web site, complete with gem and tarball downloads, plus a bit
of documentation:

 http://moonbase.rydia.net/software/lazy.rb/

Bug reports would be very, very welcome.

== What is lazy.rb?

lazy.rb is a library providing transparent lazy evaluation and futures
for Ruby.  It provides a bag of clever tricks to help you avoid doing
expensive computations up front.

= Lazy Evaluation

Lazy evaluation simply refers to computations which are run on an
as-needed basis.  For example:

 x = promise { 3 + 5 }

Means that the block -- 3 + 5 -- won't actually be evaluated until
something tries to use x's value.

 p x # => #<Lazy::Promise computation=#<Proc:...>>

 # forces evaluation
 p x * 3 # => 24

 p x # => 8

You can also force evaluation using demand:

 x = promise { 3 + 5 }

 p x # => #<Lazy::Promise computation=#<Proc:...>>

 # forces evaluation
 p demand( x ) # => 8

 p x # => 8

It's a bit silly for 3 + 5, but it's handy for more intensive
calculations.  You can unconditionally promise a computation, yet only
pay for it if and when its result is actually used.

= Futures

Futures are blocks of code that are evaluated immediately, but in a
background thread.

 x = future { 3 + 5 }

 p x # => #<Lazy::Future computation=#<Proc:...>>

 # You could do other stuff here while
 # the computation ran in the background

 # blocks until the background thread completes
 p x * 3 # => 24

 p x # => 8

Again, silly for 3 + 5 perhaps, but I'm sure you can see how this might
come in handy for more involved computations.

= Other stuff

lazy.rb also includes support for circular programming, where a
computation is passed its own result:

 matryoshka = demand( promise { |result| [result] } )

 p matryoshka # => [[...]]

 p matryoshka.object_id # => -605506544

 p matryoshka.first.object_id # => -605506544

 p matryoshka.first.first.object_id # => -605506544

This works for both promises and futures, although it has the usual
limitations: if a computation tries to call methods on its own result,
it will diverge.

== What's new in 0.9.5?

- Optional support for multithreaded programs:

    require 'lazy/threadsafe' and you can safely use lazy evaluation in
    multithreaded programs.

- Futures:

    With thread support, it turned out that futures were really
    easy to implement atop promises -- just fire off a thread with the
    computation and return a promise to join the thread and grab its
    result.  So I implemented that.

== What happened to lazy streams from 0.2?

I ditched the lazy streams API for now.  It just wasn't working out.

== What next?

Except perhaps for lazy streams (which might end up becoming a separate
library), I think we're nearly feature-complete.  Ideas and suggestions
are very welcome, though.

 -mental

  signature.asc
< 1K Download

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
itsme...@hotmail.com  
View profile  
 More options Feb 19 2006, 5:13 pm
Newsgroups: comp.lang.ruby
From: itsme...@hotmail.com
Date: 19 Feb 2006 14:13:27 -0800
Local: Sun, Feb 19 2006 5:13 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

MenTaLguY wrote:
> I'd like to announce a new version of lazy.rb -- this one offering
> thread safety and transparent futures!

Nice.

>  # forces evaluation
>  p x * 3 # => 24

What will it do for:
  p 3 * x

Thanks for sharing.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
matt.smillie@gmail.com  
View profile  
 More options Feb 19 2006, 6:22 pm
Newsgroups: comp.lang.ruby
From: "matt.smil...@gmail.com" <matt.smil...@gmail.com>
Date: 19 Feb 2006 15:22:04 -0800
Local: Sun, Feb 19 2006 6:22 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!
If you suspected "the right thing" you'd probably be right:

irb(main):001:0> require 'lazy'
irb(main):002:0> x = promise { 5 + 3 }
=> #<Lazy::Promise computation=#<Proc:0x0035788c@(irb):2>>
irb(main):003:0> p 3 * x
24
=> nil


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
men...@rydia.net  
View profile  
 More options Feb 19 2006, 9:43 pm
Newsgroups: comp.lang.ruby
From: men...@rydia.net
Date: Mon, 20 Feb 2006 11:43:50 +0900
Local: Sun, Feb 19 2006 9:43 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!
Quoting "matt.smil...@gmail.com" <matt.smil...@gmail.com>:

> If you suspected "the right thing" you'd probably be right:

> irb(main):001:0> require 'lazy'
> irb(main):002:0> x = promise { 5 + 3 }
> => #<Lazy::Promise computation=#<Proc:0x0035788c@(irb):2>>
> irb(main):003:0> p 3 * x
> 24
> => nil

It's worth noting that this only works so well because of the very
nice coercion machinery Ruby has built around its numeric classes.

Ruby's NUM2INT (for example) will call .to_int on the promise when
FIXNUM_P fails, so everything Just Works(tm).

For other cases (e.g. promises returning file handles), you may find
you need to unwrap them explicitly with demand() to pass them to
certain methods.

Of course this is an issue only when passing promises to methods
implemented in C; lazy.rb does a very good job of faking out Ruby
otherwise (the boolean issue notwithstanding).

-mental


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
men...@rydia.net  
View profile  
 More options Feb 20 2006, 12:43 pm
Newsgroups: comp.lang.ruby
From: men...@rydia.net
Date: Tue, 21 Feb 2006 02:43:44 +0900
Local: Mon, Feb 20 2006 12:43 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!
Quoting James Edward Gray II <ja...@grayproductions.net>:

> > I ditched the lazy streams API for now.  It just wasn't working
> > out.

> Can you expand on what you mean by this?  I'm working on a huge
> article about infinite streams for my blog and lazy.rb 0.2 was a
> big inspiration to me.

Oh, mainly it was an aesthetic thing.  It _worked_ fine.

I'd been fighting with the streams API to make it more Ruby-esque
and easier to use properly, but I finally punted on it to get this
release out the door quickly.

In retrospect, I probably should have just kept the 0.2 API for now.
 I definitely want something better for 1.0, though.

-mental


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Daniel Nugent  
View profile  
 More options Feb 21 2006, 2:00 am
Newsgroups: comp.lang.ruby
From: "Daniel Nugent" <nug...@gmail.com>
Date: Tue, 21 Feb 2006 16:00:05 +0900
Local: Tues, Feb 21 2006 2:00 am
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!
Hah!  Awesome mental, I was going to be implementing something like
this for an Actor library that I'm going to start work on Real Soon
(tm).  And, of course, you did it way better than I would have.

One question: How hard would it be to modify the way that exceptions
are handled to hold off raising the exception until the result was
requested?  I'm thinking specifically of some non-deterministic
situations where you may request a value but never end up needing to
use it.

On 2/20/06, men...@rydia.net <men...@rydia.net> wrote:

--
-Dan Nugent

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andrew Johnson  
View profile  
 More options Feb 21 2006, 3:29 am
Newsgroups: comp.lang.ruby
From: Andrew Johnson <ajohn...@cpan.org>
Date: Tue, 21 Feb 2006 08:29:52 GMT
Local: Tues, Feb 21 2006 3:29 am
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!

On Sun, 19 Feb 2006 10:07:12 +0900, MenTaLguY <men...@rydia.net> wrote:
> --=-Nhoy1n60Sqvzvq/VUinT
> Content-Type: text/plain
> Content-Transfer-Encoding: quoted-printable

> I'd like to announce a new version of lazy.rb -- this one offering
> thread safety and transparent futures!

> Here's the web site, complete with gem and tarball downloads, plus a bit
> of documentation:

>  http://moonbase.rydia.net/software/lazy.rb/

> Bug reports would be very, very welcome.

When I toyed with a proof-of-concept of Io's asynchronous messages in Ruby

  http://www.siaris.net/index.cgi/Programming/LanguageBits/Ruby/Async.rdoc

Jim Weirich pointed out that methods later added to Object or Kernel will
no longer be "missing" in the Async (or Future) class. One work around is
to trap "method_added" up the chain, for example:

  http://www.siaris.net/cgi-bin/siwiki.pl?FeedBack/AsyncMessages

But then I discovered that methods added by including a module weren't
trapped by method_added -- so in the end, a KernellessObject (from evil.rb)
was needed (same link as above) as Async's parent to keep the proxy clean.

regards,
andrew

--
Andrew L. Johnson   http://www.siaris.net/
      What have you done to the cat? It looks half-dead.
          -- Schroedinger's wife


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Minkoo Seo  
View profile  
 More options Feb 21 2006, 5:54 am
Newsgroups: comp.lang.ruby
From: "Minkoo Seo" <minkoo....@gmail.com>
Date: 21 Feb 2006 02:54:46 -0800
Local: Tues, Feb 21 2006 5:54 am
Subject: Re: lazy.rb 0.9.5 -- transparent futures!
Sorry for newbie question. I tried to install lazy only to fail:

[root@poseidon tmp]# ruby -v
ruby 1.8.4 (2005-12-24) [i686-linux]
[root@poseidon tmp]# ls -l lazy-0.9.5.gem
-rw-r--r--  1 mkseo users 6656  2월 19 09:31 lazy-0.9.5.gem
[root@poseidon tmp]# gem install lazy-0.9.5.gem
Attempting local installation of 'lazy-0.9.5.gem'
Successfully installed lazy, version 0.9.5
Installing RDoc documentation for lazy-0.9.5...

lazy.rb:60:22: Couldn't find DIVERGES. Assuming it's a module
[root@poseidon tmp]#

Any idea?

Minkoo Seo


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jim Weirich  
View profile  
 More options Feb 21 2006, 7:39 am
Newsgroups: comp.lang.ruby
From: Jim Weirich <j...@weirichhouse.org>
Date: Tue, 21 Feb 2006 21:39:35 +0900
Local: Tues, Feb 21 2006 7:39 am
Subject: Re: lazy.rb 0.9.5 -- transparent futures!
Minkoo Seo wrote:
> Sorry for newbie question. I tried to install lazy only to fail:

> [root@poseidon tmp]# ruby -v
> ruby 1.8.4 (2005-12-24) [i686-linux]
> [root@poseidon tmp]# ls -l lazy-0.9.5.gem
> -rw-r--r--  1 mkseo users 6656  2월 19 09:31 lazy-0.9.5.gem
> [root@poseidon tmp]# gem install lazy-0.9.5.gem
> Attempting local installation of 'lazy-0.9.5.gem'
> Successfully installed lazy, version 0.9.5

  ^^^^^^^^^^^^

The installatiof of the lazy software is OK ...

> Installing RDoc documentation for lazy-0.9.5...

> lazy.rb:60:22: Couldn't find DIVERGES. Assuming it's a module

Its just that RDoc is complaining about something.  I got the same error
on my system, but the RDoc looks ok, even with the error.

--
-- Jim Weirich

--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Minkoo Seo  
View profile  
 More options Feb 21 2006, 10:53 am
Newsgroups: comp.lang.ruby
From: "Minkoo Seo" <minkoo....@gmail.com>
Date: 21 Feb 2006 07:53:25 -0800
Local: Tues, Feb 21 2006 10:53 am
Subject: Re: lazy.rb 0.9.5 -- transparent futures!
Still, no luck.

[root@poseidon tmp]# ll
합계 12
-rw-r--r--  1 mkseo users 6656  2월 19 09:31 lazy-0.9.5.gem
[root@poseidon tmp]# gem install lazy-0.9.5.gem
Attempting local installation of 'lazy-0.9.5.gem'
Successfully installed lazy, version 0.9.5
Installing RDoc documentation for lazy-0.9.5...

lazy.rb:60:22: Couldn't find DIVERGES. Assuming it's a module
[root@poseidon tmp]# irb
irb(main):001:0> require 'lazy'
LoadError: no such file to load -- lazy
        from (irb):1:in `require'
        from (irb):1
irb(main):002:0> require 'lazy/future'
LoadError: no such file to load -- lazy/future
        from (irb):2:in `require'
        from (irb):2
irb(main):003:0>

[root@poseidon tmp]# ls -l /usr/local/lib/ruby/gems/1.8/gems/
합계 72
drwxr-xr-x   4 root root 4096  2월 12 07:32 actionmailer-1.1.5/
drwxr-xr-x   5 root root 4096  2월 12 07:32 actionpack-1.11.2/
drwxr-xr-x   5 root root 4096  2월 12 07:32 actionwebservice-1.0.0/
drwxr-xr-x   5 root root 4096  2월 12 07:31 activerecord-1.13.2/
drwxr-xr-x   3 root root 4096  2월 12 07:31 activesupport-1.2.5/
drwxr-xr-x   3 root root 4096  2월 22 00:42 lazy-0.9.5/
drwxr-xr-x  11 root root 4096  2월 12 07:32 rails-1.0.0/
drwxr-xr-x   6 root root 4096  2월 12 07:31 rake-0.7.0/
drwxr-xr-x   3 root root 4096  2월 12 07:30 sources-0.0.1/

[root@poseidon tmp]# ls -l /usr/local/lib/ruby/1.8/ | grep lazy
[root@poseidon tmp]#

I've taken the liberty of posting installation problem to this post,
because this is the first time for me to install local *.gem file.
Can anybody tell me why this is happening? Isn't the lazy.rb file
supposed to be installed in /usr/local/lib/ruby/1.8 ?

- Minkoo Seo


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ross Bamford  
View profile  
 More options Feb 21 2006, 11:22 am
Newsgroups: comp.lang.ruby
From: Ross Bamford <ros...@roscopeco.co.uk>
Date: Wed, 22 Feb 2006 01:22:37 +0900
Local: Tues, Feb 21 2006 11:22 am
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

Haven't followed this thread all the way, but I'm assuming you must have
already tried:

        $ irb
        require 'rubygems'
        require 'lazy'

Or alternatively passing -rubygems as an option to IRB.

--
Ross Bamford - ro...@roscopeco.REMOVE.co.uk


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Logan Capaldo  
View profile  
 More options Feb 21 2006, 11:57 am
Newsgroups: comp.lang.ruby
From: Logan Capaldo <logancapa...@gmail.com>
Date: Wed, 22 Feb 2006 01:57:52 +0900
Local: Tues, Feb 21 2006 11:57 am
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

On Feb 21, 2006, at 10:58 AM, Minkoo Seo wrote:

require 'rubygems'
require 'lazy'

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
MenTaLguY  
View profile  
 More options Feb 21 2006, 1:26 pm
Newsgroups: comp.lang.ruby
From: MenTaLguY <men...@rydia.net>
Date: Wed, 22 Feb 2006 03:26:43 +0900
Local: Tues, Feb 21 2006 1:26 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!

On Tue, 2006-02-21 at 16:00 +0900, Daniel Nugent wrote:
> One question: How hard would it be to modify the way that exceptions
> are handled to hold off raising the exception until the result was
> requested?  I'm thinking specifically of some non-deterministic
> situations where you may request a value but never end up needing to
> use it.

Hmm, if it doesn't already do that, it's a bug.

Can you give me a test case which demonstrates the problem?

-mental

  signature.asc
< 1K Download

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
MenTaLguY  
View profile  
 More options Feb 21 2006, 1:29 pm
Newsgroups: comp.lang.ruby
From: MenTaLguY <men...@rydia.net>
Date: Wed, 22 Feb 2006 03:29:20 +0900
Local: Tues, Feb 21 2006 1:29 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
MenTaLguY  
View profile  
 More options Feb 21 2006, 1:31 pm
Newsgroups: comp.lang.ruby
From: MenTaLguY <men...@rydia.net>
Date: Wed, 22 Feb 2006 03:31:21 +0900
Local: Tues, Feb 21 2006 1:31 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

On Tue, 2006-02-21 at 21:39 +0900, Jim Weirich wrote:
> Its just that RDoc is complaining about something.  I got the same error
> on my system, but the RDoc looks ok, even with the error.

DIVERGES is a nodoc'd constant which is used internally.  If anyone can
find a way to avoid the RDoc warning, I'd really appreciate it...

-mental

  signature.asc
< 1K Download

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Edward Gray II  
View profile  
 More options Feb 21 2006, 1:35 pm
Newsgroups: comp.lang.ruby
From: James Edward Gray II <ja...@grayproductions.net>
Date: Wed, 22 Feb 2006 03:35:03 +0900
Local: Tues, Feb 21 2006 1:35 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!
On Feb 21, 2006, at 12:29 PM, MenTaLguY wrote:

Oh, I don't think so.  It would cut off some users, like me.  ;)

James Edward Gray II


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andrew Johnson  
View profile  
 More options Feb 21 2006, 2:27 pm
Newsgroups: comp.lang.ruby
From: Andrew Johnson <ajohn...@cpan.org>
Date: Tue, 21 Feb 2006 19:27:16 GMT
Local: Tues, Feb 21 2006 2:27 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!
On Wed, 22 Feb 2006 03:35:03 +0900, James Edward Gray II

<ja...@grayproductions.net> wrote:
> On Feb 21, 2006, at 12:29 PM, MenTaLguY wrote:

>> I wonder if it's worth introducing a dependency on evil.rb?

> Oh, I don't think so.  It would cut off some users, like me.  ;)

At one point I was going to try to extract a minimum subset of evil
to just allow for KernellessObject, but never got to it. Would such
a small_evil.rb be less of a dependency concern?

andrew

--
Andrew L. Johnson   http://www.siaris.net/
      Doing linear scans over an associative array is like
      trying to club someone to death with a loaded Uzi.
          -- Larry Wall


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jim Weirich  
View profile  
 More options Feb 21 2006, 4:49 pm
Newsgroups: comp.lang.ruby
From: Jim Weirich <j...@weirichhouse.org>
Date: Wed, 22 Feb 2006 06:49:11 +0900
Local: Tues, Feb 21 2006 4:49 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

MenTaLguY wrote:
> On Tue, 2006-02-21 at 17:33 +0900, Andrew Johnson wrote:

>> But then I discovered that methods added by including a module weren't
>> trapped by method_added -- so in the end, a KernellessObject (from evil.rb)
>> was needed (same link as above) as Async's parent to keep the proxy clean.

> Hmm, good catch.  Thanks!

> I wonder if it's worth introducing a dependency on evil.rb?

The BlankSlate class in Builder handles this without resorting to the
"evil" that lies in the heart of evil.rb.  And the CVS head version of
BlankSlate also handles the module hole Andrew mentioned earlier (I
think ... I just now updated it).4

--
-- Jim Weirich

--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andrew Johnson  
View profile  
 More options Feb 21 2006, 5:50 pm
Newsgroups: comp.lang.ruby
From: Andrew Johnson <ajohn...@cpan.org>
Date: Tue, 21 Feb 2006 22:50:51 GMT
Local: Tues, Feb 21 2006 5:50 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

On Wed, 22 Feb 2006 06:49:11 +0900, Jim Weirich <j...@weirichhouse.org> wrote:
> MenTaLguY wrote:
[snip]
>> I wonder if it's worth introducing a dependency on evil.rb?

> The BlankSlate class in Builder handles this without resorting to the
> "evil" that lies in the heart of evil.rb.  And the CVS head version of
> BlankSlate also handles the module hole Andrew mentioned earlier (I
> think ... I just now updated it).4

That does appear to plug it -- and I even recall looking at
append_features back then and not seeing it. Thanks Jim!

andrew

--
Andrew L. Johnson   http://www.siaris.net/
      It's kinda hard trying to remember Perl syntax *and* Occam's
      razor at the same time :-)
          -- Graham Patterson


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
MenTaLguY  
View profile  
 More options Feb 21 2006, 5:51 pm
Newsgroups: comp.lang.ruby
From: MenTaLguY <men...@rydia.net>
Date: Wed, 22 Feb 2006 07:51:03 +0900
Local: Tues, Feb 21 2006 5:51 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!

On Wed, 2006-02-22 at 04:01 +0900, Daniel Nugent wrote:
> In that case, what I want (I'm so damn greedy :D) is to be able to
> raise the exception immediately (in a case where you damned well know
> that you're going to need the value and would prefer to fail early)
> and I see that that's trivial to implement (just have a conditional
> toss the exception up in the thread if some @raise_immediately flag is
> set to true).
> There's one other thing I was wondering about: What's the prudency of
> adding a method to Future to allow the Future to go back to sleep
> (release the lock, pass the thread)?  In this case, I'm considering
> waiting for a resource that some other future/thread might be using,
> or waiting for a port to get some data. (mostly implementation details
> for that library I mentioned, I'll deal with them, but I'm curious if
> there's any issue I'm forgetting).

Hmm.  Could you give me some examples of the behavior you have in mind?

-mental

  signature.asc
< 1K Download

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
gabriele renzi  
View profile  
 More options Feb 21 2006, 5:52 pm
Newsgroups: comp.lang.ruby
From: gabriele renzi <surrender...@-remove-yahoo.it>
Date: Tue, 21 Feb 2006 22:52:57 GMT
Local: Tues, Feb 21 2006 5:52 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!
James Edward Gray II ha scritto:

>> Hmm, good catch.  Thanks!

>> I wonder if it's worth introducing a dependency on evil.rb?

maybe just making it optional.. you could even make great use of
Object#become :)

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
MenTaLguY  
View profile  
 More options Feb 21 2006, 7:34 pm
Newsgroups: comp.lang.ruby
From: MenTaLguY <men...@rydia.net>
Date: Wed, 22 Feb 2006 09:34:24 +0900
Local: Tues, Feb 21 2006 7:34 pm
Subject: Re: [ANN] lazy.rb 0.9.5 -- transparent futures!

On Wed, 2006-02-22 at 09:07 +0900, Daniel Nugent wrote:
> What's the purpouse of the spinlock in __synchronize__?
> To keep a Future's block from evaluating several times in parallel?

s/Future/Promise/, and you've got it.

It ensures that each promise only ever gets evaluated once, even when
multiple threads demand its result at the same time.

Nothing to do with futures in particular; I only require threadsafe for
futures because using futures guarantees that your program will have
multiple threads.

-mental

  signature.asc
< 1K Download

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jim Weirich  
View profile  
 More options Feb 21 2006, 9:55 pm
Newsgroups: comp.lang.ruby
From: Jim Weirich <j...@weirichhouse.org>
Date: Wed, 22 Feb 2006 11:55:50 +0900
Local: Tues, Feb 21 2006 9:55 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

MenTaLguY wrote:
> On Wed, 2006-02-22 at 06:49 +0900, Jim Weirich wrote:
>> MenTaLguY wrote:
>> The BlankSlate class in Builder handles this without resorting to the
>> "evil" that lies in the heart of evil.rb.  And the CVS head version of
>> BlankSlate also handles the module hole Andrew mentioned earlier (I
>> think ... I just now updated it).4

> Hmm, that sounds more like it.  Any chance of a separate BlankSlate gem?

Ask and ye shall receive:

   gem install blankslate --source http://onestepback.org/betagems

This is a quick breakout of the BlankSlate class into its own gem.  It
now sits as a top level namespace (instead of being nested in the
Builder module).  It is built from the same source as Builder, so the
builder gem still includes the class physically.  (Shouldn't be a
problem unless there start to be weird version mismatches).

There are still some documentation issues (e.g. the blankslate gem RDoc
still refers to the builder README file), but give this guy a spin
around the block before I make an official release.

--
-- Jim Weirich

--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Guillaume Marcais  
View profile  
 More options Feb 21 2006, 10:12 pm
Newsgroups: comp.lang.ruby
From: Guillaume Marcais <gusl...@free.fr>
Date: Wed, 22 Feb 2006 12:12:30 +0900
Local: Tues, Feb 21 2006 10:12 pm
Subject: Re: lazy.rb 0.9.5 -- transparent futures!
Le 21 févr. 06, à 21:55, Jim Weirich a écrit :

> gem install blankslate --source http://onestepback.org/betagems

irb(main):004:0> require 'blankslate'
LoadError: No such file to load -- builder
         from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in
`require__'
         from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in `require'
         from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:163:in `activate'
         from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:23:in `require'
         from (irb):4

Seems that the dependency on builder is still there.

Guillaume.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jim Weirich  
View profile  
 More options Feb 22 2006, 1:27 am
Newsgroups: comp.lang.ruby
From: Jim Weirich <j...@weirichhouse.org>
Date: Wed, 22 Feb 2006 15:27:36 +0900
Local: Wed, Feb 22 2006 1:27 am
Subject: Re: lazy.rb 0.9.5 -- transparent futures!

Guillaume Marcais wrote:
> Le 21 f vr. 06, 21:55, Jim Weirich a crit :

>> gem install blankslate --source http://onestepback.org/betagems

> irb(main):004:0> require 'blankslate'
> LoadError: No such file to load -- builder

Dang!  Autorequire bit me again.

Ok, I think I fixed it.  Give it another try.

--
-- Jim Weirich

--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 1 - 25 of 40   Newer >
« Back to Discussions « Newer topic     Older topic »