Normally, compilation happens automatically: when an S-expression is evaluated, it is first compiled and then the compiled code is executed. However, MzScheme can also write and read compiled MzScheme code. MzScheme can read compiled code somewhat faster than reading S-expression code and compiling it, so compilation can be used to speed up program loading. The MzLib procedure compile-file (see section 15.2.5) is sufficient for most compilation purposes.
When a compiled expression is written to an output port, the written form starts with #`. These expressions are essentially assembly code for the MzScheme interpreter. Never ask MzScheme to evaluate an expression starting with #` unless compile generated the expression. To keep users from accidentally specifying bad instructions, read will not accept expressions beginning with #` unless it is specifically enabled through the read-accept-compiled Boolean parameter (see section 126.96.36.199). When the default load handler is used to load a file, compiled expression reading is automatically (temporarily) enabled as each expression is read.