1.2. Compiling files

ECL supports two types of compilation. One is bytecodes compilation. This process is performed on-the-fly, as you load source files with lisp code. This leads to a series of bytes for each instruction, the so called "bytecodes". These bytecodes are interpreted in a virtual machine, which is written in C and which is reasonably fast.

The other type of compilation is the so-called "native" compilation. This process consists on translating the lisp source file to C language. The intermediate file is later compiled using a C compiler. The result is an object file which may have different purposes.

Dynamically loadable files or FASL (FASt Loadable) files

These are produced in a ECL built with support for dynamically loadable libraries (Feature :DLOPEN is in *features*), when no extra arguments are passed to compile-file. These object files typically have the .fas extension, and can be loaded with load. They cannot be used to build libraries nor standalone executable programs.

linkable object files

These are produced when invoking compile-file with the keyword argument :system-p set to true. The object file typically has the .o extension. It cannot be loaded with load, but it can be used to build libraries, standalone executable programs, or larger FASL files.