[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

section 4.2



Some time ago, I promised Kathy Chapman that I would prepare a draft
of section 4.2 for the standard.  I've started to outline the
organization and decide which issues go where, which is what follows.
Any comments you have on this before I get started on serious writing
would be welcome.

The issues I've listed are those that are relevant to the discussion,
and I expect that in some cases not all of the material from the issue
will be included directly in that place.  For example, issue
COMPILED-FUNCTION-REQUIREMENTS will probably end up being distributed
between the subsections on COMPILE and COMPILE-FILE in section 4.2,
and the description of the COMPILED-FUNCTION data type in section 2.2.
I haven't yet figured out the details of exactly what sections will be
affected by each of our issues yet, but I do plan to put together a
list eventually (once section 4.2 starts to take shape).

-Sandra

---- cut here -------- cut here -------- cut here -------- cut here ----

Introduction
------------

The compiler is a utility that translates programs into an
implementation-dependent form that can be represented or executed more
efficiently.  Compiling a program involves resolving certain kinds of
references appearing within the code at compiletime, instead of
waiting until the program is actually run. 

In some implementations, compilation may happen implicitly.  For
example, it is permissible to implicitly compile all functions defined
with DEFUN or FUNCTION, or to implement EVAL so that it implicitly
compiles the form and then executes the resulting code.  Common Lisp
also provides tools (the functions COMPILE and COMPILE-FILE) for
explicitly forcing compilation to take place.


Time of Binding
---------------

[OK, we've said that the compiler works by resolving some things in
advance.  Now talk about exactly what those things are.]

[Issues:
  *COMPILE-ENVIRONMENT-CONSISTENCY
   PROCLAIM-INLINE-WHERE
   ALLOW-LOCAL-INLINE
   ]


COMPILE
-------

[What COMPILE is required to/allowed to do.]

[Issues:
   COMPILE-ARGUMENT-PROBLEMS
  *COMPILED-FUNCTION-REQUIREMENTS
   ]


COMPILE-FILE
------------

[Present our model of how the file compiler works.  List all
   the macros that do special compile-time magic.]

[Issues:
   COMPILER-DIAGNOSTICS
   COMPILER-VERBOSITY
   WITH-COMPILATION-UNIT
  *COMPILED-FUNCTION-REQUIREMENTS
   EVAL-WHEN-NON-TOP-LEVEL
   DEFINING-MACROS-NON-TOP-LEVEL
   LOCALLY-TOP-LEVEL
   COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
  *CLOS-MACRO-COMPILATION
  *PROCLAIM-ETC-IN-COMPILE-FILE
   IN-PACKAGE-FUNCTIONALITY
   COMPILE-FILE-PACKAGE
   ]


Compiler/Loader Interface
-------------------------

[How COMPILE-FILE tells LOAD to reconstruct objects appearing in
the source code.]

[Issues:
   CONSTANT-COMPILABLE-TYPES
  *CONSTANT-FUNCTION-COMPILATION
  *COMPILE-FILE-SYMBOL-HANDLING
   LOAD-OBJECTS
   CONSTANT-COLLAPSING
   CONSTANT-CIRCULAR-COMPILATION
   LOAD-TIME-EVAL (?)
   ]
-------