<html><head></head>
<body><div style="background-color: #e6f0ff; width: auto; font-family: Arial, sans-serif; color: #000; padding: 5px;"><div style="height: 36px; font-size: 14px; font-weight: bold; padding-bottom: 4px;"><table style="display: inline;width: 100%;"><tbody><tr><td width="32px" style="padding: 0;"><img src="https://docs.google.com/images/doclist/icon_6_doc_large.gif" style="height: 32px; margin-right: 5px;" alt=""></td>
<td valign="middle" height="32px" style="padding: 0;">Google Summer of Code 2010, Parrot</td></tr></tbody></table></div>
<div style="overflow: auto; font-size: 13px; background-color: #FFF; padding: 10px 7px 7px 7px;"><span style="color: #007825; font-weight: bold;">Message from <a href="mailto:ash.gti@gmail.com" style="color: #007825; font-weight: bold;text-decoration: none;">ash.gti@gmail.com</a>:</span>
<span style="color: #000;"><pre style="font-size: 13px;font-family: Arial, sans-serif">I am looking to sign up for the GSoC and wanted to send my application out to the parrot mailing list before I submit it. Your feedback is appreciated, thanks. 


John Harrison </pre></span>

<div style="border: 1px 0 solid #000; padding: 10px 0;">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<base target="_top">
<style type="text/css">
  

/* default css */

table {
  font-size: 1em;
  line-height: inherit;
  border-collapse: collapse;
}


tr {
  
  text-align: left;
  
}


div, address, ol, ul, li, option, select {
  margin-top: 0px;
  margin-bottom: 0px;
}

p {
  margin: 0px;
}

body {
  margin: 6px;
  padding: 0px;
  font-family: Verdana, sans-serif;
  font-size: 10pt;
  background-color: #ffffff;
  color: #000;
}


img {
  -moz-force-broken-image-icon: 1;
}

@media screen {
  html.pageview {
    background-color: #f3f3f3 !important;
    overflow-x: hidden;
    overflow-y: scroll;
  }

  

  body {
    min-height: 1100px;
    
    counter-reset: __goog_page__;
  }
  
  .pageview body {
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
    border-right: 2px solid #bbb;
    border-bottom: 2px solid #bbb;
    width: 648px !important;
    margin: 15px auto 25px;
    padding: 40px 50px;
  }
  /* IE6 */
  * html {
    overflow-y: scroll;
  }
  * html.pageview body {
    overflow-x: auto;
  }
  

  
    
    .writely-callout-data {
      display: none;
    }
    

    .writely-footnote-marker {
      background-image: url('images/footnote_doc_icon.gif');
      background-color: transparent;
      background-repeat: no-repeat;
      width: 7px;
      overflow: hidden;
      height: 16px;
      vertical-align: top;

      
      -moz-user-select: none;
    }
    .editor .writely-footnote-marker {
      cursor: move;
    }
    .writely-footnote-marker-highlight {
      background-position: -15px 0;
      -moz-user-select: text;
    }
    .writely-footnote-hide-selection ::-moz-selection, .writely-footnote-hide-selection::-moz-selection {
      background: transparent;
    }
    .writely-footnote-hide-selection ::selection, .writely-footnote-hide-selection::selection {
      background: transparent;
    }
    .writely-footnote-hide-selection {
      cursor: move;
    }

    /* Comments */
    .writely-comment-yellow {
      background-color: #ffffd7;
    }
    .writely-comment-orange {
      background-color: #ffe3c0;
    }
    .writely-comment-pink {
      background-color: #ffd7ff;
    }
    .writely-comment-green {
      background-color: #d7ffd7;
    }
    .writely-comment-blue {
      background-color: #d7ffff;
    }
    .writely-comment-purple {
      background-color: #eed7ff;
    }

  


  
  .br_fix span+br:not(:-moz-last-node) {
    
    position:relative;
    
    left: -1ex
    
  }

  
  #cb-p-tgt {
    font-size: 8pt;
    padding: .4em;
    background-color: #ddd;
    color: #333;
  }
  #cb-p-tgt-can {
    text-decoration: underline;
    color: #36c;
    font-weight: bold;
    margin-left: 2em;
  }
  #cb-p-tgt .spin {
    width: 16px;
    height: 16px;
    background: url(//ssl.gstatic.com/docs/clipboard/spin_16o.gif) no-repeat;
  }
}

h6 { font-size: 8pt }
h5 { font-size: 8pt }
h4 { font-size: 10pt }
h3 { font-size: 12pt }
h2 { font-size: 14pt }
h1 { font-size: 18pt }

