SMOP: Revision 8
Simple Meta Object Programming / Simple Matter Of Programming
SMOP is an alternative implementation of a C engine to run Perl 6. It is focused in getting the most pragmatic approach possible, but still focusing in being able to support all Perl 6 features. Its core resembles Perl 5 in some ways, and it differs from Parrot in many ways, including the fact that SMOP is not a Virtual Machine. SMOP is simply a runtime engine that happens to have a interpreter run loop.
Important topics on SMOP
SMOP Development ROADMAP
In order to keep this simple, the ROADMAP will stay here and will be edited as needed.
sm0p - Lame Default SMOP Interpreter Implementation
0.1.0 - Port YAP6__CORE__Value code to SMOP__Object code.
0.1.1 - SMOP STACK prototypes and lowlevel operators
0.1.2 - Capture type (lowlevel implementation)
0.1.3 - sm0p preprocessor
S1P - Read it "Swamp"
0.2.0 - Signature type (lowlevel implementation)0.1.1.3 - Code type (lowlevel implementation)
0.2.1 - Sub type (lowlevel implementation)
0.2.2 - Multi Sub type (definition)
0.2.3 - multi sub infix:<~~> ( Signature, Capture )
0.2.4 - Multi Sub (lowlevel implementation)
0.2.5 - Some operators (the ones kp6 uses?)
0.2.6 - int type (lowlevel implementation)
0.2.7 - bytes type (lowlevel byte buffer)
0.2.8 - multi sub infix:<~~> ( IdentifierNameConstant, IdentifierNameConstant )
0.2.9 - multi sub say ( bytes )
0.2.10 - An equivalent to: say 'Hello World';
0.2.11 - S1P language
Completing SMOP runtime
0.3.0 - SMOP NATIVE prototypes and lowlevel operators
0.3.1 - Undef builtin types.
0.3.2 - Immutable builtin types.
0.3.3 - Mutable builtin types.
0.3.4 - Lexical Scope / Namespaces.
Perl 6 SMOP
0.4.0 - AST types.
0.4.1 - AST -> Stack runtime transformation (real interpreter)
0.4.2 - KP6 backend
0.4.3 - KP6 can compile grammars to SMOP
0.5.0 - KP6 grammar compiled
0.9.0 - KP6 bootstrapped in SMOP
1.0.0 - STD ported to SMOP
x.x.x - perl5 embedded - libperl
x.x.x - parrot embedded - libparrot
x.x.x - python embedded (stackless python?)
x.x.x - jvm embedded - libgcj
x.x.x - spidermonkey embedded - libmoz-js
Usually, things from ROADMAP should come to here when its done.
0.x.x.x - "Identifier Name Constant" type and the definition of the pool of constants.
See also the Old YAP6 Changelog.