Reactive Ruby - Truffle Ruby meets Reactive Programming
November 23, 2016 ยท View on GitHub
More info about Reactive Ruby can be found here: https://guidosalva.github.io/ReactiveRubyTruffle/
Reactive Ruby is an experimental reactive language, which extends Truffle Ruby.
Reactive Ruby should be executed on the Graal VM instead of the normal Java VM.
Installation
Install the Graal VM
A guide on how to install the Graal VM: https://wiki.openjdk.java.net/display/Graal/Instructions
Reactive Ruby
git clone git@github.com:guidosalva/ReactiveRubyTruffle.git
cd ReactiveRubyTruffle
mvn
Usage
The jt tool can be used to execute Reactive Ruby programs. (See: https://github.com/jruby/jruby/tree/master/truffle#workflow-tool)
jt run --graal examples/time.rb executes the following example which prints the current time every second.
time = timeB(1)
time.onChange { |x| puts x}
jt run --graal examples/sum.rb executes the next example, which demonstrates some operators.
range = rangeB(1,100)
even = range.filter(0) { | x |
x.to_i % 2 == 0
}
sum = even.fold( 0 ) { |acc, val|
acc + val
}
combine = range.map(sum) { | x, y | [x,y] }
combine.onChange {|x| puts "sum: #{x}"}
The output is:
sum: [2, 2]
sum: [3, 2]
sum: [4, 6]
sum: [5, 6]
sum: [6, 12]
sum: [7, 12]
sum: [8, 20]
sum: [9, 20]
sum: [10, 30]
...