Source Code Map

This document is a map of the source code, it describes what many of the directories/files contain.

ast.py

This contains each of the AST node classes. Each of these is responsible for encoding the structure of the program, and compiling itself to bytecode.

astcompiler.py

This contains utility classes for compiling ASTs to bytecode.

coerce.py

This contains logic for performing type coercion on Ruby objects. It contains implementations for behaviors like, “this Ruby function takes an Integer argument”.

executioncontext.py

This contains logic specific to the current thread of execution in Ruby. It maintains things like the Ruby call stack.

frame.py

This contains Ruby frame objects, and associated logic for manipulating them.

gateway.py

This contains logic for exposing RPython functions in Ruby.

interpreter.py

This contains the bytecode interpreter itself.

lexer.py

This contains the hand written Ruby lexer.

main.py

This contains the command line entry-point, including things like argument parsing logic.

module.py

This contains an API for exposing RPython classes in Ruby, it should be merged with gateway.py.

objspace.py

This contains the ObjectSpace (unrelated to Ruby’s ObjectSpace module), it is responsible for encoding the behaviors of Ruby, for example it contains methods like find_const, send, and methods for creating new Ruby objects from RPython ones.

parser.py

This contains the parse rules and actions, built atop rply.

modules/

This contains built-in Ruby Module objects. There is one Module per file.

objects/

This contains built-in Ruby Class objects. There is one Class per file.