[M3devel] Release notes comments

Jay K jay.krell at cornell.edu
Thu Jul 16 20:52:25 CEST 2009


ps: Interix in fact, outside of Modula-3, can use gcc or Visual C++.

They have a cc wrapper that translates the command line and calls cl.exe.

Not sure if both linkers are available -- you know, because Interix seems to have

substantial support for stuff Visual C++ link.exe does not have -- runpath, $origin.

 

 

As well, Cygwin/mingw/Visual C++ all use the same object file format and

to a significant extent can link each other's output.

So you can use Visual C++ with Cygwin, gcc without a cygwin dependency.

  They have/had a gcc -mnocygwin switch, though there is tension

  between "biarch" vs. "just separate targets".

 

 

So, actually, in cm3, these are all the same "target", "NT386", just different config files.

This was an experiment and I'm still feeling mixed about the results.

 

They way it is constructed leaves it generally pretty easy to construct the combinations

that aren't named. You don't have to change cm3 at all, nor I think any m3makefile,

just the config file. Well, in the m3makefiles, in m3core, there is deciding on

using pthreads or NT threads, since you can use NT threads with Posix cygwin.

 

 

You know, look at how SOLgnu and SOLsun are implemented -- they are all identical

except for the config files. Similar situation but in this case they were broken

out into separate targets, and all the target-specific code is /identical/.

 

 

 - Jay


 


From: jay.krell at cornell.edu
To: hosking at cs.purdue.edu; wagner at elegosoft.com
Date: Thu, 16 Jul 2009 18:41:52 +0000
CC: m3devel at elegosoft.com
Subject: Re: [M3devel] Release notes comments



Yes. These are subtle but true points.
 
 
os = cygwin or mingwin or interix or nt
   but mingwin is really nt, this is clarified below 
ostype = win32 or posix
  but this maps directly from os so isn't a multiplicative factor 
fork = fast or slow or none
  also maps from os/runtime 
backend = gcc or integrated
  gcc backend BITSIZE(LONGINT)==64
  integrated backend BITSIZE(LONGINT)==32
 
 
I386_CYGWIN (NT386GNU)
  Posix, slow fork
  gcc backend, BITSIZE(LONGINT)==64
 
I386_MINGWIN (NT386MINGNU)
  Win32, probably no fork (though in reality there some hybrid aspects, intended
    only for the use of the compiler/linker/etc., intended not to be injected into stuff you build) 
  gcc backend, BITSIZE(LONGINT)==64
 
I386_INTERIX
  Posix, fast fork
  uses gcc backend, BITSIZE(LONGINT)==64
 
I386_NT (NT386)
  Win32, no fork
  integrated backend, BITSIZE(LONGINT)==32

Cygwin hangs in one of the test cases.
Mingw had some major problem last I checked like crashing in all gui apps.
 
More combinations than this make sense.
You could use the integrated backend with Cygwin or Interix for example.
Mingwin, you know, is meant to be NT386 with the gcc backend.
Mingwin is not an OS or runtime.
 
Three runtimes: Cygwin, Interix, NT
two backends: integrated, gcc
 
therefore 6 combinations of which 4 are named above
 
Consider that integrated backend could be adapted for I386_LINUX, I386_SOLARIS, I386_FREEBSD ("FreeBSD4"), I386_OPENBSD, I386_NETBSD, I386_PLAN9, I386_DRAGONFLYBSD, I386_DARWIN, etc...
 
 - Jay

 


From: hosking at cs.purdue.edu
To: wagner at elegosoft.com
Date: Thu, 16 Jul 2009 10:39:03 -0400
CC: m3devel at elegosoft.com
Subject: Re: [M3devel] Release notes comments





Are there any Windows targets using the gcc-based backend?  If so then they will have BITSIZE(LONGINT)=64 too.  It is just the integrated non-optimizing x86 back-end that currently defines BITSIZE(LONGINT)=32.


On 16 Jul 2009, at 02:24, Olaf Wagner wrote:

Quoting "Rodney M. Bates" <rodney.m.bates at cox.net>:


A couple of comments on the release notes for 5.8.2:     <li>System

pthread threading is now the default on all

    platforms. The original (fast) M3 user level thread code is

    still there and can be used if necessary (on most platforms). On

    many systems, this allows M3 applications to scale over all

    available hardware processors.</li>



This sounds like it is the original user level threads that allow

scaling over multiple processors, which I believe is backwards.  I

suggest swapping the second and third sentences be for clarity.

<li>New data type LONGINT (64 bit integer) on all target

    platforms except Windows (still in the queue).</li>



As I understand it, LONGINT is in Windows too, it just isn't 64

bits yet.

Thanks Rodney, that was fast. After browsing the change logs for several
hours, I just checked in that draft last night before falling asleep.

I'd like everybody to have a look at them and correct, extend or add
topics they'd like to change or see. Probably I've missed at least some.
Order should also be considered.

You can browse them at http://www.opencm3.net/releng/relnotes-5.8-RC2.html
now if you don't want to read them in your CVS workspace.

Let me know what you think and feel free to improve the checked-in source,

Olaf
-- 
Olaf Wagner -- elego Software Solutions GmbH
              Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
  http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090716/ff33f5d5/attachment-0002.html>


More information about the M3devel mailing list