asignación paralela de rubí, pregunta de paso

Entonces, estoy tratando de aprender Ruby haciendo algunas preguntas sobre el proyecto Euler, y me he encontrado con un par de cosas que no puedo explicar, ¿y el operador de coma? está en el medio de ambos. No he podido encontrar buena documentación para esto, tal vez simplemente no estoy usando Google como debería, pero la buena documentación de Ruby parece un poco escasa. . .

1: ¿cómo describe cómo funciona esto? el primer fragmento es el código ruby que no entiendo, el segundo es el código que escribí que hace lo mismo solo después de trazar minuciosamente el primero:

#what is this doing?
cur, nxt = nxt, cur + nxt

#this, apparently, but how to describe the above?
nxt = cur + nxt   
cur = nxt - cur   

2: en el siguiente ejemplo, ¿cómo describe lo que está haciendo la línea con 'paso'? por lo que puedo reunir, el comando de paso funciona como (range) .step (step_size), pero esto parece estar haciendo (begin_point) .step (ending_point, step_size). ¿Estoy en lo cierto con esta suposición? ¿Dónde encuentro un buen documento de esto?

#/usr/share/doc/ruby1.9.1-examples/examples/sieve.rb  
# sieve of Eratosthenes
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
  sieve[i] = i
end

for i in 2 .. Math.sqrt(max)
  next unless sieve[i]
  (i*i).step(max, i) do |j|
    sieve[j] = nil
  end
end
puts sieve.compact.join(", ")

Respuestas a la pregunta(2)

Su respuesta a la pregunta