blockquote {padding: 10px; border: 1px #DDD dashed }

.webkit-indent-blockquote { border: none; }

a img {border: 0}

.pb {
  border-width: 0;
  page-break-after: always;
  /* We don't want this to be resizeable, so enforce a width and height
     using !important */
  height: 1px !important;
  width: 100% !important;
}

.editor .pb {
  border-top: 1px dashed #C0C0C0;
  border-bottom: 1px dashed #C0C0C0;
}

div.google_header, div.google_footer {
  position: relative;
  margin-top: 1em;
  margin-bottom: 1em;
}


/* Table of contents */
.editor div.writely-toc {
  background-color: #f3f3f3;
  border: 1px solid #ccc;
}
.writely-toc > ol {
  padding-left: 3em;
  font-weight: bold;
}
ol.writely-toc-subheading {
  padding-left: 1em;
  font-weight: normal;
}
/* IE6 only */
* html writely-toc ol {
  list-style-position: inside;
}
.writely-toc-none {
  list-style-type: none;
}
.writely-toc-decimal {
  list-style-type: decimal;
}
.writely-toc-upper-alpha {
  list-style-type: upper-alpha;
}
.writely-toc-lower-alpha {
  list-style-type: lower-alpha;
}
.writely-toc-upper-roman {
  list-style-type: upper-roman;
}
.writely-toc-lower-roman {
  list-style-type: lower-roman;
}
.writely-toc-disc {
  list-style-type: disc;
}

/* Ordered lists converted to numbered lists can preserve ordered types, and
   vice versa. This is confusing, so disallow it */
ul[type="i"], ul[type="I"], ul[type="1"], ul[type="a"], ul[type="A"] {
  list-style-type: disc;
}

ol[type="disc"], ol[type="circle"], ol[type="square"] {
  list-style-type: decimal;
}

/* end default css */


  /* default print css */
  @media print {
    body {
      padding: 0;
      margin: 0;
    }

    div.google_header, div.google_footer {
      display: block;
      min-height: 0;
      border: none;
    }

    div.google_header {
      flow: static(header);
    }

    /* used to insert page numbers */
    div.google_header::before, div.google_footer::before {
      position: absolute;
      top: 0;
    }

    div.google_footer {
      flow: static(footer);
    }

    /* always consider this element at the start of the doc */
    div#google_footer {
      flow: static(footer, start);
    }

    span.google_pagenumber {
      content: counter(page);
    }

    span.google_pagecount {
      content: counter(pages);
    }

    .endnotes {
      page: endnote;
    }

    /* MLA specifies that endnotes title should be 1" margin from the top of the page. */
    @page endnote {
      margin-top: 1in;
    }

    callout.google_footnote {
      
      display: prince-footnote;
      footnote-style-position: inside;
      /* These styles keep the footnote from taking on the style of the text
         surrounding the footnote marker. They can be overridden in the
         document CSS. */
      color: #000;
      font-family: Verdana;
      font-size: 10.0pt;
      font-weight: normal;
    }

    /* Table of contents */
    #WritelyTableOfContents a::after {
      content: leader('.') target-counter(attr(href), page);
    }

    #WritelyTableOfContents a {
      text-decoration: none;
      color: black;
    }

    /* Comments */
    .writely-comment-yellow {
      background-color: #ffffd7;
    }
    .writely-comment-orange {
      background-color: #ffe3c0;
    }
    .writely-comment-pink {
      background-color: #ffd7ff;
    }
    .writely-comment-green {
      background-color: #d7ffd7;
    }
    .writely-comment-blue {
      background-color: #d7ffff;
    }
    .writely-comment-purple {
      background-color: #eed7ff;
    }
  }

  @page {
    @top {
      content: flow(header);
    }
    @bottom {
      content: flow(footer);
    }
    @footnotes {
      border-top: solid black thin;
      padding-top: 8pt;
    }
  }
  /* end default print css */


/* custom css */


/* end custom css */

/* ui edited css */

body {
  font-family: Verdana;
  
  font-size: 10.0pt;
  line-height: normal;
  background-color: #ffffff;
}
/* end ui edited css */


