Bindings and guard-based auditing

Thomas Leonard <tal-v5nx5w6akNyLE8xUarVfuPLx9OUvmyODWmv/[email protected]>
Newsgroups gmane.comp.lang.e.general
Organization IT Innovation
Message-ID <[email protected]>
On Mon, 2010-05-24 at 09:50 -0400, Kevin Reid wrote:
[...]
> > OK, so the problem is:
> >
> > - we want to know the guard (reliably)
> > - we want to allow custom slots
> > - we don't trust custom slots to enforce their claimed guard
> >
> > Perhaps we could wrap wacky slots in a known wrapper? e.g.
> >
> > def &myVar := makeGuardedSlot(myWackySlot)
> >
> > Where makeGuardedSlot would call myWackySlot.getGuard and store a copy
> > of the guard. GuardedSlot would check the value against the guard  
> > every
> > time you called get().
> >
> > An auditor could see that the slot was a GuardedSlot, and thus trust  
> > it
> > to ensure the values it returned always conformed to the guard. But  
> > for
> > the common case (FinalSlot) it would work fine anyway without  
> > wrapping.
> 
> It's not that 'we want to know the guard': it's that we want to know  
> an arbitrary amount of information about the slot. The binding-based  
> system allows that to be done -- it makes no assumptions about, for  
> example, whether the auditor cares about whether the slot is mutable.  
> There is no fixed list of approved slot types (in your proposal,  
> FinalSlot and GuardedSlot) which auditors get information about.

Ah, I hadn't spotted that the binding is vouching for the slot itself
(not just the values it returns).

Still, I don't see the advantage. The information we may want the
auditor to see for any name includes:

- the slot's auditors (e.g. "this is a FinalSlot")
- the slot's guard (e.g. "the value is always DeepFrozen")
- the slot's value (e.g. "true")
- other selected properties of the slot

How does a piece of code say what the auditor is allowed to see?

If I say:

def x := 3
def &y := makeWackySlot(4)

def obj implements Auditor {
  to getValue() { return x + y }
}

what can Auditor see by default? How do I control this?


-- 
Dr Thomas Leonard
IT Innovation Centre
2 Venture Road
Southampton
Hampshire SO16 7NP

Tel: +44 0 23 8076 0834
Fax: +44 0 23 8076 0833
mailto:tal-v5nx5w6akNyLE8xUarVfuPLx9OUvmyODWmv/[email protected]
http://www.it-innovation.soton.ac.uk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.