Mike Shaver wrote:

> Christopher Blizzard wrote:
>
>>> right, one of the nice things about a flags-type attribute is that 
>>> it is easily expandable without breaking binary compatibility.  and, 
>>> so provided the existing contract of the existing interface is not 
>>> broken (ie. provided the meaning of the existing flags doesn't 
>>> change) then everything should be okay.  i agree with bbaetz: 
>>> implementors must take care to only check the bits they know/care 
>>> about.  flags-type attributes give us some flexibility moving 
>>> forward without paying the penalty of extra QI's in our code.
>>
>>
>> Binary compatibility isn't the only thing we have to worry about 
>> here, guys.  There's this contract thing.
>
>
> ...which is why I argued, so long ago, that we needed to sort out 
> things like startup, shutdown, and per-instance/contract threadsafety 
> stuff before we declared things "frozen".
>
> I was alone on that, though, so I've stopped pushing.
>
> Mike
>

what is an interface contract exactly?  in the case of a bit field 
attribute, is it wrong to say that only specific bits are currently 
defined and that other bits are reserved for future use?  the contract, 
in this case, is well defined for all consumers of the interface.  this 
is a very common way of making an interface ever-so-slightly extensible, 
and IMO it definitely seems like it would be useful in helping us freeze 
several mozilla interfaces.  are we worried about changes to the .xpt 
files?  would modifying .xpt files somehow cause runtime problems?

darin

Reply via email to