tarefa paralela ruby, pergunta passo

então, estou tentando aprender ruby fazendo algumas perguntas sobre o projeto e encontrei algumas coisas que não consigo explicar e o operador vírgula? está no meio de ambos. não consegui encontrar boa documentação para isso, talvez não esteja usando o google como deveria, mas uma boa documentação em rubi parece um pouco esparsa. . .

1: como você descreve como isso está funcionando? o primeiro trecho é o código ruby que eu não entendo; o segundo é o código que escrevi que faz a mesma coisa somente depois de rastrear minuciosamente o primeiro:

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

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

2: no exemplo a seguir, como você descreve o que a linha com 'step' está fazendo? pelo que eu consigo entender, o comando step funciona como (range) .step (step_size), mas isso parece estar funcionando (ponto de partida) .step (ponto de terminação, step_size). Estou certo com essa suposição? onde encontro um bom documento sobre isso?

#/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(", ")

questionAnswers(2)

yourAnswerToTheQuestion