Guile has both an interpreter and a compiler. To a user, the difference is transparent—interpreted and compiled procedures can call each other as they please.
The difference is that the compiler creates and interprets bytecode for a custom virtual machine, instead of interpreting the S-expressions directly. Loading and running compiled code is faster than loading and running source code.
The virtual machine that does the bytecode interpretation is a part of Guile itself. This section describes the nature of Guile’s virtual machine.
|• Why a VM?:|
|• VM Concepts:|
|• Stack Layout:|
|• Variables and the VM:|
|• VM Programs:|
|• Instruction Set:|