As sketched in Embedding into a Program, and embedded instance of Racket CS is started with racket_boot. Functions such as racket_embedded_load_bytes help to initialize a Racket namespace with already-compiled modules.
For functions and struct fields that contain a path in char* form, the path is treated as UTF-8 encoded on Windows.
A racket_boot_arguments_t struct contains fields to specify how racket_boot should initialize a Racket instance. New fields may be added in the future, but in that case, a 0 or NULL value for a field will imply backward-compatible default.
Fields in racket_boot_arguments_t:
const char * boot1_path —
a path to a file containing a Chez Scheme image file with base functionality. Normally, the file is called "petite.boot". The path should contain a directory separator, otherwise Chez Scheme will consult its own search path.
long boot1_offset —
an offset into boot1_path to read for the first boot image, which allows boot images to be combined with other data in a single file. The image as distributed is self-terminating, so no size or ending offset is needed.
int argc and char ** argv —
command-line arguments to be processed the same as for a stand-alone racket invocation. If argv is NULL, the command line -n is used, which loads boot files without taking any further action.
const char * collects_dir —
a path to use as the main "collects" directory for locating library collections. If this field holds NULL or "", then the library-collection search path is initialized as empty.
const char * config_dir —
a path to used as an "etc" directory that holds configuration information, including information about installed packages. If the value if NULL, "etc" is used.
wchar_t * dll_dir —
a path used to find DLLs, such as iconv support. Note that this path uses wide characters, not a UTF-8 byte encoding.
int cs_compiled_subdir —
A true value indicates that the use-compiled-file-paths parameter should be initialized to have a platform-specific subdirectory of "compiled", which is used for a Racket CS installation that overlays a Racket BC installation.
If as_predefined is true, then the code is loaded during the creation of any new Racket place in the new place, so that modules declared by the code are loaded in the new place, too.