/* editor CSS */
.editor a:visited {color: #551A8B}
.editor table.zeroBorder {border: 1px dotted gray}
.editor table.zeroBorder td {border: 1px dotted gray}
.editor table.zeroBorder th {border: 1px dotted gray}


.editor div.google_header, .editor div.google_footer {
  border: 2px #DDDDDD dashed;
  position: static;
  width: 100%;
  min-height: 2em;
}

.editor .misspell {background-color: yellow}

.editor .writely-comment {
  font-size: 9pt;
  line-height: 1.4;
  padding: 1px;
  border: 1px dashed #C0C0C0
}


/* end editor CSS */

</style>

  <script>
    function DoPageLoad() {
      
      window.TimeoutId = setTimeout('');
      parent.TIME_doc_load_full = new Date().getTime();
    }
  </script>

</head>

<body 
    
      onload="DoPageLoad();"
    
    >
    
      
      <!--[if IE]>
        <?XML:NAMESPACE PREFIX = GDOC />
      <![endif]-->
    
    
    
<p>
  <font size=3><font face="arial, sans-serif"><b>All</b>&nbsp;of the sections and questions are important. Your proposal should provide answers to all of these questions and address each point.</font></font>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b><i>John Harrison</i></b></font></font>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b><i>ash.gti@gmail.com or ash@greaterthaninfinity.com or harrij3@auburn.edu and john_harrison</i></b></font></font>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b><i>LLVM Stack Frame Builder for Parrot</i></b></font></font>
</p>
<p>
</p>
<p>
  <font size=3><b><br>
  </b></font>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Abstract:</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">Develop a LLVM based stack frame builder for the Parrot Virtual Machine. The LLVM libraries can let you effectively build dynamically generated code and has a number of built in optimizations it can run on the code to improve its efficiency.&nbsp;</font></font>
</blockquote>
<p>
</p>
<p>
  &nbsp;
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><i>(The rest should be entered in the "detailed description" box.)</i></font></font>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Benefits to the Perl/Open Source Community</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">A new stack frame builder could improve the runtime efficiency of parrot programs, or help find problems in the current API for the stack frame builder. The LLVM offers some code generation tools and optimization passes over the generated code that could help improve the efficiency of the parrot runtime. There is an overlap in functionality with Parrot, however. Parrot does some of these things already, but the LLVM is a specifically designed library that targets a level of design well below most of what Parrot covers.&nbsp;</font></font>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Deliverables</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font face="arial, sans-serif"><font size=3>Creating an LLVM based stack frame builder to complement the current C based stack frame builder. Preferably construct a compile time flag to choose to build parrot with the LLVM based stack frame builder or to use the current C based stack frame builder.&nbsp;</font></font>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Project Details</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">This last semester I particpated in an independent study on compilers. During this study, I have been re-implementing a subset of Not Quite Perl for the LLVM. All code generation for my subset of NQP was done using the LLVM. Other projects, like MacRuby, have used the LLVM as a stack frame builder and seen a number of performance benefits.&nbsp;</font></font>
</blockquote>
<blockquote>
  <font size=3><font face="arial, sans-serif">The LLVM mailing list is active, if I run into issues with the library itself. I also plan on talking with Peter Lobsinger about his work with his libjit based stack frame builder.&nbsp;</font></font>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Project Schedule</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">What are the milestones? Be sure to include dates which are compatible with the&nbsp;<a href=../../../../../document/show/gsoc_program/google/gsoc2010/timeline style=COLOR:#551a8b title="(external link)">timeline</a>.<br>
  <br>
  Goals:<br>
  </font></font>
  <ul>
    <li>
      <font size=3><font face="arial, sans-serif">Construct configuration options (should be simple, there is previous work by other parrot members for this)</font></font>
    </li>
    <li>
      <font size=3>Work on a JIT compiled system for x86, x86_64, PPC, and PPC64 architectures.&nbsp;</font>
    </li>
    <li>
      <font size=3>Work on an AOT compiled system for all supported LLVM architectures.&nbsp;</font>
    </li>
    <ul>
      <li>
        <font size=3>This system could build a stack frame for the current code, run optimization passes over the code, and then store the code in either LLVM-IR form or a native format, so you don't have to re-build the stack frame every time a section of code is called.&nbsp;</font>
      </li>
    </ul>
  </ul>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>References and Likely Mentors</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">Peter Lobsinger - has previous experience building a stack frame builder with libjit<br>
  Andrew Whitworth&nbsp;<br>
  Bruce Gray</font></font>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>License</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">I would want to release all my work under the same license as Parrot, so the Artistic License 2.0.</font></font>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Bio</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">I am a senior at Auburn University that is interested in open source projects. I have had a part time job working on web development and I also work on some robotics projects on campus. I have gained a lot of experience from my part time job working with php, and recently ruby. I use python a lot on my robotics projects, but have been trying to use more perl when possible. Perl 6, and Rakudo, are both very interesting to me for their advanced programming features. I also use perl for a lot of quick scripts, but I have not had a chance to work with it on a major project yet. For my senior design project on campus I worked with another student to develop an open source robotics environment to make writing code for our robotics projects easier, it can be found at: http://code.google.com/p/open-robotics-platform/ . For our robotics projects I regularly use the Linux platform with the most of my programming done in vim with gcc, g++, gdb&nbsp;</font></font>
</blockquote>
<p>
</p>
<p>
</p>
<p>
  <font size=3><font face="arial, sans-serif"><b>Eligibility</b></font></font>
</p>
<p>
</p>
<blockquote>
  <font size=3><font face="arial, sans-serif">I am a current student, and I have all the paper work necessary for the GSoC.&nbsp;</font></font>
</blockquote>
<p>
  &nbsp;
</p>
<p>
  &nbsp;
</p>
<p>
  &nbsp;
</p>
<p>
  &nbsp;
</p>
<p>
  &nbsp;
</p>
<p>
  &nbsp;
</p>
<p>
  &nbsp;
</p>
<br></body>
</html></div>
<br>
<span style="color: #898989;">Google Docs makes it easy to create, store and share online documents, spreadsheets and presentations.</span>
<div style="text-align: right;"><a href="http://docs.google.com"><img style="border: 0;margin-top: 10px;" src="https://docs.google.com/images/doclist/docs_logo_sm.gif" alt="Google Docs logo"></a></div></div></div></body></html>