Kernel.image update for 7052 and my vision of the next development

Pavel Krivanek squeak1 at continentalbrno.cz
Sun Jul 30 16:20:52 UTC 2006


Hi all,

There's the new update for my kernel image for Squeak 3.9 (without
next packages)
http://www.comtalk.net/Squeak/uploads/20/bootstrap7052.zip

If you run "Bootstrap new browseOverrides", you can see list of all
changed methods. This image overrides only 122 methods so I hope that
it will be quite easy to begin with refactoring of full Squeak (3.10)
to minimize the amount of necessary overrides and publish it on
Mantis. We should use some special mark (e.g. [KERNELIMAGE]) for such
patches or create new project.

The most important refactorings:
=======================

- ChangesOrganizer that picks general changes manipulations from the
ChangeSorter tool and makes that operations independent on it. Andreas
already published similar patch some time ago but it was not accepted.

This invokes overriding of very small set of methods in the kernel but
the impact on the full image will be much bigger (but in most cases it
will be only renaming from ChangeSorter to ChangesOrganizer)

XxxChangeSetCategory >> reconstituteList XxxChangeSetCategory >>
changeSetList XxxChangeSetCategory >> includesChangeSet:
XxxChangeSetCategoryWithParameters >> reconstituteList
XxxChangeSetCategoryWithParameters >> includesChangeSet: XxxFileStream
>> fileIntoNewChangeSet

- extend UIManager to make the kernel independent on UI. It's about 30
methods it means to take the current source and create the
corresponding code in the MorphicUIManager or MVCUIManager

 XxxAbort >> defaultAction  XxxBlockCannotReturn >> defaultAction
XxxChangeSet class >> promptForDefaultChangeSetDirectoryIfNecessary
XxxContextPart >> doPrimitive:method:receiver:args:  XxxDisplayScreen
>> restoreAfter:  XxxDisplayScreen >> restore  XxxDisplayScreen >>
newDepthNoRestore:  XxxDisplayScreen class >> checkForNewScreenSize
XxxDisplayText >> composeForm  XxxError >> defaultAction
XxxEventSensor >> startUp  XxxFileDirectory >> rename:toBe:
XxxFileDoesNotExistException >> defaultAction  XxxFileExistsException
>> defaultAction  XxxHalt >> defaultAction  XxxMethodContext >>
cannotReturn:  XxxObject >> primitiveError:  XxxProcess >>
debug:title:full:  XxxProgressInitiationException >> defaultAction
XxxSmalltalkImage >> snapshot:andQuit:embedded:  XxxStandardFileStream
class >> fileExistsUserHandling:  XxxStrikeFont class >> fromUser:
XxxSyntaxErrorNotification >> defaultAction  XxxSystemDictionary >>
lowSpaceWatcher  XxxSystemDictionary >> handleUserInterrupt
XxxTextStyle class >> replaceFontsIn:with:  XxxUnhandledError >>
defaultAction  XxxUtilities class >> informUserDuring:  XxxUtilities
class >> informUser:during:  XxxWarning >> defaultAction

So if anybody wants to help with Squeak modularization, this is the
right sand to play.

The next step is to discuss the rest of overrides (maybe we should
create Mantis record for each).

Then we should create clean package The Rest of Squeak. The phase of
its loading is simple because that means only to authomatically create
the set of new classes, methods and very small set of overrides. We
will need small basic image without all packages that can be safely
removed (FFI etc.) for that. The biggest problem is to initialize
fully working Morphic world (but we are already able to do that
partly).

I expect that then we will be able to create script that will shrink
the image to the kernel without self-bootstrapping process. So as the
result we may have "our" (not only "my") kernel image. The final basic
image will be almost the same as the current image so we will burn no
important bridges but we will have well described process of Morphic
initialization and (still little messy but usable) kernel (maybe not
official for end-users but important part of Squeak development and
modularization).

I would like to see it as the main goal for Squeak 3.10. I expect that
it may take about two or three months. Your comments?

Cheers,
-- Pavel



More information about the Squeak-dev mailing list