10 days and no objections.  This is now the new rule!  Please stop updating
UUIDs when changing XPIDL interfaces.

On Fri, Jan 15, 2016 at 10:58 AM, Ehsan Akhgari <ehsan.akhg...@gmail.com>
wrote:

> Historically we have enforced updating the XPIDL interface UUIDs when you
> made any changes to it.  This was needed because of two reasons:
>
> * Backwards compatibility with binary extensions.  Since many changes to
> XPIDL interfaces caused the underlying v-table layout to change, revving
> the UUID enabled previously compiled extensions to fail getting the
> interface through QueryInterface() in the first place, preventing crashes
> when they try to use the interface.
>
> * Incremental builds.  Our build system used to not repack the compiled
> XPT file unless it detected a change in the UUID, which would manifest as
> weird issues when you landed code changing an interface without changing
> its UUID, in that in incremental builds the XPT file would be outdated, but
> in clobbered builds it would be correct.
>
> We have created Mercurial hooks that enforce a UUID change when an idl
> file is touched because of these requirements.
>
> Ever since Firefox 41, we have stopped supporting binary components in
> extensions, so the first reason doesn’t apply any more.  And since
> yesterday I have fixed bug 977464 which fixes the second issue.  So as far
> as I can tell, there is no reason to keep revving UUIDs any more. Therefore
> I would like to propose that we should remove the Mercurial hook (bug
> 1170718) and relax this requirement on trunk, and let this ride the trains.
>
> Three points worth mentioning here.
>
> * Thunderbird still supports binary components in extensions.  In <
> https://bugzilla.mozilla.org/show_bug.cgi?id=977464#c31> Kent said that
> Thunderbird is OK with change.
>
> * My proposal has no bearing on whether changes to XPIDL interfaces needs
> to be considered as part of the uplift approval process, as such changes
> can still have an impact on JS extension compatibility. Therefore under my
> proposal we’d reword the approval canned questionnaire on Bugzilla to talk
> about changes to XPIDL interfaces in addition to string changes, in lieu of
> mentioning UUID changes.
>
> * UUIDs are still the unique identifiers used in QueryInterface()
> implementations and you'd still need to tag the interface with a UUID when
> you create a new XPIDL interface.
>
> Please let me know if you have any questions or concerns.
>
> Cheers,
> Ehsan
>



-- 
Ehsan
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to