Projects and VMs.
When you design your solutions it is imperative to know the following:
- The DLL deployed to the end users can load and execute multiple Virtual Machines (VMs). The host application (your own program) can load a VM using the appropriate DLL API function, or an already executing VMN can load another VMN+1.
- Each VM loads a single string of bytecode for execution. The bytecode is actually a heavily encrypted byte-array which is also sealed using a private key, but for convenience the compiler generates the bytecode as a base64 string - containing only base64 acceptable characters, making it easy to include the bytecode in text files or as part of your source code.
- Each SCRAMBLECODE project is compiled into a single bytecode string. This is a one-to-one relation. If you need one VMA to call another VMB (executing different bytecode), you will need two projects A and B.
- The IDE can have only one project open for design. However you can work on different projects in parallel by opening the IDE multiple times - perhaps using shortcuts with different working directories to start in, although this is not required.
- The debugger is an exception to this rule. It can open Compilation Unit Files (CUF) from multiple projects into the same debugging session, making it possible to debug and trace the events of multiple VMs calling each other.