2015-01-19 15:41 GMT+01:00 Craig Latta <craig(a)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)
>
>
>
>
> Sure, right now you can browse the kernel memory from Squeak 4.5.
> Every time you accept a method, you're compiling it in Squeak 4.5 and
> imprinting it onto the kernel. But you're referring to imprinting driven
> by method execution?
Yes exactly!
> (Each method that is run is imprinted elsewhere, as
> a side-effect.) What code would you like to see imprinted?
>
Test suites. To me, the holy-grail of deployment scaling is I first I
develop and configure in a big luxurious Cadillac image loaded with tools
until I'm ready to deploy. When I'm ready to deplooy I fire up a copy of
your 1MB core image as the "target" with my luxury image as the 'source'
and then I simply bring over a top-level test-suite method into the target
and run it.
As the methods are executed and found to be missing in the 1MB target, they
are brought over from the source.
By the time the tests are done, /all/ and /only/ the methods which were
needed to run the tests were brought over by Spoon / Naiad.
Now I want to save that target image (maybe 5MB now) and deploy it. I will
want to run many multiple copies of of that 5MB image but since my tests
probably don't have 100% coverage it would be too risky to run in
production unless each of those 5MB images could have backup Spoon access
to a single running copy of my mother Caddi' image, in case one more method
is found to be needed...
So I see Spoon as a way for learning about systems like you, but also as a
solution for scaling -- from the smallest single core for limited hardware
<---> to the largest multi-core, applications because one can run MORE
images concurrently due to their smaller size.
> In any case, I do plan to make videos showing all the top-level
> features.
>
>
> thanks,
>
> -C
>
> --
> Craig Latta
> netjam.org
> +31 6 2757 7177 (SMS ok)
> + 1 415 287 3547 (no SMS)
>
>
>
Branch: refs/heads/master
Home: https://github.com/ccrraaiigg/context
Commit: 6e2581daab3164b77993b2752171d9ba76cd4545
https://github.com/ccrraaiigg/context/commit/6e2581daab3164b77993b2752171d9…
Author: Craig Latta <github(a)netjam.org>
Date: 2015-01-17 (Sat, 17 Jan 2015)
Changed paths:
A context.app/Contents/Resources/context processor.app/Contents/JavaScript/Flow.js
M context.app/Contents/Resources/context processor.app/Contents/Resources/context/memories/946BE974-48B7-4D11-B209-6355B3E49722/946BE974-48B7-4D11-B209-6355B3E49722
M context.app/Contents/Resources/context processor.app/Contents/Resources/context/memories/CFE10A14-D883-4ACE-990A-0DDA86AA362B
Log Message:
-----------
Started JavaScript version of the Flow external streaming plugin, for use with SqueakJS. Tweaked the console's welcome page.
That sounds awesome Craig, congratulations. If you ever do a video of
a reasonably-sized imprinting experiment onto your core-classes image
from a modern Squeak image, I will be very interested to see it!
On Fri, Jan 16, 2015 at 2:01 PM, Craig Latta <craig(a)netjam.org> wrote:
>
> Hoi all--
>
> Context[1] is the umbrella project for Naiad (a distributed module
> system for all Smalltalks[2]), Spoon (a minimal object memory that
> provides the starting point for Naiad), and Lightning (a
> remote-messaging framework which performs live serialization, used by
> Naiad for moving methods and other objects between systems). I intend
> for it to be a future release of Squeak, and a launcher and module
> system for all the other Smalltalks. I'm writing Context apps for cloud
> computing, web services, and distributed computation.
>
> Commits b7676ba2cc and later of the Context git repo[3] have:
>
> - Support for installable object memories as git submodule repos.
>
> - Submodule repos for memories for each of the known Smalltalk
> dialects, with Naiad support pre-loaded. I'm currently working on
> the submodules for Squeak[4] and Pharo[5].
>
> - A web-browser-based console for launching and managing object
> memories.
>
> - A WebDAV-based virtual filesystem that enables Smalltalk to appear
> as a network-attached storage device, and mappings of the system
> to that filesystem that make Smalltalk accessible from external
> text editors (e.g., for editing code, managing processes and
> object memories).
>
> - Remote code and process browsers.
>
> Live discussion at [6]. Mailing list at [7]. The newsgroup is
> gmane.comp.lang.smalltalk.squeak.context.
>
>
> Thanks for checking it out!
>
> -C
>
> [1] http://thiscontext.com
> [2] http://thiscontext.com/a-detailed-naiad-description
> [3] https://github.com/ccrraaiigg/context
> [4] https://github.com/ccrraaiigg/3EAD9A45-F65F-445F-89C1-4CA0A9D5C2F8
> [5] https://github.com/ccrraaiigg/CFE10A14-D883-4ACE-990A-0DDA86AA362B
> [6] http://squeak.slack.com
> [7] mailto:context@lists.squeakfoundation.org
>
> --
> Craig Latta
> netjam.org
> +31 6 2757 7177 (SMS ok)
> + 1 415 287 3547 (no SMS)
>
>
Branch: refs/heads/master
Home: https://github.com/ccrraaiigg/context
Commit: d2c03071532cf585c4b4f0b8410a547b5d9b0115
https://github.com/ccrraaiigg/context/commit/d2c03071532cf585c4b4f0b8410a54…
Author: Craig Latta <github(a)netjam.org>
Date: 2015-01-16 (Fri, 16 Jan 2015)
Changed paths:
M context.app/Contents/Resources/context processor.app/Contents/Resources/context/memories/946BE974-48B7-4D11-B209-6355B3E49722/946BE974-48B7-4D11-B209-6355B3E49722
M context.app/Contents/Resources/context processor.app/Contents/Resources/context/memories/CFE10A14-D883-4ACE-990A-0DDA86AA362B
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Info.plist
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Pharo
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libAsynchFilePlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libB3DAcceleratorPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libCroquetPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libFT2Plugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libFloatMathPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libIA32ABI.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libJPEGReadWriter2Plugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libJPEGReaderPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libJoystickTabletPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libLocalePlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libMIDIPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libMpeg3Plugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libObjectiveCPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libQuicktimePlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libRePlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libSerialPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libSqueakFFIPrims.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libSqueakSSL.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libTestOSAPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libUUIDPlugin.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libcairo.2.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libfreetype.6.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libgit2.0.20.0.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libpixman-1.0.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libpng12.0.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/MacOS/Plugins/libssh2.dylib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/English.lproj/InfoPlist.strings
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/English.lproj/MainMenu.nib
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/Pharo.icns
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/Pharo.ico
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/Pharo.png
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/Pharo3.0.changes
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/Pharo3.0.image
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/PharoChanges.icns
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/PharoImage.icns
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/PharoSources.icns
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/PharoV30.sources
A context.app/Contents/Resources/context processor.app/Contents/Resources/context/processor/Pharo3.0.app/Contents/Resources/Squeak VM.r
Log Message:
-----------
Moved Pharo VM.