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
>
>
>
>

Reply via email to