<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

<channel>
<title><![CDATA[Perl 6: SMOP]]></title>
<link>http://www.perlfoundation.org/perl6/index.cgi?smop</link>
<description></description>
<pubDate>Tue, 23 Oct 2012 10:27:20 -0000</pubDate>
<webMaster>synedra@gmail.com</webMaster>
<generator>Socialtext Workspace v2.14.7.2</generator>

<item>
<title><![CDATA[SMOP]]></title>
<link>http://www.perlfoundation.org/perl6/index.cgi?smop</link>
<description><![CDATA[<div class="wiki">
<h1 id="simple_meta_object_programming_simple_matter_of_programming">Simple Meta Object Programming / Simple Matter Of Programming</h1>
<p>
is a C based interpreter (runloop) that executes, what different compiler (like <a href="http://www.perlfoundation.org/perl6/index.cgi?mildew" title="(38 months)  What is mildew Mildew is a compiler that uses [STD.pm] as its parser and [SMOP] as its runtime. It ...">Mildew</a> ) produce.</p>
<p>
If you want to help SMOP, you can just take on one of the lowlevel S1P implementations and write it. If you have any questions ask ruoso or pmurias at #perl6 @ irc.freenode.org.</p>
<p>
The Slides for the talk <a target="_blank" title="(external link)" href="http://people.debian.org/%7Eruoso/SMOP.pdf">Perl 6 is just a SMOP<!-- wiki-renamed-hyperlink "Perl 6 is just a SMOP"<http://people.debian.org/%7Eruoso/SMOP.pdf> --></a><a target="_blank" title="(external link)" href="http://people.debian.org/%7Eruoso/SMOP.pdf"><!-- wiki-renamed-hyperlink ""<http://people.debian.org/%7Eruoso/SMOP.pdf> --></a> are available, it introduces a bit of the reasoning behind SMOP. A <a target="_blank" title="(external link)" href="http://www.yourcargo.org/SMOP.pdf">newer version<!-- wiki-renamed-hyperlink "newer version"<http://www.yourcargo.org/SMOP.pdf> --></a> of the talk presented at YAPC::EU 2008 is available</p>
<p>
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 <a target="_blank" title="(external link)" href="http://www.perlfoundation.org/parrot">Parrot<!-- wiki-renamed-hyperlink "Parrot"<http://www.perlfoundation.org/parrot> --></a> in many ways, including the fact that SMOP is <strong>not a Virtual Machine</strong>. SMOP is simply a runtime engine that happens to have a <strong>interpreter run loop</strong>.</p>
<p>
The main difference between SMOP and Parrot (besides the not-being-a-vm thing), is that SMOP is from bottom-up an implementation of the Perl 6 OO features, in a way that SMOP should be able to do a full bootstrap of the Perl 6 type system. Parrot on the other hand have a much more static low-level implementation (the PMC)</p>
<p>
The same way PGE is a project on top of Parrot, SMOP will need a grammar engine for itself.<br />
SMOP is the implementation that is stressing the meta object protocol more than any other implementation, and so far that has been a very fruitful exercise, with Larry making many clarifications on the object system thanks to SMOP.</p>
<ul>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_hacking" title="(57 months) [SMOP] uses a set of different tools and compilers, and it uses CMake to manage its build process. T...">SMOP Hacking</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_debugging" title="(64 months) Debugging a libtool package is not that straight forward because of the libtool scripts, which gdb d...">SMOP Debugging</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_portability" title="(46 months) Follows the list of CPU OS Distribution-Versions that it s reported to work i386 Debian Lenny (testi...">SMOP Portability</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_status" title="(39 months) SMOP is currently facing a major refactoring, see the re-smop directory in the pugs repo. You can he...">SMOP Status</a></li>
</ul>
<h2 id="important_topics_on_smop">Important topics on SMOP</h2>
<ul>
<li>SMOP doesn't recurse in the C stack, and it doesn't actually define a mandatory paradigm (stack-based or register-based). SMOP has a <a href="http://www.perlfoundation.org/perl6/index.cgi?polymorphic_eval" title="(65 months) Polymorphic Eval is the ability of chaining the execution of different interpreters from within the ...">Polymorphic Eval</a>, that allows you to switch from one interpreter loop to another using Continuation Passing Style. See <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_stackless" title="(65 months) At first, a question must be made, which is why do I need to get rid of the C stack The answer resid...">SMOP Stackless</a>.</li>
<li>SMOP doesn't define a object system in its own. The only thing it defines is the concept of <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_responder_interface" title="(41 months) The Responder Interface is the basic [SMOP] type that actually can do something in the C lowlevel. E...">SMOP Responder Interface</a>, which then encapsulates whatever object system. This feature is fundamental to implement the <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_native_types" title="(65 months) Besides the basic structures to which all objects must be binary-compatible with, we also need to ha...">SMOP Native Types</a>.</li>
<li>SMOP is intended to bootstrap itself from the low-level to the high-level. This is achieved by the fact that <strong>everything in SMOP is an Object</strong>. This way, even the low-level objects can be exposed to the high level runtime. See <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_oo_bootstrap" title="(61 months) At first, it s important to understand that all C typedef structs in [SMOP] are meant to support Per...">SMOP OO Bootstrap</a>.</li>
<li>SMOP won't implement a parser in its own, it will use STD or whatever parser gets ported to its runtime first.</li>
<li>In order to enable the bootstrap, the runtime have a set of <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_constant_identifiers" title="(64 months) As everything in [SMOP] is an object, including the method identifiers in the messages to the [SMOP ...">SMOP Constant Identifiers</a> that are available for the sub-language compilers to use.</li>
<li>There are some special <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_values_not_subject_to_garbage_collection" title="(41 months) Some values have special meaning in the [SMOP] runtime. These values are prototype objects for thing...">SMOP Values Not Subject to Garbage Collection</a>.</li>
<li>A new interpreter implementation <a href="http://www.perlfoundation.org/perl6/index.cgi?smop_mold" title="(57 months) (Mold is currently under implementation) SMOP Mold is a register based interpreter implementation A ...">SMOP Mold</a> replaced SLIME</li>
<li>The &quot;official&quot; smop Perl 6 compiler is mildew - it lives in v6/mildew</li>
<li>Currently there exists an old Elf backend which targets SMOP - it lives in misc/elfish/elfX</li>
</ul>
<h3 id="other_matters">Other matters</h3>
<ul>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_autovivification" title="(65 months)  How should autovivification work This document still references YAP6 before the refactoring that ca...">SMOP Autovivification</a>.</li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_boot_sequence" title="(64 months) Because of the way that [SMOP OO Bootstrap], it s important to have a very precise definition of its...">SMOP Boot Sequence</a>.</li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_reference_and_release_policy" title="(60 months)  Review Process All files were reviewed, SMOP is valgrind-clean at the moment. Documentation Even if...">SMOP REFERENCE and RELEASE Policy</a>.</li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_inter_continuation_communication" title="(55 months) The way [SMOP] is designed allows a feature called [Polymorphic Eval]. This feature basically means ...">SMOP Inter Continuation Communication</a>.</li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_interpreter_implementation_api" title="(58 months) This is the API that must be implemented by any interpreter that wants to have its run loop integrat...">SMOP Interpreter Implementation API</a>.</li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_run_loop" title="(64 months) This code illustrates how the SMOP Run Loop works .pre if ( interpreter.has_next()) interpreter.next...">SMOP Run Loop</a>.</li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_p6opaque_implementation" title="(58 months) The p6opaque Responder Interface is the default responder for all Perl 6 objects, according to the [...">SMOP p6opaque Implementation</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_oo_api" title="(48 months) In order to ensure the interoperability among object representations and even between different obje...">SMOP OO API</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_specific_macros" title="(58 months) There are some macros that are specific to SMOP ___RI___( obj) returns the Responder Interface for a...">SMOP Specific Macros</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_default_metaclass" title="(40 months) This is the default metaclass implementation that will be used by Object. It is a lowlevel implement...">SMOP Default Metaclass</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_lexical_scope_implementation" title="(58 months) One first hard step in implementing lexical scopes is to put together a lot of details that are spre...">SMOP Lexical Scope Implementation</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_code_implementation" title="(58 months) Code is the object responsible for invoking a specific chunk of code inside a specific lexical scope...">SMOP Code Implementation</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_late_context_propagation" title="(49 months) Perl is, historically, a context-oriented programming language. In Perl 5, the modules overload and ...">SMOP Late Context Propagation</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_capture_expansion" title="(57 months)  Basics Capture expansion means taking different objects and using them as part of the actual captur...">SMOP Capture Expansion</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_sm0p_language" title="(59 months)  sm0p Basic Structure sm0p has a simple structure of a finite set of nodes. Each node is represented...">SMOP sm0p Language</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_prelude_lexical_scope" title="(56 months) Differently from Perl 5, in Perl 6 packages are not always global. The lookup for a particular packa...">SMOP Prelude Lexical Scope</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smop_multi_sub_dispatch" title="(56 months) Multi subs in Perl 6 support two features lexical variants of outer-or-global multi subs variant dis...">SMOP Multi Sub Dispatch</a></li>
<li><a href="http://www.perlfoundation.org/perl6/index.cgi?smopp5" title="(45 months)  Integrating [SMOP] and P5 This page describes the sketches on how to implement a p5 - SMOP integrat...">SMOPP5</a> - SMOP P5 integration</li>
</ul>
<h1 id="roadmap">Roadmap</h1>
<p>
<a href="http://www.perlfoundation.org/perl6/index.cgi?smop_gsoc_2009" title="(48 months) This page describes the steps to be taken during SMOP GSoC 2009. The project is being executed by Pa...">SMOP GSoC 2009</a></p>
<p>
See the <a href="http://www.perlfoundation.org/perl6/index.cgi?old_smop_changelog" title="(50 months)  SMOP Changelog Usually, things from ROADMAP should come to here when its done. It should be noted t...">Old SMOP Changelog</a></p>
</div>
]]></description>
<author>m.keating@hidden</author>
<guid isPermaLink="true">http://www.perlfoundation.org/perl6/index.cgi?smop</guid>
<pubDate>Tue, 23 Oct 2012 10:27:20 -0000</pubDate>
</item>

</channel>
</rss>