<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Again, no.<br><br><br>Modula-3 implementations have always depended on a C runtime. Always.<br>Removing such a dependency is a tedious error-prone target-dependent task.<br>And it buys you nothing.<br>Please stop this crazy thinking.<br><br><br><br>When there is a system that provides "m3core" from its "kernel", along with .i3 files, then you<br>can cut the C runtime dependency for that target. Just for that target.<br><br><br>Meanwhile, Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Darwin, Cygwin, Interix, and<br>hypothetical AIX, Irix, HP-UX, VMS targets will always have a C runtime dependency.<br><br><br>Even on Win32/NT -- today we depend on very little, but on setjmp/longjmp.<br>A good C backend would use __try/__except/__finally -- still depending on a C runtime.<br><br><br><br>If you really want to cut the dependency, look perhaps at what was done for Go.<br>Good luck.<br><br><br>Keep in mind that e.g. Solaris and Apple don't allow for static linking the C runtime.<br>Which somewhat implies that the kernel interface is private/undocumented/unstable.<br>The C runtime is the blessed portability layer to target multiple revisions.<br>I do find that a bit unfortunate.<br><br><br>The Linux kernel does not implement pthreads. The C runtime does.<br>And many more examples of varying thickness.<br><br><br>Other ideas would be to generate Java or C#.<br>C# is more viable since it is selectively unsafe.<br>Java is probably not practical.<br><br> > truly independent platform low level C-- <br><br>No. Platform independence is mostly a matter of who all has done the porting for you already.<br>Or how much of the work you have done yourself without depending on a lower level.<br>Targeting a C compiler is far more compatible than anything else.<br><br><br>In the realm of C--, LLVM is probably better.<br>But again, C is much more portable.<br>Of course, LLVM might be portable enough.<br>C is also, again, more familiar. Would you rather maintain and debug code that<br>interfaces with LLVM or code that generates C?<br>Granted, both LLVM and the underlying C compiler will have bugs.<br><br><br> - Jay<br><br><br><hr id="stopSpelling">Date: Sun, 5 Jun 2011 19:23:38 +0100<br>From: dabenavidesd@yahoo.es<br>To: ttmrichter@gmail.com; m3devel@elegosoft.com; jay.krell@cornell.edu<br>Subject: Re: [M3devel] Problems building CM3 from trunk.<br><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font:inherit" valign="top">Hi all:<br>Yes, it would be nice, but you would need to understand that we don't want the RT to depend on specific implementations, but to be portable really and truly, having C underneath makes just another thing makes us to depend on C RT (that is less likely to be the best idea), instead of that, a clean low level but truly independent platform low level C-- is good to start with, you might see another implementation of this idea in portable Cedar (Modula-3 was ported to it), just that their idea was to make this even further to interact with that language, us here just need the portable low level interfaces same way (I don't deny Modula-3 C runtime, but making it safe ideally is C--), something I don't know it's quite platform dependent in inner C currently if I may say so (who can say that BTW). Even SPIN did  transfered their ideal C idiom to SPIN
 Modula-3 (just what it missed, later did the same in a distributed JVM an nowadays I think in C#)<br>Thanks in advance<br> <br><br>--- El <b>dom, 5/6/11, Jay K <i><jay.krell@cornell.edu></i></b> escribió:<br><blockquote style="margin-left:5px;padding-left:5px"><br>De: Jay K <jay.krell@cornell.edu><br>Asunto: RE: [M3devel] Problems building CM3 from trunk.<br>Para: dabenavidesd@yahoo.es, ttmrichter@gmail.com, "m3devel" <m3devel@elegosoft.com><br>Fecha: domingo, 5 de junio, 2011 12:38<br><br><div id="ecxyiv1944419358">

<style>
.ExternalClass #ecxyiv1944419358 .ecxyiv1944419358hmmessage P
{padding:0px;}
.ExternalClass #ecxyiv1944419358 .ecxyiv1944419358hmmessage
{font-size:10pt;font-family:Tahoma;}

</style>
Depending on C is VASTLY preferable to depending on C--.<br>C is WIDELY understood, studied, implemented, optimized.<br>C-- is extremely "small" in comparison -- in terms of how many people have heard of it, understand it well, have implemented it.<br><br><br>Generating C should be our portable/slow solution, to replace gcc/m3cc/m3cg.<br>Extending our existing backend to other targets is probably then a good idea, to speed up the compiler.<br>It would be really great if our backend could inline though.<br><br><br> - Jay<br><br><hr id="ecxyiv1944419358stopSpelling">Date: Sun, 5 Jun 2011 17:16:58 +0100<br>From: dabenavidesd@yahoo.es<br>To: ttmrichter@gmail.com; m3devel@elegosoft.com; jay.krell@cornell.edu<br>Subject: Re: [M3devel] Problems building CM3 from trunk.<br><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family:inherit;font-style:inherit;font-variant:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-size-adjust:inherit;font-stretch:inherit" valign="top">Hi all:<br>
I would myself expect in m3core just not Unix nor Win interfaces (or
WeakRef), neither necessarily the Thread interface, I mean if we are
tied to the language definition, this are part of the standard
libraries and by that I mean as are IO and Floating point standard
interfaces. However Unix interfaces are not necessarily there too (as
are not part of the language it self), perhaps the possible c--backend
code generator interface could be there to let m3core interact with
appropriated data structures (dtoa) and maybe the higher level
interfaces (not UNSAFE) in libm3 at least at INTERFACE level. That is I
would prefer to interact via some sort of C-- (instead of C, well if
not verified, at least one of them, or the minimum bit possible of it). The idea is not to
break the dependency in C, but replace by C-- as much as possible, so it's good to start
there I believe.<br>
Thanks in advance<br><br>--- El <b>sáb, 4/6/11, Jay K <i><jay.krell@cornell.edu></i></b> escribió:<br><blockquote style="margin-left:5px;padding-left:5px"><br>De: Jay K <jay.krell@cornell.edu><br>Asunto: Re: [M3devel] Problems building CM3 from trunk.<br>Para: ttmrichter@gmail.com, "m3devel" <m3devel@elegosoft.com><br>Fecha: sábado, 4 de junio, 2011 22:28<br><br><div id="ecxyiv1944419358ecxyiv1607822434">

<style>
.ExternalClass #ecxyiv1944419358 .ecxyiv1944419358ExternalClass #ecxyiv1944419358ecxyiv1607822434 .ecxyiv1944419358ecxyiv1607822434hmmessage P
{padding:0px;}
.ExternalClass #ecxyiv1944419358 .ecxyiv1944419358ExternalClass #ecxyiv1944419358ecxyiv1607822434 .ecxyiv1944419358ecxyiv1607822434hmmessage
{font-size:10pt;font-family:Tahoma;}
</style>
Your m3core is not up to date.<br><br> - Jay<br><br><hr id="ecxyiv1944419358ecxyiv1607822434stopSpelling">Date: Sun, 5 Jun 2011 10:19:13 +0800<br>From: ttmrichter@gmail.com<br>To: m3devel@elegosoft.com<br>Subject: [M3devel] Problems building CM3 from trunk.<br><br><blockquote class="ecxyiv1944419358ecxyiv1607822434ecxwebkit-indent-blockquote" style="border:medium none;padding:0px"><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">=== package /home/michael/Development/Modula3/cm3/m3-libs/libm3 ===</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace"> +++ cm3 -build -DROOT='/home/michael/Development/Modula3/cm3' $RARGS  && cm3 -ship $RARGS -DROOT='/home/michael/Development/Modula3/cm3'  +++</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">--- building in AMD64_LINUX ---</font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace"><br></font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">ignoring ../src/m3overrides</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace"><br></font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">new source -> compiling ProcessPosixCommon.m3</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">"../src/os/POSIX/ProcessPosixCommon.m3", line 75: unknown qualification '.' (Fork)</font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">1 error encountered</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">new source -> compiling LowPerfTool.m3</font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">"../src/perftool/POSIX/LowPerfTool.m3", line 37: unknown qualification '.' (Fork)</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">"../src/perftool/POSIX/LowPerfTool.m3", line 39: case labels out of range</font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">"../src/perftool/POSIX/LowPerfTool.m3", line 44: case labels out of range</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">3 errors encountered</font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">compilation failed => not building library "libm3.a"</font></div>
<div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">Fatal Error: package build failed</font></div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace"> *** execution of cm3 -build -DROOT='/home/michael/Development/Modula3/cm3' $RARGS  && cm3 -ship $RARGS -DROOT='/home/michael/Development/Modula3/cm3'  failed ***</font></div>
</blockquote><div><br></div><div>The cm3 I'm using for this build is:</div><div><br></div><blockquote class="ecxyiv1944419358ecxyiv1607822434ecxwebkit-indent-blockquote" style="border:medium none;padding:0px"><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">$ cm3 -version</font></div>
</div><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">Critical Mass Modula-3 version d5.9.0</font></div></div><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">  last updated: 2010-07-21</font></div>
</div><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">  compiled: 2011-01-31 11:18:56</font></div></div><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">  configuration: /usr/local/cm3/bin/cm3.cfg</font></div>
</div><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">  host: AMD64_LINUX</font></div></div><div><div><font class="ecxyiv1944419358ecxyiv1607822434ecxApple-style-span" face="'courier new', monospace">  target: AMD64_LINUX</font></div>
</div></blockquote><div><br></div><div>Does anybody have any suggestions what I'm doing wrong here?</div><div><br></div>-- <br>"Perhaps people don't believe this, but throughout all of the discussions of entering China our focus has really been what's best for the Chinese people. It's not been about our revenue or profit or whatnot."<br>
--Sergey Brin, demonstrating the emptiness of the "don't be evil" mantra.<br>                                     
</div></blockquote></td></tr></tbody></table>                                         
</div></blockquote></td></tr></tbody></table>                                         </body>
</html>