This is notice of an intent to change how we export symbols from the Firefox DLLs and binaries.
Currently our policy is that extensions may not include binary XPCOM components, and we've implemented some very basic rules that make it difficult for extensions to load these components. However, there is 3rd-party software that continues to use binary XPCOM: either by loading DLLs using ctypes and then using XPCOM, or injecting DLLs into the Firefox process. Binary injection has been the cause of numerous crash issues in Firefox, which commonly show up as startup crashes when a Firefox update is first run. I believe that solving these crashes is a critical part of our Firefox quality story and our ability to release Firefox updates in a timely manner. To that end, I believe that we should make it technically impossible for external DLLs to use XPCOM. I propose to do this in the following way: Integrate the remaining Firefox binary component back into xul.dll using internal linkage. Remove the XPCOM glue. This will involve reworking a little bit of how firefox.exe and plugin-container.exe initially load and launch gecko from xul.dll. Remove most of the XPCOM-related xul.dll exports, and as many other exports as possible. This includes all of the mozilla::services exports, as well as things like NS_GetComponentManager/NS_GetComponentRegistrar, and a lot of the XRE_ functions like XRE_AddManifestLocation. Undecided: whether we can or need to remove the "frozen XPCOM string API" exports. I'd like to, but it's not strictly necessary to solve the primary stability issues of external code using binary XPCOM, and I'm not sure what it would affect or how hard it will be. I have prepared a list of current xul.dll exports from a recent nightly build, and proposed mitigations with bug numbers: https://docs.google.com/spreadsheets/d/1k2tFvEetMri2MT7viBM9iSVVt35dQH8O_mmNkYX9NOc/edit?usp=sharing It is likely that this project will affect Thunderbird and/or SeaMonkey, but I'm not sure in what ways. My understanding is that Thunderbird currently builds with internal linkage. I plan to keep Thunderbird informed of the work here, and accepting patches that help Thunderbird stay building, but I do not intend to significantly delay or WONTFIX this Firefox work for Thunderbird. https://bugzilla.mozilla.org/show_bug.cgi?id=1299187 is the tracking bug. Please direct followup comments & questions to dev-platform. --BDS _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform