ehh, new year :-D so 2018-01-01 2018-01-08 10:30 GMT+01:00 Pavel Krivanek <[email protected]>:
> In memory sources file > - I slightly improved the PR for integration of the sources file inside > the object memory. Now it will be possible to extract them back to the disk > from the menu so everything can work as before. I'm not sure if it will be > integrated into Pharo 7 or we will wait for Pharo 8 but it seems to be > prepared. > > File API and caching > - because the in-memory sources file do not use deprecated > MultiByteFileStream, I played with the new file API and discovered > that ZnCharacterReadStream on File is about 10 times slower than the > old MultiByteFileStream. That's because ZnCharacterReadStream does not use > any cache. For better speed the ZnBufferedReadStream needs to be used like > this: > > readStream := File openForReadFileNamed: 'file.txt'. > zn := ZnCharacterReadStream on: readStream encoding: #UTF8. > buffered := ZnBufferedReadStream on: zn. > [ buffered atEnd ] whileFalse: [ buffered next: 20000 ]. > > However the ZnBufferedReadStream is by design only a linear stream and the > position cannot be changed and thus it cannot be used for *.sources files > etc. We will need to prepare a positionable alternative. > > Ring 2 integration > - I was working on replacing of the old Ring with the new > reimplementation. The old Ring is used on many sensitive places in the > system. Mainly in tools however it is used by Monticello and Epicea too so > to try to remove it is like to cut a branch below yourself on an undermined > tree. The approach of the old and new Ring is in many senses very different > and the full compatibility will not be supported. I partly provide > compatibility API, partly adopt the code directly. > - The real system and the model is mixed many times in the users of the > old Ring. For example a model for a method is created but then when the > package of the method is asked, it is already a real package, not its > model. Such places need to be cleaned. > - I already have an image that has no old Ring code at all but because of > some memory leaks caused by the mixtures of the models and real system I > was not able to bootstrap it successfully. More work is needed. > - I discovered that the image has a serious memory leak caused by > Iceberg/GT and Announcers but I still need to find more information about > it. > > Smalltalk archeology > - during the free days on the beginning of the year I looked at > Smalltalk-78. I extracted the data from Lively Kernel so the original image > can read from external files, not only the recent updated ones. > - Then I looked at SqueakJS again and tried to reproduce Craig's > experiments with Pharo on it. Generally it is about 100 times slower than > native Pharo which makes it hard to use for real-life tasks. However it > would be pity to do not provide at least basic attention to it because in > some cases it may be really useful. > > Cheers, > -- Pavel > > >
