In Finding the compiler: adding opt_respond_to to the Ruby VM, part 2, I found the entrypoint into the compiler! It takes the root of our abstract syntax tree - pm->node - and produces a rb_iseq_t. rb_iseq_t is an “InstructionSequence”, which represents our virtual machine bytecode. Here’s the code where we left off: // ruby.c static VALUE process_options(int argc, char**argv, ruby_cmdline_options_t *opt) { //... pm_parse_result_t *pm =&result.prism; int error_state; iseq = pm_iseq_new_...