The docs currently state:
> The easiest (and most fun) way to depend on a virtual machine is to
implement the virtual machine within Guile itself. This way the
virtual machine provides what Scheme needs (tail calls, multiple
values, call/cc
) and can provide optimized inline instructions
for Guile (cons
, struct-ref
, etc.).
This is a little confusing for new readers (like myself), who may consider Guile to by synonymous with Scheme.
This led to interpret this as 'the VM is implemented in Scheme', which has a bootstrapping problem (what actually interprets your bytecode?).
Instead, I propose adding an additional sentence:
> The easiest (and most fun) way to depend on a virtual machine is to
implement the virtual machine within Guile itself. Guile contains a
bytecode interpreter (written in C) and a Scheme to bytecode compiler
(written in Scheme). This way the virtual machine provides what Scheme
needs (tail calls, multiple values, @code{call/cc}) and can provide
optimized inline instructions for Guile (@code{cons}, @code{struct-ref},
etc.).