<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
 > Do Cygwin users really care about all that stuff? <BR>
 <BR>
Could be that some do, some don't.<BR><BR>
 > The point of using Modula-3 on Cygwin<BR>
<BR>But is "Cygwin" the point?<BR> Would Interix or UWin suffice? Maybe.<BR> Or just accepting forward slashes and providing a 64bit longint? Maybe.<BR>
 <BR>
And what does "Cygwin" mean?<BR>It is many things.<BR>
 <BR>
Maybe the point is to use X Windows?<BR> Not likely imho, but maybe.<BR> I hadn't considered this at first myself, but someone (Olaf?) asked for it.<BR>
 <BR>
Or pthreads?<BR> Again not likely, but maybe.<BR>
 <BR>
Or LONGINT?<BR> Maybe.<BR>
 <BR>
Or Posix paths? ie. form and run command lines from bash.<BR> This seems to be the most popular reason.<BR> The "run" part, not a problem, the "form" part somewhat<BR> related to the path issue.<BR>
<BR>Or to use a "super" optimizing compiler instead of<BR>  just a fast "moderately" optimizing compiler?<BR>
 <BR>
Or to use something you have more source to?<BR>  i.e. gcc/ld/newlib.<BR>
 <BR>
Or to interop with gcc-specific code?<BR> You can use a mix of compilers and interop, Cygwin, Visual C++,<BR>  and the integrated backend all use the same object file format, but<BR>  maybe it is easier to use one toolset more, than to mix.<BR>
<BR>Or to use forward slashes in paths? You can do that with<BR>  regular NT386 now, as you always could with the kernel32.dll functions.<BR>  "Posix paths" vs. "forward slashes" not entirely the same thing, but almost.<BR>  Unfortunately Win32 is not consistent here, like the file open dialogs<BR>   and I think shlwapi.dll don't accept forward slashes. Arguably bugs.<BR>
<BR>Or to interop with open/read/close/stat? You could always already do that<BR>  too. Those functions do all exist in msvcr*.dll.<BR>
<BR>Or to interop with very Berkeley socket-specific code? Maybe.<BR>  I think Windows sockets are very very similar to Berkely/Posix sockets,<BR>    but not quite the same. For example, I think an "fd set" is an array<BR>    of opaque pointers, not a bit set.<BR>
<BR>Or to link (again, interop) with code calling fork?<BR>
<BR>Or because you want a better cross-build story?<BR>  That is, you can build/run the Cygwin runtime, compiler, and linker on any other<BR>   host, whereas the NT386 linker is only runnable on NT386.<BR>
<BR>Or because you are familiar with gdb?<BR>
<BR>Or due to issues around freedom of beer or liberty?<BR> Visual C++ has varied in its free-beer-ness.<BR>
<BR>What is the point of the MinGWin project?<BR>  I think it is about using autotools and gcc, but not sure.<BR>  And producing binaries with "more flexible licensing" (no cygwin1.dll)<BR>
<BR>One reason I got this stuff working is because<BR>I saw it as a shortcut to 64bit LONGINT support.<BR>
<BR>I find Cygwin largely "cumbersome".<BR>Just usings its command line is slow.<BR>Slow to edit. gcc is slow.<BR>But the cross build story is very good.<BR>You know, I use Cygwin so that Windows can target Modula-3 to other systems.<BR>  You know, to build m3cg. MinGWin I think suffices, but I got the impression<BR>  at some point that Cygwin was better maintained than MinGWin.<BR>
<BR>There are many factors.<BR>Modula-3 was already usable by Cygwin users, just as Visual C++ already is.<BR>
 <BR>
The Modula-3 libraries shield you from almost all of this, if you stick to them.<BR>If you don't interop with much C code, if don't need a 64bit LONGINT, if the<BR>fast integrated backend generates efficient enough code for you, etc.<BR>The "external" interface really seems largely the form of paths.<BR>
 <BR>
 <BR>
