This Ruby gem is meant as a proof of concept for promoting the Ruby Change Request 335. The RCR was rejected but Sather iterators made it into Ruby 1.9 anyway :-)

The code itself is a single small module. The “proper” way to install it is as a gem. It is also available via rubygems.org.

Using it is pretty simple, just use si_loop instead of loop and prefix each iterator method invocation with .si. For example:

si_loop do
  x = somearray.si.each
  y = anotherarray.si.each
  ...
end

See the documentation for si.rb for details.