[Mono-devel-list] Assembly binary compatibility?

2005-05-03 Thread Michi Henning
Hi, I'm interested in figuring out exactly what kind of change to an assembly is binary compatible. I've browsed the doc a fair bit, but I can't find a comprehensive list of what actually constitutes binary compatibility. Could someone point me at an authoritative list? One question in particular I

Re: [Mono-devel-list] Assembly binary compatibility?

2005-05-03 Thread Ben Maurer
On Wed, 2005-05-04 at 09:25 +1000, Michi Henning wrote: > Note that the destructor simply checks whether destroy() was called before the > instance is collected and that this is required only for a debug build. In > order to save the cost of acquiring the lock (and to avoid the cost of > calling t

Re: [Mono-devel-list] Assembly binary compatibility?

2005-05-04 Thread Michi Henning
> In general, adding or removing an override is not a breaking change. > > Finalize works by chaining to the parent using base.Finalize. calling a > method on base will always say call .Method. In the > JIT we would in the debug build see: "my direct parent" has the finalize > method so call that,

Re: [Mono-devel-list] Assembly binary compatibility?

2005-05-04 Thread Ben Maurer
On Wed, 2005-05-04 at 17:01 +1000, Michi Henning wrote: > > In general, adding or removing an override is not a breaking change. > > > > Finalize works by chaining to the parent using base.Finalize. calling a > > method on base will always say call .Method. In the > > JIT we would in the debug buil

Re: [Mono-devel-list] Assembly binary compatibility?

2005-05-04 Thread Ben Maurer
On Wed, 2005-05-04 at 11:45 -0400, Ben Maurer wrote: > > Safe to add a private method or data member? > > Private method -- always. I take this back. There is a corner case where it is not safe: foo.cs: public class BaseThingy { public virtual void DoIt () { Console.Writ