[Python-Dev] capability-mediated modules (was: python-dev Summary
for 2003-03-01 through 2003-03-15)
Thu, 20 Mar 2003 15:33:38 +0000
Samuele Pedroni wrote:
>>Making it explicit would make me happy. Can you pass parameters to an
> not directly,
> an extension like
> import module(parmmod=....,...)
> would not seem totally unreasonable.
> The problem is that normally modules are uniquely globally identified
> singletons, but the very notion of parametrization implies instantiation and
> that breaks the singleton part. When to instatiate a new module and when not?
> a potential problem is not simply module specific global state but that the
> e.g. classes exported from two instances of the same module would be _distinct_
> and so not interoperable.
I don't think we'd want to change them from being singletons, just
restrict access to them based on capabilities. So, I was more thinking
of something like:
where the capability conveys the authority to import the module. Oh. I
see the problem: if module A imports module B, and then module A is
imported in turn by C and D, with C having a capability to B that it
hands to A, but D _not_ doing so, then where are we? I suppose we would
say that the import of A into D failed in that case. Of course, this
still leaves open the question of how we pass the authority to import
into the module, so I guess it would look like:
and cap2 etc. would have to only be used in the import statements in the
module. And this is getting messy.
OTOH, my original idea was that the only modules a capability-enabled
module would be allowed to import would be ones that are either
capability-safe, or modules in the same "package" (for some definition
of package). Any other module would have to be imported by whoever
initialised the capability environment, and appropriate capabilities
handed in to the capability-enabled objects. This sounds cleaner to me,
if somewhat nebulous at the moment.
"There is no limit to what a man can do or how far he can go if he
doesn't mind who gets the credit." - Robert Woodruff