<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-28707406</id><updated>2009-03-02T06:50:32.360-08:00</updated><title type='text'>Summer of Code 2006</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default?start-index=26&amp;max-results=25'/><author><name>The Perl Foundation -- Summer of Code</name><uri>http://www.blogger.com/profile/04706616004241300306</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28707406.post-115798862022989178</id><published>2006-09-11T01:57:00.000-07:00</published><updated>2006-09-11T10:19:40.656-07:00</updated><title type='text'>POE 0.37</title><content type='html'>This weekend saw the release of POE 0.37 by Rocco.  It includes all the tests I've written over the summer, and, since it's been released, the tests have been run successfully on a &lt;a href="http://cpantesters.perl.org/show/POE.html#POE-0.37"&gt;variety of platforms&lt;/a&gt;.  The tests also found a few bugs, and those and other bugs have also been fixed in this release.&lt;br /&gt;&lt;br /&gt;(The &lt;a href="http://www.nntp.perl.org/group/perl.poe/3531"&gt;original release announcement&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115798862022989178?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115798862022989178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115798862022989178' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115798862022989178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115798862022989178'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/09/poe-037.html' title='POE 0.37'/><author><name>Benjamin Smith</name><uri>http://www.blogger.com/profile/01632278032306502951</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02726445786711372953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115653172029666991</id><published>2006-08-25T10:20:00.000-07:00</published><updated>2006-08-25T11:48:40.326-07:00</updated><title type='text'>Final Notes</title><content type='html'>I;ve been asked to make a final post summarizing my progress. I already covered some of this in my last post, but here I will run down everything in &lt;a href="http://svn.openfoundry.org/pugs/docs/other/porting_howto"&gt;the Pugs porting HowTo&lt;/a&gt; that I've completed. Items quoted from the HowTo will be italicized.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- $array[idx] -&gt; @array[idx]&lt;/pre&gt;Done. This was on of the first translations I did, it was a simple matetr of finding any references to  a single item of an array and changing the appororiate sigil. It was slightly harder to handle this inside text, since the text parser can only decide if a variable is a scalar, array, or hash at the end, but with some work I put together a parser that can handle single array or hash elements within text.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- $hash{$key} -&gt; %hash{$key}&lt;/pre&gt;Done. This was actually a lot like the above translation, just on hashes.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- $hash{word} -&gt; %hash&lt;word&gt;&lt;/word&gt;&lt;/pre&gt;Done. This was simple, just a matter of finding and constnant keys to hashes and changing the opener and closer.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- "@array" -&gt; "@array[]"&lt;br /&gt;- "%hash" -&gt; "%hash{}"&lt;/pre&gt;Done. These required a slightly smart parser for text. At the same time single array or hash elements are processed, entire hash or array references are handeled by just sticking on the appropraote {} or [].&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- scalar @foo -&gt; +@foo # or @foo.elems&lt;/pre&gt;Done. Currently this only translates to +@array, it would be good to add a .elems option for when the translator is doing heavy object orientation.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- a ? b : c -&gt; a ?? b !! c&lt;/pre&gt;Done. Changed operators are easy to handle, I just look for any operators, and if it's a ? or : I translate it.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- $x =~ s/.../.../g -&gt; $x ~~ s:P5:g/.../.../&lt;/pre&gt;Done. The translator converts all =~ to ~~, and can optionally use the :Perl5 modifier or try to translate the internals. Modifers (i, g, etc) are moved to the front (:i, :g) as approriate. In any case, remods are dropped after an attempt to translate them, since they'll only cause problems in Perl 6.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- foreach my $foo (@baz) {...} -&gt; for @baz -&gt; $foo {...}&lt;/pre&gt;Done. This is one translation that I am worried about breaking, since from the AST point of view foreach loops can look a lot different. However, in my testing the current code does translate all foreachs.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- length("foo") -&gt; "foo".chars&lt;/pre&gt;Done. Fairly easy to handle, and fairly widely tested. At first I wasn't sure about my translation of this, but after wide testing and some revisions, I think it's fairly robust and accurate. It also works with variables instead of constants (length($foo) -&gt; $foo.chars).&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- Regular expressions:&lt;br /&gt;    m/ a * b /x       -&gt; m/ a * b /               # /x now default&lt;br /&gt;    (space)           -&gt; &lt;sp&gt;                     # or \c[SPACE], \x20, \o40,&lt;br /&gt;                                                  # &lt;' '&gt;&lt;br /&gt;    [abc]             -&gt; &lt;[abc]&gt;&lt;br /&gt;    [^abc]            -&gt; &lt;-[abc]&gt;&lt;br /&gt;    (?:...)           -&gt; [...]&lt;br /&gt;    &lt;  &gt;              -&gt; \&lt;  \&gt;&lt;br /&gt;&lt;br /&gt;    \p{prop}          -&gt; &lt;prop&gt;&lt;br /&gt;    \P{prop}          -&gt; &lt;-prop&gt;&lt;br /&gt;&lt;br /&gt;    \Qstring\E        -&gt; &lt;{ quotemeta 'string' }&gt; # or &lt;'literal string'&gt;&lt;br /&gt;&lt;br /&gt;    \A                -&gt; ^&lt;br /&gt;    \z                -&gt; $&lt;br /&gt;    \Z                -&gt; \n?$&lt;br /&gt;&lt;br /&gt;    \n                -&gt; \c[LF]                   # specifically a linefeed&lt;br /&gt;    \r?\n             -&gt; \n                       # logical newline&lt;br /&gt;    [^\n]             -&gt; \N                       # not a logical newline&lt;br /&gt;&lt;br /&gt;    \a                -&gt; \c[BEL]&lt;br /&gt;    \N{CENT SIGN}     -&gt; \c[CENT SIGN]&lt;br /&gt;    [^\N{CENT SIGN}]  -&gt; \C[CENT SIGN]&lt;br /&gt;    \c[               -&gt; \e&lt;br /&gt;    \cX               -&gt; \c[^X]&lt;br /&gt;    [^\t]             -&gt; \T&lt;br /&gt;    [^\r]             -&gt; \R&lt;br /&gt;    [^\f]             -&gt; \F&lt;br /&gt;    [^\e]             -&gt; \E&lt;br /&gt;    [^\x1B]           -&gt; \X1B&lt;br /&gt;    [^\x{263a}]       -&gt; \X[263a]&lt;br /&gt;&lt;br /&gt;    \1                -&gt; $1&lt;br /&gt;    //                -&gt; /&lt;prior&gt;/&lt;br /&gt;    /a|/              -&gt; /a|&lt;null&gt;/&lt;br /&gt;&lt;br /&gt;    x{2}              -&gt; x**{2}&lt;br /&gt;    x{2,}             -&gt; x**{2...}&lt;br /&gt;    x{1,2}            -&gt; x**{1..2}&lt;br /&gt;    x{1,2}?           -&gt; x**{1..2}?&lt;br /&gt;&lt;br /&gt;    (?=foo)           -&gt;&lt;br /&gt;    (?!foo)           -&gt; &lt;!--before foo--&gt;&lt;br /&gt;    (?&lt;=foo)          -&gt;&lt;br /&gt;    (?&lt;!--foo)          --&gt; &lt;!--after foo--&gt;&lt;br /&gt;&lt;br /&gt;    (?{...})          -&gt; {...}&lt;br /&gt;    (??{...})         -&gt; &lt;{...}&gt;&lt;br /&gt;&lt;br /&gt;    (?&gt;\d*)           \d*:                    # single atom no backtrack&lt;br /&gt;    (?&gt;(\d*))         (\d*):                  # () is still single atom&lt;br /&gt;    (?&gt;...)           [...]:                  # multiple atoms need []&lt;br /&gt;&lt;br /&gt;    s/foo/bar()/e     -&gt; s/foo/{ bar() }/&lt;br /&gt;    m?foo?            -&gt; m:once/foo/&lt;/null&gt;&lt;/prior&gt;&lt;/prop&gt;&lt;/sp&gt;&lt;/pre&gt;Done. Since from the point of view of the AST a regex is justends up being just text I wrote a text parser that runs over regexs and changes all of these, as well as captures. Some of the more external considerations (?foo? -&gt; m:once/foo/) are not handeled by the parser but by more functions, since from the inside both cases look the same.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- split(m/;/, $foo) -&gt; split(/;/, $foo)&lt;/pre&gt;Done. Easy enough to catch, though at first I got carried away and got //m too.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- split(' ', $foo) -&gt; words($foo) or $foo.words or «$foo»&lt;/pre&gt;Done. However, at present it always translates to .words, options will be added for the other cases.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- Heredocs:&lt;br /&gt;    &lt;&lt;end&gt; qq:to/END/&lt;br /&gt;    &lt;&lt;"END"  -&gt; qq:to/END/&lt;br /&gt;    &lt;&lt;'END'  -&gt;  q:to/END/&lt;/end&gt;&lt;/pre&gt;Done. Once I finally had heredoc parsing from the yaml file correctly, this became easy, essentially just text substitution in the right places.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- # Perl 5&lt;br /&gt;  require Exporter;&lt;br /&gt;  our @ISA    = qw&lt;&gt;;&lt;br /&gt;  our @EXPORT = qw&lt;&gt;;&lt;br /&gt;  sub foo { ... }&lt;br /&gt;&lt;br /&gt;  # -&gt; Perl 6&lt;br /&gt;  sub foo(...) is export { ... }&lt;/pre&gt;Mostly Done. At current references to @ISA and @EXPORT (and @EXPORT_OKAY) are not removed, but then again I don't think this is a syntactic problem (they just become normal arrays that are never really used). For clarity they should probably be removed, and I'll try to add this to my next update.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- open()&lt;br /&gt;     open my $fh, "&lt;", $filename or die $!;    -&gt;   my $fh = open($filename, :r) err die $!;&lt;br /&gt;&lt;br /&gt;     "&lt;"   -&gt; :r&lt;br /&gt;     "&gt;"   -&gt; :w&lt;br /&gt;     "&gt;&gt;"  -&gt; :a&lt;br /&gt;     '+&lt;"  -&gt; :rw&lt;br /&gt;&lt;br /&gt;     mixing them does not work yet&lt;br /&gt;&lt;br /&gt;     open(FH, $filename)     -&gt;  our $fh = open($filename)&lt;br /&gt;                                  my $fh = open($filename)&lt;br /&gt;                              and possibly:&lt;br /&gt;                                  sub FH () { $fh }&lt;br /&gt;                                  macro FH () { q:code { $fh } }&lt;br /&gt;                              but $fh generally preferred&lt;/pre&gt;From Google's point of view (with my deadline) this one is untouched, however I have since added some of the basics. It's not done by anyone's standard, but to people that don't care about the deadline it's at least started. This is another place where TMTOWTDI makes it harder to translate, since the flexability of Perl5's open makes for  many cases to translate.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- print to file&lt;br /&gt;     print $fh "Hello\n";    -&gt; print $fh: "Hello\n";   # adding the colon&lt;br /&gt;                                or&lt;br /&gt;                             -&gt; $fh.print("Hello\n");&lt;br /&gt;                             -&gt; $fh.print: "Hello\n";&lt;/pre&gt;Done. Currently only the add a "," option is support (which is roughly the same as the ":" from the Howto, but more recent accordin to lwall). A .print option should be added from heavy object-orientation.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- close the file&lt;br /&gt;   close($fh);               -&gt; the same or $fh.close;&lt;/pre&gt;Done. The optional .close is added when the translator is told to do all object oriented options (the -Oo option).&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;- &lt;fh&gt;   reading from a file&lt;br /&gt;   $fh.readline&lt;br /&gt;   =$fh&lt;/fh&gt;&lt;/pre&gt;Done. At present only .readline is done, but the other option should be supported with time.&lt;br /&gt;&lt;br /&gt;In addition, some things no explicitly in the howto are covered. Depending on user preference, 'no strict' can be used or undeclraed variables can be declared.&lt;br /&gt;&lt;br /&gt;Overall, many of the most pressing issues for Perl 5 -&gt; Perl 6 translation are covered.&lt;br /&gt;The translator produces useable code in most cases, which can be fed to Pugs. While my work is not over, I think this code will ber very useable for the Perl community, especially when it's been even more extensively tested (I have yet to test on *nix at this point, but Mac OS X (close to *nix) and Windows are fine, given some complications with getting ghc to compile code for OS X).&lt;br /&gt;&lt;br /&gt;The thing that worries me the most at present is that the translator still has some problems parsing or running. These errors occur only rarely (~2% or less of test files fail), but this is still not good enough for production software.&lt;br /&gt;&lt;br /&gt;I'm proud of my work, but I also think I could have done better. In particular, my Haskell skills at the beginning were a little weak (but I've gotten much better), mostly since my school uses LISP to teach functional program and I had yet to code at this scale in a functional language. I'm also of the opinion that Haskell is not the best language to use for this kind of task, but that's just my personal taste. However, it was the best language to use in this case since Perl 6 isn't quite&lt;br /&gt;to the point of running large, complex pieces of code quickly (though it will surely get there), and writing a perl 5 to perl 6 translator in perl 5 is a little backwards (the idea being that somebody that only has perl 6 can get their perl 5 code translated).&lt;br /&gt;&lt;br /&gt;I hope I've done a service for the Perl community, and I'll continue to be as active as a wonky school schedule will allow. Thanks to everybody that helped, especially #perl6 which is like a second brain for those times I make a stupid mistake. It's been a great summer, and I look forward to continuing this work. In fact, I think that's one of the greates parts of this kind of setup: just cause I'm not getting payed for it anymore doesn't mean I can't keep working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115653172029666991?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115653172029666991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115653172029666991'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/final-notes_25.html' title='Final Notes'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115613592726963946</id><published>2006-08-20T21:02:00.000-07:00</published><updated>2006-08-20T23:07:43.836-07:00</updated><title type='text'>Wrapping Up</title><content type='html'>Well, my time for Summer of Code is up. My code isn't complete, which of course means that I'll keep working on it, but as far as Google is concerned, this is what I produced. First, a rundown of what my code does:&lt;br /&gt;&lt;br /&gt;-My translator will take a yaml parse of a perl 5 program and at least partially translate it (unless you tell it not to translate). Some yaml files still cause problems that I haven't been able to pin down, but around 98% of yaml files parse without errors.&lt;br /&gt;&lt;br /&gt;-The translations that &lt;span style="font-weight: bold;"&gt;are&lt;/span&gt; handeled:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sigils are translated. This handels issues such as $hash{key} -&gt; %hash{key} (since sigils are now invariate). Sigils are handled both in use and imbedded in text (and the AST definition of text includes regexs).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hash keys are adjusted, in particular for constant keys.&lt;/li&gt;&lt;li&gt;Conditional expressions are translated. In effect, every ? operator becomes ?? and every : operator becomes !!.&lt;/li&gt;&lt;li&gt;Regexs are now used with ~~. The =~ operator becomes ~~.&lt;/li&gt;&lt;li&gt;Regex modifiers, such as //g or //i, are moved to the beginning, m:g// and m:i// (or many at the same time).&lt;/li&gt;&lt;li&gt;The /e regex modifier is now default, so it's just dropped.&lt;/li&gt;&lt;li&gt;&lt;fh&gt; becomes a method call to .readline on the $fh object.&lt;br /&gt;&lt;/fh&gt;&lt;/li&gt;&lt;li&gt;The m at the beginning of a regex in a split is removed.&lt;/li&gt;&lt;li&gt;length function calls become .chars method calls.&lt;/li&gt;&lt;li&gt;File handles are closed with a method call to .close&lt;/li&gt;&lt;li&gt;Splitting on a static space becomes a method call to .words&lt;/li&gt;&lt;li&gt;foreach loops have a new syntax, going from foreach $foo (@bar){} to foreach @bar -&gt; $foo&lt;/li&gt;&lt;li&gt;Just about everything inside regexs translates. This includes metacharacters, counts, captures, backtracking, lookahead, and all that other (?...) stuff. This is the majority of the material in http://svn.openfoundry.org/pugs/docs/other/porting_howto which I won't repost here. Regexs are one of the areas I'm most confident in (when the parser doesn't break ;) ).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An option is included to only change captures inside regexs and just add the :perl5 modifier instead of other translations.&lt;/li&gt;&lt;li&gt;Heredocs are translated.&lt;/li&gt;&lt;li&gt;Calls to the scalar function are now handled by +, so scalar@foo becomes +@foo.&lt;/li&gt;&lt;li&gt;?foo? becomes m:once/foo/&lt;/li&gt;&lt;li&gt;Anything exported or export_okay is now exported with the ... is export or ... is export(:MANDATORY).&lt;/li&gt;&lt;li&gt;Printing to a file now uses a colon after the file handle.&lt;/li&gt;&lt;li&gt;Variables no declared before use gets declerations, or, optionally, "no strict;" can be used.&lt;/li&gt;&lt;/ul&gt;This is, unfortunately, not everything needed to translate Perl 5 to Perl 6. However, it is a start (maybe even a good start).&lt;br /&gt;&lt;br /&gt;I'm hoping that my progress is considerd good enough for Summer of Code work. I know that I haven't actually complteted my project, mostly because many things I thought were easy ended up hard, and only a few things I thought were hard ended up easy. While the translator isn't complete, I've still provided some good work to the Perl community, and I hope to continue my work, even if my project is not considered a success.&lt;br /&gt;&lt;br /&gt;At the very least, I can say I'm proud of my work. I revised my work daily most of the time, and I've learned much more then I thought I would.&lt;br /&gt;&lt;br /&gt;I've made every effort to make my code open to others. If anybody wants to join me hacking my translator, it should be well enough documented to make working on it a little easier.&lt;br /&gt;&lt;br /&gt;From here, I'm planning to continue work on my translator. First priority is bug fixes and added features, but I'd also like to start work on an expanded version of http://svn.openfoundry.org/pugs/docs/other/porting_howto , since working with this file has shown me how incomplete it is.&lt;br /&gt;&lt;br /&gt;Now that my Summer of Code project is (technically) over, I want to thank the Perl community for all the help and support. #perl6 has been particularly useful, as well as everybody I've talked to in the community. Unfortunately, the reality of college means I won't be able to keep up my current pace of development, but I'm not going to leave this code alone either. Before this project I had never been a part of an Open Source project to this degree, and the Perl community made diving into everything, from svn to ghc to anything, easy and interesting.&lt;br /&gt;&lt;br /&gt;I'm going to make an effort to make some revisions in the remaining time before the "due" time for my Summer of Code work, but this is essentially my final post. I'll update (likely tomorrow) with any final revisions and thoughts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115613592726963946?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115613592726963946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115613592726963946' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115613592726963946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115613592726963946'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/wrapping-up.html' title='Wrapping Up'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115602903463064921</id><published>2006-08-19T15:56:00.000-07:00</published><updated>2006-08-19T16:10:34.660-07:00</updated><title type='text'>Two Days to Go</title><content type='html'>With only a couple of days left, here's a quick update before I get back to coding:&lt;br /&gt;&lt;br /&gt;Testing has been broadened, covering what should be a representative sample of Perl 5 code, with good results. As expected, the percentage covered dropped a little across more code, but well over 95% of code is still parsed without errors (the actual coverage is ~98%+). I'm trying my hardest to get the last bits covered.&lt;br /&gt;&lt;br /&gt;Few new translations were added this week. I've been feeding some code to Pugs, and the biggest problem tends to be with pre-decleration of variables. I've added an option to add "no strict;"&lt;br /&gt; which should fix code, but "no strict;" isn't supported by pugs yet. I've been working on the mechanics of adding declerations, but haven't made enough progress for it to be viable yet. So, long story short, there's no real fix yet for the decleration of variables in files that don't already use strict.&lt;br /&gt;&lt;br /&gt;I think that, in the long run, "no strict" is a good option since the presumption of the parser is that the Perl 5 code is valid and safe. For now, I'm working on a translation option to add "my" or "our" as needed to declare variables and make it strict.&lt;br /&gt;&lt;br /&gt;With appropriate declerations, most translated code (including my classic test file, TestInit.pm) works fine in Pugs.&lt;br /&gt;&lt;br /&gt;With my last two days, I'm going to try bug fixes, more testing, and hopefully get a variable decleration translation in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115602903463064921?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115602903463064921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115602903463064921'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/two-days-to-go.html' title='Two Days to Go'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115568028225291182</id><published>2006-08-15T18:13:00.000-07:00</published><updated>2006-08-15T15:18:02.366-07:00</updated><title type='text'>STM Progress Report (9)</title><content type='html'>Done since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Merge trunk into branch again.&lt;/li&gt;&lt;li&gt;Code cleanup for eventual merge to trunk&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Allow NCI methods to be specified as writable and thus disabled on read-only objects.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Fixed some memory leaks.&lt;/li&gt;&lt;/ul&gt;Future:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A bit more cleanup/fixes before merging (incl. settling vtable method read-onlyness)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;More testing, bug finding.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115568028225291182?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115568028225291182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115568028225291182'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/stm-progress-report-9.html' title='STM Progress Report (9)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115533726385204580</id><published>2006-08-11T15:47:00.000-07:00</published><updated>2006-08-11T16:01:03.883-07:00</updated><title type='text'>The end is near...</title><content type='html'>All prophecies of doom aside, this week has been fairly productive. I've got a few more translations taken care of , as well as bug fixes. Documentation has been updated to reflect some new functionality, including the now completed option to do minimal regex changes using the :Perl5 modifier.&lt;br /&gt;&lt;br /&gt;The code now runs without errors over ~98% of perl5's t directory (the actual percent covered is something like 97.77777...). However, my main problem is the appearance of unknown nodes. Since all possible nodes are now explicitly named, I know that Unknown nodes are appearing due to certain functions being called in places they shouldn't (many of my functions use an unknown node as a non-terminal way of returning an error). My first task of next week is to get rid of this problem.&lt;br /&gt;&lt;br /&gt;I'm getting ready to really work my butt off this final week. Starting Monday I'll be back at new Mexico Tech, which means better internet access and plenty of free time. Hopefully I can get some real quality work done in the next week, to shore up some points that are still weak.&lt;br /&gt;&lt;br /&gt;I'll still be updating next week, and I plan to post the week after that with a final report of what I've accomplished. Still, at this point I'd like to thank the Perl community for the opportunity to get to do this. I've learned an amazing amount this summer, and I look forward to continuing to work on Perl (and Pugs, and Parrot, etc...). Immediately following the Summer of Code I plan to continue revising and improving my translator, and helping in other areas when I can.&lt;br /&gt;&lt;br /&gt;Thanks again for this great opportunity. Now to code...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115533726385204580?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115533726385204580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115533726385204580'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/end-is-near.html' title='The end is near...'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115500066051645067</id><published>2006-08-07T18:27:00.000-07:00</published><updated>2006-08-07T18:32:08.833-07:00</updated><title type='text'>STM Progress Report (8)</title><content type='html'>Done since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bug fixes: fix race conditions; memory leaks; really make dynoplibs work with threads (sort-of)&lt;/li&gt;&lt;li&gt;Make things work on Solaris/Sparc 64&lt;/li&gt;&lt;li&gt;Look at performance issues including instrumenting STM to optionally record statisitical information (not very productive; it appears the best way to improve the performance of STM is to improve the performance of GC/allocation)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Futureish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;More test cases for STM so more bugs can be found/removed&lt;/li&gt;&lt;li&gt;Fix shared objects + detached threads bug&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Documentation lookover&lt;/li&gt;&lt;li&gt;Exceptions + STM runtime&lt;/li&gt;&lt;li&gt;Thread performance/bug/incompleteness issues?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115500066051645067?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115500066051645067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115500066051645067'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/stm-progress-report-8.html' title='STM Progress Report (8)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115464231591520021</id><published>2006-08-03T14:49:00.000-07:00</published><updated>2006-08-03T15:04:03.686-07:00</updated><title type='text'>Another Week of Translations</title><content type='html'>This week I've broadened my testing quite a bit. I've run my translator across all of perl5/t, and regularly rerun it over t/op (since this directory has a fairly representative sample of perl 5 code). As of today, roughly 98% of perl 5 code translates with no major problems (the translations may be wrong and are likely incomplete, but the translator doesn't crash either). For now I'm working on the robustness of the translator more then translations, but I have added a few this week (the svn logs should have all the details).&lt;br /&gt;&lt;br /&gt;With the end of the project in site, I'm beginning to worry about completion. However, it seems stupid to worry about how far I get: if I don't finish by the SoC end date, I just continue to work and don't worry about the money. If I do finish, then great. Either way, worrying about it now only slows me down, so I'm just plugging away.&lt;br /&gt;&lt;br /&gt;My goals for the next week are some continued testing, to identify areas that are not as finished as they should be, and working on some of the conversions left to do. I also plan to reread the synopses, as just today I found a translation (an easy one, luckily) that I had missed in design but should be in the code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115464231591520021?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115464231591520021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115464231591520021'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/08/another-week-of-translations.html' title='Another Week of Translations'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115431117411856117</id><published>2006-07-30T18:45:00.000-07:00</published><updated>2006-07-30T19:16:25.716-07:00</updated><title type='text'>STM Progress Report (7)</title><content type='html'>Since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fix up runtime library more (including N-argument choice).&lt;/li&gt;&lt;li&gt;Workaround the inability to share constant tables.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add support for putting objects (i.e. ParrotObjects) into STM-managed variables.&lt;/li&gt;&lt;li&gt;Fix MMD handling for [STM]Ref-like types.&lt;/li&gt;&lt;li&gt;Fix GC-related race.&lt;/li&gt;&lt;li&gt;Fix bug where initial value of STM-managed variable would not be shared.&lt;/li&gt;&lt;li&gt;Started documenting deficiencies and 'shortcuts' in the Parrot threading implementation.&lt;/li&gt;&lt;li&gt;Merged in Wednesday's trunk.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Futureish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;STM/general multithreading benchmarks/performance improvements.&lt;/li&gt;&lt;li&gt;Solutions to various object sharing issues? Speeding up shared object GC?&lt;/li&gt;&lt;li&gt;More tests?&lt;/li&gt;&lt;li&gt;More cleanup?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115431117411856117?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115431117411856117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115431117411856117'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/stm-progress-report-7.html' title='STM Progress Report (7)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115428046087406926</id><published>2006-07-30T10:26:00.000-07:00</published><updated>2006-07-30T10:27:40.916-07:00</updated><title type='text'>Weekly report -- Pugs bootstrap -- 7/24 ~ 7/29</title><content type='html'>(copied from &lt;a href="http://yaphb.blogspot.com/2006/07/july-31st-2006-parsec-emitter-and.html"&gt;my blog&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Main goal of this week was to complete the Parsec emitter.  However, due to some natural limitation, it's not possible to really "complete" it, I just try my best to complete as many components as I can and hope those be enough for writing complete Perl 6 grammar.  The accepting grammar constructions implemented from last post are:&lt;ul&gt;&lt;li&gt;:sigspace option&lt;/li&gt;&lt;li&gt;complete \X syntax (but not \Xxxx)&lt;/li&gt;&lt;li&gt;numbered captures&lt;/li&gt;&lt;li&gt;subrule with parameters&lt;/li&gt;&lt;li&gt;non-capture group&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;And I mailed pmichaud++ about the different semantics of "non-backtrack" in Perl 6 rules and Parsec parsing strategy.  The :ratchet option, which is turned on by rule and token, is to make backtrack over atom fail.  But different branches are still tried even if first several atoms in one branch are matched.  In Parsec, the whole parsing fails if it goes into some branch, consumes some tokens and is unable to go on further.  However, this can be changed by wrapping the branch with "try," which, as the name tells, tries to match the branch but will try other ones if failed.  Such action is like adding a "::" after each atom instead of adding ":", which is done by rule and token in Perl 6 grammar.&lt;br /&gt;&lt;br /&gt;One way to solve it is to add "try" everywhere.  But that means giving up the high-efficiency parsing provided by Parsec.  When the grammar is not LL, it's unavoidable.  Parsec performs best on LL grammar (from &lt;a href="http://www.cs.uu.nl/~daan/download/parsec/parsec.html"&gt;official page&lt;/a&gt;), so in this stage, I'll feed only LL grammar to it and no additional "try" is added.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115428046087406926?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115428046087406926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115428046087406926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115428046087406926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115428046087406926'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/weekly-report-pugs-bootstrap-724-729.html' title='Weekly report -- Pugs bootstrap -- 7/24 ~ 7/29'/><author><name>Shu-Chun Weng</name><uri>http://www.blogger.com/profile/04862846201811012652</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11825683666681061718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115403686748511176</id><published>2006-07-27T14:36:00.000-07:00</published><updated>2006-07-27T14:47:47.546-07:00</updated><title type='text'>Translation Update</title><content type='html'>This week has been mostly about basic issues, with only a few translations completed. On the other hand, I have enough translations completed that it's not surprising, since most of the stuff I have left to do is the stuff that's the toughest for me.&lt;br /&gt;&lt;br /&gt;Completed stuff this week:&lt;br /&gt;-Heredocs now parse correctly and translate.&lt;br /&gt;&lt;br /&gt;-Yaml blocks with the chomp modifier (|+) parse correctly, even inside heredocs.&lt;br /&gt;&lt;br /&gt;-All node types now recognized.&lt;br /&gt;&lt;br /&gt;The result of all this is that, as far as I know, my translator can now at least partially translate any P5 AST with no unknown nodes. I'm working on a test script to test this theory, but in my manual testing it seems to be true.&lt;br /&gt;&lt;br /&gt;Now I just need to get the rest of these translations done...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115403686748511176?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115403686748511176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115403686748511176'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/translation-update_27.html' title='Translation Update'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115369667098175839</id><published>2006-07-23T13:47:00.000-07:00</published><updated>2006-07-23T16:21:18.490-07:00</updated><title type='text'>STM Progress Report (6)</title><content type='html'>Done since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support using loaded dynpmcs/dynoplibs in new interpreters&lt;/li&gt;&lt;li&gt;Improve performance by not freezing simple PMCs (e.g. Integers) and by avoiding creating metadata hashes when all the metadata can be inferred otherwise.&lt;/li&gt;&lt;li&gt;Fixed a waitlist-related deadlock (hopefully).&lt;/li&gt;&lt;li&gt;Add support for extracting the log of the current transaction enough to run &lt;code&gt;stm_wait&lt;/code&gt;. This is sufficient to implement things like Haskell STM's &lt;code&gt;orElse&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Write (in PIR) a runtime library to avoid code replication and provide a place to place exception handling code when the PDD is implemented&lt;/li&gt;&lt;/ul&gt;Disturbing discoveries:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Neither &lt;code&gt;Parrot_clone(..., sub_pmc)&lt;/code&gt; nor &lt;code&gt;VTABLE_clone(..., sub_pmc)&lt;/code&gt; do the Right Thing for copying subroutines into a new interpreter. [Specifically, the first doesn't copy segment information and the second copy-on-write shares strings and doesn't switch the namespace_stash pointer.] Worked around for subroutines stored in globals and arguments to the thread-starting function; not worked around for subroutines stored more deeply nested (at least not yet).&lt;/li&gt;&lt;/ul&gt;Future:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cleanup for pending merge.&lt;/li&gt;&lt;li&gt;More tests of runtime library, including tests for TODO features (e.g. exceptions).&lt;/li&gt;&lt;li&gt;Good examples of things that make good benchmarks (possible inspiration includes &lt;a href="http://odin.cs.uiuc.edu/WTW/"&gt;this&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Performance issues?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ponder solutions to the cloning issue and (related) ways to avoid unneeded copying.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115369667098175839?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115369667098175839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115369667098175839'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/stm-progress-report-6.html' title='STM Progress Report (6)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115367092406368031</id><published>2006-07-23T09:03:00.000-07:00</published><updated>2006-07-23T09:09:29.870-07:00</updated><title type='text'>Progress report -- Pugs bootstrap -- ~ 7/23</title><content type='html'>(copied from &lt;a href="http://yaphb.blogspot.com/2006/07/july-23rd-2006-pugsemitterruleparsec.html"&gt;my blog&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;I finally escaped from the final exams and projects, and the unexpected busy early July.  The first checkin of the &lt;a href="http://svn.openfoundry.org/pugs/perl5/Pugs-Compiler-Rule/lib/Pugs/Emitter/Rule/Parsec.pm"&gt;Pugs::Emitter::Rule::Parsec module&lt;/a&gt; is on July 20th.  It accepted and emitted correct Haskell code on the yada example given in the &lt;a href="http://svn.openfoundry.org/pugs/perl5/Pugs-Grammar-MiniPerl6/README"&gt;README&lt;/a&gt; of MiniPerl6 module.  (By the way, the Pugs::Grammar::MiniPerl6 and Pugs::Compiler::Rule modules have been moved from pX/ to &lt;a href="http://svn.openfoundry.org/pugs/perl5/"&gt;perl5/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;After three days' hacking, it now accepts a lot of rule constructions. Also, a &lt;a href="http://svn.openfoundry.org/pugs/perl5/Pugs-Compiler-Rule/t/11-parsec.t"&gt;test file&lt;/a&gt; was added. In &lt;a href="http://svn.openfoundry.org/pugs/src/Pugs/Parser/Literal.hs"&gt;Parser.Literal&lt;/a&gt; there are 10 parser routines, two of them take arguments (namedLiteral and possiblyTypeLiteral) which I currently don't know how to present in Perl 6 rule, one uses previous parsing state to decide next action (ruleWordboundary), all other seven can be easily generated.  In fact, all seven of them are already in the test file, the result is tested by replacing existing code by the generated one proven that it gears Pugs' parser, too.&lt;br /&gt;&lt;br /&gt;P.S. As the matter of fact, two of the ten parsers (ruleDot and ruleLongDot) use non-LL grammar so that a little modification by hand on generated code is needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115367092406368031?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115367092406368031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115367092406368031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115367092406368031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115367092406368031'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/progress-report-pugs-bootstrap-723.html' title='Progress report -- Pugs bootstrap -- ~ 7/23'/><author><name>Shu-Chun Weng</name><uri>http://www.blogger.com/profile/04862846201811012652</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11825683666681061718'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115343049096658317</id><published>2006-07-20T14:02:00.000-07:00</published><updated>2006-07-20T14:21:30.976-07:00</updated><title type='text'>Translation News</title><content type='html'>This week was a little slow due to a flu I managed to catch. Despite a week of decongestants and coughing, I managed to make considerable progress on translating regular expressions. I wrote a (fairly simple) parsec parser that takes a Perl 5 regex and spits out as close to a Perl 6 regex as it can. Some of the translations will have to be in external functions, since the parser only sees the text string of the regex, not the quotes or any of the other externals.&lt;br /&gt;&lt;br /&gt;The sheer number of completed items to show for this week makes it look like a VERY productive week, even if a lot of the translations are almost trivial to implement (translating one metacharacter is a lot like translating another metacharacter, for the most part). Still, I'll take my victories where I can, and marking off a large number of items from the Perl 5 -&gt; Perl 6 translation guide this week felt great.&lt;br /&gt;&lt;br /&gt;For the remainder of the week I'm working on finishing up regexs and some of the tougher Stage one conversions. I think, with some careful re-reading of Synopsis 5 I can take care of  my remaining regex issues. Beyond that, I need to get a clear reading of what issues I've handled, what I've identified and still not completed, and what I just plain haven't touched on yet. I'm hoping to start next week with getting a clear view of what I've done and what I still have to due, and then dive headlong into what I still have to tackle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115343049096658317?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115343049096658317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115343049096658317'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/translation-news.html' title='Translation News'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115288871852685209</id><published>2006-07-14T07:44:00.000-07:00</published><updated>2006-07-14T07:54:36.580-07:00</updated><title type='text'>STM Progress Report (5)</title><content type='html'>Done since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Merged trunk into the STM branch.&lt;/li&gt;&lt;li&gt;Supported atomic ops for Solaris/Sparc V8plus and probably Solaris/Sparc V9&lt;/li&gt;&lt;li&gt;Supported cloning existing classes into new threads&lt;/li&gt;&lt;li&gt;Supported cloning HLL namespace data into new threads&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixed some thread+GC bugs&lt;/li&gt;&lt;li&gt;Added revokable locks for STM&lt;/li&gt;&lt;/ul&gt;In progress:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;More interpreter cloning – e.g. loaded extension libraries&lt;/li&gt;&lt;/ul&gt;Near Futurish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start investigating performance issues.&lt;/li&gt;&lt;/ul&gt;Further Futurish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Runtime support for STM (should wait for exception support to be stable)&lt;/li&gt;&lt;li&gt;Less hackish cloning of PMCs into new interpreters (issue: clones must be deep, cannot be copy-on-write unless multithreaded COW improves (can't produce a COW string header in the wrong interpreter), and should not actually clone shared PMCs)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115288871852685209?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115288871852685209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115288871852685209'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/stm-progress-report-5.html' title='STM Progress Report (5)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115282448775641070</id><published>2006-07-13T13:47:00.000-07:00</published><updated>2006-07-13T14:01:27.766-07:00</updated><title type='text'>Translation Update</title><content type='html'>Some big changes in the code this week. I've ended up with more code just for parsing and other tasks then I expected, so I've packaged everything up into some nice little modules. I also decided my code had reached the point where it was a good idea to move from a function called in GHCi to a compilable program. I've also added command line switches for some of the debugging functions, such as a verbose mode and unknown node identification.&lt;br /&gt;&lt;br /&gt;I've also updated all my documentation with a full break down of what the modules do and how to use them. The only thing lacking is a makefile (I've been using ghc -- make for now).&lt;br /&gt;&lt;br /&gt;Also this week I've added a couple of new translations (including foreach loops) and some HereDoc support (which is broken at this point, but it doesn't perturb anything else).&lt;br /&gt;&lt;br /&gt;The code is now more usable then ever, it can parse everything but heredocs, and it can translate a good bit too, plus it's more user-oriented (as opposed to the function version, which was more for debugging then anything).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115282448775641070?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115282448775641070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115282448775641070'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/translation-update.html' title='Translation Update'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115239447955424554</id><published>2006-07-08T12:38:00.000-07:00</published><updated>2006-07-08T14:35:30.053-07:00</updated><title type='text'>Perl 6 DBI update</title><content type='html'>There is quite a lot of progress since my last report, I'm happy to say.&lt;br /&gt;&lt;br /&gt;I've turned my attention towards Error Handling &amp; Management, which happened to be tricky for multiple reasons. JDBC is Java, so it uses Throwable objects to throw exceptions. Inline::Java, which JDBC.pm is based on, uses the caught() method, eval and $@ to pass these exceptions to the Perl 5 side. Then I needed to trap these exceptions in Perl6 land.&lt;br /&gt;&lt;br /&gt;Thanks to audrey++ for implementing my requests, so that now Pugs can handle unclaimed dies from perl5 land, caught by try { }, pass $@ as $!, and deal with the contents of $! if it happens to be a reference to the Throwable object dealing with the given exception (test &lt;a href="http://rt.openfoundry.org/Foundry/Project/Source/index.html/pugs/checkout/t/perl5/exception_handling.t?rev=11281"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Another reason Error Handling is tricky, is because JDBC doesn't know the concept of a 'current error', but DBI has ($h-&gt;err), so there is a dispatch layer needed to handle the Error handling methods. I've written the exception handling part to trap JDBC errors, and a basic set_err method, currently works with RaiseError on.&lt;br /&gt;&lt;br /&gt;I've also updated the Statement class's execute method, so that it can deal with SELECT and non-SELECT statements now aswell. On non-SELECT statements it returns the updated row count, if available. On SELECT statements it returns a true value.&lt;br /&gt;&lt;br /&gt;To be able to retrieve the results of a SELECT statement, I've implemented fetchrow_arrayref in the Statement class.&lt;br /&gt;&lt;br /&gt;Next, I'll work on getting more done from error handling &amp; management, and when it reached a more reasonable state I'll start working on implementing prepared statements, with placeholders.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115239447955424554?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115239447955424554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115239447955424554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115239447955424554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115239447955424554'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/perl-6-dbi-update.html' title='Perl 6 DBI update'/><author><name>szbalint</name><uri>http://www.blogger.com/profile/18160286326498088303</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16525048149658980050'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115222031530059296</id><published>2006-07-07T02:30:00.000-07:00</published><updated>2006-07-07T07:23:45.186-07:00</updated><title type='text'>POE tests status update</title><content type='html'>Some things I've completed include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;tests for POE::Resource::FileHandles.&lt;/li&gt;&lt;li&gt;tests for POE::Wheel::ReadWrite&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I found the GTK bug in the end: POE wasn't checking whether it was idle and setting up its GTK callback appropriately.&lt;/li&gt;&lt;/ul&gt;I haven't quite got all of these changes and a few smaller ones checked into the main repository yet, and at the moment I'm working on refactoring the POE::Wheel::Run tests with support for the new 'pty-pipe' feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115222031530059296?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115222031530059296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115222031530059296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115222031530059296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115222031530059296'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/poe-tests-status-update.html' title='POE tests status update'/><author><name>Benjamin Smith</name><uri>http://www.blogger.com/profile/01632278032306502951</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02726445786711372953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115222135349202732</id><published>2006-07-06T14:20:00.000-07:00</published><updated>2006-07-06T14:30:02.693-07:00</updated><title type='text'>Translation Progress</title><content type='html'>Not much to report this week. With the Independence Day holiday here in the U.S. I wasn't able to do as much as I'd like. Got some new translations done, the &lt;a href="http://svn.openfoundry.org/pugs/misc/pX/Common/P5_to_P6_Translation/ConversionStageOne.txt"&gt;list of conversions shows what's completed&lt;/a&gt;, and it's good to see a fair number of done items. I'm already looking ahead to the next round of translations, since completion of stage one seems to be getting close.&lt;br /&gt;&lt;br /&gt;I found some errors with my parser this week while testing more files, mostly files from t/op/ of the Perl distro, version 5.9.3. I've compiled a few bug fixes that I need to do, I hope to have everything I've found so far fixed by next week so I can continue to broaden the number of files my translator can at least partially translate.&lt;br /&gt;&lt;br /&gt;For next week: bug fixes in the parser, more stage one translations, put out list of stage two conversions for comment/review/advice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115222135349202732?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115222135349202732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115222135349202732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115222135349202732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115222135349202732'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/translation-progress.html' title='Translation Progress'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115215089991011745</id><published>2006-07-05T23:15:00.000-07:00</published><updated>2006-07-05T20:20:10.540-07:00</updated><title type='text'>STM Progress Report (4)</title><content type='html'>Done since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thread death no longer frees shared object when thread is joined (not deteached).&lt;/li&gt;&lt;li&gt;Waitlists implemented for STM so retry-type functionality is possible.&lt;/li&gt;&lt;li&gt;Some threaded DOD bugs fixed.&lt;/li&gt;&lt;li&gt;Revokable locking in STM.&lt;/li&gt;&lt;li&gt;Globals cloning.&lt;/li&gt;&lt;/ul&gt;Near futureish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Freeze/thaw on STM* types.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Atomic ops for sparc.&lt;/li&gt;&lt;li&gt;PIR macros/investigate exception-handling issues.&lt;/li&gt;&lt;li&gt;More interpreter cloning (and sharing?) stuff (e.g. HLL data, registered classes).&lt;/li&gt;&lt;li&gt;Checking/fixing divergence of STM branch from trunk.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115215089991011745?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115215089991011745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115215089991011745'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/07/stm-progress-report-4.html' title='STM Progress Report (4)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115161621552413283</id><published>2006-06-29T14:02:00.000-07:00</published><updated>2006-06-29T14:23:35.533-07:00</updated><title type='text'>Perl5 -&gt; Perl6 Translation Progress</title><content type='html'>Lots to report this week (fortunately). I've managed to get 1-2 translations live in svn every day this week. Here's the summary of (semi-)completed translations:&lt;br /&gt;&lt;br /&gt;-When referencing a hash element: $hash{$something} -&gt; %hash{$something}&lt;br /&gt;&lt;br /&gt;-When referencing a hash element with a constant key: $hash{someword} -&gt; %hash&lt;someword&gt;&lt;br /&gt;&lt;br /&gt;-Similarly, accessing an array element: $array[$i] -&gt; @array[$i]&lt;br /&gt;&lt;br /&gt;-Conditional statements with the ? and : operators: a ? b : c -&gt; a ?? b !! c&lt;br /&gt;&lt;br /&gt;-Substitution regexs: $a =~ s/blah/blah blah/g -&gt; $a ~~ s:P5:g/blah/blah blah/&lt;br /&gt;&lt;br /&gt;I've been testing my code on more test documents, and so far so good. Some unknown node types, but for the most part the parser runs smoothly. TestInit.pm is almost completely translated, and I've been trying some things in /t/op. Cond.t was particularly useful for testing my translation of ? and :, it translates completely and correctly.&lt;br /&gt;&lt;br /&gt;Current topics of work:&lt;br /&gt;&lt;br /&gt;-Stage two design document (mostly regex changes). The regex changes should actually be very easy to implement. As soon as I finish the design I'm going to try implementing a few, for the most part they should be very fast.&lt;br /&gt;&lt;br /&gt;-Heredocs. I hadn't realized that the AST treats heredocs a bit differently then most nodes (though it does make sense). I had though that heredocs would essentially be a normal openquote/closequote pair, but the different structure (the node may have both kids and literal information) makes it harder to handle. I started to code a fix today, but it may not be live for a bit.&lt;br /&gt;&lt;br /&gt;-The rest of the stage one translations.&lt;br /&gt;&lt;br /&gt;I'm fairly happy with my progress this week. I would've liked to have more translations finished, but at least I have plenty to show.&lt;br /&gt;&lt;/someword&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115161621552413283?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115161621552413283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115161621552413283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115161621552413283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115161621552413283'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/06/perl5-perl6-translation-progress.html' title='Perl5 -&gt; Perl6 Translation Progress'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115159347702423053</id><published>2006-06-29T11:04:00.000-07:00</published><updated>2006-06-29T08:15:09.403-07:00</updated><title type='text'>STM Progress Report (3)</title><content type='html'>Done since last report:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stop-the-world garbage collection (so shared objects should be collected).&lt;/li&gt;&lt;li&gt;Threading API cleanup:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create ParrotRunningThread PMC type to replace calling methods on the current ParrotInterpreter object.&lt;/li&gt;    &lt;li&gt;Remove defunct type-{1,2,3} functions.&lt;/li&gt;    &lt;li&gt;Create interpreter cloning function for which one can request to clone various amounts (API is there, but mostly unimplemented/untested).&lt;/li&gt;    &lt;li&gt;When cloning code segments, properly propagate global namespaces with subroutines.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Extra test cases for STM.&lt;/li&gt;&lt;li&gt;Simple deadlock detection for STM.&lt;/li&gt;&lt;/ul&gt;In progress:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interpreter death issues.&lt;/li&gt;&lt;/ul&gt;Future-ish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Atomic ops for sparc.&lt;/li&gt;&lt;li&gt;Waitlists for STM.&lt;/li&gt;&lt;li&gt;Finish interpreter cloning function -- also test cases for it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PIR macros for STM so that there will be no problems when exception support is added.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115159347702423053?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115159347702423053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115159347702423053'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/06/stm-progress-report-3.html' title='STM Progress Report (3)'/><author><name>Charles</name><uri>http://www.blogger.com/profile/10216428724108823605</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11208837374964982370'/></author></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115153872131438008</id><published>2006-06-28T16:38:00.000-07:00</published><updated>2006-06-28T16:52:01.333-07:00</updated><title type='text'>Report from DBI</title><content type='html'>The time since my last report went without too much progress I'm afraid to say, due to the end of my  exam session I had to wrap up.&lt;br /&gt;&lt;br /&gt;Nonetheless, I've written a logging prototype, which unfortunately can't be run on Pugs at the moment, but capabilities will arrive soon for that (.meta class, Role runtime "mixins").&lt;br /&gt;&lt;br /&gt;In the meantime there is a temporary logging structure built in the code I've written so far, just to allow to get on with doing other things apart from logging.&lt;br /&gt;&lt;br /&gt;Apart from this I've been looking at the Java JDBC, to widen my understanding about it and I've been thinking of how to get from what we have (JDBC), to what we need (DBI v1 API).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115153872131438008?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115153872131438008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115153872131438008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115153872131438008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115153872131438008'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/06/report-from-dbi.html' title='Report from DBI'/><author><name>szbalint</name><uri>http://www.blogger.com/profile/18160286326498088303</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16525048149658980050'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115132916383298735</id><published>2006-06-26T01:37:00.000-07:00</published><updated>2006-06-26T06:42:37.016-07:00</updated><title type='text'>Filtration</title><content type='html'>I checked in a bunch of changes yesterday:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stub tests for POE::Wheel::Curses and POE::Wheel::ReadLine (but this one is behaving a little strangely under Gtk).&lt;/li&gt;&lt;li&gt;A big group of changes for all the filter tests.  I was initially only going to change POE::Filter::{RecordBlock,HTTPD,Stackable}, but I ended up factoring out some common code so I revised the other tests too.  I also fixed a couple of minor bugs in POE::Filter::RecordBlock.&lt;/li&gt;&lt;li&gt;Tests for POE::Resources.&lt;/li&gt;&lt;/ul&gt;Today I'm working on finding a bug with &lt;span style="font-family: courier new;"&gt;perl -e 'use Gtk; use POE; $poe_kernel-&gt;run'&lt;/span&gt;, and writing tests for POE::Resource::FileHandles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115132916383298735?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115132916383298735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115132916383298735' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115132916383298735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115132916383298735'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/06/filtration.html' title='Filtration'/><author><name>Benjamin Smith</name><uri>http://www.blogger.com/profile/01632278032306502951</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02726445786711372953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28707406.post-115101570363841621</id><published>2006-06-22T15:19:00.000-07:00</published><updated>2006-06-22T15:35:03.650-07:00</updated><title type='text'>Progress Marches On</title><content type='html'>I feel I've got some good stuff done this week. I still have some nagging yaml issues, but beyond that I can reconstruct an AST into a complete program, and I have at least one translation ready to go into svn.&lt;br /&gt;&lt;br /&gt;I finally got stuff committed to svn after far too long, and got some great revisions from Audrey. I had a couple of messy if/else/if/else... statements that Audrey turned into cases. I knew cases would work better there, but I hadn't been able to get one to work. This project has really taught me the weak points in my practical knowledge of Haskell. At my school they use Lisp to teach functional programming, so my knowledge of Haskell was more theoretical then practical, as show by my problems getting a case to work correctly. Luckily I'm picking things up quickly.&lt;br /&gt;&lt;br /&gt;Today I made a major breakthrough on how I represent the AST. Since I (will) have a number of functions that only work on one type of node for translations, I decided to abstract out nodes to a larger degree. A P5AST is now made up of AbstractNodes and LiteralNodes, with each node having a type to further narrow it down, such as (AbstractNode Op_leave []) or (LiteralNode PNothing "1" "#junk"). This allows me to abstract out functions quite a bit, it cut down the print tree function to 5 or so lines of code.&lt;br /&gt;&lt;br /&gt;Again, my mistakes are teaching me a lot. With the stuff Audrey corrected in my code I can make further change with a better understanding. I just hope I don't feel too stupid after these revisions.&lt;br /&gt;&lt;br /&gt;All of my work to date is available at http://svn.openfoundry.org/pugs/misc/pX/Common/P5_to_P6_Translation/ . &lt;a href="http://svn.openfoundry.org/pugs/misc/pX/Common/P5_to_P6_Translation/translate.hs"&gt;translations.hs&lt;/a&gt; shows Audrey's optimizations, &lt;a href="http://svn.openfoundry.org/pugs/misc/pX/Common/P5_to_P6_Translation/translate-sage.hs"&gt;translate-sage.hs&lt;/a&gt; shows my new approach to the AST (these two will be combined to create an effective version with a better tree). &lt;a href="http://svn.openfoundry.org/pugs/misc/pX/Common/P5_to_P6_Translation/AST_Description.txt"&gt;AST_description&lt;/a&gt; sums up some details on the AST that I think are useful, mostly the stuff that I've worked out on my own. Details on the rest of the directory are summed up in &lt;a href="http://svn.openfoundry.org/pugs/misc/pX/Common/P5_to_P6_Translation/README.txt"&gt;the README&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Overall I feel this has been a slow week, but with some really good stuff happening in the last few days. Good stuff, as we head into the midterm review. I'd say, while my project has moved slower then I'd like, it's only going to get faster from here, and I'm on track to get at least the minimum translations done, probably more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28707406-115101570363841621?l=perlsoc2006.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perlsoc2006.blogspot.com/feeds/115101570363841621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=28707406&amp;postID=115101570363841621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115101570363841621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28707406/posts/default/115101570363841621'/><link rel='alternate' type='text/html' href='http://perlsoc2006.blogspot.com/2006/06/progress-marches-on.html' title='Progress Marches On'/><author><name>Sage</name><uri>http://www.blogger.com/profile/04366437514587382136</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10576592758602652008'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>