Capability Oriented Programming

last modified: April 6, 2010

Programming in the ObjectCapabilityModel requires a style very similar to normal ObjectOrientedProgramming, but there are differences. Some comments on this are at <http://www.eros-os.org/pipermail/e-lang/2001-August/005539.html>.

For patterns useful in CapabilityOrientedProgramming, see CategorySecurityPatterns.

The following discussion comes from http://www.combex.com/papers/darpa-report/html/index.html#unchecked , and is written in the context of a security review of a system using EeLanguage.

Explicit Differences between CapabilityOrientedProgramming and ObjectOrientedProgramming include:

def makeRevokableForwarderPair(obj) :any { 
        var innerObj := obj 
        def forwarder { match [verb, args] { E.call(innerObj, verb, args) }, }, 
        def revoker { to revoke() { innerObj := null }, },
        [revoker, forwarder] 
}, 

Also see ObjectCapabilityModel, CapabilitySecurityModel.


CategorySecurity


Loading...