<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div apple-content-edited="true"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" color="#0000FF" face="'Gill Sans'"><span class="Apple-style-span" style="font-size: medium;">Good to hear that you think the numeric format errors have been stamped out. Not so good to hear that we don't fully support host/target distinctions in the front-end.</span></font></div><div><font class="Apple-style-span" color="#0000FF" face="'Gill Sans'"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></div><div><font class="Apple-style-span" color="#0000FF" face="'Gill Sans'"><span class="Apple-style-span" style="font-size: medium;">Text .mc would need conversion to binary .mc for cm3cg to parse.</span></font></div></span></span></span></span></span></span></span></span></div></span></div></span> </div><br><div><div>On 31 Jul 2009, at 12:43, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br>That reminds me, darn it..<br><br>Yes I think the INTEGER/FLOAT things are ok now.<br> I had hit problems in float and/or double bootstrapping where host and target differed in endian and fixed it. There were also 32bit/64bit problems there maybe, also now believed fixed.<br><br><br>And gcc used to be partly to blame for problems here, but has been fixed.<br> I even suggested they rev the documented caveats about building for Alpha and I think they did.<br><br>I do bootstrap from host-generated .s files.<br><br>I understand you could bootstrap from .mc files instead.<br> Maybe even textual ones?<br> That you use as a distribution format?<br> Advantages/disadvantages?<br> Minor one is that you'd have to build m3cc without the small aid of cm3..not a big deal, just configure -disable-bootstrap -disable-multilibs && make and ignore all my little tweaks in the m3makefile.<br> If not textual, mc files are less readable..but assembly is unreadable to most people anyway..<br><br>There are bugs here though.<br> - I left in the hack you didn't like in order to bootstrap from 32bit to 64bit, where TEXTs are limited to 4gig, rather than some much larger value on 64bit systems. The front end should be doing target math there not host math.<br><br> - You can't bootstrap from 64bit to 32bit due to some similar small bug in the front end.<br> Probably also a target math vs. host math thing.<br><br> We already have the code to simulate target math, we just have to use it a little more.<br> (This is what gcc now uses gmp/mpfr for presumably, like wrt constant propagation.)<br><br><br> - Jay<br><br><br>________________________________<br><blockquote type="cite">From: <a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br></blockquote><blockquote type="cite">To: <a href="mailto:wagner@elegosoft.com">wagner@elegosoft.com</a><br></blockquote><blockquote type="cite">Date: Fri, 31 Jul 2009 12:31:49 -0400<br></blockquote><blockquote type="cite">CC: <a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br></blockquote><blockquote type="cite">Subject: Re: [M3devel] package groups question<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I think cross-compilation should always be the default approach, simply because it avoids all the version issues. We should be able to bootstrap from any host to any target. I know there have been deficiencies in the gcc-based cm3cg backend (for example when host and target INTEGER or FLOAT have different formats), but I think we are on the way to eliminating those. Bootstrapping from .mc files using a native cm3cg probably avoids that though, rather than bootstrapping from host-generated .s files. Jay, perhaps you have more to add?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On 31 Jul 2009, at 12:27, Olaf Wagner wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I meant getting the first instance of cm3 5.1 run on a certain platform.<br></blockquote><blockquote type="cite">And there was of course a first platform. We used the SRC compiler,<br></blockquote><blockquote type="cite">the cm3 4.1 from Critical Mass, and the PM3 compiler on different<br></blockquote><blockquote type="cite">platforms. Later we used cross-compilation almost exclusively.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I assume that cross-compilation support has improved dramatically<br></blockquote><blockquote type="cite">with all your changes.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Olaf<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Quoting Jay K>:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">What does it mean to boot the compiler?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I build the compiler from nothing but the compiler itself,<br></blockquote><blockquote type="cite">and config files, and C compiler and linker, cvs<br></blockquote><blockquote type="cite">to get all the source.<br></blockquote><blockquote type="cite">That's not nothing, but it about the smallest start you can have,<br></blockquote><blockquote type="cite">unless you rewrite the compiler in C, then you can start without<br></blockquote><blockquote type="cite">the Modula-3 compiler. But at certain points in time this<br></blockquote><blockquote type="cite">would not work, due to m3core and/or libm3 problems.<br></blockquote><blockquote type="cite">It does work today.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Is that booting?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">In future I'd like to dynamically link cm3, so I'd start with<br></blockquote><blockquote type="cite">cm3, libm3.so, libm3core.so, etc. -- just cm3 and its "static dynamic"<br></blockquote><blockquote type="cite">dependencies. Many other systems do dynamically link to this extent<br></blockquote><blockquote type="cite">and we can to.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I'm not just being obnoxious.<br></blockquote><blockquote type="cite">Really, what does it mean?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Should we just ship std and that's it?<br></blockquote><blockquote type="cite">And even drop the name from it?<br></blockquote><blockquote type="cite">cm3-PPC_LINUX-5.8.2.tar.gz ?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">(No need to say "POSIX", it is redundant).<br></blockquote><blockquote type="cite">Just one download per platform?<br></blockquote><blockquote type="cite">Not a big matrix of packages to test?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Or do we look too fat in that packaging? :)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Will too much stuff confuse users?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Or mitigate the bulk with a little documentation/tutorial?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Something like this:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">There are many libraries and packages.<br></blockquote><blockquote type="cite">You do not need to worry about them.<br></blockquote><blockquote type="cite">Here is hello world for a command line program:<br></blockquote><blockquote type="cite">...<br></blockquote><blockquote type="cite">And for a gui program:<br></blockquote><blockquote type="cite">...<br></blockquote><blockquote type="cite">And a minimal sample interoperating with C:<br></blockquote><blockquote type="cite">...<br></blockquote><blockquote type="cite">And a minimal sample using Modula-3's RPC called "network objects":<br></blockquote><blockquote type="cite">...<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">CM3 4.1 had some like this that were nice, presumably we have them.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">- Jay<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">----------------------------------------<br></blockquote><blockquote type="cite">Date: Fri, 31 Jul 2009 11:20:48 -0400<br></blockquote><blockquote type="cite">From: <a href="mailto:hendrik@topoi.pooq.com">hendrik@topoi.pooq.com</a><br></blockquote><blockquote type="cite">To: <a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br></blockquote><blockquote type="cite">Subject: Re: [M3devel] package groups question<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Fri, Jul 31, 2009 at 11:13:58AM -0400, <a href="mailto:hendrik@topoi.pooq.com">hendrik@topoi.pooq.com</a> wrote:<br></blockquote><blockquote type="cite">On Fri, Jul 31, 2009 at 04:05:46PM +0200, Olaf Wagner wrote:<br></blockquote><blockquote type="cite">Quoting Tony Hosking :<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I don't care if future versions are not compilable with old cm3. But,<br></blockquote><blockquote type="cite">vice versa, old versions should always be compilable with new cm3.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">My gut feelings run along the lines of what Randy has said. I do<br></blockquote><blockquote type="cite">think that the average user should accept std as the install, while<br></blockquote><blockquote type="cite">min is for power-users who know what they are doing. Does that jive<br></blockquote><blockquote type="cite">with other people's expectations?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Sorry, I only now caught up with _some_ of the mails on the m3devel<br></blockquote><blockquote type="cite">list. Too much traffic for me to digest.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I gather there's been a long discussion that `min' is not really<br></blockquote><blockquote type="cite">useful as it is not enough to build the system. When we started<br></blockquote><blockquote type="cite">the cm3 5 business many years ago with lots of uncompilable sources<br></blockquote><blockquote type="cite">from Farshad Nayeri, we invented the following sets of packages:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">all - obvious meaning. most packages did not compile at all.<br></blockquote><blockquote type="cite">std - the set of packages shipped as compilable and usable with<br></blockquote><blockquote type="cite">every new release<br></blockquote><blockquote type="cite">core - a useful but small set of packages including everything to<br></blockquote><blockquote type="cite">bootstrap the compiler<br></blockquote><blockquote type="cite">boot - the minimal set to bootstrap the compiler<br></blockquote><blockquote type="cite">min - the minimal set useful for anyone (not wanting to compiler cm3)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">As of today, std = all, and boot isn't used any more as far as a I see.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Is that becaouse no one ever boots the compiler any more? Or because<br></blockquote><blockquote type="cite">there are better ways to do it?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-- hendrik<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I guess I should mention that ebian is perfectly happy if one source<br></blockquote><blockquote type="cite">parckage (possibly the entire working cm3 system) generates multiple<br></blockquote><blockquote type="cite">binary packages.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-- hendrik<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--<br></blockquote><blockquote type="cite">Olaf Wagner -- elego Software Solutions GmbH<br></blockquote><blockquote type="cite">Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany<br></blockquote><blockquote type="cite">phone: +49 30 23 45 86 96 mobile: +49 177 2345 869 fax: +49 30 23 45 86 95<br></blockquote><blockquote type="cite"><a href="http://www.elegosoft.com">http://www.elegosoft.com</a> | Geschäftsführer: Olaf Wagner | Sitz: Berlin<br></blockquote><blockquote type="cite">Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote></div></blockquote></div><br></body></html>