
JRuby Developer's Glossary
--------------------------


AST (Abstract Syntax Tree):

    A data structure representation of Ruby code, which is output from the
    parser. The current JRuby implementation does evaluation by running the
    interpreter directly on an AST. Also known as a "parse tree".

Block:

    You know, the {}-things in the source. They are passed to methods via the
    BlockStack.

Frame:

    A Frame is used to represent the actual method (or block) context. For each
    method (or block) call a new Frame is created.
    The Frame consists of the name of the method, the class in which the
    method is implemented and the arguments. It is pushed on to the current
    FrameStack.

FrameStack:

    Where Frames are put. Used to create exception back-traces and to find the
    correct super-methods [among other things?].

Interpret:

    To run Ruby code by walking through an AST.

Iter:

    Iter and the IterStack are Used to determine whether a block has been
    passed to the current method or not. [Exactly how it works and why it is
    called "Iter" is still shrouded in mystery.]

Meta-class:

    Every class is an object, and that object is an instance of a meta-class.
    At least internally (and in theory).

MRI (Matz' Ruby Interpreter):

    The original Ruby interpreter, implemented in C. Also known as
    "ruby" (spelled in all lower-case).

Scope:

    Scopes are used to store local variables and the current method-visibility
    which is used when a new method is created.
    The scope of a local variable ranges from class, module, def or do to the
    corresponding end.
    Each Scope stores local variables, their names and values.
    The Scopes are linked with their sub-scopes in a one-directional graph that
    ends in "topScope". From the viewpoint of a single Scope, this graph
    appears to be a stack, hence the name ScopeStack.

Type:

    The "type" of an object is almost always used as a synonym for
    "class" here.

Variable, Block:

    See Variable, Dynamic.

Variable, Dynamic:

    Similar to a Local Variable, used for Block arguments.

Variable, Local:

    Variable with a local Scope.
