[e-lang] Surprising consequences of pipelining?

Kevin Reid kpreid at attglobal.net
Sat Jul 2 10:21:25 EDT 2005


On Jul 2, 2005, at 9:36, David Hopwood wrote:
> Kevin Reid wrote:
>> Consider this code:
>>   def coerced := (def guard := thing <- __getAllegedType()) <- 
>> coerce(thing)
...
>> A short description: An unresolved promise will behave as intended by 
>> the holder of its resolver, *but not necessarily as intended by its 
>> future resolution*.
...
> A surprise could only occur:
>  - if 'guard' were audited to be functional -- but we can't know that 
> it
>    is without trusting thing's vat, so that is not an issue.
>  - if we compare the reference 'guard' to another reference locally:

This is what I meant by "resolves to an already-known guard".

> IOW, the issue you've pointed out is a consequence of pipelining + EQ, 
> not pipelining alone. I'll have to think about whether it is actually 
> a problem, and your suggested solutions.
On Jul 2, 2005, at 9:42, David Hopwood wrote:
> Correction: it is a consequence of pipelining + (either EQ or rights
> amplification). For example, it would also be surprising if 'guard'
> had a known brand.

In the absence of EQ or audit-checking (which is only intra-vat), 
rights amplification cannot detect transparent forwarders, so one 
cannot gain any information about the behavior of the pre-amplification 
object. Having both pipelining and EQ seems to be necessary to create 
this problem.

-- 
Kevin Reid                            <http://homepage.mac.com/kpreid/>



More information about the e-lang mailing list