[Pharo-dev] [squeak-dev] re: Context status 2015-01-16

Chris Muller asqueaker at gmail.com
Wed Jan 21 23:05:09 UTC 2015


On Tue, Jan 20, 2015 at 7:39 PM, Nicolas Cellier
<nicolas.cellier.aka.nice at gmail.com> wrote:
>
>
> 2015-01-19 15:41 GMT+01:00 Craig Latta <craig at netjam.org>:
>>
>>
>>      Okay, I'll add both of the execution-driven imprinters to the
>> repository. They're called "active" and "passive" imprinting.
>>
>>      Active imprinting is directed by the system that initially has the
>> desired code. An ActiveImprintingServer has clients in the systems which
>> will receive the code. Every time the server system runs a method in a
>> certain process, it imprints that method onto each of the clients. One
>> use case for this is giving the code of a demo to an audience as you run
>> it.
>>
>>      Passive imprinting is directed by the system that wants the code.
>> The target system makes a remote-messaging connection to a system which
>> has the code, and runs an expression which will use the code. Every time
>> a method is missing from the target system (in any process), the target
>> system requests the missing method from the provider system, installs
>> it, and retries running that method.
>>
>>      I have imprinted the exception-handling system, the compiler, and
>> the class builder with both approaches.
>>
>>
>
> In this scheme, something is striking me.
> Some images share some code (classes, compiledMethods)
> But what about code mutations/updates?
>
> Without such mutations, is it still Smalltalk?
>
> Without active imprinting, such mutations might not be obvious to propagate
> (for example a subclass now overrides a message of super)
>
> And since you import class builder and compiler in the target, on what
> purpose? Is the target going to change a class locally? What if it then
> imports incompatible methods from provider? Or is the goal to just replicate
> some mutations from the provider?
>
> Maybe the scheme is more interesting for deployment of static code, but I'm
> curious to know if ever live updates would still be possible...

The particular scenario I was dreaming of would never have changes
made to the imprinted images.  At worst, the source Caddilac image
might be have a patch applied in production, in which case it would
need some way to invalidate the updated methods in all clients...


More information about the Squeak-dev mailing list