[movitz-devel] Low-level things

James A. Crippen james at unlambda.com
Thu Jan 22 07:00:01 UTC 2004


Frode Vatvedt Fjeld <ffjeld at common-lisp.net> writes:

> I've tried to introduce the % notation from the lisp-machines. It's my
> understanding that operator-names beginning with % signalled an unsafe
> operation, that if not used with care could damage the run-time
> invariants.

Yes, the % operators are those which should be considered wizardly
incantations not for use by mere mortals, but only by Masters Who Know
What They Are Doing. % functions were assumed to not do any sort of
safety checking on their arguments. Often a %FOO operation disregards
type information, and may correspond to a single low-level machine
instruction, like %LOGDPB or %CRASH. They might be used by people who
wanted faster code in certain places, and who could guarantee safety
by other means.

There are also %% constants which contain assorted bits and bytes that
are supposed to be unknown or invisible to anyone but implementors.
Like %%Q-HIGH-HALF, %%PAGE-HASH-TABLE-AGE, or %%KBD-ALL-CONTROL-BITS.
I don't think that %% were ever functions, only constants. They were
definitely not for ordinary users.

Also, the SI package was the container for a large amount of the
system. It stood for SYSTEM-INTERNALS or something like that. It was
where things inside the system that were meant for Mere Mortals to use
were exported as external symbols. SBCL calls the same thing SB-SYS
and SB-EXT, I think.

'james

-- 
James A. Crippen <james at unlambda.com> Lambda Unlimited
61.2204N, -149.8964W                     Recursion 'R' Us
Anchorage, Alaska, USA, Earth            Y = \f.(\x.f(xx))(\x.f(xx))




More information about the movitz-devel mailing list