Definitions and TermsΒΆ

Twins
Twins are a group of entities created from the same code. Each twin appears and acts indistinguishable from its siblings. Together, they represent a single logical entity.
Twinterpreters
A group of interpreters acting as one to run a single program. Each twinterpreter runs only a portion of the program. However, the twinterpreters interact to create a single runtime environment.
Twin Object
Twins representing an entire object as their logical entity. In each twinterpreter, at least one TwinObject exists for a given object. Each TwinObject exposes the same attributes, methods and features as its siblings. However, there is only one Native Twin representing the actual object. All other twins are :term:`Proxy Twin`s.
Native Twin
The twin holding the actual data and methods of a Twin Object group. It is native to a twinterpreter, which stores its data and executes code. For the most part, the Native Twin acts like a regular object. However, it is known to its Proxy Twin`s and lives as long as any :term:`Proxy Twin is alive.
Proxy Twin
A twin taking the place of a Native Twin in a non-native twinterpreter. When interacting with a Proxy Twin, those actions are implicitly relayed to the Native Twin. Client code need not care about the nature of a Proxy Twin - it is a full-fledged paceholder of its twin.
twinfunction
A lightweight relative of Twin Object for callables. Calling a twinfunction follows the same semantics as any operation on a Twin Object.
kernel
The underlying connection between two twinterpreter. Each kernel handles the communication at process level, and provides delegation of primitive commands.