SecureSqueak and packages

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

SecureSqueak and packages

Frank Shearar-3
Hi Michael,

A while ago you posted how you'd managed to bootstrap a Squeak image
such that all the kernel-y stuff was namespaced/packaged and nothing
depended on package-less classes in the image.

Is there a chance we (I!) can have a look at what you've done?

frank

Reply | Threaded
Open this post in threaded view
|

Re: SecureSqueak and packages

Michael van der Gulik-2
Replying to an email from Frank that I realised the list would be
interested in too:

On Tue, Apr 17, 2012 at 10:18 PM, Frank Shearar <[hidden email]> wrote:
> On 17 April 2012 03:44, Michael van der Gulik <[hidden email]> wrote:
>> On Mon, Apr 16, 2012 at 10:45 PM, Frank Shearar <[hidden email]> wrote:

<snip - SecureSqueak description>

>> What do you want to use it for?
>
> I've been doing a ton of reading on modules, in Newspeak and ML
> mainly. There's been a bunch of talk recently in both the Squeak and
> Pharo communities on reviving modularisation efforts.
>
> Mainly, I want to see if your work on packages can enable something
> like Newspeak and ML, where you may have multiple versions of the same
> package loaded in the same image, where packages don't have full
> access to other package's bits (unless you explicitly enable said
> access). In essence I'd like to carve up the flat, known-by-everything
> global-state-ish namespace we currently have.

That's a fairly accurate description of what I did, although I'm
unfamiliar with Newspeak and ML. I have done the following, all of it
less than alpha-quality code. All of this is code in their own
Namespaces and they don't appear in the SystemDictionary:

* Namespaces and Packages implemented and used. Namespace is a
subclass of Dictionary (mapping Symbols -> Classes and other
Namespaces), Package is a subclass of Namespace.
* NamespaceBrowser implemented (based on an old buggy PlusTools
browser), tools fixed up just enough to work with namespaces.
* Kernel, Collections, Morphic, Graphics, Files and System converted
to Packages.
* OpalCompiler, AST, SUnit, PlusTools converted to Packages.
OpalCompiler still needs to be used - currently I'm using the old
Compiler with modifications for namespaces.
* more stuff.

The new Kernel package is partially used, coincident with the original
classes. I made a new Metaclass / Class singularity and all of my
other classes (usually) use these. Special objects such as true,
false, SmallIntegers, BlockContext, etc etc still all need porting. I
haven't uncompacted any classes yet either.

I'm currently working on export and import of source code to files. I
hope to abandon squeak.changes and Squeak*.sources, and instead store
code in the image with regular exports to a directory structure for
backup and version control. I looked at Monticello and abandoned
trying to modify it in preference to exporting/importing code
predictably enough to be able to use existing version control tools
such as Subversion or Git. I'm separating source management from
Class. My philosophy here is that source code is only for developers,
and that the canonical source code lives as objects in an image.

I haven't touched much of this code for ages. If there is interest, I
could work towards another release. The latest versions only exist in
images on my local machine; I've gone far beyond being able to use
Monticello now. I can't work on it particularly quickly either; I only
have time for one or two hours a week.

Michael.
--
http://gulik.pbwiki.com/

Reply | Threaded
Open this post in threaded view
|

Re: SecureSqueak and packages

Michael van der Gulik-2
On Wed, Apr 18, 2012 at 9:04 AM, Michael van der Gulik
<[hidden email]> wrote:

> Replying to an email from Frank that I realised the list would be
> interested in too:
>
> On Tue, Apr 17, 2012 at 10:18 PM, Frank Shearar <[hidden email]> wrote:
>> On 17 April 2012 03:44, Michael van der Gulik <[hidden email]> wrote:
>>> On Mon, Apr 16, 2012 at 10:45 PM, Frank Shearar <[hidden email]> wrote:
>
> <snip - SecureSqueak description>
>
>>> What do you want to use it for?
>>
>> I've been doing a ton of reading on modules, in Newspeak and ML
>> mainly. There's been a bunch of talk recently in both the Squeak and
>> Pharo communities on reviving modularisation efforts.
>>
>> Mainly, I want to see if your work on packages can enable something
>> like Newspeak and ML, where you may have multiple versions of the same
>> package loaded in the same image, where packages don't have full
>> access to other package's bits (unless you explicitly enable said
>> access). In essence I'd like to carve up the flat, known-by-everything
>> global-state-ish namespace we currently have.
>
> That's a fairly accurate description of what I did, although I'm
> unfamiliar with Newspeak and ML. I have done the following, all of it
> less than alpha-quality code. All of this is code in their own
> Namespaces and they don't appear in the SystemDictionary:

<snip>

Oh yea, I haven't implemented any form of public/protected/private
classes or namespaces. That's pretty easy to do if you have some idea
of what you want.

More info is here:
http://gulik.pbworks.com/SecureSqueak
which is a part of:
http://gulik.pbworks.com/Unnamed%20Grand%20Project

Michael.

--
http://gulik.pbwiki.com/