::Runtime -- Run a TestML Function The TestML Code and Data get compiled into a Function, and the Function is run by this Runtime class. Typically data is manipulated by Bridge functions, and at some point Assertions are made. The assertions are the things that call Test::More::is and Test::More::ok. ::Compiler -- Turn a TestML document into a runnable TestML Function. A TestML "document" is comprised of 3 main parts: Meta, Code, Data. This information often is in a single TestML (.tml) file or string, but it doesn't need to be. The information can come from anywhere and be in any form that is supported; it just must all be present when it is needed. The Meta information must be known first. It dictates where the Code and Data come from, and in what format they are. Also the Code and Data formats depend on the TestML API Version that is supplied. Before the Code and Data can be compiled, a Version must be supplied (no default) and then the compiler must support that Version. This allows TestML to change over time with no confusion. The compile function returns a Function object, which in turn contains an array of Statements and an array of Data Blocks. This function is the run by the Runtime object. A Function is just an array of "executable" statements that are proceseded in order. Some of the statements maybe be function declarations and function calls. The Compiler produces a top level scope function, with a Data set, and a Namespace for variables. All functions are anonymous, but they can be assigned to variables, and then you can call that variable name.