Previous: The Optimize Declaration, Up: Compiler Policy [Contents][Index]
The extensions:optimize-interface
declaration is identical in
syntax to the optimize
declaration, but it specifies the policy
used during compilation of code the compiler automatically generates
to check the number and type of arguments supplied to a function. It
is useful to specify this policy separately, since even thoroughly
debugged functions are vulnerable to being passed the wrong arguments.
The optimize-interface
declaration can specify that arguments
should be checked even when the general optimize
policy is
unsafe.
Note that this argument checking is the checking of user-supplied
arguments to any functions defined within the scope of the
declaration, not
the checking of arguments to Common Lisp
primitives that appear in those definitions.
The idea behind this declaration is that it allows the definition of
functions that appear fully safe to other callers, but that do no
internal error checking. Of course, it is possible that arguments may
be invalid in ways other than having incorrect type. Functions
compiled unsafely must still protect themselves against things like
user-supplied array indices that are out of bounds and improper lists.
See :context-declarations
option to with-compilation-unit
.
Previous: The Optimize Declaration, Up: Compiler Policy [Contents][Index]