<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
 >  I also think almost everyone who had anything to do with M3 at DEC is now at Microsoft<BR>
 <BR>
 <BR>
Not just M3. M3 wasn't many people. Lots of people at Microsoft were at Digital.<BR>
 <BR>
 <BR>
> Modula-3 project: you're supposed to be able to write device drivers<BR>> and such things in Modula-3. I agree though that targeting C doesn't<BR><BR>
 <BR>
Understood, agreed -- you can hypothetically write anything in Modula-3.<BR>
The optional safety is fairly unique and important.<BR>
Except for C# and Modula-3, all languages seem to be strictly safe or unsafe.<BR>
 <BR>
 <BR>
I think, you can imagine, either an entire system in Modula-3, with m3core/libm3<BR>
coded "directly" in Modula-3 and simply statically or dynamically linked<BR>
using "standard mechanism", or if there is still a user/kernel boundary,<BR>
you either have to hack the compiler a bit, or resort to some assembly<BR>
(possibly embedded in .c files). That is, calling the kernel is inevitably<BR>
a special call sequence, and cm3 doesn't currently understand anything like that.<BR>
 <BR>
 <BR>
About device drivers -- a critical piece is the runtime.<BR>
Imagine writing an NT or Linux driver.<BR>
Well, if you separate language from library...and limit language features<BR>
to accomodate missing runtime...and retarget small parts of the<BR>
runtime perhaps.. you know, there's a certain isomorphism?<BR>
You can write almost anything in C or Modula-3 and most things<BR>
will look very similar and map one-to-one.<BR>
I think I read that Modula-3 can describe anything C can, except unions.<BR>
 <BR>
 <BR>
You know, don't expect to have garbage collection in the kernel.<BR>
Maybe not exception handling.<BR>
Not necessarily the file I/O you are used to. But something.<BR>
Not the threading you are used to. But something (at least on NT).<BR>
But certainly you can interface Modula-3 to the NTkernel/Linux/*BSD<BR>
runtimes, just like we  interface to Win32/Posix.<BR>
 <BR>
 <BR>
I'm not sure it'd buy much. I guess if you really like the syntax...<BR>
 <BR>
 <BR>
It's another area where compiling to C would help.<BR>
esp. for the exception handling on NT!<BR>
__try/__finally are available in C on NT, usermode and kernel,<BR>
and the implementation is much more efficient than what Modula-3 does currently.<BR>
I really need to stop saying all this stuff though, either be quiet or do it...<BR>
 <BR>
 <BR>
 - Jay<BR> <BR>                                     </body>
</html>