VVM Bytecode

=Introduction= A bytecode file [extension .vvm or .vvm.gz] is a binary program or library module for the Vanilla Virtual Machine.

=The Machine= The Vanilla Virtual Machine operates [conceptually] on a higher level than say the JVM. It deals directly with things like local variables, types and closures - rather than requiring direct manipulation of the stack by VVM bytecode. This has several advantages: But poses several difficulties:
 * Code is denser because it is higher level
 * This means files are smaller and [raw bytecode] programs are smaller in memory
 * It can - at the VM level - be optimised to a greater extent based on information available only at runtime
 * The specification is smaller, more understandable and easier to mantain
 * It is simpler to create a compiler targeting VVM code
 * It is simpler to create a new VVM
 * Bytecode is more directly related to the source code, which is often undesirable in closed source projects
 * Can easily be countered by automated code mangling - making the bytecode less understandable [harder to reverse-engineer] without effecting it's functionality or efficiency
 * It must still be able to represent code compiled from a huge group of different languages
 * This will simply add complexity - it is not really easier to make such languages inter-operate on a lower level VM
 * It is a more complicated process to optimise inside the VM
 * This is more a switch of such complexity from compiler to VM than additional complexity

=File Format=