[Mono-devel-list] Running multiple assembliy versions in parallel

Jonathan Pryor jonpryor at vt.edu
Thu Sep 25 07:23:31 EDT 2003


Response inline...

On Thu, 2003-09-25 at 01:07, Yuri Astrakhan wrote:
> Hi.
> Does mono have support for running multiple versions of the same code
> in parallel the way .net does?

Maybe? :-)

Mono has support for AppDomains (though it was somewhat broken last I
checked), which is one of the requirements for loading multiple assembly
versions.  (At least, I think you can only have one assembly version
loaded in each AppDomain; I could be wrong.  If it is wrong, it doesn't
really effect the following arguments much.)

As for actual assembly versions...  Mono doesn't have a Global Assembly
Cache (GAC), so the only way to have two different versions of the same
assembly is to actually rename the assembly, e.g. Assembly-v1.dll and
Assembly-v2.dll.  In which case they look just like two different
assemblies, and will likely be treated as such. :-D

In other words, this question has many sub-questions, which can be
answered separately, but probably don't answer your actual question. 
True versioning support likely requires the GAC, which isn't implemented
yet.

Conceptually, adding the GAC shouldn't change the VM/JIT much; you just
consider different assembly versions to be entirely different assemblies
-- which is the current situation -- and move on from there.  The GAC
comes into play when you're trying to *find* the assembly to load/JIT
against (same major version, but different minor versions are permitted,
unless the <program>.config file says otherwise, etc.).

> Is this feature planned

GAC support is planned, but I don't know when Mono will implement it.

> , and more importantly, is that a major code rewrite, or is it more
> like an add-on feature that would make a good VM learning project.

It shouldn't require rewriting lots of code.  It will likely require
changing existing code for assembly looking/assembly binding via the
GAC, but I don't think that would require a major rewrite.

> In your opinion, how much effort would this require to implement?

GAC support has been raised in the past, and the answer (IIRC) was ~3
months.
 
Then again, re-writing System.Xml was considered to take a year, and Ben
Maurer did it in little more than a month:

	http://primates.ximian.com/~miguel/archive/2003/Sep-14.html

So, the actual answer won't be determined until it's actually written.

 - Jon





More information about the Mono-devel-list mailing list