That’s exactly my feeling as well. Doru
> On Apr 22, 2018, at 6:41 PM, Stephane Ducasse <stepharo.s...@gmail.com> wrote: > > Thanks a lot Sven. This is great to see all this positive energy to > improve this part. > From a core library stand point, streams were the last pieces that > needed to be revisited. > This is great to see this happening. > > Stef > > On Sun, Apr 22, 2018 at 11:04 AM, Sven Van Caekenberghe <s...@stfx.eu> wrote: >> >> >>> On 22 Apr 2018, at 10:22, Tudor Girba <tu...@tudorgirba.com> wrote: >>> >>> Hi, >>> >>> I am so looking forward to playing with this (as a user). >>> >>> For various reasons, we are still in Pharo 6.1, but encoding/decoding was >>> always a troublesome issue in Pharo. >> >> Well it should not be, not even in older Pharo versions, as long as you use >> everything correctly. >> >> But the latest changes are a bold step forward. >> >>> Thanks a lot! >>> >>> Cheers, >>> Doru >>> >>> >>>> On Apr 20, 2018, at 5:24 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote: >>>> >>>> Hi, >>>> >>>> After the File and Stream changes in Pharo 7, a binary read, resp. write >>>> stream from/to a file is actually a ZnBuffered(Read|Write)Stream on a >>>> BinaryFileStream. You access these using #binary(Read|Write)Stream[Do:] >>>> sent to a FileReference. >>>> >>>> As minimal streams the API of ZnBuffered(Read|Write)Stream was different >>>> from what existed before. >>>> >>>> Specifically, a number of Integer decoding/encoding methods were missing. >>>> It is probably best to add those (an alternative would be a subclass). >>>> >>>> When I looked at what was available, I thought I could improve upon the >>>> current situation. In fact, I think all existing ones can be written in >>>> terms of just one key method, one for reading and one for writing. The >>>> existing methods than become simple aliases, all while offering more >>>> functionality. >>>> >>>> (Incidentally this would be an ideal use of a Trait, can we use them >>>> again/still ?) >>>> >>>> The key method is #nextIntegerOfSize: numberOfBytes signed: signed >>>> bigEndian: bigEndian [put: value] and can be found in the latest version >>>> of Zinc-CharacterEncoding-Core with a comprehensive set of unit tests. >>>> >>>> For example, >>>> >>>> int32 >>>> ^ self nextIntegerOfSize: 4 signed: true bigEndian: true >>>> >>>> nextWord >>>> ^ self nextIntegerOfSize: 2 signed: false bigEndian: true >>>> >>>> or non-aliases ones like >>>> >>>> binaryStream nextIntegerOfSize: 3 signed: true bigEndian: false >>>> >>>> I think I nailed it, but I would love a second pair of eyes to check what >>>> I did. >>>> >>>> The same functionality could be added to ByteArray in a slight variation >>>> (with offsets), where similar integer encoding/decoding methods exist. >>>> >>>> Sven >>> >>> -- >>> www.tudorgirba.com >>> www.feenk.com >>> >>> "From an abstract enough point of view, any two things are similar." >>> >>> >>> >>> >>> >> >> > -- www.tudorgirba.com www.feenk.com "There are no old things, there are only old ways of looking at them."