Project

promising

0.0
No commit activity in last 3 years
No release in over 3 years
Forking from bhuga/promising-future on github, so Version is started from 0.3.1
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.6
~> 10.0
 Project Readme

Notice

This gem is come from Promising

Promising Future

A glimpse of a promising future in which Ruby supports lazy evaluation.

Overview

Promises and futures both transparently defer the execution of a block. Promises evaluate the given block if and when its result is first needed. Futures evaluate the given block optimistically in another thread.

require 'promising'
require 'future'    # you can just require 'future' if using both

x = promise { 1 + 2 }
y = future  { sleep 10 && 6 * 7 }

puts x      #=> 3
sleep 5     # ... do work for 5 seconds ...
puts y      #=> 42, after blocking 5 seconds

Note that this is pretty useless in Ruby's interactive shell irb, as it will eagerly evaluate everything as part of its read-eval-print loop, forcing promises and futures to yield their results.

The library has been tested with Ruby 1.8.7, 1.9.1 and JRuby 1.5.0. YARD documentation is available at http://promising.rubyforge.org/

Classes

  • {Promise}
  • {Future}

Installation

The library is distributed via RubyGems:

$ gem install promising

Source

The source is available at http://github.com/fsword/promising

Author

Fsword

Unlicense

Promising Future is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.