Hi robert

thanks for refreshing me (I read E some year ago) and I read the PhD of tom van cutsem.
Now what are you doing? What is your goal?

Stef

Le 22/10/15 15:11, Robert Withers a écrit :


On 10/22/2015 06:19 AM, stepharo wrote:
>
> Which kind of migration example you have in mind that would not be
> supported? An example would help.

Well, my pics will demonstrate. I am interested in doing more than mappping ivars or a class rename. I want to do a total substitution, then a further substitution on the receiving, import side:

Vat1: anObject (Class A) ---> On wire: desc (Descriptor) ---> Vat2: aProxy (Class FarERef)

A desc is substituted for a PassByProxy object, then a FarERef is substituted for the desc.


    #fuelAccept: is a serialization side method.

    If Fuel supports substitution on serialization, I don't understand
    why no substitution support on materialization.


There was a reason, which I cannot remember completely. Maybe Martin or
Max can remember.

It seems your focus was pickling to disk then back. My focus is distributed proxy graphs, which has different use cases.
I'm interesting in knowing more :)
Especially Vat and others.

Firstly, I should credit these ideas: I leaned of Elib 9 years ago, from http://erights.org.

A vat is an event-loop. This ensures single-threading with only one thread executing a stack as it schedules to activity. A vat is conceptually a stack and a queue. This is an executing stack of immediate calls and a queue of eventual sends that will be scheduled into the stack as evaluates. When you have a farReference to an object in a different vat, then you need to serialize the graph of arguments sent to the remote object with an eventual send: to queue the send in the remote vat, pending evaluation as a stack.

When a graph is serialized, any PassByProxy objects sent as an argument to a remote method evaluation must be substituted on serialization with a descriptor describing the export of that far reference. This descriptor substitution is not a Fuel migration between versions of one object class nor is it a Fuel substitution, which replaces a subset of ivars, it is a true substitution, a descriptor of class FarDescriptor replaced for an arbitrary PasssByProxy object...let's say Customer <name, age, lastFourSSN>. So aCustomer <name: "Robert", age: 45, lastFourSSN: 9876> will get substituted with aFarReferenceDesc <wireId: 1, wireCount: 1>. On the receiving side, who sees this FerReference, if gets substituted again for a FarRef.

aCustomer ---> farDesc ---> farRef

Does this help to answer your questions? Fire away with more questions and I will try to answer. Reading about Elib on the erights site is another great source of information, sicne these guys came up with it.

My thoughts in the VM are to add a pool to the stack and the queue of an event-loop. For processes/continuations what are waiting for a signal, they are not scheduled into the queue. I believe that this model is a good one for a single-image-threaded execution machinery: a scheduling event-loop. This is pure intuition.

Best,
Robert

Stef








Reply via email to