Dynamic linking in modern execution environments like .NET is considerably more sophisticated than in the days of C shared libraries on UNIX. One aspect of this sophistication is that .NET assemblies embed type information about dynamically linked resources.
This type information implicitly represents compile-time assumptions about the resources available at run-time. However, at run-time, different resources may actually be available. For example, the execution environment on a mobile phone might provide fewer, simpler classes than on a desktop PC.
We have designed and implemented a "flexible" dynamic linking scheme that supports the run-time selection of .NET assemblies and classes. This enables a regime of "compile once, run anywhere". We describe the scheme's integration with the .NET linking infrastructure, review important design decisions and report on experiences with the "Rotor" shared source version of .NET.
pubs.doc.ic.ac.uk: built & maintained by Ashok Argent-Katwala.