Somehow, somewhere there was a change to the implementation of the primitive called by some streams' #atEnd.
IIRC, someone said it is implemented as 'remaining size being zero' and some virtual unix files like /dev/random are zero sized.
Now, all kinds of changes are being done image size to work around this.
I am a strong believer in simple, real (i.e. infinite) streams, but I am not sure we are doing the right thing here.
Point is, I am not sure #next returning nil is official and universal.
Consider the comments:
Stream>>#next
�� "Answer the next object accessible by the receiver."
ReadStream>>#next
�� "Primitive. Answer the next object in the Stream represented by the
�� receiver. Fail if the collection of this stream is not an Array or a String.
�� Fail if the stream is positioned at its end, or if the position is out of
�� bounds in the collection. Optional. See Object documentation
�� whatIsAPrimitive."
Note how there is no talk about returning nil !
I think we should discuss about this first.
Was the low level change really correct and the right thing to do ?
Note also that a Guille introduced something new, #closed which is related to the difference between having no more elements (maybe right now, like an open network stream) and never ever being able to produce more data.
Sven