[squeak-dev] Re: Package unload status
Eliot Miranda
eliot.miranda at gmail.com
Sun Jan 3 18:58:31 UTC 2010
On Sun, Jan 3, 2010 at 7:49 AM, Andreas Raab <andreas.raab at gmx.de> wrote:
> Mariano Martinez Peck wrote:
>
>> As a "repeater offender" you will probably don't answer be. But anyway...
>> we were discussing a couple of days ago with the Pharo guys about unloading
>> and the biggest problem we found were the overrides of the packages. Do you
>> handle this situation?
>>
>
> Sure: Don't use overrides. Overrides are a necessary evil when you can't
> change the underlying system to use proper means of composing the desired
> behavior. However, if you are in control it's plain insanity to use
> overrides. Why in the lord's name would you use overrides unless you
> absolutely, positively had to?
>
Because one is experimenting. I agree with you Andreas that overrides are
evil and that in a well-designed system they can be eliminated by
well-designed extensibility conventions. However, in experimentation phases
before such extensibility schemes have been engineered or been justified
economically, good support for overrides are a reasonable substitute, and as
you admit, necessary. The problem with Monticello's overrides is simply
with their implementation above method versions. As we've discussed
recently an alternative implementation of a dictionary from overridden item
(method reference or class definition reference) to a dictionary from
package name to version in that package, along with a global package load
order, would allow the system to compute all the overridden items reliably
at any time, and compute the most recent previous version when unloading a
package that overrides. The modifications to Monticello would be minimal -
maintain a global load order, enter overridden definitions into the override
map on load, and remove entries from the override map on unload.
I know, code speaks louder than words. I'll see what I can do in my copious
spare time ;)
Cheers,
> - Andreas
>
> On Sun, Jan 3, 2010 at 3:09 PM, Andreas Raab <andreas.raab at gmx.de<mailto:
>> andreas.raab at gmx.de>> wrote:
>>
>> Folks -
>>
>> I've been going through various packages, and we're actually capable
>> of unloading quite a bit of them cleanly by now. I've attached my
>> unload script which (on a most recent updated trunk image with no
>> additional packages loaded) will be able to unload the following
>> packages:
>> - ReleaseBuilder, ScriptLoader
>> - 311Deprecated, 39Deprecated
>> - Universes, SMLoader, SMBase, Installer-Core
>> - VersionNumberTests, VersionNumber
>> - Services-Base, PreferenceBrowser, Nebraska
>> - CollectionsTests, GraphicsTests, KernelTests, MorphicTests
>> - MultilingualTests, NetworkTests, ToolsTests, TraitsTests
>> - XML-Parser, Traits
>> After these packages been unloaded there are no Undeclared
>> references or obsolete behaviors or modified MC packages. There are
>> several more candidate packages, some of which I could use some help
>> with:
>>
>> * Tests: The tests package is currently not unloadable because it
>> includes ClassTestCase which is used from several other places.
>> There is a fundamental question here whether we should aim for
>> making all tests as well as SUnit unloadable or not. If the former,
>> then we need to move tests out of packages like Files, System or MC
>> in order to make them unloadable. If we're not shooting for making
>> SUnit unloadable it may be worthwhile to promote ClassTestCase up to
>> SUnit so that the Tests package becomes unloadable. Comments?
>>
>> * Morphic-Extras: I don't understand the intent of this package. The
>> name implies to me that it includes "extras" which I'd expect to be
>> optional content that should be unloadable at will but the reality
>> is that even attempting to unload it (I foolishly tried) blows up
>> left and right. Question: Is the intention of Morphic-Extras to
>> contain unloadable content? If so, it's not doing its job currently.
>> If that's not the intention of Morphic-Extras, I'd appreciate a
>> heads-up of what the rationale for the structure is.
>>
>> * ST80: This is still a bit off but we're getting there. It can
>> actually be unloaded but there are still several Undeclared
>> variables and obsolete behaviors after unloading MVC. But the good
>> news is that the system is still functioning (!) instead of horribly
>> dying as it used to be. We could use a bit of additional help from
>> people with an interest in this area.
>>
>> Cheers,
>> - Andreas
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20100103/569cbcde/attachment.htm
More information about the Squeak-dev
mailing list
|