It's worth pointing out *all* updates *do* involve upgrading an existing image, albeit a much simpler one: the boot image. So in fact Dolphin *does* exhibit sufficient reprogrammability to accommodate this, at least for the sorts of changes made in the VM so far. If you're curious, looking at the history of PreBoot.st in the root of the Dolphin repository will give you an idea of some of the sorts of gyrations that have taken place in the past. Upgrading a fully-built image in-place past some of these same milestones would be significantly more *difficult*, but not in principle impossible.
In Dolphin's case, the VM is still built separately, using non-Smalltalk tooling. Pharo does take a step in the direction of Klein by writing the VM in a Smalltalk subset they call Slang, such that it is actually possible to run a VM as Smalltalk code within a Pharo image, rather than compiling it to C and then machine code. This is still not properly metacircular in that the "parent" image is running on a compiled VM which cannot be modified, and the "child" image also cannot modify *its own* VM, but the parent image can modify the child image's VM just like any other application code.
On a more practical note: You certainly can apply minor Dolphin updates by updating your Git repository and manually filing in changed classes. There is no support for this in the UI, though—you'd have to do it by manually examining the Git log and executing `ClassName fileIn` statements appropriately. Handling loose methods, packaged globals and scripts, etc. is even more difficult and would require significant infrastructure work to accommodate. It's certainly possible to automate in theory—Pharo has Iceberg, which is a UI somewhat like the old Dolphin Source Tracking System, but built on top of Git. The image is essentially treated as equivalent to the Git work tree (though changes are only actually saved to disk when committing—effectively the work tree is not used except to immediately stage and commit), with in-image pull, merge, etc. operations that change live code in addition to the files on disk. Having something like Iceberg for Dolphin would be *amazing*, but, it's also the work of a team of devs over many years and *still* sometimes buggy.
On Thursday, April 21, 2022 at 11:39:05 AM UTC-4,
joeb...@gmail.com wrote:
> Good to know, thanks!