[Mono-dev] Please revert your changes.

Kornél Pál kornelpal at hotmail.com
Tue Aug 9 20:12:58 EDT 2005

RTM means Release To Manufacturing as Michael said but Microsoft uses this
term to the original (or gold if you like this term) release.

Altough the above is usually true there are some exceptions just search for
"SP1 RTM" on microsoft.com using Google. Despite this fact they officially
use the term RTM for the original release and SP1, SP2, ... for service
releases when naming a product with service pack level.

Using the term RTM wasn't introduced by me it's used by Microsoft.

I was able to compile the following code with csc.exe form .NET Framework
1.1 SP1:
class Test
 static void Main(string[] args)
  System.Runtime.InteropServices._CustomAttributeBuilder var = null;

If it the compiler cannot find _CustomAttributeBuilder you can make sure
that you are not using SP1.

mscorlib.dll has version 1.1.4322.2032 in SP1. I have downloaded the RTM
(gold) version installer it hasn't got at least the interfaces starting with
underscores but there may be other differences.

These additions are nowhere (I count only specs and SDK docs) documented but
they exist.

Note that there is no SP1 SDK.

>The guy is describing what he found on his GAC, but the compiler does
>not link against the GAC.  The compiler links against the code in the
>directory where "csc" lives.

mscorlib.dll is not in the GAC (only in native images) so this is not
connected to GAC.

>The difference in API is probably a trick used so that the masses keep
>targeting 1.1 by default, but some special customers or people who need
>extra features get the new API calls and fixes at their own risk.
>So at this point, am not sure what to do.
>We should do a CorCompare run between 1.1 and 1.1 SP1 and examine the
>extent of the damage and based on that make a decision about what we are
>going to do.
>I do not particularly feel excited about building 1.1 and 1.1SP1

You see the things too complicated.:))

First of all there are no canges in SP1 that break backward compatiblity
with RTM. These extensions are only additions.

I don't think we should ship RTM and SP1 assemblies because it's no use to
do so.

You can build assemblies using 1.1 SP1 that will not run on 1.1 RTM if you
are using these undocumented additions. By adding these extensions to Mono
as well this will be true for Mono but I don't think that it is a problem.
If you want compatible assemblies don't use the extensions either on .NET
Framework or on Mono. But the Mono calss library HAS TO implement these
extensions to provide compatibility with .NET Framework.

So I think we should implement SP1 (and any future SP's) class library in
Mono instead of ignoring these additions.


----- Original Message -----
From: "Michael Hutchinson" <m.j.hutchinson at gmail.com>
To: "Miguel de Icaza" <miguel at novell.com>
Cc: <mono-devel-list at ximian.com>
Sent: Wednesday, August 10, 2005 1:28 AM
Subject: Re: [Mono-dev] Please revert your changes.

> > Note that none of the interfaces starting with _ in
> > System.Runtime.InteropServices are present in the RTM version of 1.1 but
> > are
> > in SP1. There may be other differences. So metadata comparsion should be
> > done on SP1 assemblies rather than on RTM.
> I am very confused.
> What does `RTM' mean, and when I write a program that peeks at the
> interfaces (posted on the last message) why does it not show them up?

RTM means 'Release To Manufacturing'. I think Kornél means the initial
'Gold' release, though technically a service pack will also RTM when
it's finished...

> How would a developer link/develop against SP1 and have those run in
> RTM?

You couldn't. I managed to find a document confirming that these
interfaces were indeed introduced in .NET 1.1 SP1 :
Microsoft's own documentation on MSDN2 says that these first appear in
.NET 2.0, but I think they're just hiding that there isn't backwards
API compatibility between .NET 1.1 SP1 and .NET SP1 Gold.

> In fact, trying to compile a program on a machine with SP1 installed
> that references System.Runtime.InteropServices._CustomAttributeBuilder
> results in an error.

This is odd. Maybe the compiler is hiding the API changes somehow?


Mono-devel-list mailing list
Mono-devel-list at lists.ximian.com

More information about the Mono-devel-list mailing list