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
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to