...I /think/ most of the point to Cygwin to a lot of people, at some point, was<BR>
to have a free beer C/C++ compiler.<BR>
But again, this is only some people, and there are now other options.<BR>
Digital Mars and Open Watcom are also pretty good.<BR>
Digital Mars doesn't come with source. Open Watcom does.<BR>
eBay provides pretty cheap stuff too.<BR>
 C/C++ compilers have lost their value as other programming languages (Java, JavaScript, C#,<BR>
   Perl, Python) have risen and sometimes been free (all free-beer, somewhat free-freedom/GPL).<BR>
 Somewhat due to the very "safety" issues that Modula-3 solves.<BR>
 Modula-3 I think was way ahead of its time. The world has mostly caught up, though<BR>
  Modula-3 is still a fairly unique hybrid, in terms of compiling directly to native code, and<BR>
   offering optional safety within one language. (C# also has optional safety within one language).<BR>
 If you only want safety and can sacrifice perf and/or generality and/or native code..<BR>
 <BR>
 <BR>
But again, there are many factors, many characteristics that define "Cygwin".<BR>
 <BR>
 - Jay<BR><BR>> To: jay.krell@cornell.edu<BR>> Date: Wed, 17 Dec 2008 19:10:15 -0800<BR>> From: mika@async.caltech.edu<BR>> CC: jkrell@elego.de; m3devel@elegosoft.com<BR>> Subject: Re: [M3devel] serial/Cygwin<BR>> <BR>> Do Cygwin users really care about all that stuff?<BR>> <BR>> The point of using Modula-3 on Cygwin is to turn a yucky Windows<BR>> machine as close as possible into a friendly Unix environment...<BR>> not to use a bunch of Microsoft tools and libraries---I would have<BR>> thought that if you wanted to use Visual X-Y-Z then you wouldn't<BR>> be using Cygwin but would be using the native Windows environment?<BR>> <BR>> So yes I find it a bit odd that the ancient PM3-Klagenfurt I still<BR>> occasionally use on Windows uses Windows threads and has its own<BR>> compiler back-end. But it's kind of cool too and since it's not<BR>> really distinguishable from user-level threads and gcc I just think<BR>> "great" and get on with it. In fact I'm not even sure it uses<BR>> the integrated back end now that I think about it.<BR>> <BR>> I think what I'm saying is that almost no Cygwin users are terribly<BR>> interested in Microsoft interfaces, and I would bet most Cygwin<BR>> users aren't even aware of the existence of most Microsoft tools.<BR>> They (we) want as little to do with Windows as possible....<BR>> <BR>> Mika<BR>> <BR>> Jay writes:<BR>> >--_c7ada8a5-5684-4472-b0c7-b49c8c279dc2_<BR>> >Content-Type: text/plain; charset="iso-8859-1"<BR>> >Content-Transfer-Encoding: quoted-printable<BR>> ><BR>> ><BR>> ><BR>> >From: TonyTo: jay<BR>> >I would have thought of CygWin as a POSIX platform that just happens to hav=<BR>> >e Windows underneath. Did we go round this roundabout before?<BR>> ><BR>> ><BR>> ><BR>> ><BR>> ><BR>> >It's more complicated than that.<BR>> >It isn't just one bit.<BR>> >There's a few factors=2C that people care more and less about.<BR>> > GUI library -- Win32 or X<BR>> > thread library -- pthreads or Win32 (or user threads)=20<BR>> > file system path representation -- forward slashes or backward slashes =<BR>> > This seems to be what people care most about -- to see forward slashes.<BR>> > C compiler -- Visual C++ cl or Cygwin/GNU gcc<BR>> > linker -- Visual C++ link or Cygwin/GNU ld=20<BR>> > C runtime -- msvcr*.dll or cygwin1.dll=20<BR>> > integrated backend or not The integrated backend is way faster=2C but=<BR>> > doesn't yet support 64bit LONGINT.<BR>> > which debugger/symbol format -- gdb/stabs or windbg/VisuaStudio/CodeView/=<BR>> >pdb<BR>> >Many of these factors are independent of each other=2C but not entirely.<BR>> >Compiler/linker directly lead to which debugger you can use=2C since they =<BR>> >each use different formats.<BR>> >Well=2C you can use either debugger=2C but..without symbols..at least for s=<BR>> >ome modules.<BR>> >The Cygwin C runtime and Visual C++ linker disagreeon the name of __ImageBa=<BR>> >se=2C so you can't link to the Cygwin C runtime with theVisual C++ linker. =<BR>> >This is probably fixable at least in one combination withan alias (ability =<BR>> >to link Cygwin C runtime with Visual C++ linker=3B I don'tknow if Cygwin/GN=<BR>> >U ld understands aliases).<BR>> >I have also found that Cygwin produces incorrectimport .libs=2C perhaps the=<BR>> >ir linker somehow accepts them.<BR>> >=20<BR>> >Cygwin can program the Win32 GUI=2C but there is an issue with passing 8 by=<BR>> >te structs by value to __stdcall functions=2C the function name isn't mangl=<BR>> >ed correctly and linking fails.<BR>> >It is a bit of a combinatorial explosion.As the system stands=2C you can co=<BR>> >ntrol each bit in the config file=2C andmultiple combinations might work=2C=<BR>> > though I don't run any combinatorial tests.<BR>> >Three combinations are "identified" (named=2C spoken of) and have had some =<BR>> >development testing.NT386=2C NT386MINGNU (which I think should be called I3=<BR>> >86_MINGWIN)=2C and NT386GNU (which I think should be called I386_CYGWIN).<BR>> >Furthermore=2C you can imagine I386_INTERIX and I386_UWIN (I forget if that=<BR>> >'s the name).Interix and UWIN being two other very viable Posix layers on W=<BR>> >indows.Interix has been renamed a few times. It is called "SFU" -- services=<BR>> > for Unix=2C and I don't know=2Clike SUA -- services for unix applications=<BR>> >=2C and I think there's another name.It is a free download from Microsoft f=<BR>> >or x86 Windows < Vista=2C and is an optional component in Vista.It has its =<BR>> >pluses and minuses..not now.<BR>> >Anyway=2C in conversation here=2C one of the main things that people DO NOT=<BR>> > care aboutis which thread library is used.<BR>> >I believe it was asserted that PM3/NT386GNU did work=2C but that it might h=<BR>> >ave used Win32 threads.<BR>> >And maybe never had any GUI?<BR>> >I tried getting pthreads to work=2C but gave up debugging it.Perhaps a fres=<BR>> >h go at debugging it would pan out..but I'm really not too interested..<BR>> >I also have no interest in user threads. I believe they are never warranted=<BR>> >=2C excepton old systems that don't have kernel threads=2C like the hypothe=<BR>> >tical DJGPP port.<BR>> >I never brought up the issue of serial ports.I ASSUMED that almost nobody u=<BR>> >ses them=2C and anyone that does use them=2C doesn'tcare if they are implem=<BR>> >ented using Cygwin or Win32=2C as long as they work.<BR>> >I ASSUME there is no interop issue=2C like getting an int fd from the seria=<BR>> >l portand passing it to select() or close=2C or getting a Win32 HANDLE and =<BR>> >passing itto WaitForSingleObject=2C but I could be wrong here=2C certainly.<BR>> >I didn't look into if Cygwin is complete enough to implement them.I conside=<BR>> >r serial ports to be kind of out on the fringe..that it wouldn't be surpris=<BR>> >ing if Cygwin didn't implement them..but I didn't look. Heck=2C I tried bui=<BR>> >lding minicom on some non-Linux system(s) recently and it failed miserably.=<BR>> > I don't know if there is even much Posix portability option for serial por=<BR>> >t programming.<BR>> >Sure..I debug over a serial port=2C and lately have machines I can't get vi=<BR>> >deoout of (Itanium) or even seem to have no video hardware (Sun)=2C so I us=<BR>> >e a serial consolefor initial install (recent achievement :) still haven't =<BR>> >installed over network..)=2C but that's still imho a big step away from wri=<BR>> >ting code that uses the serial port.(And NetBSD doesn't support the local v=<BR>> >ideo on SGI O2=2C but I'm running OpenBSD there for now.)<BR>> >=20<BR>> >Anyway=2C there are a few ways to look at this issue.More and less trivial.<BR>> >A trivial view is: Get the filtering to work. Build serial on all platform=<BR>> >s but Cygwin. Or see if the Posix code will work.<BR>> > I'd be surprised if the intersection of Cygwin x Modula-3 x serial port p=<BR>> >rogrammers is not 0=2C but could be. I actually don't think anyone is using=<BR>> > Cygwin x Modula-3.<BR>> >Another view is: Get the Win32 serial code to work on Cygwin. The code is=<BR>> > already there=2C and buildable=2C but building in a system that also build=<BR>> >s FilePosix.m3 breaks Modula-3 rules=2C you end up with two implementatio=<BR>> >ns of the File interface. What you want=2C I think=2C is FilePosix.m3 to pr=<BR>> >ovide the File interface=2C and FileWin32.m3 to provide just its own spec=<BR>> >ific FileWin32 interface. I think this is a simple transform of the code.<BR>> >Anyway=2C not a big deal...my tone here...is rushed=2C not rude=2C sorry.Ma=<BR>> >ybe I'll get the truncation I deserve. :)<BR>> > - Jay=<BR>> ><BR>> >--_c7ada8a5-5684-4472-b0c7-b49c8c279dc2_<BR>> >Content-Type: text/html; charset="iso-8859-1"<BR>> >Content-Transfer-Encoding: quoted-printable<BR>> ><BR>> ><html><BR>> ><head><BR>> ><style><BR>> >.hmmessage P<BR>> >{<BR>> >margin:0px=3B<BR>> >padding:0px<BR>> >}<BR>> >body.hmmessage<BR>> >{<BR>> >font-size: 10pt=3B<BR>> >font-family:Verdana<BR>> >}<BR>> ></style><BR>> ></head><BR>> ><body class=3D'hmmessage'><BR>> ><HR id=3DstopSpelling><BR>> >From: Tony<BR>To: jay<BR><BR><BR>> ><DIV>I would have thought of CygWin as a POSIX platform that just happens t=<BR>> >o have Windows underneath. &nbsp=3BDid we go round this roundabout before?<=<BR>> >/DIV><BR>> ><DIV><SPAN class=3DEC_Apple-style-span style=3D"WORD-SPACING: 0px=3B FONT: =<BR>> >12px Helvetica=3B TEXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B TEXT-IND=<BR>> >ENT: 0px=3B WHITE-SPACE: normal=3B LETTER-SPACING: normal=3B BORDER-COLLAPS=<BR>> >E: separate"><BR>> ><DIV style=3D"WORD-WRAP: break-word"><SPAN class=3DEC_Apple-style-span styl=<BR>> >e=3D"WORD-SPACING: 0px=3B FONT: 12px Helvetica=3B TEXT-TRANSFORM: none=3B C=<BR>> >OLOR: rgb(0=2C0=2C0)=3B TEXT-INDENT: 0px=3B WHITE-SPACE: normal=3B LETTER-S=<BR>> >PACING: normal=3B BORDER-COLLAPSE: separate"><SPAN class=3DEC_Apple-style-s=<BR>> >pan style=3D"WORD-SPACING: 0px=3B FONT: 12px Helvetica=3B TEXT-TRANSFORM: n=<BR>> >one=3B COLOR: rgb(0=2C0=2C0)=3B TEXT-INDENT: 0px=3B WHITE-SPACE: normal=3B =<BR>> >LETTER-SPACING: normal=3B BORDER-COLLAPSE: separate"><SPAN class=3DEC_Apple=<BR>> >-style-span style=3D"WORD-SPACING: 0px=3B FONT: 12px Helvetica=3B TEXT-TRAN=<BR>> >SFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B TEXT-INDENT: 0px=3B WHITE-SPACE: no=<BR>> >rmal=3B LETTER-SPACING: normal=3B BORDER-COLLAPSE: separate"><SPAN class=3D=<BR>> >EC_Apple-style-span style=3D"WORD-SPACING: 0px=3B FONT: 12px Helvetica=3B T=<BR>> >EXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B TEXT-INDENT: 0px=3B WHITE-S=<BR>> >PACE: normal=3B LETTER-SPACING: normal=3B BORDER-COLLAPSE: separate"><SPAN =<BR>> >class=3DEC_Apple-style-span style=3D"WORD-SPACING: 0px=3B FONT: 12px Helvet=<BR>> >ica=3B TEXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B TEXT-INDENT: 0px=3B=<BR>> > WHITE-SPACE: normal=3B LETTER-SPACING: normal=3B BORDER-COLLAPSE: separate=<BR>> >"><SPAN class=3DEC_Apple-style-span style=3D"WORD-SPACING: 0px=3B FONT: 12p=<BR>> >x Helvetica=3B TEXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B TEXT-INDENT=<BR>> >: 0px=3B WHITE-SPACE: normal=3B LETTER-SPACING: normal=3B BORDER-COLLAPSE: =<BR>> >separate"><SPAN class=3DEC_Apple-style-span style=3D"WORD-SPACING: 0px=3B F=<BR>> >ONT: 12px Helvetica=3B TEXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B TEX=<BR>> >T-INDENT: 0px=3B WHITE-SPACE: normal=3B LETTER-SPACING: normal=3B BORDER-CO=<BR>> >LLAPSE: separate"><SPAN class=3DEC_Apple-style-span style=3D"WORD-SPACING: =<BR>> >0px=3B FONT: 12px Helvetica=3B TEXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0=<BR>> >)=3B TEXT-INDENT: 0px=3B WHITE-SPACE: normal=3B LETTER-SPACING: normal=3B B=<BR>> >ORDER-COLLAPSE: separate"><BR>> ><DIV><BR></DIV></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></DI=<BR>> >V></SPAN></DIV><BR>> ><DIV><BR>> ><BLOCKQUOTE><SPAN class=3DEC_Apple-style-span style=3D"WORD-SPACING: 0px=3B=<BR>> > FONT: 12px Helvetica=3B TEXT-TRANSFORM: none=3B COLOR: rgb(0=2C0=2C0)=3B T=<BR>> >EXT-INDENT: 0px=3B WHITE-SPACE: normal=3B LETTER-SPACING: normal=3B BORDER-=<BR>> >COLLAPSE: separate"><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>It's more complicated than that.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>It isn't just one bit.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>There's a few factors=2C that people care more and less about.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B GUI library&nbsp=3B -- Win32 or X</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B thread library&nbsp=3B -- pthreads or Win32 (or user threads)=<BR>> > </DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B file system path representation -- forward slashes or backwar=<BR>> >d slashes<BR>&nbsp=3B&nbsp=3B&nbsp=3B This seems to be what people care mos=<BR>> >t about -- to see forward slashes.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B C compiler -- Visual C++ cl or Cygwin/GNU gcc</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B linker -- Visual C++ link or Cygwin/GNU ld </DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B C runtime -- msvcr*.dll or cygwin1.dll </DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B integrated backend or not <BR>&nbsp=3B&nbsp=3B&nbsp=3B The in=<BR>> >tegrated backend is way faster=2C but doesn't yet support 64bit LONGINT.</D=<BR>> >IV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B which debugger/symbol format&nbsp=3B-- gdb/stabs or windbg/Vi=<BR>> >suaStudio/CodeView/pdb</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Many of these factors are independent of each other=2C but not entirel=<BR>> >y.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Compiler/linker directly lead to which debugger you can use=2C since<B=<BR>> >R>&nbsp=3B they each use different formats.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Well=2C you can use either debugger=2C but..without symbols..at least =<BR>> >for some modules.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>The Cygwin C runtime and Visual C++ linker disagree<BR>on the name of =<BR>> >__ImageBase=2C so you can't link to the Cygwin C runtime with the<BR>Visual=<BR>> > C++ linker. This is probably fixable at least in one combination with<BR>a=<BR>> >n alias (ability to link Cygwin C runtime with Visual C++ linker=3B I don't=<BR>> ><BR>know if Cygwin/GNU ld understands aliases).</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>I have also found that Cygwin produces incorrect<BR>import .libs=2C pe=<BR>> >rhaps their linker somehow accepts them.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >>&nbsp=3B</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >>Cygwin can program the Win32 GUI=2C but there is an issue with passing 8 b=<BR>> >yte structs by value to __stdcall functions=2C the function name isn't mang=<BR>> >led correctly and linking fails.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>It is a bit of a combinatorial explosion.<BR>As the system stands=2C y=<BR>> >ou can control each bit in the config file=2C and<BR>multiple combinations =<BR>> >might work=2C though I don't run any combinatorial tests.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Three combinations are "identified" (named=2C spoken of)&nbsp=3Band ha=<BR>> >ve had some development testing.<BR>NT386=2C NT386MINGNU (which I think sho=<BR>> >uld be called I386_MINGWIN)=2C and NT386GNU (which I think should be called=<BR>> > I386_CYGWIN).</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Furthermore=2C you can imagine I386_INTERIX and I386_UWIN (I forget if=<BR>> > that's the name).<BR>Interix and UWIN being two other very viable Posix la=<BR>> >yers on Windows.<BR>Interix has been renamed a few times. It is called "SFU=<BR>> >" -- services for Unix=2C and I don't know=2C<BR>like SUA -- services for u=<BR>> >nix applications=2C and I think there's another name.<BR>It is a free downl=<BR>> >oad from Microsoft for x86 Windows &lt=3B Vista=2C and is an optional compo=<BR>> >nent in Vista.<BR>It has its pluses and minuses..not now.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Anyway=2C in conversation here=2C one of the main things that people D=<BR>> >O NOT care about<BR>is which thread library is used.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>I believe it was asserted that PM3/NT386GNU did work=2C but that it mi=<BR>> >ght have used Win32 threads.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >>And maybe never had any GUI?</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>I tried getting pthreads to work=2C but gave up debugging it.<BR>Perha=<BR>> >ps a fresh go at debugging it would pan out..but I'm really not too interes=<BR>> >ted..</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>I also have no interest in user threads. I believe they are never warr=<BR>> >anted=2C except<BR>on old systems that don't have kernel threads=2C like th=<BR>> >e hypothetical DJGPP port.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>I never brought up the issue of serial ports.<BR>I ASSUMED that almost=<BR>> > nobody uses them=2C and anyone that does use them=2C doesn't<BR>care if th=<BR>> >ey are implemented using Cygwin or Win32=2C as long as they work.<BR></DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >>I ASSUME there is no interop issue=2C like getting an int fd from the seri=<BR>> >al port<BR>and passing it to select() or close=2C or getting a Win32 HANDLE=<BR>> > and passing it<BR>to WaitForSingleObject=2C but I could be wrong here=2C c=<BR>> >ertainly.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>I didn't look into if Cygwin is complete enough to implement them.<BR>=<BR>> >I consider serial ports to be kind of out on the fringe..that it wouldn't b=<BR>> >e surprising if Cygwin didn't implement them..but I didn't look. Heck=2C I =<BR>> >tried building minicom on some non-Linux system(s) recently and it failed m=<BR>> >iserably. I don't know if there is even much Posix portability option for s=<BR>> >erial port programming.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Sure..I debug over a serial port=2C and lately have machines I can't g=<BR>> >et video<BR>out of (Itanium) or even seem to have no video hardware (Sun)=<BR>> >=2C so I use a serial console<BR>for initial install (recent achievement :)=<BR>> > still haven't installed over network..)=2C but that's still imho a big ste=<BR>> >p away from writing code that uses the serial port.<BR>(And NetBSD doesn't =<BR>> >support the local video on SGI O2=2C but I'm running OpenBSD there for now.=<BR>> >)</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >>&nbsp=3B</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Anyway=2C there are a few ways to look at this issue.<BR>More and less=<BR>> > trivial.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>A trivial view is:<BR>&nbsp=3B Get the filtering to work. Build serial=<BR>> > on all platforms but Cygwin.<BR>&nbsp=3B&nbsp=3B Or see if the Posix code =<BR>> >will work.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >>&nbsp=3B I'd be surprised if the intersection of Cygwin x Modula-3 x seria=<BR>> >l port programmers is not 0=2C but could be. I actually don't think anyone =<BR>> >is using Cygwin x Modula-3.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Another view is:<BR>&nbsp=3B Get the Win32 serial code to work on Cygw=<BR>> >in.<BR>&nbsp=3B The code is already there=2C and buildable=2C but building =<BR>> >in a system that also builds FilePosix.m3<BR>&nbsp=3B&nbsp=3B breaks Modula=<BR>> >-3 rules=2C you end up with two implementations of the File interface.<BR>&=<BR>> >nbsp=3BWhat you want=2C I think=2C is FilePosix.m3 to provide the File inte=<BR>> >rface=2C and FileWin32.m3 to provide<BR>&nbsp=3B&nbsp=3B just its own speci=<BR>> >fic FileWin32 interface.<BR>&nbsp=3B I think this is a simple transform of =<BR>> >the code.</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>Anyway=2C not a big deal...my tone here...is rushed=2C not rude=2C sor=<BR>> >ry.<BR>Maybe I'll get the truncation I deserve. :)</DIV><BR>> ><DIV class=3DEC_hmmessage style=3D"FONT-SIZE: 10pt=3B FONT-FAMILY: Verdana"=<BR>> >><BR>&nbsp=3B- Jay</DIV></SPAN></BLOCKQUOTE></DIV></body><BR>> ></html>=<BR>> ><BR>> >--_c7ada8a5-5684-4472-b0c7-b49c8c279dc2_--<BR><BR></body>
</html>