2015-01-19 15:41 GMT+01:00 Craig Latta <craig@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...

 
     thanks,

-C

--
Craig Latta
netjam.org
+31 6 2757 7177 (SMS ok)
+ 1 415 287 3547 (no SMS)