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