[Mono-list] Static CIL Libraries
Fergus Henderson
fjh@cs.mu.oz.au
Fri, 18 Oct 2002 21:46:24 +1000
On 17-Oct-2002, Daniel Morgan <danmorg@sc.rr.com> wrote:
> Can mono/mcs create and use static CIL libraries?
>
> If so, how do you create the static CIL libraries?
> How do you link these static CIL libraries with something you are bulding?
>
> What about Microsoft .NET, Rotor, or Portable.Net?
Portable.Net has some support for that kind of thing, I believe.
> If not, can we persuade the Mono team, the Microsoft .NET team, the Rotor
> team, the Portable.Net team, the ECMA standards people, and others to
> include standard static CIL libraries support in their C# compiler and CLR
> runtime?
Here is some of the feedback that we gave Microsoft about a closely
related issue:
| 3. Assembly resolution at static link time.
|
| .NET assumes a particular model of symbol resolution where the
| decision of which assembly (the .NET unit of distribution)
| each symbol belongs to is determined *at compile time*.
| Mercury has a different model, where at compile time we only resolve
| which *compilation unit* (which in Mercury are called "modules")
| each symbol belongs to. Then at *static link time*, compilation
| units are grouped into "libraries" (the Mercury unit of distribution).
| Only then, at static link time rather than at compile time,
| can it be determined which distribution unit (i.e. assembly)
| each symbol reference refers to.
|
| The model that Mercury uses is more flexible. And of course this
| model is not specific to Mercury; the same thing is supported by
| traditional linkers for Unix and Windows. But it is not supported
| by .NET.
|
| Currently if the assembly part of a symbol reference in a .NET
| component is null, it is assumed to be in the current assembly.
| But .NET should allow the assembly part of a symbol to be null, and
| should provide a "static link" tool to resolve such null assembly
| references. This tool should take as input an assembly, and a set of
| other assemblies to link the first assembly against, and should output
| a modified version of the first assembly in which any symbol reference
| with null assembly part have had their assembly part filled in. The
| assembly chosen should be the unique assembly among the set of
| assemblies to link against which contains a symbol that matches the
| symbol reference. If there is more than one such symbol, the tool
| should instead issue an error message and not produce any output.
--
Fergus Henderson <fjh@cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.