All C<->Scheme conversions for immediate objects like numbers, booleans and characters are introduced. Internal apply is used for undefined procedures. Some optimizations are performed to decrease the amount of C<->Scheme object conversions.
All vector, pair and string constants are replaced by new variables. These variables are instantiated to the right values by init_foo*.
Procedures foo which are to be exported (made accesible to the interpreter), and which have an arity different from one of the following five templates: x, (), (x), (x y), (x y z), are made accessible via an additional procedure foo_wrapper taking a single list argument.
More or less straightforward.
The type conversion between C objects and immediate Scheme objects of the type boolean, char and num is performed by macros. The scheme object '() is represented by the macro object EOL.
Experiment yourself by defining:
(define *build-intermediate-files* #t)
instead of the default:
(define *build-intermediate-files* #f).