Separate TeaTime (was Re: [squeak-dev] Re: Teleplace is hiring...)

Frank Shearar frank.shearar at angband.za.org
Sat Jan 8 17:18:13 UTC 2011


On 2010/12/08 02:10, Tony Garnock-Jones wrote:
> On 2010-12-07 4:00 AM, Lawson English wrote:
>> Don't I wish.
>
> What's stopping it? Is it as simple as a lack of people familiar enough
> with the system to extract it and/or write it up for others?

It's easy enough to file out the Islands packages. After that comes the 
hard part, trying to figure out the structure of the package etc.

The Islands class comment says one can install Islands by executing 
"Islands install", but it's not that simple. For starters, there is no 
"Islands install".

If you play around, and execute "Island default", you find that Islands 
depends on TMutex, defined in Croquet-Kernel-Objects.

(I have to say, it still blows me away that I can be in the debugger 
looking at a method referring to an undefined TMutex class, cut across 
to Cobalt, file out TMutex, cut back to my image, file in the class, and 
just hit restart, and proceed from there.)

Then, Island default quickly runs into an infinite loop, bouncing 
between Process(Object)>>island and ProcessorScheduler>>activeIsland. 
The chain of events looks like this:

Island class>>default instantiates Default (an Island), and then tries 
to find Processor activeProcess island. That, in 
Process(Object)>>island, says "^Processor activeIsland", which runs 
"^activeProcess island ifNil: [Island default]", which calls 
Process(Object)>>island, closing the circle.

IslandDeepCopier class>>test refers to CTileDefinition (from 
Tweak-Tiles-Definition). That looks like an easily removable dependency.

Island>>scheduleMessage:future: is an empty, uncalled method.

FarRef>>copyToCurrentIsland refers to CDeepCopier (from 
Tweak-Basic-Support).

IslandReader and IslandWriter refer indirectly to CCursorLibrary 
(Tweak-Basic-Support), CIconLibrary (Tweak-Basic-Support), MenuIcons 
(Morphic-Menus), ScriptingSystem (Morphic-Scripting), CIdentityTransform 
(Tweak-Costume-Transforms), IdentityTransform 
(Graphics-Transformations). These references are of the form "Smalltalk 
at: Foo ifPresent: []", so they don't necessarily need to be removed.

IslandTests>>testImplicitIsland refers in the #at:ifPresent: manner to 
CWindow (Tweak-Widgets-Basic)

SnapshotTracer>>printPath: refers to CObject (Tweak-Core-Object).

In summary then:

* I don't (yet) know how to solve the infinite loop mentioned above. It 
blows all the IslandTests but, thanks to TestRunner's timeouts, your 
image doesn't grow without bound running the tests.

* Islands has some easily-removed or ignorable dependencies on
** Graphics-Transformations (IdentityTransform)
** Morphic-Menus (MenuIcons)
** Morphic-Scripting (ScriptingSystem)
** Tweak-Tiles-Definition (CTileDefinition)
** Tweak-Basic-Suppport (CCursorLibrary, CIconLibrary)
** Tweak-Costum-Transforms (CIdentityTransform)

* Islands has some probably removable dependencies on
** Tweak-Core-Objects (CObject)
** Tweak-Basic-Support (CDeepCopier)
** Croquet-Kernel-Objects (TMutex)

* A number of methods use primitives (especially in FarRef, which looks 
like it duplicates a bunch of stuff from Object - #instVarAt:, 
#instVarAt:put:, and similar). I haven't noted the primitive numbers, 
nor compared them against, say, the primitives Object uses, so I haven't 
verified that Islands doesn't use special numbered primitives. (I 
presume not, although I try run Cobalt on a Cog VM, only for the VM to 
choke on a missing bytecode 204.)

There may be further dependencies; I read through the source, but didn't 
chase every message send for a lack of implementors.

frank



More information about the Squeak-dev mailing list