> |Why there is a need for a distinction between "local" and "dynamic" > |variables?... couldn't they all be "dynamic"? what would be the impact? > No need. "dynamic" is a term used by Ruby internal > Internal distinction is to tune up performance. Recently declared "dynamic" variables are faster than early dynamics, but "local" (outermost) are faster. It seems strange... Especially the idea of a linked list of variables. I tried a benchmark: q1=1 (1..10).each{|i| c1=c2=c3=c4=c5=v1=v2=v3=v4=v5=1 z1=z2=z3=z4=z5=x1=x2=x3=x4=x5=1 (1..5000).each{|j| # z1+=1; z1+=1; z1+=1; z1+=1; z1+=1 # v5+=1; v5+=1; v5+=1; v5+=1; v5+=1 q1+=1; q1+=1; q1+=1; q1+=1; q1+=1 } } v5: early dynamic: 4.0 sec z1: late dynamic: 3.0 sec q1: local: 2.7 sec here the effect is widely exaggerated; real situations wouldn't show so much of a difference. What I'm curious about is, if this is the improvement, then what was the original situation? matju