A Squeak Packaging Proposal (Re: Is this list a chat or a list REALLY ?)

ajh18 at cornell.edu ajh18 at cornell.edu
Thu Aug 9 15:52:17 UTC 2001


Stephane Ducasse <ducasse at iam.unibe.ch> wrote:
>         - having a infrastructure that support changes identification in a
>         much better way that changeset so that we can built a squeak from a
>         list of modules.

Here is my proposal.

A ChangeSet becomes a Package.  A package has one or more prerequisite
packages.  A process executes with respect to a working package. 
Methods and globals (including class and pool variables) are looked up
at runtime in the process's package and then its prerequisite packages
and so on (conflicts in prerequisites are resolved at Package creation
time by renaming and changing senders where appropriate).  Changes to
globals and methods are stored only in the working package, overriding
the prerequisite's value while preserving it.

For lookup efficiency, when a package is first used as a process's
environment, it and its prerequisites are collapsed into a single
Environment object containing all globals and methods visible from the
top working package.

Except for working packages, all packages and their contents are
immutable (closed packages).  Immutability is desired so packages can be
shared and known to be the same across images.  This way when loading a
package you only have to load the prerequisites that you don't already
have.  All packages will have a globally unique id (generated from the
current millisecond time plus a random number plus the authors initials)
so they can be uniquely identitfied.  You make changes by creating a new
package.  If you name it the same as an old package the user will see
this and can choose to use it in future packages instead of the old one.
 The new package can have the old package as a prerequisite.

Enforce immutability is another topic that I will put off to another
email.

I have written about packages before a couple of months ago under the
subject "Distributed Squeak and Environments".  I'm planning to
implement this soon after my work on Block Closures and will integrate
the two since both require a new VM and image format.

Any feedback would be greatly appreciated.

Cheers,
Anthony




More information about the Squeak-dev mailing list