<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Rakudo Death Star</title>
	<atom:link href="http://rdstar.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://rdstar.wordpress.com</link>
	<description>The slightly offtopic, laser-equipped space station of Perl 6</description>
	<lastBuildDate>Sat, 23 Mar 2013 00:17:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on NQP on LLVM: How to Port by Ben Goldberg</title>
		<link>http://rdstar.wordpress.com/2012/07/12/nqp-on-llvm-how-to-port/#comment-121</link>
		<dc:creator><![CDATA[Ben Goldberg]]></dc:creator>
		<pubDate>Sat, 23 Mar 2013 00:17:54 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=145#comment-121</guid>
		<description><![CDATA[You might be interested in looking at:
   https://github.com/jnthn/nqp-jvm-prep
Where Jonathan Worthington is doing preparatory work for giving NQP a second backend, so it will work on both parrot and the java virtual machine.

He&#039;s also cleaning up some things so that additional backends (such as LLVM) will be easier.

It doesn&#039;t [yet] pass all the tests, since not all operations have been implemented, and because of this, it cannot [yet] compile Rakudo, but he&#039;s actively working on it, making regular updates.

And while the Rakudo Perl6 compiler is a complicated program, needing every last bit of functionality that NQP provides, there are quite a few programs, written in the NQP language, that his port is capable of compiling into java bytecodes, and which can run correctly on the JVM.

That includes (his version of) the NQP compiler itself.  It&#039;s fully bootstrapped, and capable of running on the jvm and compiling itself into java bytecodes.

So, the fastest way to get an LLVM port would be to make a branch from his branch, and start hacking.  The downside of course would be that if he chooses to modify anything other than java-specific stuff, you might need to adjust your own code to stay compatible.

The other fast way would be to contribute to his branch of the code, so that he can merge it back into Rakudo&#039;s main branch, and *then* make a branch on which to hack.]]></description>
		<content:encoded><![CDATA[<p>You might be interested in looking at:<br />
   <a href="https://github.com/jnthn/nqp-jvm-prep" rel="nofollow">https://github.com/jnthn/nqp-jvm-prep</a><br />
Where Jonathan Worthington is doing preparatory work for giving NQP a second backend, so it will work on both parrot and the java virtual machine.</p>
<p>He&#8217;s also cleaning up some things so that additional backends (such as LLVM) will be easier.</p>
<p>It doesn&#8217;t [yet] pass all the tests, since not all operations have been implemented, and because of this, it cannot [yet] compile Rakudo, but he&#8217;s actively working on it, making regular updates.</p>
<p>And while the Rakudo Perl6 compiler is a complicated program, needing every last bit of functionality that NQP provides, there are quite a few programs, written in the NQP language, that his port is capable of compiling into java bytecodes, and which can run correctly on the JVM.</p>
<p>That includes (his version of) the NQP compiler itself.  It&#8217;s fully bootstrapped, and capable of running on the jvm and compiling itself into java bytecodes.</p>
<p>So, the fastest way to get an LLVM port would be to make a branch from his branch, and start hacking.  The downside of course would be that if he chooses to modify anything other than java-specific stuff, you might need to adjust your own code to stay compatible.</p>
<p>The other fast way would be to contribute to his branch of the code, so that he can merge it back into Rakudo&#8217;s main branch, and *then* make a branch on which to hack.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on NQP on LLVM: How to Port by lueinc</title>
		<link>http://rdstar.wordpress.com/2012/07/12/nqp-on-llvm-how-to-port/#comment-71</link>
		<dc:creator><![CDATA[lueinc]]></dc:creator>
		<pubDate>Fri, 27 Jul 2012 22:25:35 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=145#comment-71</guid>
		<description><![CDATA[I read your comment, and it is helpful. I&#039;ll be sure to refer back to it when I&#039;m able to go into writing NQP on LLVM full swing, even though I don&#039;t plan on generating C code to pass to LLVM (or more specifically, clang). Thank you as well for pointing me to which calling convention I should use in the LLVMIR. :)]]></description>
		<content:encoded><![CDATA[<p>I read your comment, and it is helpful. I&#8217;ll be sure to refer back to it when I&#8217;m able to go into writing NQP on LLVM full swing, even though I don&#8217;t plan on generating C code to pass to LLVM (or more specifically, clang). Thank you as well for pointing me to which calling convention I should use in the LLVMIR. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on NQP on LLVM: How to Port by Daniel Ruoso</title>
		<link>http://rdstar.wordpress.com/2012/07/12/nqp-on-llvm-how-to-port/#comment-69</link>
		<dc:creator><![CDATA[Daniel Ruoso]]></dc:creator>
		<pubDate>Fri, 13 Jul 2012 15:02:27 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=145#comment-69</guid>
		<description><![CDATA[Hm... I just realized I posted my really-long-comment in the wrong post... Please note my comment in the previous post...]]></description>
		<content:encoded><![CDATA[<p>Hm&#8230; I just realized I posted my really-long-comment in the wrong post&#8230; Please note my comment in the previous post&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Thoughts on starting NQP on LLVM by Daniel Ruoso</title>
		<link>http://rdstar.wordpress.com/2012/06/25/thoughts-on-starting-nqp-on-llvm/#comment-67</link>
		<dc:creator><![CDATA[Daniel Ruoso]]></dc:creator>
		<pubDate>Fri, 13 Jul 2012 14:51:19 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=137#comment-67</guid>
		<description><![CDATA[Ok, so I have been thinking about this for a long time already. So I&#039;ll just serialize everything that is in my brain right now. I hope it is useful :)

The first two things I have to say are actually two lessons I learned when working in the SMOP experiment, and that I still hold to be true for any low level implementation -- as in, not using a virtual machine with high-level stack management -- need to do.

1) Continuation-Passing-Style: This is absolutely required due to all the possible diversions that the code execution may happen (as in, phasers, control, catch and others). This is possible in LLVM using the &quot;FastC&quot; calling convention.

2) Representation Polymorphism: It is very important to understand that, with the exception of the native types, every Perl 6 type is the equivalent of a C++ template, in that it only becomes concrete when you choose a representation, with an important twist, you can actually use types realized in different representations interchangeably, which means that you should be able to step back and use the Meta-OO APIs to dispatch the call.

Now... I have mostly been thinking about generating C code to compile with LLVM (because of the fastC calling convention and CPS). And the way this would work is that we would generate, for each piece of NQP code, different ABI levels, from a truly-C-level call, to a completely abstracted invocation, and the compiler would be able to decide to which level it could go (depending on the actual types available in the lexical scope). The different levels would be:

level 0) the function is exposed as a C symbol with the invocation completely resolved at compile time and you can only receive native types as arguments on the stack and return native types on the stack without support for exceptions of any kind, and you can only call other functions of the same level. In that level you just use the C stack as usual.

level 1) the function is exposed as a C symbol with the invocation completely resolved at compile time  and you receive non-native types of known representations (i.e.: p6object Int) and return native or non-native types of known representations by using a low-level calling convention (i.e.: no capture object). This already requires CPS (with full support for exceptions), so each function is potentially splitted in several sections as you call other functions, the function lexpad becomes a garbage-collected item. A function in this level can call functions in any other level already.

level 2) the function is exposed as a C symbol with the invocation completely resolved at compile time and you receive non-native types of unknown representations (i.e.: a Int, but it could be p6object or p5SV) by using a low-level calling convention (i.e.: no capture object). This already requires your generated code to perform calls to those objects in the level3, but this function is still on level 2.

level 3) the function cannot be completely resolved at compile time to a C symbol, so you need to perform the entire high-level dispatch by first retrieving the function from the object (using .^can) and then calling the function (using the equivalent of .postcircumfix:), but you only use the known representation for the Capture object.

level 4) same as level 3, but the Capture object may have a unknown representation.

The exposure of C symbols can use some sort of name-mangling the same way C++ does so that it encodes the presumed information in each level. 

As I said, I have been thinking about this for a while. I hope it is usefull... :)]]></description>
		<content:encoded><![CDATA[<p>Ok, so I have been thinking about this for a long time already. So I&#8217;ll just serialize everything that is in my brain right now. I hope it is useful <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The first two things I have to say are actually two lessons I learned when working in the SMOP experiment, and that I still hold to be true for any low level implementation &#8212; as in, not using a virtual machine with high-level stack management &#8212; need to do.</p>
<p>1) Continuation-Passing-Style: This is absolutely required due to all the possible diversions that the code execution may happen (as in, phasers, control, catch and others). This is possible in LLVM using the &#8220;FastC&#8221; calling convention.</p>
<p>2) Representation Polymorphism: It is very important to understand that, with the exception of the native types, every Perl 6 type is the equivalent of a C++ template, in that it only becomes concrete when you choose a representation, with an important twist, you can actually use types realized in different representations interchangeably, which means that you should be able to step back and use the Meta-OO APIs to dispatch the call.</p>
<p>Now&#8230; I have mostly been thinking about generating C code to compile with LLVM (because of the fastC calling convention and CPS). And the way this would work is that we would generate, for each piece of NQP code, different ABI levels, from a truly-C-level call, to a completely abstracted invocation, and the compiler would be able to decide to which level it could go (depending on the actual types available in the lexical scope). The different levels would be:</p>
<p>level 0) the function is exposed as a C symbol with the invocation completely resolved at compile time and you can only receive native types as arguments on the stack and return native types on the stack without support for exceptions of any kind, and you can only call other functions of the same level. In that level you just use the C stack as usual.</p>
<p>level 1) the function is exposed as a C symbol with the invocation completely resolved at compile time  and you receive non-native types of known representations (i.e.: p6object Int) and return native or non-native types of known representations by using a low-level calling convention (i.e.: no capture object). This already requires CPS (with full support for exceptions), so each function is potentially splitted in several sections as you call other functions, the function lexpad becomes a garbage-collected item. A function in this level can call functions in any other level already.</p>
<p>level 2) the function is exposed as a C symbol with the invocation completely resolved at compile time and you receive non-native types of unknown representations (i.e.: a Int, but it could be p6object or p5SV) by using a low-level calling convention (i.e.: no capture object). This already requires your generated code to perform calls to those objects in the level3, but this function is still on level 2.</p>
<p>level 3) the function cannot be completely resolved at compile time to a C symbol, so you need to perform the entire high-level dispatch by first retrieving the function from the object (using .^can) and then calling the function (using the equivalent of .postcircumfix:), but you only use the known representation for the Capture object.</p>
<p>level 4) same as level 3, but the Capture object may have a unknown representation.</p>
<p>The exposure of C symbols can use some sort of name-mangling the same way C++ does so that it encodes the presumed information in each level. </p>
<p>As I said, I have been thinking about this for a while. I hope it is usefull&#8230; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Thoughts on starting NQP on LLVM by Materiales Ferreteria</title>
		<link>http://rdstar.wordpress.com/2012/06/25/thoughts-on-starting-nqp-on-llvm/#comment-65</link>
		<dc:creator><![CDATA[Materiales Ferreteria]]></dc:creator>
		<pubDate>Mon, 25 Jun 2012 19:44:33 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=137#comment-65</guid>
		<description><![CDATA[This is the appropriate weblog for anybody who desires to search out out about this topic. You understand a lot its almost exhausting to argue with you (not that I actually would need…HaHa). You undoubtedly put a new spin on a subject thats been written about for years. Great stuff, simply great!]]></description>
		<content:encoded><![CDATA[<p>This is the appropriate weblog for anybody who desires to search out out about this topic. You understand a lot its almost exhausting to argue with you (not that I actually would need…HaHa). You undoubtedly put a new spin on a subject thats been written about for years. Great stuff, simply great!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Perl 6 is not Perl, Version 6 by lueinc</title>
		<link>http://rdstar.wordpress.com/2011/09/07/p6-isnt-pv6/#comment-64</link>
		<dc:creator><![CDATA[lueinc]]></dc:creator>
		<pubDate>Mon, 25 Jun 2012 05:24:46 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=115#comment-64</guid>
		<description><![CDATA[I must have not been using emacs at the time (this was a really long time ago), and I would think emacs supports these edit macros. However, I generally don&#039;t use things like that anyway (it&#039;s either short enough that I don&#039;t suffer any pain in typing out in full again or it&#039;s long enough that I can avoid typing it out often (e.g. what subs are basically meant for)).

Also, I don&#039;t like the look of if/else-if structures in most (if not all) languages when they grow past a few else-ifs. I also think given/when statements are much better when comparing a variable to many different possible values.

I deleted your other subsequent comment because it took parts of statements out of context for the express reason of insulting me, which is what I think you came here to do.

(Finally, I don&#039;t believe your email address is some@where.com)]]></description>
		<content:encoded><![CDATA[<p>I must have not been using emacs at the time (this was a really long time ago), and I would think emacs supports these edit macros. However, I generally don&#8217;t use things like that anyway (it&#8217;s either short enough that I don&#8217;t suffer any pain in typing out in full again or it&#8217;s long enough that I can avoid typing it out often (e.g. what subs are basically meant for)).</p>
<p>Also, I don&#8217;t like the look of if/else-if structures in most (if not all) languages when they grow past a few else-ifs. I also think given/when statements are much better when comparing a variable to many different possible values.</p>
<p>I deleted your other subsequent comment because it took parts of statements out of context for the express reason of insulting me, which is what I think you came here to do.</p>
<p>(Finally, I don&#8217;t believe your email address is <a href="mailto:some@where.com">some@where.com</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Perl 6 is not Perl, Version 6 by snort</title>
		<link>http://rdstar.wordpress.com/2011/09/07/p6-isnt-pv6/#comment-59</link>
		<dc:creator><![CDATA[snort]]></dc:creator>
		<pubDate>Tue, 29 May 2012 08:43:21 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=115#comment-59</guid>
		<description><![CDATA[&quot;I&#039;m not writing 255 else-if&#039;s when a switch statement would cut
down the repetitive typing to almost nothing.

So I searched for a new language.&quot;

Good grief but that&#039;s inept. A good editor with edit macros eliminates repetitive typing.]]></description>
		<content:encoded><![CDATA[<p>&#8220;I&#8217;m not writing 255 else-if&#8217;s when a switch statement would cut<br />
down the repetitive typing to almost nothing.</p>
<p>So I searched for a new language.&#8221;</p>
<p>Good grief but that&#8217;s inept. A good editor with edit macros eliminates repetitive typing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on One Year of Perl 6! by Two Years of Perl 6! &#124; Rakudo Death Star</title>
		<link>http://rdstar.wordpress.com/2011/02/20/one-year-of-perl-6/#comment-58</link>
		<dc:creator><![CDATA[Two Years of Perl 6! &#124; Rakudo Death Star]]></dc:creator>
		<pubDate>Mon, 20 Feb 2012 22:49:08 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=74#comment-58</guid>
		<description><![CDATA[[...] and I joined the channel two days earlier. (Today also, coincidentally, is the same day I made a belated anniversary post last year.) It&#8217;s been a wonderful ride since the start, and it still isn&#8217;t over with [...]]]></description>
		<content:encoded><![CDATA[<p>[...] and I joined the channel two days earlier. (Today also, coincidentally, is the same day I made a belated anniversary post last year.) It&#8217;s been a wonderful ride since the start, and it still isn&#8217;t over with [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The View of Perl6 and Cleaning the Specs by Thoughts on Module Distribution in P6 &#124; Rakudo Death Star</title>
		<link>http://rdstar.wordpress.com/2010/12/28/the-view-of-perl6-and-cleaning-the-specs/#comment-16</link>
		<dc:creator><![CDATA[Thoughts on Module Distribution in P6 &#124; Rakudo Death Star]]></dc:creator>
		<pubDate>Sun, 14 Aug 2011 22:08:15 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=48#comment-16</guid>
		<description><![CDATA[[...] use CPAN. This is one point I&#8217;ll be fighting for the most. There is a commonly perceived split between Perl 6 and Perl 5, one I don&#8217;t personally believe will go away any time soon. I think that since there&#8217;s [...]]]></description>
		<content:encoded><![CDATA[<p>[...] use CPAN. This is one point I&#8217;ll be fighting for the most. There is a commonly perceived split between Perl 6 and Perl 5, one I don&#8217;t personally believe will go away any time soon. I think that since there&#8217;s [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Beginning Notes for the Perl 6 Type Hierarchy by raiph</title>
		<link>http://rdstar.wordpress.com/2011/08/13/beginning-notes-for-the-perl-6-type-hierarchy/#comment-15</link>
		<dc:creator><![CDATA[raiph]]></dc:creator>
		<pubDate>Sun, 14 Aug 2011 20:56:31 +0000</pubDate>
		<guid isPermaLink="false">http://rdstar.wordpress.com/?p=103#comment-15</guid>
		<description><![CDATA[Have you seen this old doc: http://www.dlugosz.com/Perl6/web/typesystem-summary.html]]></description>
		<content:encoded><![CDATA[<p>Have you seen this old doc: <a href="http://www.dlugosz.com/Perl6/web/typesystem-summary.html" rel="nofollow">http://www.dlugosz.com/Perl6/web/typesystem-summary.html</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
