<html><head></head><body> <div dir="auto">Well it’s been a weekend. At one point I was starting the BoxOfKittens and the image froze uninterruptably. Heh. It not freezing but I’ve tangled something. I’ve been engaged in very aggressive sculpting and I totally lost it along my way. What would I say? Some highlights…</div><div dir="auto"><br></div><div dir="auto">• added #when:then: to ProtoObject to do Linda tuple matching of the whenTestTuple then: runs the thenReactor. And added Linda protocol there too, so any objects can do tuple matching. </div><div dir="auto">•••> arity</div><div dir="auto">•••> Linda match: converts any object to a tuple of its fields, then match:s with the test tuple.</div>• mass conversion of what was Session hierarchy to Gozer.<div dir="auto">• defining a ClassType to describe a <class name !! method names !! readOnlyMarks> (IVars go into a tuple, methods into a ClassType. I’m going to use one of the Available types to pass an anonymous object, along with ASN1 string notation of structure of the Type, a method interface and the object serialized all. So Java and such can talk it with ASN1. Ubiquitous.</div><div dir="auto"><br></div><div dir="auto"><className !! IVarsNames !! ASN1TypeDescription !! MethodNames !! Object serialized by this ASN1>, 5 arity.<br><div dir="auto"><br></div><div dir="auto">I like building analogs and describing a story, BoxOfKittens :) , so for teleport comms it’s GhostBusters! Session is Gozer, there are many that come through a Gate, the Server. These are not at all different between different uses. They’re invariant in class and operations, only difference is the GateKeeper, a different one for each different Protocol, ParrotTalk, SSL, SSH, Signal, TLS 1.2. Whisper, Far, Probe, and now InMemory and a #Clear protocol and GateKeeper. Every Protocol of communication has a unique GateaKeeper. I’m hoping to unify all Protocols ti use the existing Gate and Gozer and KeyMaster, though a different KeyMaster is possible.</div><div dir="auto"><br></div><div dir="auto">The opening and bringing forth another GozerStayPuff is the obligation of the GateKeeper, the Operation classes. ParrotTalk v3.6, v3.7, v3.9 all have different categories, whith their protocol rendezvous messages, carefully defined in ASN1.</div><div dir="auto"><br></div><div dir="auto">There are also Sessions, GateKeepers, in layer 5 <ParrotTalks, InMemory> and different keepers in layer 6: <Far, NeighborGateKeeper, Hymn>. </div><div dir="auto"><br></div><div dir="auto">Hymn will have Gozers to establish replication and bridging. It also will use group protocol to share encryption for replication. This leads to collaboration. We will explore ideas of dynamic demand access multiple access with establishing collaboration groups called a Hymn. As concurrent resources are gathered, Singers can offer resources to solve problems through parallelism. Audience participation. Hymn conducting all the way <caret></caret>from the Sisters to the Orchestra to the Choir. Kittens the whole lot of em.</div><div dir="auto"><br></div><div dir="auto">We shall see.<br><div><br></div><div class="protonmail_signature_block" id="protonmail_signature_block"><div>••• rabbit ❤️🔥🐰</div></div> <div class="signature_br" contenteditable="false"><br></div><div class="signature_br" contenteditable="false"><br></div> <div><br></div><div><br></div>On Sun, Jul 9, 2023 at 11:55, rabbit via Cuis-dev <<a class="" href="mailto:On Sun, Jul 9, 2023 at 11:55, rabbit via Cuis-dev <<a href=">cuis-dev@lists.cuis.st</a>> wrote:<blockquote type="cite" class="protonmail_quote">
<p>Hey, I am a touch frustrated. Recovered with <49>. The code
I wrote to generate classes and methods has been corrupting my
image, or rather mucking to the changes. I was having old code
versions being loaded and breaking bad. I was publishing a lot of
garbage because when running the BoxOfKittens, I was generating
several SharedNears, now called Neighbors. This subclass
generation and the method compilation is being done it the
following methods...I am just going to leave it turned off for now
and stay focused on my objective. It is an example of corruption
occurring, if that helps anyone. If one could tell me how to
better generate these artifacts, that would be outstanding!•
</p>
<pre cols="72" class="moz-signature">•••
</pre>
<p></p>
<p>The #buildOnClass is called from a class creation method<br>
</p>
<blockquote>
<p>buildOnClass: eClazz<br>
<br>
|refClass |<br>
refClass := self stubClass<br>
subclass: (eClazz name, 'Stub') asSymbol<br>
instanceVariableNames: ''<br>
classVariableNames: ''<br>
poolDictionaries: ''<br>
category: self userClassCategoryString.<br>
<br>
"Copy all methods, up to Object, to the new refClass, with
redirectMessage forwarding."<br>
self copyMethodsToClass: refClass fromClass: eClazz
upToClass: Object.<br>
<br>
^ refClass <br>
</p>
</blockquote>
<blockquote>
<pre cols="72" class="moz-signature">•••</pre>
</blockquote>
<blockquote>copyMethodsToClass: refClass fromClass: valueClazz
upToClass: rootClass<br>
</blockquote>
<blockquote>
<p><br>
| arguments classes newMethodString |<br>
"Collect classes to contribute message protocol."<br>
classes := valueClazz allSuperclasses select: [ :clazz |
(Object ~~ rootClass) and: [ Object inheritsFrom: clazz] ].<br>
<br>
"contribute message protocols."<br>
classes do: [:thisClazz | <br>
thisClazz methodDictionary keysAndValuesDo: [:selector
:method | <br>
arguments := method tempNames first: method numArgs.<br>
newMethodString := self buildForwardingMethod:
selector contents arguments: arguments.<br>
Compiler <br>
compile: newMethodString<br>
environment: refClass environment <br>
notifying: nil <br>
trailer: method trailer <br>
ifFail: [nil]]].<br>
</p>
<pre cols="72" class="moz-signature">•••</pre>
buildForwardingMethod: selector arguments: arguments<br>
<br>
| argumentString selectorStream |<br>
argumentString := ((arguments inject: ''writeStream into:
[:stream :argument | stream nextPutAll: argument, ' ']) contents).<br>
selectorStream := '' writeStream.<br>
(selector subStrings: $:) with: arguments do: [:keyword
:argument | selectorStream nextPutAll: keyword, ': ', argument, '
'].<br>
^ selectorStream contents, '<br>
<br>
^self redirectMessage: (Message selector: ', selector
asSymbol printString, ' arguments: #{', argumentString, '}).'<br>
</blockquote>
Alright then,<br>
<pre cols="72" class="moz-signature">--
••• rabbit ❤️🔥🐰</pre>
</blockquote></div></div></body></html>