<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pmthium &#187; perl6</title>
	<atom:link href="http://pmthium.com/category/perl6/feed/" rel="self" type="application/rss+xml" />
	<link>http://pmthium.com</link>
	<description>The Pm element</description>
	<lastBuildDate>Tue, 04 Sep 2012 14:50:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>A Rakudo Performance</title>
		<link>http://pmthium.com/2012/09/a-rakudo-performance/</link>
		<comments>http://pmthium.com/2012/09/a-rakudo-performance/#comments</comments>
		<pubDate>Sun, 02 Sep 2012 23:00:26 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=265</guid>
		<description><![CDATA[At YAPC::NA 2012 in Madison, WI I gave a lightning talk about basic improvements in Rakudo&#8217;s performance over the past couple of years.  Earlier today the video of the lightning talks session appeared on YouTube; I&#8217;ve clipped out my talk &#8230; <a href="http://pmthium.com/2012/09/a-rakudo-performance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>At YAPC::NA 2012 in Madison, WI I gave a <a href="http://act.yapcna.org/2012/talk/180">lightning talk</a> about basic improvements in Rakudo&#8217;s performance over the past couple of years.  Earlier today the <a href="http://www.youtube.com/watch?v=ILWrbvI8Qfg">video</a> of the <a href="http://act.yapcna.org/2012/talk/22">lightning talks session</a> appeared on YouTube; I&#8217;ve clipped out my talk from the session into a separate video below.  Enjoy!</p>
<p><iframe width="640" height="480" src="http://www.youtube.com/embed/tCel6lpDTZI?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2012/09/a-rakudo-performance/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Some thoughts on YAPC::EU 2011</title>
		<link>http://pmthium.com/2011/08/ye2011-thoughts/</link>
		<comments>http://pmthium.com/2011/08/ye2011-thoughts/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 22:03:04 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=179</guid>
		<description><![CDATA[YAPC::EU 2011 in Riga has just about finished, and it has been great seeing long-time friends again and making new ones. I&#8217;ve heard many people remark that we really wish there could be more weeks like these. There are two &#8230; <a href="http://pmthium.com/2011/08/ye2011-thoughts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://yapceurope.lv/ye2011/">YAPC::EU 2011</a> in Riga has just about finished, and it has been great seeing long-time friends again and making new ones.  I&#8217;ve heard many people <a href="http://twitter.com/#!/jnthnwrthngtn/status/104293292560236544">remark</a> that we really wish there could be more weeks like these.</p>
<p>There are two items that stand out in my mind about this year&#8217;s conference:</p>
<p>1.  <a href="http://andy.sh/">Andrew Shitov</a> and his crew are absolutely amazing at organizing and running a conference.  This was the most flawlessly executed conference or event I think I&#8217;ve ever been to.  Not only that, but Andrew and the other organizers made it look effortless, which to me is a mark of true greatness.  I&#8217;m certain that in fact there was a lot of planning and effort behind it, but the entire team just looked relaxed and at ease throughout the event.  I&#8217;d definitely encourage folks to attend any event that Andrew and this group organizes.</p>
<p>2.  Riga is a stunningly beautiful place.  I definitely want to return here again some day, and I&#8217;m grateful that the organizers chose this location.</p>
<p>Pm</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/08/ye2011-thoughts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New regex engine for nqp and nom, now passing 7K spectests</title>
		<link>http://pmthium.com/2011/07/new-regex-engine-for-nqp-and-nom-now-passing-7k-spectests/</link>
		<comments>http://pmthium.com/2011/07/new-regex-engine-for-nqp-and-nom-now-passing-7k-spectests/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 06:45:59 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[nqp]]></category>
		<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=168</guid>
		<description><![CDATA[Nom and nqp now have a new regular expression engine (currently known as &#8220;QRegex&#8221;) that I&#8217;ve implemented over the past week. As progress continued on the new &#8220;nom&#8221; branch of Rakudo since my last posting, it was becoming increasingly evident &#8230; <a href="http://pmthium.com/2011/07/new-regex-engine-for-nqp-and-nom-now-passing-7k-spectests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Nom and nqp now have a new regular expression engine (currently known as &#8220;QRegex&#8221;) that I&#8217;ve implemented over the past week.</p>
<p>As progress continued on the <a href="http://pmthium.com/2011/02/08/new-nqp-repository-new-nom-rakudo-branch/">new &#8220;nom&#8221; branch of Rakudo</a> since my <a href="http://pmthium.com/2011/07/02/more-nom-features-and-spectests-still-5x-faster-than-master/">last posting</a>, it was becoming increasingly evident that regular expression support would end up being the next major blocker.  I think we were all expecting that nom would initially use the same regular expression engine that nqp (and nqp-rx) have traditionally used.  However, as I starting working on this, it began to look as though the amount of effort and frustration involved would end up being almost as large as what would be needed to make a cleaner implementation up front, and would leave a quite messy result.</p>
<p>So, last week I started on designing and implementing a new engine. Today I&#8217;m happy to report that nom is now using the new QRegex engine for its pattern matching, and that making a new engine was undoubtedly a far better choice than trying to patch in the old one in an ugly manner.</p>
<p>So far only nom&#8217;s runtime is using the new regex engine; the nqp and rakudo parsers are still using the older (slow) one, so I don&#8217;t have a good estimate of the speed improvement yet. The new engine still needs protoregexes and a couple of other features before it can be used in the compilers, and I hope to complete that work in the next couple of days.  Then we&#8217;ll have a good idea about the relative speed of the new engine.</p>
<p>I&#8217;m expecting QRegex to be substantially faster than the old one, for a variety of reasons.  First, it should make far fewer method calls than the old version, and method calls in Parrot can definitely be slow.  As an example I did some profiling of the old engine a couple of weeks ago, and the &#8220;!mark_fail&#8221; method accounted for something like 60% or more of the overall method calls needed to perform the parse.</p>
<p>Qregex does its backtracking and other core operations more directly, without <em>any</em> method calls for backtracking.  So I expect that this one change will reduce the number of method calls involved in parsing by almost a factor of 3.  Other common operations have also eliminated the method call overhead of the previous engine.</p>
<p>The new engine also uses a fixed-width encoding format internally, which means that we no longer pay a performance penalty for matching on unicode utf-8 strings.  This will also enable us to eventually use the engine to do matching on bytes and graphemes as well as codepoints.</p>
<p>I also found quite a few places where I could drastically reduce the number of GCables being created.  In some cases the old engine would end up creating multiple GCables for static constants, the new engine avoids this.  A couple of new opcodes will enable QRegex to do substring comparisons without having to create new STRING gcables, which should also be a dramatic improvement.</p>
<p>I&#8217;ve already prototyped some code (not yet committed) that will integrate a parallel-NFA and longest-token-matching (LTM) into QRegex, so we&#8217;ll see even more speed improvement.</p>
<p>And did I mention the new engine is implemented in NQP instead of PIR?  (Although it definitely has a lot of PIR influence in the code generation, simply by virtue of what it currently has to do to generate running code.)</p>
<p>Ultimately I&#8217;m expecting the improvements already put into QRegex to make it at least two to three times faster than its predecessor, and once the NFA an LTM improvements are in it ought to be even faster than that.  And I&#8217;ve already noted new places ripe for optimizations&#8230; but I&#8217;m going to wait for some new profiles before doing too much there.</p>
<p>Another key feature of the new engine is that the core component is now a NQP role instead of a class.  This means that it&#8217;s fairly trivial for any HLL to make use of the engine and have it produce match objects that are &#8220;native&#8221; to the HLL&#8217;s type system, instead of having to be wrapped.  The wrapping of match objects in the old version of Rakudo was always a source of bugs and problems, that we can now avoid.  Credit goes to <a href="http://jnthn.net/">Jonathan Worthington</a> for <a href="http://6guts.wordpress.com/2011/01/16/nqp-and-6model-big-steps-forward-on-parrot-and-jvm/">6model</a>, which enables QRegex to do this, and indeed the ability to implement the engine using roles was what ultimately convinced me to go this route.</p>
<p>While I&#8217;ve been working on regexes, Moritz Lenz, Will Coleda, Tadeusz Sośnierz, Solomon Foster, and others have continued to add features to enable nom to pass more of the spectest suite. As of this writing nom is at 244 test files and 7,047 tests&#8230; and that&#8217;s before we re-enable those tests that needed regex support.  The addition of regexes to nom should unblock even more tests and features.</p>
<p>Some of the features added to nom since my <a href="http://pmthium.com/2011/07/02/more-nom-features-and-spectests-still-5x-faster-than-master/">previous post on July 2</a>:<br />
 * Regexes<br />
 * Smart matching of lists, and other list/hash methods and functions<br />
 * Fixes to BEGIN handling and lexicals<br />
 * Implementation of nextsame, callsame, nextwith, callwith<br />
 * More introspection features<br />
 * Methods for object creation (.new, .bless, .BUILD, etc.)<br />
 * &#8216;is rw&#8217; and return value type checking traits on routines<br />
 * Auto-generation of proto subs<br />
 * Junctions<br />
 * Backtraces</p>
<p>We&#8217;ve also done some detailed planning for releases that will transition Rakudo and Rakudo Star from the old compiler to the new one; I&#8217;ll be writing those plans up in another post in the next day or two.</p>
<p>Pm</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/07/new-regex-engine-for-nqp-and-nom-now-passing-7k-spectests/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>More nom features and spectests, still 5x faster than master</title>
		<link>http://pmthium.com/2011/07/more-nom-features-and-spectests-still-5x-faster-than-master/</link>
		<comments>http://pmthium.com/2011/07/more-nom-features-and-spectests-still-5x-faster-than-master/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 18:58:17 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=158</guid>
		<description><![CDATA[Progress continues on the nom branch of Rakudo. As of this writing we&#8217;re up to 89 spectest files and over 1000 passing spectests, which is a good improvement from just five days ago. We continue to see that nom performs &#8230; <a href="http://pmthium.com/2011/07/more-nom-features-and-spectests-still-5x-faster-than-master/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Progress continues on the <a href="http://pmthium.com/2011/02/08/new-nqp-repository-new-nom-rakudo-branch/">nom branch of Rakudo</a>.  As of this writing we&#8217;re up to 89 spectest files and over 1000 passing spectests, which is a good improvement from just five days ago.  </p>
<p>We continue to see that nom performs much better than the previous version of Rakudo.  <a href="http://perlgeek.de/blog-en/perl-6/how-fast-is-nom.html">Moritz Lenz added enough features</a> to be able to run the <a href="https://github.com/colomon/mandelbrot/blob/master/bin/mandelbrot-color.pl">mandelbrot fractal generator</a> under nom, so we can compare speeds there.  Under master a 201&#215;201 set took 16 minutes 14 seconds to run, in nom it &#8220;naively&#8221; took 4.5 minutes, and with some further optimizations Moritz has it running in 3 minutes, for a factor five improvement over the existing master branch. And there are still many more compiler-level optimizations that remain to be worked on. </p>
<p>In the past couple of days I added the metaoperators back into nom. Furthermore, the new implementation is far more correct &#8212; metaoperators such as &amp;infix:&lt;X&gt; and &amp;infix:&lt;Z&gt; can now handle multiple list arguments instead of just two as in master.  We still haven&#8217;t added back the hyperoperators; I plan to do that in the next couple of days.</p>
<p>Jonathan has been attending the <a href="http://conference.perlchina.org/">Beijing Perl Workshop</a> this week; his presentation slides are now available at <a href="http://jnthn.net/articles.shtml">http://jnthn.net/articles.shtml</a>.  Videos may be available soon.  Even with his travels, Jonathan has continued to implement some of the needed lexical and role support in nom, so that we&#8217;re generally unblocked in making needed progress in the branch.</p>
<p>Carl Masak wrote <a href="http://strangelyconsistent.org/blog/june-24-2011-types">a post introducing the Perl 6 type system</a>; after reading an early draft of his post we discovered that several of the builtin types (Code, Attribute, Signature, Parameter) have been mistakenly implemented as subclasses of Cool.  We&#8217;ve now fixed this in nom; we may or may not fix it in master.</p>
<p>Indeed, we&#8217;re already starting to phase out the master branch altogether.  Yesterday I made a commit to master that effectively freezes it to always test against a specific revision of the spectests.  This means we&#8217;re free to fudge and adapt the tests to the needs of the nom branch without concern for what it might do to testing in the master branch.</p>
<p>Speaking of tests, Moritz gave me some useful shortcut links for viewing different reports in our RT ticket queue.  I&#8217;ve now set up a page on rakudo.org at <a href="http://rakudo.org/tickets/ ">http://rakudo.org/tickets/</a> where we can collect these report links and describe how the ticket queue works.  One of the more useful links is <a href="http://rakudo.org/rt/testneeded">http://rakudo.org/rt/testneeded</a> ; this link shows a list of tickets that can be closed as soon as someone is able to confirm (or add) an appropriate test in the spectests.  Writing tests is fairly easy, if you&#8217;re interested in helping with Perl 6 development, this can be a good place to start.</p>
<p>Here&#8217;s a summary list of features added to the nom branch since my last posting (five days ago):</p>
<p>  * Complex numbers and numeric operator fixes<br />
  * Complex numbers have two native nums instead of Num objects<br />
  * Rat literals<br />
  * List.pop, List.reverse<br />
  * Initial LoL (list of lists) implementation<br />
  * map and grep<br />
  * Many string methods and functions<br />
  * metaoperators:  Rop, Zop, Xop, !op, op=, [op], [\op]<br />
  * infix:&lt;===&gt;, infix:&lt;eqv&gt;<br />
  * Hash and Array hold Mu values, scalars default to Mu constraint<br />
  * Fixes to Configure.pl and &#8211;gen-parrot=branch<br />
  * Proper handling of $_, $!, and $/<br />
  * Improved exception handling and reporting<br />
  * Hash and List slices, including autotrim on infinite indices</p>
<p>In the next few days I plan to have regexes working in nom, finish off the metaoperators, and improve string-to-number conversions (including radix conversions).</p>
<p>For people looking to learn some Perl 6, to help others with learning Perl 6, or to do a bit of both, Bruce Gray has started &#8220;<a href="https://github.com/Util/Flutter">Flutter</a>&#8221; &#8212; a suite of &#8220;micro-demonstration screens&#8221; for Perl 6. Essentially each screen introduces or demonstrates a Perl 6 feature or concept.  Flutter is still in the embryonic stage, so it could use both content and implementation improvements and I&#8217;m sure that patches and pull requests will be extremely welcome.</p>
<p>We can still use help with triaging spectests and other tasks, if you&#8217;re interested in hacking on code or otherwise helping out, email us or find us on IRC freenode/#perl6.  We can also use help with adding useful links and developer information to rakudo.org, if you&#8217;re inclined to do some of that.</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/07/more-nom-features-and-spectests-still-5x-faster-than-master/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lots of Rakudo-nom progress, starts to run spectests</title>
		<link>http://pmthium.com/2011/06/lots-of-rakudo-nom-progress-starts-to-run-spectests/</link>
		<comments>http://pmthium.com/2011/06/lots-of-rakudo-nom-progress-starts-to-run-spectests/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 22:18:23 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=153</guid>
		<description><![CDATA[The nom branch of Rakudo continues to develop at a blistering pace. Yesterday nom finally had a working Test.pm, which meant we could start testing it against the spectest (&#8220;roast&#8221;) suite. As of this writing nom is passing 50 spectest &#8230; <a href="http://pmthium.com/2011/06/lots-of-rakudo-nom-progress-starts-to-run-spectests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://pmthium.com/2011/02/08/new-nqp-repository-new-nom-rakudo-branch/">The nom branch of Rakudo</a> continues to develop at a blistering pace. Yesterday nom finally had a working Test.pm, which meant we could start testing it against the spectest (&#8220;roast&#8221;) suite.  As of this writing nom is passing 50 spectest files.  By way of comparison, the master branch passes 551 spectest files, so we&#8217;re already about 9% of the way there.  And I expect that number to grow &#8212; many of the spectests fail because nom is missing relatively minor features that can be easily restored.  At this rate, I&#8217;m thinking it&#8217;s very possible that the next monthly release of Rakudo (July) will be based on the nom branch instead of the old master branch.</p>
<p>I&#8217;ve also worked further on <a href="http://pmthium.com/2011/06/22/perl-6-lists-episode-1/">nom&#8217;s list implementation</a>, and it&#8217;s now <em>faster</em> than lists and iteration in master.  In fact, for loops in the nom branch now run about <em>80% faster</em> than they did in the master branch.</p>
<p>We continue to eliminate PIR from the code base in nom.  For the core setting, we&#8217;re down to 143 instances of &#8216;pir::&#8217; and 22 instances of &#8216;Q:PIR&#8217;.  The rest have been replaced by generic &#8216;nqp::&#8217; opcodes that can someday be targeted to other virtual machine backends.  Currently we&#8217;ve defined about 83 nqp:: opcodes that are used in implementing the core setting.  For efficiency reasons we might not ever be able to eliminate all PIR from the core setting, but we should be able to get it to be small enough that it can be walled-off into VM-specific code files.</p>
<p>To give an idea of how fast things are moving &#8212; here&#8217;s a summary of the features that have been added to nom in the past seven days:</p>
<p>  * fail()<br />
  * lexically scoped returns<br />
  * for-style loops and map, 80% faster than master<br />
  * better infinite lazy list handling<br />
  * gather/take<br />
  * try statements<br />
  * package-scoped variables, subs, and methods<br />
  * whatever currying<br />
  * Test.pm<br />
  * lots of builtin operators and methods<br />
  * dynamic variables, PROCESS and GLOBAL namespaces<br />
  * IO objects, including $*IN, $*OUT, $*ERR<br />
  * literal values in signatures<br />
  * quantified method dispatch (.?method, .+method, .*method)<br />
  * basic roles, including Associative, Positional, and Callable<br />
  * basic support for natively-typed lexicals (e.g., &#8216;int&#8217;, &#8216;str&#8217;, &#8216;num&#8217;)<br />
  * argument interpolation<br />
  * list assignment<br />
  * new say and .gist semantics<br />
  * magical string increment and decrement<br />
  * sequence operator<br />
  * series operator<br />
  * preliminary BEGIN/CHECK/INIT/END phasers<br />
  * smart matching (~~)<br />
  * inlined assignment</p>
<p>So, you can see things are active.  We&#8217;re also in need of testers and people who can help us triage spectests and figure out what is causing them to not run.  If you&#8217;re interested in hacking on code or helping with the tests &#8212; email us or find us on IRC freenode/#perl6!</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/06/lots-of-rakudo-nom-progress-starts-to-run-spectests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rakudo (nom) reaches milestone &#8212; no more .pir files!</title>
		<link>http://pmthium.com/2011/06/rakudo-nom-reaches-milestone-no-more-pir-files/</link>
		<comments>http://pmthium.com/2011/06/rakudo-nom-reaches-milestone-no-more-pir-files/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 21:44:20 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=126</guid>
		<description><![CDATA[As Jonathan Worthington and I have posted in various articles, we&#8217;re working on a new implementation of Rakudo Perl 6 (the nom branch) that is based on a new meta-object model instead of the object system provided by Parrot. Today &#8230; <a href="http://pmthium.com/2011/06/rakudo-nom-reaches-milestone-no-more-pir-files/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As Jonathan Worthington and I have posted in various articles, we&#8217;re working on a <a href="http://6guts.wordpress.com/2011/05/10/rakudo-on-6model-gets-underway/">new implementation of Rakudo Perl 6</a> (the <a href="https://github.com/rakudo/rakudo/tree/nom">nom branch</a>) that is based on a new meta-object model instead of the object system provided by Parrot.</p>
<p>Today we reached a nice milestone of sorts, as I removed the last &#8220;.pir&#8221; file from the Rakudo-nom source tree.  This means that all of the source code files in the Rakudo repository are now &#8220;Perl 6&#8243;.  (Some of the files are actually in NQP, which is a Perl 6 lite of sorts.  See <a href="http://pmthium.com/2011/02/08/new-nqp-repository-new-nom-rakudo-branch/">this article</a> for more details.)</p>
<p>To be certain, there are still some PIR features embedded in some of the source files &#8212; either using pir::opcode or the old Q:PIR syntax.  However, we&#8217;re steadily eliminating any of this Q:PIR code that is being used, and the pir:: opcodes will ultimately replaced with abstract nqp:: operations that can be more universal than just Parrot.</p>
<p>Otherwise Rakudo-nom is progressing nicely, within the past week we&#8217;ve been restoring and updating a lot of the core Perl 6 features.  We already have multisubs, basic list and hash operations, basic parametric roles, and the like.  We&#8217;re also stubbing in many features that have been missing from the master branch, such as Stringy and LoL.</p>
<p>The nom branch isn&#8217;t yet at a point where it can compile Test.pm and pass tests, but at the speed things are moving it won&#8217;t be long before we are.  I can say that developing the core Perl 6 compiler code on the new object model is far more straightforward and easier than it was under the previous Parrot object system.  Credit goes to Jonathan and the others who helped him for this &#8212; it&#8217;s a huge improvement.  We also hope to see some dramatic speed improvements over Rakudo master, as well as vastly improved optimization possibilities.</p>
<p>We don&#8217;t have a solid projection for when the nom branch will replace the current Rakudo master, but I expect it to happen well before the end of this summer.</p>
<p>In an upcoming post I&#8217;ll describe all of the old-and-new terms that have been occurring in the Rakudo universe (&#8220;6model&#8221;, &#8220;nom&#8221;, &#8220;nqp&#8221;, &#8220;master&#8221;, &#8220;nqp-rx&#8221;, &#8220;Rakudo Star&#8221;, &#8220;parrot&#8221;, &#8220;zavolaj&#8221;, etc.), to give a better idea of how this all fits together.  Stay tuned!</p>
<p>Pm</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/06/rakudo-nom-reaches-milestone-no-more-pir-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New NQP repository, new &#8220;nom&#8221; Rakudo branch</title>
		<link>http://pmthium.com/2011/02/new-nqp-repository-new-nom-rakudo-branch/</link>
		<comments>http://pmthium.com/2011/02/new-nqp-repository-new-nom-rakudo-branch/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 16:32:19 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[nqp]]></category>
		<category><![CDATA[parrot]]></category>
		<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=103</guid>
		<description><![CDATA[As mentioned in the last week&#8217;s NQP Roadmap, we&#8217;ve now broken out the new 6model-based NQP into its own repository on GitHub: http://github.com/perl6/nqp . We know there may be a bit of confusion between the two versions; just remember that &#8230; <a href="http://pmthium.com/2011/02/new-nqp-repository-new-nom-rakudo-branch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As mentioned in the <a href="http://pmthium.com/2011/01/31/nqp-roadmap-2011-01/">last week&#8217;s NQP Roadmap</a>, we&#8217;ve now broken out the new 6model-based NQP into its own repository on GitHub:  <a href="http://github.com/perl6/nqp">http://github.com/perl6/nqp</a> .  We know there may be a bit of confusion between the two versions; just remember that &#8220;nqp-rx&#8221; always refers to the older one and &#8220;nqp&#8221; without the -rx refers to the new one.</p>
<p>Today Jonathan also created the <a href="https://github.com/rakudo/rakudo/tree/nom">&#8220;nom&#8221; branch in the Rakudo repository</a> where we&#8217;ll be converting Rakudo over to using the new NQP.  We expect this process to take several weeks.  Rakudo compiler releases will continue to be made from the existing &#8220;master&#8221; branch until the new branch is ready.</p>
<p>Our hope and expectation is that the April 2011 Rakudo Star release will be using the new 6model implementation.  Stay tuned!</p>
<p>Pm</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/02/new-nqp-repository-new-nom-rakudo-branch/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>NQP Roadmap 2011.01</title>
		<link>http://pmthium.com/2011/01/nqp-roadmap-2011-01/</link>
		<comments>http://pmthium.com/2011/01/nqp-roadmap-2011-01/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 15:51:44 +0000</pubDate>
		<dc:creator>pmichaud</dc:creator>
				<category><![CDATA[nqp]]></category>
		<category><![CDATA[parrot]]></category>
		<category><![CDATA[perl6]]></category>

		<guid isPermaLink="false">http://pmthium.com/?p=11</guid>
		<description><![CDATA[Over the next couple of weeks we will be rolling out a new version of NQP that is based on new backend code for object management and multisub dispatch. This document describes the changes we&#8217;ve identified for the new version &#8230; <a href="http://pmthium.com/2011/01/nqp-roadmap-2011-01/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Over the next couple of weeks we will be rolling out a new version of NQP that is based on new backend code for object management and multisub dispatch.  This document describes the changes we&#8217;ve identified for the new version of NQP, the expected impact on the existing Parrot/Rakudo/NQP ecosystems, and our expected timelines for the changes taking place.</p>
<p>Most importantly, the new NQP contains a shift in philosophy from previous versions.  Previous versions (including &#8220;nqp-rx&#8221;) aimed to avoid any runtime component whatsoever, providing simply a HLL interface to whatever capabilities were provided by the underlying VM (i.e., Parrot).  The new NQP now explicitly expects some small amounts of &#8220;library code&#8221; to be loaded on top of the VM, used to provide a basic framework for object management, multidispatch, and regexes. However, the overall goal of NQP continues to be a very minimal Perl 6 syntax for writing code libraries and compilers for VM backends such as Parrot.</p>
<p>And yes, the new NQP is explicitly designed to enable other languages implemented with NQP to run on multiple VM backends such as the CLR, JVM, etc.  Several key people are already making important contributions in this area now, and we expect more in the months ahead.  But for the next few months our focus will be more on improving Rakudo&#8217;s performance and faithfulness to the Perl 6 specification over trying to make it run on multiple platforms.  (Of course, if we quickly discover that other VM backends are likely to give significant performance benefits sooner, we may increase our efforts in this area.)</p>
<p>To simplify the transition, the new NQP will be hosted in a new GitHub repository separate from the existing perl6/nqp-rx repository. This should enable the old nqp-rx line to be maintained and available for those systems that depend on it, while allowing the radical changes to take place in the new one.  In order to (hopefully) avoid confusion, from now on we&#8217;ll consistently use &#8220;nqp-rx&#8221; to refer to the existing implementation, and &#8220;nqp&#8221; to refer to the new one.</p>
<p>The new nqp implementation provides its own object metamodel implementation (commonly known as &#8220;6model&#8221;), avoiding almost entirely the object framework currently provided by Parrot.  In other words, the new nqp does not make use of Parrot&#8217;s Class and Object PMC types, nor does it use the P6object interface library.  Both the Rakudo and Parrot development teams have identified in the past that Parrot&#8217;s object system needs some significant work; it&#8217;s our hope that nqp&#8217;s implementation will be able to jumpstart this for Parrot, perhaps by adopting it into its core in some manner. The OO framework in nqp has been explicitly designed to be flexible enough that other languages can use it to implement their metamodel as well.  It makes very few assumptions at its core, and tries to create a level playing field in terms of access to performance-improving features needed by languages other than Perl 6.</p>
<p>The new nqp also contains a replacement implementation of multiple dispatch &#8212; it no longer makes use of the Parrot MultiSub PMC type. The new dispatcher is more efficient and truer to the Perl 6 semantics (and hopefully flexible enough to easily support or implement dispatch semantics for other languages as well).</p>
<p>As a result of these changes, nqp will also be embarking on updated implementations of significant portions of the Parrot Compiler Toolkit (PCT), to take advantage of the optimization possibilities inherent in the new object and multidispatch implementations.  In fact, we expect to (re-)implement PCT as nqp source code in the nqp repository, borrowing liberally from bacek&#8217;s pioneering efforts in this area.  The new PCT will also likely obtain a new name (yet to be determined), to avoid confusion with the existing &#8220;Parrot Compiler Toolkit&#8221;.  Existing references to Q:PIR, pir::opcode(), :inline(&#8216;&#8230;&#8217;) and the like will be phased out in favor of nqp::* generic equivalents.</p>
<p>Concurrently with the above changes, we will be migrating Rakudo to use the new nqp as its underlying implementation platform. This will be done as a branch of the Rakudo repository, much like the &#8220;alpha-&gt;ng&#8221; migration that took place in late 2009/early 2010. This migration is expected to be completed in the next 2-3 months. In the meantime, the Rakudo &#8220;master&#8221; branch will continue to target the existing nqp-rx and Parrot systems.  The next Rakudo Star release is not scheduled until April 2011 &#8212; as the new Rakudo branch nears completion we will determine how it will impact the timing and content of the next Rakudo Star release.</p>
<p>We expect that HLL translators and programs that used nqp-rx primarily as a high-level implementation language will be able to migrate to the new nqp with only minimal changes (and hopefully substantial performance improvements).  Grammars shouldn&#8217;t require any significant re-work, and much of the action methods and PAST construction should remain the same as before.  But the devil for this will of course end up in the details, which we&#8217;ll deal with as we encounter them.</p>
<p>Parrot libraries and subsystems that are using nqp-rx to access specific Parrot features will likely have more difficulty migrating to the new nqp, as nqp abstracts away from the low-level Parrot details a bit further.  Our plan recognizes and fully understands that Parrot may elect to neither provide nor support nqp directly in its distributions, and may even migrate existing tools and libraries completely away from the existing nqp-rx and PCT.  Or, Parrot might decide to embrace NQP more fully to take advantage of its new optimization and compiler toolkit capabilities.  We can likely find ways to preserve the ability for NQP to access low-level Parrot features for Parrot-specific libraries.  (This becomes far more conceivable if Parrot adopts the new object metamodel, which seems likely at this point and is the major impetus behind the changes to nqp.)  Or, the existing nqp-rx could continue to live on as its own project targeting Parrot subsystems, perhaps even being adopted into the Parrot repository. Whatever the Parrot team chooses to do in this area, nqp will support as best it can within the goals and plans described above.</p>
<p>In particular, there is no expectation or request that the new nqp will have to be bundled with Parrot in order to support Rakudo. The new Rakudo branch will either pull or bundle its desired version of nqp directly from the nqp repository, analogous to the way that the current Rakudo master branch pulls from the Parrot repository as specified by PARROT_REVISION.</p>
<p>We recognize this new NQP implementation will results in significant changes to the existing Rakudo/Parrot/NQP ecosystems, but we&#8217;re expecting that the short-term pains will be far outweighed by the performance and capability improvements the new design will offer. We also know that the new implementations offer plenty of new possibilities for -Ofun for many of us, and we hope that many other people will want to join in the -Ofun as we explore the new frontiers this makes available.</p>
]]></content:encoded>
			<wfw:commentRss>http://pmthium.com/2011/01/nqp-roadmap-2011-01/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
