[Openmcl-devel] Package locks?
Hamilton Link
helink at sandia.gov
Wed Mar 31 13:01:43 PST 2004
On Mar 31, 2004, at 1:35 PM, Peter Seibel wrote:
> Gary Byers <gb at clozure.com> writes:
>
>> On Tue, 30 Mar 2004, Peter Seibel wrote:
>>
>>> Does OpenMCL have anything like Allegro's or CMUCL's package
>>> locking? I.e. something to prevent code outside a package from
>>> mucking with the definitions attached to symbols in the package?
>>
>> No. At first glance, the idea seems wrong (or maybe more accurately
>> half-right), but that's not an opinion that's based on actually having
>> used them (or having thought about the idea for more than a few
>> minutes.)
>
> I suspect you're right. Or half-right. ;-) That is, package locks are
> by no means a full solution to all the possible information-hiding and
> keep-other-folks-from-breaking-my-code-from-the-outside problems that
> one might like to solve. That said, they do provide an answer to the
> seemingly reasonable question: how do I keep someone who USE-PACKAGE'd
> my package from inadvertently stomping on a definitions that I care
> about that happens to be on an exported symbol.
>
If the threat of concern is people defunning over your API, you can set
the kernel-function flags on your API to get the same protection CAR
and CDR have (the functions for doing so are not exposed, I'm just
saying there is a mechanism in place that applies to more than car and
cdr). Gary's point is that this doesn't prevent people who are
intentionally trying to meddle with your package from doing so, since
this is essentially a read-time protection rather than a run-time
protection (and so things like (setf (fdefinition 'foo) #'broken) will
not be prevented). He and I started talking about what run-time
protection would look like and how one might declare it (along with a
more ada-like package declaration, which distinguishes between function
and value and class visibility rather than just all-of-a-symbol
visibility), but didn't pursue it very far.
Gary knows more than I do about how to prevent defclass etc. at this
level, but I suspect an un/lock-package function wouldn't be hard to
write.
h
More information about the Openmcl-devel
mailing list