to be deployed Epaati version is out!
Yoshiki Ohshima
yoshiki at vpri.org
Thu Apr 24 06:11:45 EDT 2008
> I'm playing with Epaati-10 a bit. Entering
> Grade2/Math/Unit4/IIM4_2_money identification.011.pr and coming back
> (the instance of Project did get collected, but the accompanying
> PasteUpMorph serving as its world along with all objects and players
> are lingering. Now, I'm (again) looking at the issue so hopefully I
> get to something...
Just a progress report, but the issue is basically around
#rootsIncludingPlayers not finding all classes, and the problem is
caused by a project that has scripts that reference to an object that
was trashed. Namely,
- You created object A and object B.
- You wrote a script C at object B that refers to object A
(This creates the uniclass for B).
- You wrote a script D at object A that refers to object B.
(This creates the uniclass for A).
- You dismissed/trashed object B.
- The project was saved.
What happens is that to keep the script D running and project working,
the system exports the object B into the saved project as well. But
because it is trashed, it is not "in the world", but referenced from
the scripts.
Epaati loads such a project, and upon exiting the project, it tries
to remove the project. From #okToChangeSilently,
#rootsIncludingPlayers is called to find the uniclasses used in the
project. But the logic only looks at the objects in the world, and
overlook the object B and the B's uniclass.
Because B has a script that refers to A, pretty much everything in
the project is kept because the world is reachable through A's owner
chain.
I still think Etoys/Smalltalk is almost suitable for what you are
doing, but loading and unloading a lot of project in a session wasn't
a typical use case. In a sense Epaati is stretching it. But it is
fixable fortunately.
One thing we definitely should do is to make #rootsIncludingPlayers
better. I can think of a few different ways. One thing you should do
is revisit your projects and make sure that every object refered to
from the project to "live" in the project.
IIM4_2_money identification.011.pr, for example, has quite a few of such objects.
To check these guys, open a workspace in a fresh epaati.image, and
evaluate:
old := PasteUpMorph allInstances.
Then load IIM4_2_money identification.011.pr and come back. In the
same workspace evaluate:
new := PasteUpMorph allInstances.
new := (new copyFrom: old size + 1 to: new size).
new := new select: [:e | e knownName = 'page'].
and look at the submorphs of these pages bound to new.
-- Yoshiki
More information about the Devel
mailing list