[M3devel] [M3commit] CVS Update: cm3

Tony Hosking hosking at cs.purdue.edu
Mon Jan 12 09:22:13 CET 2009


I think there is a straightforward fix for old compilers that can't  
compile LONGINT: define LongRep.T = INTEGER.  Most everything should  
compile from there.  That's what I recall doing to upgrade my compiler  
to handle LONGINT.  LONGINT is not used anywhere else in m3core, so  
nothing depends on it working.

On 12 Jan 2009, at 19:02, Jay wrote:

> If old compiler can't build m3core, such as if old compiler predates  
> LONGINT.
> You already know this.
> Are we "past" such compilers?
>
>  - Jay
>
>
>
> From: hosking at cs.purdue.edu
> To: jay.krell at cornell.edu
> Date: Mon, 12 Jan 2009 18:51:08 +1100
> CC: jkrell at elego.de; m3devel at elegosoft.com
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
>
>
> Why do you not build in the following order to get a new compiler?   
> (You may need to downgrade Compiler.tmpl for use with an old  
> compiler so that you don't get a mismatch between m3core and libm3,  
> but otherwise the following sequence should work).
>
> m3core
> libm3
> sysutils
> m3middle
> m3objfile
> m3linker
> m3back
> m3front
> m3quake
> cm3
>
> On 12 Jan 2009, at 18:25, Jay wrote:
>
> The compiler uses sysutils. The first pass builds against an old  
> package store, which might not have sysutils at all, if it is that  
> old.
>
> Again, once new m3core is around, no problem.
> I could/should have put in the m3core change and just waited on the  
> sysutils change, rather than go ahead and do the quake stuff, and we  
> can do that now (or your change that moots it, which I haven't  
> looked into yet).
>
> I was browsing the docs and it appears there is an "import_pkg"  
> directive for like, copying in a package contents, instead of  
> linking. That might also solve this. I found that relatively late  
> and never looked into it.
>
>  - Jay
>
>
> From: hosking at cs.purdue.edu
> To: jay.krell at cornell.edu
> Date: Mon, 12 Jan 2009 18:19:55 +1100
> CC: jkrell at elego.de; m3devel at elegosoft.com
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
>
> Not true.  sysutils should be built against the m3core with which it  
> will be linked.   I don't think this is correct.
>
> On 12 Jan 2009, at 17:58, Jay wrote:
>
> To bootstrap I believe.
>
>  - Jay
>
>
>
> From: hosking at cs.purdue.edu
> To: jay.krell at cornell.edu
> Date: Mon, 12 Jan 2009 17:53:02 +1100
> CC: jkrell at elego.de; m3devel at elegosoft.com
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
>
> Why does sysutils need to be compatible with both old and new  
> versions of m3core?
>
> On 12 Jan 2009, at 17:39, Jay wrote:
>
> ThreadPosix is basically unaffected -- I never provided user threads  
> on Cygwin.
>  I guess it got a slight reduction regarding DoesWaitPidYield, but  
> its SchedulerPosix implementation was unchanged.
>
> The code in ThreadPosix is similar to but different than  
> ThreadPThread.
> It is possible they could be merged but it wasn't trivial so I left  
> ThreadPosix alone.
>
>  > You are smearing implementation details across multiple files and  
> directories
>
> You really think it is bad to have SchedulerPosix implemented in a  
> small separate file?
> On top of what happens to be common implementation details of  
> ThreadPThread.m3 and ThreadWin32.m3?
>
> ThreadPScheduler.m3 is just basically three functions: IOWait,  
> IOAlertWait, XIOWait
> Plus the little internal utility, UTimeFromTime, the one liner  
> DoesWaitPidYield, and non-trivial functions nested in XIOWait:  
> TestFDS, CallSelect.
>
> I mean, you know, an alternative is to copy out very large chunks of  
> ThreadWin32.m3 and ThreadPThread.m3 and merge them into  
> ThreadCygwin.m3. That would be worse imho.
>
> "Directories" hardly.
>
> Or I can try debugging cygwin pthreads again.
>
>  - Jay
>
>
> CC: jkrell at elego.de; m3devel at elegosoft.com
> From: hosking at cs.purdue.edu
> To: jay.krell at cornell.edu
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
> Date: Mon, 12 Jan 2009 12:46:54 +1100
>
> You are smearing implementation details across multiple files and  
> directories.  Up until now, ThreadPThread has been nicely self- 
> contained, and captured all the basic pieces of the thread  
> implementation.  Also, how does all of this fit with the ThreadPosix  
> implementation?
>
> On 12 Jan 2009, at 12:19, Jay wrote:
>
> btw, I don't think it's that hairy, I merely split it into two or  
> three files, and added interfaces so they can reuse code with each  
> other. Movement between files is hard to track though (depending on  
> version control, but with all I've used).
>
> The SchedulerPosix implementation moved to ThreadPScheduler.m3.
> What is shared between it and ThreadPThread/Win32.m3 is  
> ThreadInternal.i3, which maybe should be in ThreadF.i3, though  
> that's exposed outside m3core, and ThreadInternal.i3 includes a  
> variable.
>
> I can try again to debug Cygwin pthreads though.
>
>  - Jay
>
>
> > From: hosking at cs.purdue.edu
> > To: jkrell at elego.de
> > Date: Mon, 12 Jan 2009 11:03:33 +1100
> > CC: m3devel at elegosoft.com
> > Subject: Re: [M3devel] [M3commit] CVS Update: cm3
> >
> > Jay,
> >
> > Can you remind me again why Cygwin was unable to use pthreads? It
> > seems you have introduced a bunch of hair into the PTHREADS
> > implementation to deal with broken Cygwin pthreads. As many of us
> > have already pointed out, Cygwin should be a port that tries as much
> > as possible to be like a standard POSIX platform (pthread-based) as
> > opposed to a weird Windows/POSIX hybrid.
> >
> > I have a bunch of code that will be going into the PTHREADS base  
> that
> > I am now at a loss to integrate with the changes you have made.
> >
> > Help!
> >
> > -- Tony
> >
>
>
>
>
>
>
>
>
>

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


More information about the M3devel mailing list