Hi Sven, See also discussion at https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/232
2018-04-04 11:32 GMT+02:00 Sven Van Caekenberghe <s...@stfx.eu>: > 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 > > > >