SMOP is a polymorphic meta-OO runtime library and
specification. Although some default implementations are presented
here, they are entirely optional.
base - This module is actually composed only of the basic
headers that define SMOP__Object* and SMOP__ResponderInterface*
along with its respective macros. Theoretically, two SMOP objects
can interoperate even without linking the same libraries.
s0native - This module contains the stage 0 native types, they are
packaged separated because they are not subject to garbage
collection, and because of its importance to everything else, it
builds libsmop-s0native. It contains:
- bool
- idconst
(including the definition of some common used values)
- empty interpreter
(used as a short-circuit so you know there isn't one)
nagc - This module implements the garbage collector for native
types. It defines an additional member in the ResponderInterface of
the types that use it that is called during destruction, as opposed
to calling the DESTROYALL method.
util
capture - This module implements the native capture which is the base
for the implementation of smop method calls. It is packaged
separatedly because it is needed for far too many types.
interpreter - In SMOP the interpreter is really just the container
for the current continuation. It delegates the runloop to the
continuation classes.
mold - This is the default continuation class. It is a register-based
bytecode interpreter.
native - This module contains the regular native types, subject to
garbage collection.
s1p - This module contains simplification of Perl 6 types that exist
for bootstrapping purposes:
* SMOP::S1P::Scalar
* SMOP::S1P::Array
* SMOP::S1P::Array::BValue
* SMOP::S1P::Hash
* SMOP::S1P::Hash::BValue
* SMOP::S1P::LexicalScope
* SMOP::S1P::LexicalScope::Flattened
* SMOP::S1P::Package
* SMOP::S1P::Signature::Adhoc
* SMOP::S1P::Signature::BindCapture
* SMOP::S1P::Signature::BlockDefault
* SMOP::S1P::Code
* SMOP::S1P::Code::NativeC
* SMOP::S1P::Capturize
* SMOP::S1P::RITest
* SMOP::S1P::ControlExceptionReturn
* SMOP::S1P::OutOfItemsException
p6opaque - This is the default representation for Perl 6 objects. It
should support storing all kinds of meta information required by
the Perl 6 default object system. It invokes the DESTROYALL method
during its destruction.
s1p-oo - This module contains types that aid OO bootstrapping
* SMOP::S1P::PrototypeHOW
* SMOP::S1P::RoleHOW
* SMOP::S1P::Attribute
* SMOP::S1P::Signature::MethodDefault
core - This module contains the code for the core loading.
* SMOP::S1P::MildewSOLoader
pcl - libpcl integration
p5 - embedded p5