<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
With build_standalone you don't need to worry.<br>  As long as all your Modula-3 code is in one .dll per process.<br>  Er, I mean, as long as your Modula-3 is the .exe and no .dlls.<br><br><br>There is some need for shared state sometimes.<br>But if all the Modula-3 code is linked together, in the .exe, ok.<br><br><br>You know, imagine you have multiple Modula-3 .dlls loaded, standalone.<br>Which garbage collector? Maybe all of them, against their own allocations.<br>Maybe it is jus slow.<br><br><br>But what if you pass off Modula-3 traced references across .dll boundaries,<br>without sharing a garbage collector (m3core.dll). Then you'd have trouble.<br><br><br>This has nothing to do with Windows.<br>It is the general hazard of dynamic linking.<br><br><br>Sometimes dynamic linking is an opportunistic optimization.<br>  e.g. it doesn't matter if you share strlen or not. It is stateless. You can have<br>  any number of copies. More efficient to reduce, but not a big deal these days,<br>  with tons of disk space and address space and physical memory.<br><br><br>But sometimes a .dll is managing a shared resource.<br>e.g. some global variables.<br>Then having multiple copies of data/code can be confusing or very wrong.<br>e.g. consider something like setlocale().<br>Which code does it affect? Only code using the same C runtime.<br><br><br>Imagine I call fopen or malloc and give the result to another .dll that<br>calls fread or free. They have to share the same C runtime.<br>Or in a less likely case, the multiple C runtimes have to cooperate.<br><br><br>Same problem with CreateFile/ReadFile/CloseHandle, except<br>the system doesn't allow duplicate kernel32.dll or the underlying ntoskrnl.exe.<br><br><br>Think of "services".<br>For example there is "BITS" the background intelligent transfer service..<br>used by Windows Update. If you have more than one on a machine,<br>then the "background" and "intelligent" suffer.<br>But it'd still mostly work?<br><br><br> - Jay<br><br>> From: dragisha@m3w.org<br>> To: m3devel@elegosoft.com<br>> Date: Sat, 23 Oct 2010 21:44:16 +0200<br>> Subject: [M3devel] Runtime only package for Windows? With preselected   modules?<br>> <br>> I have a rpm spec file I am using and it by default makes cm3 package<br>> and cm3-devel. Also, it does not contain all modula-3 packages, as most<br>> of them are not used in typical cases.<br>> <br>> Right now I am about to make install package for an application I am<br>> delivering and runtime libs only package for Windows is what is on my<br>> mind right now. Doable? Or I can skip it without problem with<br>> build_standalone() ? How do I confirm it's statically linked? Under<br>> linux I'll use ldd, but depends.exe (thanks Jay) does not show it to<br>> me...Or it does?<br>> -- <br>> Dragiša Durić <dragisha@m3w.org><br>> <br>                                      </body>
</html>