[Cuis-dev] [Recovered] AGAIN! This is the third /efourth time
rabbit
rabbit at callistohouse.org
Mon Jul 10 20:21:01 PDT 2023
I’m also going to offer access to the eventualContext of a Promise, whether Local, Neighbot or Far. Offer Revolution and ping / status, remote event registration on the EventuaMessageSend.
With readOnlyMarks added to the AnonymousStructure encoded object, #passByCopy we have:
<className !! IVarsNames !! ASN1TypeDescription !! MethodNames !! ReadOnlyMarks>, Object serialized by this ASN1>, 6 arity.
With direct read access to a local kitty Near access to cached / copied data, when a method not marked as readOnly is sent remotely to a different kitty cat, I will flip the “Near Access” to cache data to off, thus converting the Near reference to the cached data into a NearPromise, queuing access in the msgBuffer of this sort of Promise, until completion of the write, depending on policy.
I’d love to read about #beReadOnly but I cannot find it. I’d also like to have the vm send eventual events when state changes, like <self changed: iVarName>, thus triggerEvent:. With a BeSilent, this feature could be turned on and off.
••• rabbit ❤️🔥🐰
On Mon, Jul 10, 2023 at 22:25, rabbit via Cuis-dev <[cuis-dev at lists.cuis.st](mailto:On Mon, Jul 10, 2023 at 22:25, rabbit via Cuis-dev <<a href=)> wrote:
> 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…
>
> • 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.
> •••> arity
> •••> Linda match: converts any object to a tuple of its fields, then match:s with the test tuple.
> • mass conversion of what was Session hierarchy to Gozer.
> • 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.
>
> <className !! IVarsNames !! ASN1TypeDescription !! MethodNames !! Object serialized by this ASN1>, 5 arity.
>
> 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.
>
> 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.
>
> There are also Sessions, GateKeepers, in layer 5 <ParrotTalks, InMemory> and different keepers in layer 6: <Far, NeighborGateKeeper, Hymn>.
>
> 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 from the Sisters to the Orchestra to the Choir. Kittens the whole lot of em.
>
> We shall see.
>
> ••• rabbit ❤️🔥🐰
>
> On Sun, Jul 9, 2023 at 11:55, rabbit via Cuis-dev <[cuis-dev at lists.cuis.st](mailto:On Sun, Jul 9, 2023 at 11:55, rabbit via Cuis-dev <<a href=)> wrote:
>
>> 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!•
>>
>> •••
>>
>> The #buildOnClass is called from a class creation method
>>
>>> buildOnClass: eClazz
>>>
>>> |refClass |
>>> refClass := self stubClass
>>> subclass: (eClazz name, 'Stub') asSymbol
>>> instanceVariableNames: ''
>>> classVariableNames: ''
>>> poolDictionaries: ''
>>> category: self userClassCategoryString.
>>>
>>> "Copy all methods, up to Object, to the new refClass, with redirectMessage forwarding."
>>> self copyMethodsToClass: refClass fromClass: eClazz upToClass: Object.
>>>
>>> ^ refClass
>>
>>> •••
>>
>>> copyMethodsToClass: refClass fromClass: valueClazz upToClass: rootClass
>>
>>> | arguments classes newMethodString |
>>> "Collect classes to contribute message protocol."
>>> classes := valueClazz allSuperclasses select: [ :clazz | (Object ~~ rootClass) and: [ Object inheritsFrom: clazz] ].
>>>
>>> "contribute message protocols."
>>> classes do: [:thisClazz |
>>> thisClazz methodDictionary keysAndValuesDo: [:selector :method |
>>> arguments := method tempNames first: method numArgs.
>>> newMethodString := self buildForwardingMethod: selector contents arguments: arguments.
>>> Compiler
>>> compile: newMethodString
>>> environment: refClass environment
>>> notifying: nil
>>> trailer: method trailer
>>> ifFail: [nil]]].
>>>
>>> •••
>>>
>>> buildForwardingMethod: selector arguments: arguments
>>>
>>> | argumentString selectorStream |
>>> argumentString := ((arguments inject: ''writeStream into: [:stream :argument | stream nextPutAll: argument, ' ']) contents).
>>> selectorStream := '' writeStream.
>>> (selector subStrings: $:) with: arguments do: [:keyword :argument | selectorStream nextPutAll: keyword, ': ', argument, ' '].
>>> ^ selectorStream contents, '
>>>
>>> ^self redirectMessage: (Message selector: ', selector asSymbol printString, ' arguments: #{', argumentString, '}).'
>>
>> Alright then,
>>
>> --
>> ••• rabbit ❤️🔥🐰
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230711/f7560927/attachment-0001.htm>
More information about the Cuis-dev
mailing list