Logo-small

4.3.7 Upgrade PharoCore

Is it possible to upgrade a PharoCore image?

Yes. PharoCore images can be updated, but only in the same stream. For example, PharoCore 11211 can be updated to 11322 or whatever from Pharo 1.1. But not from another version of Pharo. For example, it cannot be updated to Pharo 12000.

PharoCore images can be updated, in contrast to Pharo images, because:

a) Update stream only manages Core packages: packages you have in the Core image are found in the Pharo squeaksource repository. On the contrary, the full Pharo distribution is built on top of PharoCore and loads external packages which have their own maintainers.

b) When we change something in PharoCore (suppose we rename or remove a method), all senders are fixed for example. Here the scope is Core, not external packages. This is a task for the external package developers.

c) When you update your image, it will bring the new version of the new package.

Now... suppose the update stream renamed the method String >> contact: to contactTo: The fixes of core packages will be automatically updated. But what happens with the external code that was using (senders) contact: ?? You will have a lot of DNUs.

Even worst... overrides. Most of the times, they are evil, but they still exist. Suppose an external package XXX that defined String >> contact: with category *XXX and do something different. When you load such package, the method is overridden. But then, if you update a new version of such package from the update stream, it will put again the original one. This leads to problems difficult to debug and trace.

All this continues while people are reporting problems, trying to debug and understand problems, etc. In summary: a waste of time. Pharo images are released quite periodically. So, wait and get a new version of the image. Maybe in a future this whole thing may be fixed and the update stream can handle external dependencies too, but it does not for the moment.

Add a Note

Licensed under Creative Commons BY-NC-SA | Published using Pier |