<HTML><HEAD>
<STYLE><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></STYLE>
</HEAD>
<BODY class=hmmessage dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial'; COLOR: #000000">
<DIV class=post-text itemprop="text">
<P><FONT face="Times New Roman">May I remind you Norman Ramsey’s opinion on the 
subject:</FONT></P>
<P><FONT face="Times New Roman"></FONT> </P>
<P><FONT face="Times New Roman">Code generation is my business :-)</FONT></P>
<P><FONT face="Times New Roman">Comments on a few options:</FONT></P>
<UL>
  <LI>
  <P><FONT face="Times New Roman">CLR: </FONT></P>
  <UL>
    <LI><FONT face="Times New Roman">Pro: industrial support</FONT> 
    <LI><FONT face="Times New Roman">Con: you have to buy into their type system 
    pretty much completely; depending on what you want to do with types, this 
    may not matter</FONT> 
    <LI><FONT face="Times New Roman">Con: Only Windows platform is really 
    prime-time quality</FONT></LI></UL>
  <LI>
  <P><FONT face="Times New Roman">LLVM:</FONT></P>
  <UL>
    <LI><FONT face="Times New Roman">Pro: enthusiastic user community with 
    charismatic leader</FONT> 
    <LI><FONT face="Times New Roman">Pro: many interesting performance 
    improvements</FONT> 
    <LI><FONT face="Times New Roman">Con: somewhat complex interface</FONT> 
    <LI><FONT face="Times New Roman">Con: history of holes in the engineering; 
    as LLVM matures expect the holes in the engineering to be plugged by adding 
    to the complexity of the interface</FONT></LI></UL>
  <LI>
  <P><A style='href: "http://www.cminusminus.org/"'><FONT 
  face="Times New Roman">C--</FONT></A></P>
  <UL>
    <LI><FONT face="Times New Roman">Pro: target is an actual written language, 
    not an API; you can easily inspect, debug, and edit your C-- code</FONT> 
    <LI><FONT face="Times New Roman">Pro: design is reasonably mature and 
    reasonably clean</FONT> 
    <LI><FONT face="Times New Roman">Pro: supports accurate garbage 
    collection</FONT> 
    <LI><FONT face="Times New Roman">Pro: most users report it is very easy to 
    use</FONT> 
    <LI><FONT face="Times New Roman">Con: very small development team</FONT> 
    <LI><FONT face="Times New Roman">Con: as of early 2009, supports only three 
    hardware platforms (x86, PPC, ARM)</FONT> 
    <LI><FONT face="Times New Roman">Con: does not ship with a garbage 
    collector</FONT> 
    <LI><FONT face="Times New Roman">Con: future of project is 
    uncertain</FONT></LI></UL>
  <LI>
  <P><FONT face="Times New Roman">C as target language</FONT></P>
  <UL>
    <LI><FONT face="Times New Roman">Pro: looks easy</FONT> 
    <LI><FONT face="Times New Roman">Con: nearly impossible to get decent 
    performance</FONT> 
    <LI><FONT face="Times New Roman">Con: will drive you nuts in the long run; 
    ask the long line of people who have tried to compile Haskell, ML, Modula-3, 
    Scheme and more using this technique. At some point every one of these 
    people gave up and built their own native code 
generator.</FONT></LI></UL></LI></UL>
<P><FONT face="Times New Roman">Summary: <STRONG>anything except C</STRONG> is a 
reasonable choice. For the best combination of flexibility, quality, and 
expected longevity, I'd probably recommend LLVM. But your example code is very 
close to C--, so that may be an advantage.</FONT></P>
<P><FONT face="Times New Roman">Full disclosure: I am affiliated with the C-- 
project.</FONT></P></DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV style="FONT: 10pt tahoma">
<DIV> </DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=jay.krell@cornell.edu 
href="mailto:jay.krell@cornell.edu">Jay K</A> </DIV>
<DIV><B>Sent:</B> Saturday, July 18, 2015 10:27 AM</DIV>
<DIV><B>To:</B> <A title=m3devel@elegosoft.com 
href="mailto:m3devel@elegosoft.com">m3devel</A> </DIV>
<DIV><B>Subject:</B> [M3devel] switching to C backend?</DIV></DIV></DIV>
<DIV> </DIV></DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV dir=ltr>Any objection if I start switching targets to the C backend? 
<DIV> </DIV>
<DIV>In par<SPAN style="FONT-SIZE: 12pt">ticular, Darwin does not support m3gdb, 
so debuggability is not a factor.</SPAN></DIV>
<DIV> </DIV>
<DIV>Thanks,</DIV>
<DIV>- Jay<BR><BR></DIV><BR><BR></DIV>
<P>
<HR>
_______________________________________________<BR>M3devel mailing 
list<BR>M3devel@elegosoft.com<BR>https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel<BR></DIV></DIV></DIV></BODY></HTML>