Sigh. Send accident there.
On 5 July 2012 20:41, Frank Shearar frank.shearar@gmail.com wrote:
On 5 July 2012 18:15, Colin Putney colin@wiresong.com wrote:
On Thu, Jul 5, 2012 at 8:11 AM, Frank Shearar frank.shearar@gmail.com wrote:
Right. So what you're saying is that if you want proper modules, you need VM support.
Not necessarily. For the next experiment, I've been thinking about implementing selector spaces. Here's how it might work:
• Each environment has its own Symbol table • The scanner delegates interning of symbols to the environment • When interning a symbol the environment searches its imports • If no imported environment has the symbol, it creates one in its own symbol table
Does that mean that given libraries Foo and Bar that both define Object >> #thing, you provide some conflict resolution (say, {#thing1 -> (Foo at: #Object) >> #thing.}), and then in your Environment you have some method
doIt
doIt ^ self thing1
that the scanner turns that into a #thing sent to Foo's Object?
frank
This would mean that an environment could add extension methods to classes in other environments, without colliding with other extensions. It would also make it possible to create "private overrides" where only code in that environment would use the override. It might be useful for sandboxing, but might not be sufficient.
I want to stress, though, that this is *not* part of the current proposal—it's just some ruminating about what the next experiment might be, someday.
And while I'm drooling about the idea of a modular Squeak environment, what can I/we do to help this first stage?
Colin