2017-11-14 9:53 GMT+01:00 Denis Kudriashov <dionisi...@gmail.com>:

> I look at the code, So Zinc provides only binary/character streams. Right?
>
> About contribution: it is in external repository of Sven. Can we
> contribute with normal process, create pull request into Pharo repo?
>

yes, time to time we make sync with Zinc upstream.

-- Pavel


>
> 2017-11-14 9:36 GMT+01:00 Guillermo Polito <guillermopol...@gmail.com>:
>
>> To a package next to block?
>>
>> On Tue, Nov 14, 2017 at 9:16 AM, Denis Kudriashov <dionisi...@gmail.com>
>> wrote:
>>
>>> What about contributing to zinc streams? Imaging that I will create
>>> block based streams, collecting:/selecting streams like in XSteam. Where I
>>> should put them?
>>>
>>>
>>> 2017-11-13 23:51 GMT+01:00 Norbert Hartl <norb...@hartl.name>:
>>>
>>>>
>>>>
>>>> > Am 13.11.2017 um 21:08 schrieb Stephane Ducasse <
>>>> stepharo.s...@gmail.com>:
>>>> >
>>>> >> On Mon, Nov 13, 2017 at 8:27 PM, Sven Van Caekenberghe <s...@stfx.eu>
>>>> wrote:
>>>> >> The idea is to have much simpler streams which can be composed to
>>>> get more sophisticated behaviour.
>>>> >>
>>>> >> The most primitive streams should be binary read or write streams,
>>>> like a raw file or network connection.
>>>> >>
>>>> >> To add a character encoding/decoding you wrap them in a
>>>> ZnCharacterReadStream or ZnCharacterWriteStream (these use the newer,
>>>> cleaner ZnCharacterEncoders).
>>>> >
>>>> > Yes really nice :)
>>>> >
>>>> > And Guille started to use them and we are slowly rewriting all the
>>>> > stream internal users to use Zn and after we will be free.
>>>> >
>>>> >
>>>> No, you will depend on zinc classes. How is that supposed to work in
>>>> bootstrap?
>>>>
>>>> Norbert
>>>> >> If you want buffering, you wrap a ZnBufferedReadStream or
>>>> ZnBufferedWriteStream around them.
>>>> >>
>>>> >> And there are some other examples in the system too.
>>>> >>
>>>> >> Have a look at BinaryFileStream and ZdcSocketStream.
>>>> >>
>>>> >> Simply put, MultiByteFileStream and MultiByteBinaryOrTextStream must
>>>> die, because they try to be everything at once and are impossible to 
>>>> change.
>>>> >
>>>> >
>>>> > YES YES YES and celebrate. I could never understand anything. My brain
>>>> > is too limited for these kind of games :)
>>>> >
>>>> >
>>>> >
>>>> >> The contract of a stream should be much, much simpler than it is
>>>> today.
>>>> >
>>>> > Fully agree.
>>>> >
>>>> >>
>>>> >> For writing that means
>>>> >>
>>>> >> #nextPut:
>>>> >> #nextPutAll:
>>>> >> #next:putAll:
>>>> >> #next:putAll:startingAt:
>>>> >>
>>>> >> the 3 last ones can be written in terms of of the first one, but the
>>>> last one is key because it can be the most efficient.
>>>> >> And maybe also
>>>> >>
>>>> >> #flush
>>>> >> #close
>>>> >>
>>>> >> Some helpers for character writing are
>>>> >>
>>>> >> #space
>>>> >> #tab
>>>> >> #cr
>>>> >> #crlf
>>>> >> #lf
>>>> >>
>>>> >> Maybe #newline
>>>> >
>>>> > :)
>>>> >
>>>> >
>>>> >>
>>>> >> #<< is a handy method too.
>>>> >>
>>>> >> For reading that means
>>>> >>
>>>> >> #atEnd
>>>> >> #next
>>>> >> #next:
>>>> >> #next:into:
>>>> >> #next:into:startingAt:
>>>> >> #nextInto:
>>>> >> #peek
>>>> >> #skip:
>>>> >> #upToEnd
>>>> >> #upTo:
>>>> >> #readInto:startingAt:count:
>>>> >>
>>>> >> Again, they can all be written in terms of #next, but
>>>> #readInto:startingAt:count: is the core, efficient one.
>>>> >> Note that #peek allows a one character lookahead, which should be
>>>> sufficient for almost all parsing needs.
>>>> >>
>>>> >> #close is also a necessary operation, #peekFor: a handy one,
>>>> #nextLine is popular too.
>>>> >>
>>>> >> There is a discussion about positioning (#position , #position: and
>>>> related) but these cannot be supported _in general_ by the kind of streams
>>>> described above.
>>>> >>
>>>> >> If you absolutely need these, read #upToEnd and use a regular
>>>> ReadStream (over a fixed collection).
>>>> >>
>>>> >> The collection based classic Streams should always remain in the
>>>> system, they are too handy. But have you seen for example, #nextInt32 on
>>>> PositionableStream ? Good luck with that when the the underlying collection
>>>> is anything other than bytes.
>>>> >>
>>>> >> All this being said, there is no one, single correct answer.
>>>> >>
>>>> >> But if we all try to simplify what we expect of streams (use a more
>>>> limited API), we'll be more nimble to make implementation changes later on.
>>>> >>
>>>> >> Sven
>>>> >>
>>>> >>> On 13 Nov 2017, at 19:58, Stephane Ducasse <stepharo.s...@gmail.com>
>>>> wrote:
>>>> >>>
>>>> >>> Hi Evan
>>>> >>>
>>>> >>> I think that we will use the ZnStreams.
>>>> >>> If we use Xtreams we will transform their API because some messages
>>>> >>> are not really good.
>>>> >>> Stef
>>>> >>>
>>>> >>>> On Mon, Nov 13, 2017 at 7:54 PM, Evan Donahue <emdon...@gmail.com>
>>>> wrote:
>>>> >>>> I've heard mention once or twice on this list and in some release
>>>> notes of
>>>> >>>> what sounded like possible coming changes to the stream API. Could
>>>> anyone
>>>> >>>> point me to any concrete details about that? I haven't been able
>>>> to dig
>>>> >>>> anything up myself by searching. I'm about to write something that
>>>> I'd like
>>>> >>>> to be polymorphic with the stream API, but if that's about to
>>>> change, I'd
>>>> >>>> like to plan ahead.
>>>> >>>>
>>>> >>>> Thanks,
>>>> >>>> Evan
>>>> >>>
>>>> >>
>>>> >>
>>>>
>>>>
>>>
>>
>>
>> --
>>
>>
>>
>> Guille Polito
>>
>> Research Engineer
>>
>> Centre de Recherche en Informatique, Signal et Automatique de Lille
>>
>> CRIStAL - UMR 9189
>>
>> French National Center for Scientific Research - *http://www.cnrs.fr
>> <http://www.cnrs.fr>*
>>
>>
>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>
>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>
>
>

Reply via email to